При настройке синхронизации данных между конфигурациями 1С:Управление торговлей 11 (УТ) и 1С:Бухгалтерия предприятия 3.0 (БП) пользователи часто сталкиваются с неприятной ситуацией. Документы ввода начальных остатков, созданные в УТ 11, упорно не появляются в БП 3.0. При этом сам процесс синхронизации завершается успешно, в журнале регистрации нет сообщений об ошибках, а другие документы (например, реализации или поступления) переносятся без каких-либо проблем.
В этой статье мы подробно разберем, почему так происходит, выясним технические причины этого поведения и рассмотрим эффективные практические способы решения этой задачи.
Для начала проанализируем архитектуру обмена данными. Современная типовая синхронизация между конфигурациями 1С построена на базе универсального формата обмена EnterpriseData (стандарт XML/XDTO). Этот формат стандартизирует передачу бизнес-сущностей между различными информационными базами.
Логика работы этого механизма накладывает определенные методологические ограничения:
EnterpriseData физически отсутствуют алгоритмы загрузки для объектов типа ввода остатков. Бухгалтерская программа просто игнорирует эти узлы данных при чтении пакета, не выдавая при этом ошибок прерывания.В настройках синхронизации УТ 11 многие замечают опцию «Выгружать информативные остатки» и пытаются активировать ее в надежде решить проблему. Давайте разберем по шагам, что на самом деле делает этот флаг, чтобы не допускать ошибок.
Эта настройка предназначена исключительно для обмена данными с внешними кассовыми и мобильными приложениями (например, «1С:Касса», «1С:РМК» или мобильное приложение торгового представителя). При ее включении в УТ 11 запускается регламентное задание, которое рассчитывает доступные остатки товаров на складах и записывает их в служебный регистр сведений РегистрыСведений.ДоступностьТоваровДляВнешнихПользователей.
Для бухгалтерии эта информация абсолютно бесполезна. БП 3.0 не содержит аналогичных регистров оперативных остатков и не умеет обрабатывать эти данные. Таким образом, включение этой опции никак не поможет перенести начальные остатки в бухгалтерскую базу.
Рассмотрим самый быстрый практический способ, который не требует программирования и изменения правил обмена. Суть метода заключается в использовании временных документов поступления товаров в качестве «транспорта» для переноса номенклатуры и остатков.
Выполним процедуру по шагам:
ПриобретениеТоваровУслуг (Поступление товаров и услуг). Дату документа установите на один день раньше даты начала ведения учета (например, если учет в БП начинается с 01.01.2024, то документ создаем от 31.12.2023).ВводНачальныхОстатков. Это позволит быстро заполнить огромные табличные части без ручного ввода.Если объем данных слишком велик или требуется автоматизировать процесс для регулярного использования, мы можем написать небольшую внешнюю обработку. Проанализируем пример кода на языке 1С, который может быть запущен в базе БП 3.0 для автоматического создания документов ввода остатков по разделу «Товары на складах» на основании загруженных документов поступления.
// Процедура автоматического создания Ввода остатков на основании перенесенного Поступления
Процедура СоздатьВводОстатковНаОснованииПоступления(ДокументПоступленияСсылка) Экспорт
// Получаем объект документа-источника
ПоступлениеОбъект = ДокументПоступленияСсылка.ПолучитьОбъект();
// Инициализируем новый документ Ввод начальных остатков
НовыйВводОстатков = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйВводОстатков.Дата = ПоступлениеОбъект.Дата;
НовыйВводОстатков.Организация = ПоступлениеОбъект.Организация;
НовыйВводОстатков.ОтражатьВБухгалтерскомУчете = Истина;
НовыйВводОстатков.ОтражатьВНалоговомУчете = Истина;
// Устанавливаем раздел учета для товаров на складах
НовыйВводОстатков.РазделУчета = Перечисления.РазделыУчетаНовыхОстатков.ТоварыНаСкладах;
// Переносим строки табличной части
Для Каждого СтрокаТовара Из ПоступлениеОбъект.Товары Цикл
НоваяСтрока = НовыйВводОстатков.Товары.Добавить();
НоваяСтрока.Номенклатура = СтрокаТовара.Номенклатура;
НоваяСтрока.Количество = СтрокаТовара.Количество;
НоваяСтрока.Склад = СтрокаТовара.Склад;
// Устанавливаем счет учета по умолчанию (например, 41.01)
НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
// Переносим стоимостные показатели
НоваяСтрока.Сумма = СтрокаТовара.Сумма;
НоваяСтрока.СуммаНУ = СтрокаТовара.Сумма;
КонецЦикла;
// Записываем и проводим документ
Попытка
НовыйВводОстатков.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Успешно сформирован документ ввода остатков: " + НовыйВводОстатков.Ссылка);
Исключение
НовыйВводОстатков.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Документ записан, но не проведен: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Использование подобных обработок значительно ускоряет рутинную работу по переносу номенклатурных позиций и позволяет избежать механических ошибок ввода. Для решения этой задачи можно использовать обработку для прямого переноса остатков товаров из УТ 11 в БП 3.0.
Для системных администраторов и программистов 1С наиболее надежным и элегантным решением является кастомизация правил обмена. Если вы используете нетиповой обмен или готовы доработать текущие правила, выполните следующие шаги:
MD83Exp.epf.ВводНачальныхОстатков. Настройте сопоставление свойств (реквизитов) документа: организация, дата, отражение в учете, а также табличных частей (разделов учета).Если вы используете сторонние правила или пытаетесь переносить данные другими методами, обязательно обратите внимание на следующие важные параметры: