При запуске совместной работы конфигураций «1С:Управление торговлей 11» и «1С:Бухгалтерия предприятия 3.0» специалисты регулярно сталкиваются с неожиданным поведением типовой синхронизации: документы ввода начальных остатков, заведенные в УТ 11, не выгружаются в бухгалтерскую программу через универсальный формат EnterpriseData. Разберем архитектурные причины такого поведения платформы и подробно рассмотрим проверенные практические способы переноса входящего сальдо.
Проанализируем устройство модуля МенеджерОбменаЧерезУниверсальныйФормат в обеих конфигурациях. В формате обмена EnterpriseData типы данных для передачи остатков предусмотрены, однако в конфигурации УТ 11 правила обработки данных (ПОД) для документов ввода остатков описаны исключительно на прием, а правила отправки отсутствуют. На стороне БП 3.0 ситуация аналогична: обработчики загрузки остатков через типовой механизм обмена не реализованы.
Данная особенность подтверждается официальной позицией разработчиков фирмы «1С»: типовой перенос документов ввода начальных остатков по маршруту УТ 11 → БП 3.0 не поддерживается. Разработчики исходят из следующей методологии учета:
Выясним, какими практичеcкими путями можно решить задачу ввода остатков при реальном внедрении связки программ.
Рассмотрим рекомендованный методически правильный сценарий. Если база БП 3.0 запускается одновременно с УТ 11, наиболее надежно завести остатки сначала на стороне бухгалтерии, а затем перенести их в торговую систему.
ПомощникВводаНачальныхОстатков по всем требуемым счетам (01, 10, 41, 50, 51, 60, 62 и т.д.). Вся бухгалтерская и налоговая аналитика при этом заполняется корректно под контролем бухгалтера.ВводОстатков с соответствующими типами операций (собственные товары, расчеты с поставщиками, расчеты с клиентами).Если остатки номенклатуры уже введены и выверены в УТ 11, и переносить их повторно вручную трудозатратно, применим штатную возможность табличных частей БП 3.0:
ВводНачальныхОстатков по счету 41.01 («Товары на складах») или 10.01.Номенклатура, Количество, Сумма, Склад. Выполняем автоматическую синхронизацию номенклатурных позиций по наименованию или артикулу.Этот способ позволяет перенести многотысячную номенклатуру за считанные минуты без программирования и риска поломки типовых конфигураций.
Посмотрим на практический прием, позволяющий задействовать уже существующий типовой обмен EnterpriseData без изменения конфигураций:
ВводОстатков регистрируем остатки документом ОприходованиеИзлишковТоваров (или документом ПриобретениеТоваровУслуг от специально созданного технического контрагента).ОприходованиеТоваров или ПоступлениеТоваровУслуг.ОперацияБух (операция, введенная вручную) и переносим обороты со счета 91.01 на вспомогательный счет 00.Когда требуется автоматизированный перенос большого объема специфических данных (партии, серии, ГТД, разрезы договоров), оптимальным решением для программиста является написание разовой обработки прямого переноса через V83.COMConnector.
Разберем логику извлечения данных из УТ 11 и заполнения документа ввода остатков в БП 3.0:
// Подключение к базе-источнику (УТ 11)
V83COM = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "Srvr=""Server1C"";Ref=""trade_base"";Usr=""Admin"";Pwd=""pass"";";
БазаУТ = V83COM.Connect(СтрокаПодключения);
// Выборка остатков товаров из регистра накопления или документа ввода остатков УТ
ЗапросКИсточнику = БазаУТ.NewObject("Запрос");
ЗапросКИсточнику.Текст =
"ВЫБРАТЬ
| ВводОстатков.Номенклатура.Наименование КАК НоменклатураНаименование,
| ВводОстатков.Номенклатура.Артикул КАК Артикул,
| ВводОстатков.Количество КАК Количество,
| ВводОстатков.Сумма КАК Сумма
|ИЗ
| Документ.ВводОстатков.Товары КАК ВводОстатков
|ГДЕ
| ВводОстатков.Ссылка.Проведен = ИСТИНА";
Выборка = ЗапросКИсточнику.Выполнить().Выбрать();
// Создание документа в базе-приемнике (БП 3.0)
ДокОстатков = Документы.ВводНачальныхОстатков.СоздатьДокумент();
ДокОстатков.Дата = Дата("20231231235959");
ДокОстатков.Организация = ВыбраннаяОрганизация;
ДокОстатков.РазделУчета = Перечисления.РазделыУчетаДляВводаОстатков.Товары;
Пока Выборка.Следующий() Цикл
СтрокаТЧ = ДокОстатков.Товары.Добавить();
// Поиск номенклатуры в БП по артикулу или наименованию
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Выборка.Артикул);
Если НЕ ЗначениеЗаполнено(НайденнаяНоменклатура) Тогда
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Выборка.НоменклатураНаименование);
КонецЕсли;
СтрокаТЧ.Номенклатура = НайденнаяНоменклатура;
СтрокаТЧ.Количество = Выборка.Количество;
СтрокаТЧ.Стоимость = Выборка.Сумма;
СтрокаТЧ.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
КонецЦикла;
ДокОстатков.Записать(РежимЗаписиДокумента.Запись);
Рассмотренный подход через внешнюю обработку или разовые правила «1С:Конвертация данных 2.0» существенно экономит время по сравнению с попытками доработки правил универсального формата EnterpriseData с нуля, так как операция ввода начального сальдо является однократной и не требует регулярной синхронизации в дальнейшем.