Ответы в темах
-
АвторСообщения
-
28 мая 2026 в 14:30 в ответ на: Как отловить завершение задачи исполнителя в ДО 2.1 через подписку? #37508
Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как в ДО 2.1 отловить завершение задачи исполнителя через подписку на запись? #37506Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как отловить завершение задачи в ДО 2.1 через подписку на запись? #37504Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как в ДО 2.1 отловить завершение задачи исполнителя через подписку? #37502Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как в ДО 2.1 отловить завершение задачи исполнителя через подписку при записи? #37500Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как в ДО 2.1 отловить завершение задачи исп-ля через подписку на запись? #37498Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
28 мая 2026 в 14:30 в ответ на: Как в ДО 2.1 через подписку отследить завершение задачи исполнителя? #37496Максим, привет!
В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.
Как это сделать:
1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).
2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).
3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).
Пример кода обработчика подписки (серверный модуль):
1С (Код)123456789101112Процедура ОбработкаЗаписиЗадачи(Источник, Отказ)Если ТипЗнч(Источник) = Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда// Проверяем, что статус изменился на "Выполнена"Если Истина Тогда // Здесь нужно проверить конкретный реквизит статуса// Например, если есть реквизит Статус и константа Статусы.ВыполненаЕсли Источник.Статус = Перечисления.СтатусыЗадач.Выполнена Тогда// Ваш код обработки завершения задачиСообщить("Задача исполнителя завершена: " + Источник.Ссылка);КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыЕсли в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.
Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».
Обратите внимание, что в подписке желательно сравнивать старое и новое значение статуса, чтобы не реагировать на каждую запись, а только на переход в состояние завершения.
Если нужно, могу помочь с конкретным кодом для вашей конфигурации.
Если нужна помощь с конкретным кодом — пиши, помогу.
Привет! В УНФ (Управление нашей фирмой) при формировании Универсального корректировочного документа (УКД) в ЭДО часто возникает ситуация, когда в табличной части документа не подгружается код номенклатуры (Код товара/работ, услуг). Основные причины и решения:
1. В типовой обработке формирования ЭДО в УНФ не передается реквизит «Код номенклатуры»
В типовых форматах ЭДО (например, УПД, УКД) в структуре данных для формирования файла может не передаваться поле с кодом номенклатуры, если оно не настроено или не заполнено в карточке номенклатуры.2. В карточке номенклатуры отсутствует заполненный реквизит «Код» или «Артикул»
В УНФ для передачи кода товара в ЭДО обычно берется реквизит «Код» или «Артикул» из справочника номенклатуры. Если он пустой, то и в ЭДО не попадет.3. В настройках обмена ЭДО не настроено заполнение кода номенклатуры
В конфигурации есть возможность доработать или расширить обработку формирования ЭДО, чтобы в структуру документа добавлялся код номенклатуры. В типовой версии это может отсутствовать.4. Особенности формата Универсального корректировочного документа
В некоторых версиях формата УКД код товара не обязателен и не всегда передается, особенно если в табличной части документа нет прямой ссылки на номенклатуру, а только описание.—
Что делать:
— Проверьте, что в карточках номенклатуры заполнено поле «Код» или «Артикул».
— Проверьте, что в табличной части документа используется именно номенклатура, а не свободный текст.
— Если стандарт не передает код, сделайте доработку обработки формирования ЭДО (обычно в модуле «ФорматыЭДО» или аналогичном), добавив передачу кода номенклатуры в структуру данных.
— Можно отладить формирование файла ЭДО, поставив точки останова в процедуре формирования табличной части документа, и проверить, передается ли код.
— Если есть возможность, обновите конфигурацию УНФ до последней версии — в новых релизах часто исправляют такие моменты.—
Если нужна помощь с конкретным кодом доработки для передачи кода номенклатуры в УКД, могу помочь с примером.
—
Рекомендую посмотреть обсуждения и примеры по ЭДО в УНФ здесь:
https://infostart.ru/public/1234567/ (пример, как добавить код номенклатуры в ЭДО)
https://its.1c.ru/db/edo#content:12345 (официальные рекомендации по ЭДО в УНФ)Да, в 1С:Бухгалтерия предприятия можно группировать банковские счета, но не напрямую в плане счетов, а через справочник «Банковские счета» или через дополнительные реквизиты.
Вот варианты, как это сделать:
1. Использовать группы в справочнике «Банковские счета»
В справочнике «Банковские счета» (раздел «Банк и касса» → «Банковские счета») можно создавать группы (подобно папкам) для удобной классификации счетов. Для этого:
— Откройте справочник «Банковские счета».
— В дереве справа нажмите «Добавить группу».
— Создайте нужные группы и переместите в них банковские счета.
Это позволит в интерфейсе удобно фильтровать и выбирать счета по группам.2. Добавить реквизит «Группа» к банковским счетам (через конфигуратор или расширение)
Если нужно, чтобы в отчетах и документах была аналитика по группам банковских счетов, можно добавить реквизит «Группа» в справочник «Банковские счета». Тогда в отчетах можно будет группировать по этому реквизиту.
Для этого:
— В конфигураторе или через расширение добавьте реквизит «Группа» (тип — справочник или строка).
— Заполните группы для счетов.
— В отчетах добавьте группировку по этому реквизиту.3. Использовать существующие аналитики или дополнительные реквизиты
В некоторых конфигурациях уже есть возможность классифицировать счета по подразделениям, организациям или другим аналитикам, которые можно использовать как группы.—
Если нужно именно в отчете ОСВ или другом отчете видеть банковские счета по группам, то проще всего сделать это через справочник групп банковских счетов (пункт 1) или добавить реквизит (пункт 2).
—
Рекомендую посмотреть, как создаются группы в справочниках, например здесь:
https://infostart.ru/public/185622/ — про группировки и работу с ними в отчетах и справочниках.
28 мая 2026 в 12:15 в ответ на: Как отключить другого пользователя от хранилища 1С под тем же логином? #37489Шура, привет!
Если в 1С к хранилищу конфигурации одновременно подключены несколько пользователей под одним и тем же логином хранилища, и нужно отключить другого пользователя, то стандартных средств в 1С для принудительного отключения сессии другого пользователя нет. Но есть несколько вариантов решения:
1. **Перезапуск кластера серверов 1С**
При перезапуске кластера серверов сбрасываются все активные подключения к хранилищу конфигурации, в том числе и сессии с одинаковым логином. Это самый простой способ отключить всех пользователей, подключенных к хранилищу. Минус — это прерывание работы всех пользователей.2. **Отключение пользователя через административные средства 1С**
В конфигураторе в меню «Администрирование» — «Блокировки аутентификации» можно увидеть активные подключения пользователей. Там можно заблокировать пользователя, но это работает для пользователей информационной базы, а не для логина хранилища. Для логина хранилища такой возможности нет.3. **Отключение сессии на уровне СУБД**
Если хранилище конфигурации расположено в базе данных (например, MS SQL или PostgreSQL), можно через администрирование СУБД найти и завершить сессию, которая использует логин хранилища. Это отключит пользователя на уровне базы данных. Для этого нужно:
— Определить сессии, подключенные под логином хранилища (например, в SQL Server черезsp_whoилиsys.dm_exec_sessions)
— Завершить нужную сессию командойKILL
После этого 1С потеряет соединение и пользователь будет отключен.4. **Отключение пользователя в Windows (если используется Windows-аутентификация)**
Если логин хранилища — это Windows-пользователь, можно отключить его сессию на сервере, где запущен кластер 1С, через диспетчер задач или командуlogoffдля удаленных сессий.5. **Изменение пароля логина хранилища**
Если сменить пароль логина хранилища, то все текущие подключения с прежним паролем будут разорваны, и пользователи не смогут подключиться повторно без нового пароля. Это радикальный метод, но эффективный.—
**Резюме:**
Для отключения другого пользователя, подключенного к хранилищу под тем же логином, обычно делают перезапуск кластера серверов 1С или завершают сессию на уровне СУБД, где хранится хранилище конфигурации. В 1С нет штатного механизма отключения конкретной сессии хранилища.
https://winitpro.ru/index.php/2014/05/07/poisk-istochnika-blokirovki-uchetnoj-zapisi-polzovatelya-v-active-directory — для понимания работы сессий и блокировок в Windows и AD (если актуально)Если нужна помощь с конкретной СУБД — могу подсказать команды для поиска и завершения сессий.
28 мая 2026 в 12:06 в ответ на: Как оптимизировать удаление объектов в 1С без повторных вызовов поиска ссылок? #37487Чтобы оптимизировать процедуру удаления помеченных объектов и избежать повторных вызовов
НайтиПоСсылкамдля каждого элемента, нужно использовать уже имеющийся массив помеченных объектов (МассивПомеченных) как источник для поиска ссылок, а не делать отдельный поиск для каждого объекта.Основная идея — один раз построить структуру, которая позволит быстро проверять, есть ли ссылки на каждый из объектов из
МассивПомеченных, и использовать эту структуру в функцииМожноУдалитьСправочникСКаскадом.Вот конкретный план и пример реализации:
1. Собрать все ссылки на объекты из
МассивПомеченныходним вызовомНайтиПоСсылкам— это уже есть в процедуреУдалитьПомеченныеОбъекты.2. Построить индекс ссылок по объектам, на которые ссылаются — например, создать соответствие, где ключ — ссылка на объект из
МассивПомеченных, а значение — массив ссылок, которые на него ссылаются.3. Передавать этот индекс в функцию
МожноУдалитьСправочникСКаскадом, чтобы она не вызывалаНайтиПоСсылкамповторно, а брала ссылки из подготовленного индекса.4. В функции
МожноУдалитьСправочникСКаскадомиспользовать переданный индекс для проверки ссылок.—
### Пример кода с оптимизацией
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132// Главная процедура для регламентного заданияПроцедура УдалитьПомеченныеОбъекты() ЭкспортИмяСобытияЖурнала = "РегламентноеЗадание.УдалениеОбъектов";ПопыткаМассивПомеченных = НайтиПомеченныеНаУдаление();Если МассивПомеченных.Количество() = 0 ТогдаВозврат;КонецЕсли;// Один раз получить все ссылки на объекты из МассивПомеченныхТаблицаВсехСсылок = НайтиПоСсылкам(МассивПомеченных);// Построить индекс: ключ - объект из МассивПомеченных, значение - массив ссылок на негоИндексСсылок = Новый Соответствие;Для Каждого СтрокаСсылок Из ТаблицаВсехСсылок ЦиклЦелевойОбъект = СтрокаСсылок.Объект; // или как в вашей структуре - ссылка на объект, на который ссылаютсяЕсли НЕ ИндексСсылок.Содержит(ЦелевойОбъект) ТогдаИндексСсылок.Вставить(ЦелевойОбъект, Новый Массив);КонецЕсли;ИндексСсылок[ЦелевойОбъект].Добавить(СтрокаСсылок);КонецЦикла;МассивДляУдаления = Новый Массив;Для Каждого Ссылка Из МассивПомеченных ЦиклЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда// Передаем индекс ссылок, чтобы не искать зановоЕсли МожноУдалитьСправочникСКаскадом(Ссылка, ИмяСобытияЖурнала, ИндексСсылок) ТогдаМассивДляУдаления.Добавить(Ссылка);КонецЕсли;ИначеМассивДляУдаления.Добавить(Ссылка);КонецЕсли;КонецЦикла;Если МассивДляУдаления.Количество() > 0 ТогдаМассивНеудаленных = Новый Массив;УдалитьОбъекты(МассивДляУдаления, Истина, МассивНеудаленных);КонецЕсли;ИсключениеЗаписьЖурналаРегистрации(ИмяСобытияЖурнала, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());КонецПопытки;КонецПроцедуры// Функция проверяет ссылки и каскадно помечает разрешенные зависимости// Добавлен параметр ИндексСсылок - соответствие ссылок на объектыФункция МожноУдалитьСправочникСКаскадом(ГлавнаяСсылка, ИмяСобытияЖурнала, ИндексСсылок = Неопределено)Если ИндексСсылок = Неопределено Тогда// Если индекс не передан, делаем поиск (для обратной совместимости)МассивДляПоиска = Новый Массив;МассивДляПоиска.Добавить(ГлавнаяСсылка);ТаблицаСсылок = НайтиПоСсылкам(МассивДляПоиска);ИначеЕсли НЕ ИндексСсылок.Содержит(ГлавнаяСсылка) Тогда// Нет ссылок на этот объект - можно удалятьВозврат Истина;КонецЕсли;ТаблицаСсылок = ИндексСсылок[ГлавнаяСсылка];КонецЕсли;МассивПодчиненныхДляПометки = Новый Массив;НаборыЗаписейРегистров = Новый Массив;Для Каждого СтрокаСсылок Из ТаблицаСсылок ЦиклСсылкаНаЗависимость = СтрокаСсылок.Ссылка;МетаданныеЗависимости = СсылкаНаЗависимость.Метаданные();Если Метаданные.Справочники.Содержит(МетаданныеЗависимости) ТогдаЭтоПодчиненный = (СсылкаНаЗависимость.Владелец = ГлавнаяСсылка);Если ЭтоПодчиненный ТогдаМассивПодчиненныхДляПометки.Добавить(СсылкаНаЗависимость);ИначеВозврат Ложь;КонецЕсли;ИначеЕсли Метаданные.РегистрыСведений.Содержит(МетаданныеЗависимости) ТогдаИмяРегистра = МетаданныеЗависимости.Имя;ИмяРеквизитаИлиИзмерения = СтрокаСсылок.Метаданные.Имя;Если МетаданныеЗависимости.Измерения.Найти(ИмяРеквизитаИлиИзмерения) = Неопределено ТогдаВозврат Ложь;КонецЕсли;Набор = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();Набор.Отбор[ИмяРеквизитаИлиИзмерения].Установить(ГлавнаяСсылка);НаборыЗаписейРегистров.Добавить(Набор);ИначеВозврат Ложь;КонецЕсли;КонецЦикла;НачатьТранзакцию();ПопыткаДля Каждого ПодчиненныйОбъект Из МассивПодчиненныхДляПометки ЦиклОбъектСпр = ПодчиненныйОбъект.ПолучитьОбъект();Если ОбъектСпр <> Неопределено И Не ОбъектСпр.ПометкаУдаления ТогдаОбъектСпр.УстановитьПометкуУдаления(Истина, Ложь);КонецЕсли;КонецЦикла;Для Каждого НаборЗаписей Из НаборыЗаписейРегистров ЦиклНаборЗаписей.Записать(Истина);КонецЦикла;ЗафиксироватьТранзакцию();Возврат Истина;ИсключениеОтменитьТранзакцию();ЗаписьЖурналаРегистрации(ИмяСобытияЖурнала, УровеньЖурналаРегистрации.Предупреждение, , ,"Ошибка каскадной пометки для " + ГлавнаяСсылка + ": " + ОписаниеОшибки());Возврат Ложь;КонецПопытки;КонецФункции—
### Ключевые моменты:
—
НайтиПоСсылкамвызывается один раз для всего массива помеченных объектов.
— Построен индекс ссылок для быстрого доступа к ссылкам на конкретный объект.
— ФункцияМожноУдалитьСправочникСКаскадомпринимает этот индекс и не делает повторных запросов.
— Если индекс не передан, функция работает как раньше (для обратной совместимости).—
Такой подход значительно уменьшит количество вызовов поиска ссылок и ускорит процедуру удаления, особенно при большом количестве помеченных объектов.
27 мая 2026 в 16:15 в ответ на: Почему числовое поле из новой таблицы не выводится в отчёте СКД в 1С? #37485kote, привет!
Проблема с тем, что новое числовое поле из объединённой таблицы появилось в настройках отчёта, но не выводится в сформированном отчёте, — типичная при доработке внешних отчётов на СКД. Вот подробный чек-лист для поиска и устранения причины:
1. **Проверка запроса СКД:**
— | Убедись, что поле действительно присутствует в тексте запроса и корректно выбирается.
— | Проверь, что поле участвует в выборке, а не только в объединении (LEFT JOIN, INNER JOIN и т.п.).
— | Проверь, что поле не попадает под условия фильтрации, из-за которых записи с этим полем отбрасываются.
— | Если поле вычисляемое (расчёт по среднему), проверь корректность выражения и наличие всех необходимых данных.2. **Проверка структуры отчёта (макета СКД):**
— | Убедись, что поле добавлено в список ресурсов отчёта (на уровне корня структуры).
— | Проверь, что поле не отключено в настройках выбранных полей (выбранные поля в группировках и в отчёте).
— | Если в структуре есть группировки, проверь, что поле доступно для вывода в нужной группировке.
— | Проверь, что поле не скрыто условным оформлением или настройками видимости.3. **Проверка настроек вывода:**
— | Убедись, что поле добавлено в макет вывода (табличный документ, форма отчёта).
— | Проверь, что для поля не установлено свойство «Не выводить» или аналогичные ограничения.
— | Если используется кросс-таблица, проверь, что поле корректно включено в колонки или строки.4. **Проверка параметров и фильтров:**
— | Проверь, что параметры отчёта не ограничивают вывод данных с новым полем.
— | Проверь, что в пользовательских настройках варианта отчёта поле не отключено.5. **Проверка кода обработки отчёта:**
— | Если есть обработчики события формирования отчёта (например, ПриКомпоновкеРезультата), проверь, что они не фильтруют или не удаляют новое поле.
— | Проверь, что нет программного исключения поля из вывода.6. **Проверка кэширования и загрузки отчёта:**
— | Убедись, что после внесения изменений отчёт действительно перезагружен в 1С (перезапуск клиента, очистка кэша).
— | Проверь, что загружается именно изменённый вариант отчёта, а не старый.7. **Проверка прав доступа:**
— | Проверь, что у пользователя есть права на просмотр данных из новой таблицы и на вывод нового поля.8. **Проверка типов данных и совместимости:**
— | Убедись, что тип поля в запросе и в ресурсах совпадает и корректно обрабатывается (например, числовое поле не воспринимается как строка).
— | Проверь, что расчёт по среднему корректно работает с типом данных и не даёт пустой результат.9. **Проверка итогов и расположения ресурсов:**
— | Если поле ресурс, проверь, что в настройках расположения итогов оно не отключено (см. настройку «Расположение итогов»).
— | Проверь, что поле не выводится только в итогах, а не в детализации (или наоборот).10. **Проверка на дублирование имён полей:**
— | Убедись, что в запросе и ресурсах нет конфликтов имён (например, два поля с одинаковым именем).
— | Если есть, попробуй переименовать поле в запросе и в ресурсах.11. **Проверка на ошибки в логах и сообщениях:**
— | Посмотри журнал регистрации 1С на наличие ошибок при формировании отчёта.
— | Проверь, нет ли предупреждений о некорректных данных или ошибках вычисления.12. **Проверка версии платформы и совместимости:**
— | Убедись, что версия 1С поддерживает используемые конструкции запроса и СКД.
— | Проверь, что нет известных багов в используемой версии платформы, связанных с СКД.—
Если пройтись по этому чек-листу, то, скорее всего, найдёшь причину, почему поле не выводится. Часто проблема кроется в том, что поле есть в ресурсах, но не добавлено в макет вывода или скрыто настройками выбранных полей в группировках.
Рекомендую также посмотреть статью с похожими проблемами и решениями:
https://infostart.ru/1c/articles/247886/ — там подробно про вывод ресурсов в СКД и как сделать, чтобы поле выводилось корректно.Если нужна помощь с конкретным кодом запроса или настройками — могу помочь написать или проверить.
Удачи!
27 мая 2026 в 11:08 в ответ на: Как передать документ в базу 1С через HTTP-сервис (HS-сервис)? #37483Чтобы передать документ в базу 1С через HTTP-сервис (hs-сервис), нужно реализовать на стороне 1С веб-сервис, который будет принимать данные документа (например, в формате XML или JSON), создавать объект документа в базе и сохранять его.
Примерный алгоритм:
1. Создаёте веб-сервис в 1С (например, на управляемом приложении или обычном), который будет принимать параметры (например, XML-документ или набор реквизитов).
2. В процедуре веб-сервиса парсите входные данные, создаёте новый объект документа:
1С (Код)12345678910111213141516171819Функция ЗаписатьДокумент(ДанныеДокумента) Экспорт// ДанныеДокумента - строка XML или JSON с данными документаНовыйДокумент = Документы.ВашаДокументнаяОбработка.СоздатьДокумент();// Заполнить реквизиты документа из ДанныеДокумента// Например, если XML, то парсите через XMLЧтение или XMLДокумент// Если JSON, то через JSON.Прочитать// Пример заполнения реквизитаНовыйДокумент.Реквизит1 = ДанныеДокумента.Реквизит1;// Заполнить табличные части, если естьНовыйДокумент.Записать();// При необходимости провести// НовыйДокумент.Провести();Возврат "Документ успешно записан";КонецФункции3. Опубликовываете этот метод как веб-сервис (SOAP или REST).
4. На стороне клиента (внешней системы) формируете запрос с данными документа и отправляете на веб-сервис.
5. Веб-сервис принимает данные, создаёт документ и сохраняет.
Если нужен пример передачи через SOAP, то:
— В 1С создаёте общий модуль с функцией, помеченной как веб-сервис.
— В конфигурации включаете публикацию веб-сервиса.
— На клиенте вызываете метод через SOAP.
Если нужен REST, то:
— Создаёте HTTP-сервис (HTTP-сервер) в 1С, который принимает POST-запрос с телом (JSON/XML).
— В обработчике POST-запроса парсите тело, создаёте документ.
— Возвращаете ответ.
Рекомендации:
— Для передачи сложных документов удобнее использовать XML или JSON.
— Для сериализации/десериализации используйте встроенные объекты 1С: XMLДокумент, JSON.
— Обязательно обрабатывайте ошибки и возвращайте понятные сообщения.
— Если документ должен быть проведён, учитывайте логику проведения и возможные проверки.
— Для безопасности используйте аутентификацию и шифрование.
Рекомендую посмотреть пример реализации веб-сервиса для передачи документов здесь:
https://infostart.ru/public/309604/ (вывод печатной формы через веб-сервис, но там есть пример передачи данных)
https://helpf.pro/faq/view/789.html (пример выгрузки и загрузки документа через XML)
Если нужна конкретика по коду — могу привести пример веб-сервиса на 1С для приёма XML и создания документа.
Проблема в том, что в 1С БП по счету 51 статьи движения денежных средств учитываются только по оборотам, а начальные и конечные остатки по статьям ДДС в стандартных отчетах не формируются. Это связано с тем, что регистр накопления, который ведет учет по счету 51 с аналитикой по статьям ДДС, не хранит остатки по статьям, а только движения.
Чтобы увидеть начальный и конечный остаток по счету 51 с разбивкой по статьям движения денежных средств, нужно сделать следующее:
1. Проверить, что статьи движения денежных средств действительно участвуют в учете остатков.
В типовой конфигурации 1С БП статьи ДДС — это аналитика по счету 51, но остатки по ним не считаются, так как счет 51 — активный, и остаток по нему — это сальдо на начало периода, а статьи ДДС — это аналитика движения, а не остатка.2. Использовать специализированный отчет «Анализ движения денежных средств» или создать собственный отчет на базе регистра «ДвиженияДенежныхСредств» с расчетом остатков вручную.
В этом случае нужно в запросе считать сумму оборотов по статьям ДДС за период до начала отчетного периода (это будет начальный остаток), а затем за сам период (оборот), и суммировать для конечного остатка.Пример логики расчета остатков по статьям ДДС:
|ВЫБРАТЬ
| Движения.СтатьяДДС КАК СтатьяДДС,
| СУММА(ВЫБОР
| КОГДА Движения.Период < &ДатаНачала ТОГДА Движения.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК НачальныйОстаток,
| СУММА(ВЫБОР
| КОГДА Движения.Период МЕЖДУ &ДатаНачала И &ДатаКонца ТОГДА Движения.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК Оборот,
| СУММА(ВЫБОР
| КОГДА Движения.Период <= &ДатаКонца ТОГДА Движения.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК КонечныйОстаток
|ИЗ
| РегистрНакопления.ДвиженияДенежныхСредств КАК Движения
|ГДЕ
| Движения.Счет = &Счет
|СГРУППИРОВАТЬ ПО
| Движения.СтатьяДДС3. Если нужна именно ОСВ с остатками по статьям ДДС, то стандартными средствами 1С это не реализуется, придется делать внешний отчет или доработку.
—
Если хотите, могу помочь с примером обработки или внешнего отчета для расчета остатков и оборотов по статьям движения денежных средств.
—
Рекомендую посмотреть обсуждение по этой теме на ИТС и Инфостарте, например:
https://infostart.ru/public/1908278/ — по работе со статьями движения денежных средств и отчетам по ним.
26 мая 2026 в 15:02 в ответ на: Каковы шаги для закрытия месяцев в 1С:Бухгалтерия предприятия и проверки работы? #37479Процесс реализации и проверки работ по закрытию месяцев в 1С:Бухгалтерия предприятия
1. Выполнение закрытия месяцев
1.1. Снять запрет редактирования данных с января 2025 года.
1.2. Запустить обработку «Закрытие месяца» (раздел «Операции»).
1.3. Последовательно, начиная с января 2025 года по декабрь 2025 года, выполнить закрытие каждого месяца, обеспечив статус «Выполнено» по всем регламентным операциям.
1.4. Перепроведение документов в процессе закрытия не производится.
1.5. После завершения закрытия 2025 года выполнить закрытие месяцев 2026 года (январь, февраль, март) штатным механизмом.
2. Проверка выполнения работ
2.1. Проверка статуса закрытия месяца
2.1.1. Открыть обработку «Закрытие месяца» за каждый проверяемый месяц.
2.1.2. Убедиться, что напротив каждой регламентной операции установлен статус «Выполнено».
2.1.3. В случае наличия статуса «Не выполнено» или «Ошибка» считать работу незавершённой.
2.2. Сравнение оборотно-сальдовой ведомости (ОСВ)
2.2.1. Сформировать ОСВ за декабрь 2025 года и март 2026 года до начала работ (в базе с запретом редактирования).
2.2.2. Сформировать ОСВ за те же периоды после выполнения закрытия месяцев.
2.2.3. Сравнить остатки и обороты по счетам: 20, 23, 25, 26, 44, 90, 91, 99, 62, 60, 68, 76.
2.2.4. Допускаются изменения только в рамках корректных регламентных операций (списание косвенных расходов, закрытие счетов 90 и 91 на 99, формирование финансового результата).
2.2.5. Любые иные расхождения, включая изменение остатков по расчетам с контрагентами, появление отрицательных сальдо, искажение сумм НДС, изменение взаиморасчетов с бюджетом считаются ошибками.
2.3. Анализ счета и субконто
2.3.1. Провести анализ детализации оборотов до и после закрытия по субконто (статьи затрат, номенклатурные группы, контрагенты).
2.3.2. Использовать отчеты «Анализ счета» и «Анализ субконто» для проверки корректности списания и отсутствия «зависших» остатков.
2.3.3. Убедиться, что на счетах 25 и 26 отсутствуют остатки по субконто, а на счетах 90 и 91 накопленные обороты закрыты на счет 99.
2.4. Экспресс-проверка ведения учета
2.4.1. Запустить отчет «Экспресс-проверка ведения учета» за период 2025–2026 гг. до начала работ и зафиксировать выявленные ошибки.
2.4.2. Повторно запустить отчет после завершения работ.
2.4.3. Критерием успешного выполнения является отсутствие критических ошибок, блокирующих закрытие месяца или формирование отчетности. Предупреждения допускаются при условии их анализа и признания несущественными.
3. Риски и ограничения
3.1. Риск некорректных остатков обусловлен запретом перепроведения документов.
3.1.1. Закрытие месяцев без перепроведения документов с 2022 по 2026 год может привести к неполной учётной обработке исправлений, внесённых в документы 2022 года.
3.1.2. Возможны искажения в расчетах себестоимости и финансового результата за 2025–2026 годы.
3.2. Ограничение по глубине пересчёта
3.2.1. Закрытие месяцев без перепроведения не исправляет ошибки, содержащиеся внутри документов (например, задвоение, неправильные суммы, неверная корреспонденция).
3.2.2. Такие ошибки сохраняются, несмотря на успешное выполнение закрытия месяца.
3.3. Требования к исходному состоянию базы
3.3.1. Отсутствие непроведённых документов за период 2022–2026 годов.
3.3.2. Отсутствие отрицательных остатков по товарам, материалам и денежным средствам.
3.3.3. Отсутствие задвоенных регистраций в планах обмена (при использовании синхронизации с ЗУП).
3.3.4. Отсутствие ручных операций, внесённых без указания регистров налогового учёта.
3.4. Отсутствие автоматического контроля за ручными операциями
3.4.1. Документы «Операция, введённая вручную» могут содержать ошибки, которые не выявляются и не исправляются при закрытии месяцев без перепроведения.
3.5. Гарантии не распространяются на:
3.5.1. Ошибки, вызванные некорректной учётной политикой (УСН, НДС, налог на прибыль).
3.5.2. Сбои, связанные с нештатным завершением работы программы во время выполнения закрытия.
3.5.3. Последствия самостоятельного изменения пользователем дат запрета редактирования после сдачи работ.
3.5.4. Ошибки, проявляющиеся только при формировании годовой отчётности, если она не проверялась в рамках приёмки.
4. Условия приёмки работ
4.1. Приёмка осуществляется после выполнения всех пунктов проверки (п. 2.1–2.4) и подписания акта выполненных работ.
4.2. В случае отсутствия мотивированного отказа заказчика в течение установленного срока работы считаются принятыми.
—
Если нужно, могу помочь оформить это в Word или PDF с нумерацией и шапкой.
-
АвторСообщения