При интеграции 1С:Управление торговлей и 1С:Бухгалтерия предприятия 3.0 (БП 3.0) часто возникает задача выгрузки управленческих документов в виде бухгалтерских проводок (документ ОперацияБух). Одной из самых трудоемких задач здесь является перенос документа Пересортица товаров, так как в бухгалтерской программе для него нет прямого аналога, а ручные операции требуют детального заполнения регистров бухгалтерии. Рассмотрим подробно, как решить эту задачу с помощью Конвертации данных 2.0 (КД 2.0).
Основная сложность заключается в том, что ОперацияБух в БП 3.0 — это документ-контейнер для записей регистра бухгалтерии Хозрасчетный. Если просто перенести шапку документа, проводки не появятся. Если переносить проводки через ВходящиеДанные, часто возникают проблемы с незаполненными субконто или количеством. Выясним причину: в КД 2.0 для корректной выгрузки движений необходимо, чтобы в правилах были актуальные метаданные регистра бухгалтерии со всеми его измерениями и ресурсами.
Важно: Перед началом работы обязательно обновите структуру метаданных в базе Конвертация данных. При выгрузке структуры из БП 3.0 (приемника) убедитесь, что выбрана галочка "Регистры бухгалтерии" и конкретно регистр Хозрасчетный. Без этого вы не сможете настроить правила для субконто.
Создадим Правило конвертации объекта (ПКО) для документа. Источником будет ДокументСсылка.ПересортицаТоваров, приемником — ДокументСсылка.ОперацияБух. Основную логику формирования проводок мы опишем в обработчике ПередВыгрузкой самого ПКО. Нам нужно сформировать Таблицу Значений (ТЗ), которая имитирует структуру регистра бухгалтерии.
Проанализируем пример кода для заполнения ВходящиеДанные:
ТаблицаПроводок = Новый ТаблицаЗначений;
ТаблицаПроводок.Колонки.Добавить("Период");
ТаблицаПроводок.Колонки.Добавить("Организация");
ТаблицаПроводок.Колонки.Добавить("Содержание");
ТаблицаПроводок.Колонки.Добавить("Сумма");
ТаблицаПроводок.Колонки.Добавить("СчетДт");
ТаблицаПроводок.Колонки.Добавить("СчетКт");
// Важно: для субконто и количества используем имена как в приемнике
ТаблицаПроводок.Колонки.Добавить("КоличествоДт");
ТаблицаПроводок.Колонки.Добавить("КоличествоКт");
ТаблицаПроводок.Колонки.Добавить("СубконтоДт");
ТаблицаПроводок.Колонки.Добавить("СубконтоКт");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пересортица.Ссылка.Дата КАК Период,
| Пересортица.Ссылка.Организация КАК Организация,
| \"Пересортица товаров\" КАК Содержание,
| Пересортица.Сумма КАК Сумма,
| Пересортица.НоменклатураОприходование КАК НомДт,
| Пересортица.Количество КАК КолДт,
| Пересортица.Номенклатура КАК НомКт,
| Пересортица.Количество КАК КолКт
|ИЗ
| Документ.ПересортицаТоваров.Товары КАК Пересортица
|ГДЕ
| Пересортица.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Стр = ТаблицаПроводок.Добавить();
ЗаполнитьЗначениеСвойств(Стр, Выборка);
Стр.СчетДт = "41.01"; // Можно передавать строкой или через ПКО счета
Стр.СчетКт = "41.01";
// Формируем структуры субконто
СтруктураСубконтоДт = Новый Соответствие;
СтруктураСубконтоДт.Вставить("Номенклатура", Выборка.НомДт);
Стр.СубконтоДт = СтруктураСубконтоДт;
СтруктураСубконтоКт = Новый Соответствие;
СтруктураСубконтоКт.Вставить("Номенклатура", Выборка.НомКт);
Стр.СубконтоКт = СтруктураСубконтоКт;
КонецЦикла;
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("Хозрасчетный", ТаблицаПроводок);
Теперь перейдем к настройке Правил конвертации групп свойств (ПКГС) внутри нашего ПКО. Найдите группу свойств, отвечающую за регистр Хозрасчетный (она появляется после загрузки метаданных регистра). Разберем по шагам настройки:
Период, СчетДт, СчетКт, Сумма, КоличествоДт, КоличествоКт.СчетДт и СчетКт укажите ПКО ПланыСчетовСсылка.Хозрасчетный. Если вы передаете код счета строкой, в ПКО счета должен стоять поиск по коду.Передача субконто — самый "тонкий" момент. В БП 3.0 Субконто в регистре — это не просто поле, а набор записей. Проанализируем, как правильно настроить ПКС для СубконтоДт и СубконтоКт:
Поскольку в источнике (УТ) нет типа данных ВидСубконто, мы используем строковые ключи в Соответствии (как показано в коде выше). В КД 2.0 для ПКС СубконтоДт в ПКГС регистра выполним следующие действия:
СубконтоДт.ПередВыгрузкой этого ПКС можно дополнительно уточнить правила, но если вы передали Соответствие через ВходящиеДанные, система КД попытается сопоставить ключи (например, "Номенклатура") с видами субконто на указанном счете в БП 3.0.Часто программисты сталкиваются с тем, что сумма выгружается, а количество — нет. Рассмотрим причины:
КоличествоДт и КоличествоКт (регистр чувствителен к регистру букв).ПодразделениеДт и ПодразделениеКт.Мы проанализировали процесс выгрузки пересортицы в ручную операцию и выяснили, что ключ к успеху — это использование ПКГС с флагом "Входящие данные" и передача субконто через объект Соответствие.
Совет: Если в документе много строк, формирование ТЗ в памяти может быть накладным. Однако для документа Пересортица количество строк обычно не превышает нескольких сотен, что делает этот метод оптимальным по скорости разработки и надежности. Не забывайте в ПКО документа ОперацияБух устанавливать свойство СпособЗаполнения = "Вручную", чтобы бухгалтеры могли редактировать созданные вами проводки при необходимости.