Здесь акцентирую внимание на создание субконто, так как это вызывает основную сложность.
1. Создание правила выгрузки данных.
Данное правило формирует таблицу значений для проводок.
Код правила выгрузки:
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); // ДатаНачала и ДатаОкончания предопределенные параметры конфигурации «Конвертация данных»
Запрос.УстановитьПараметр("…….",……………….); // дополнительные параметры
Запрос.Текст = "ВЫБРАТЬ
………………………………………………………..
| …………………..КАК Контрагент,
| ………………… КАК Договор,
| СУММА(…………………..Сумма) КАК Сумма,
| …………………. КАК СчетДт,
| …………………..КАК СчетКт,
| …………………. КАК КоличествоДт,
| ………………… КАК КоличествоКт
|ИЗ
| ……………… КАК ………………………………
|ГДЕ
| ……………………………………...Период МЕЖДУ &ДатаНачала И &ДатаОкончания
РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой); // таблица значений из запроса
Если РезультатЗапроса.Количество() > 0 Тогда
// шапка документа
ВходящиеДанные = Новый Структура("Дата, Хозрасчетный, Комментарий, Содержание ");
ВходящиеДанные.Дата = КонецДня(ДатаОкончания);
ВходящиеДанные.Содержание = "Взаиморасчеты компании.";
ВходящиеДанные.Комментарий = "Загружено из Альфа-Авто.";
ВходящиеДанные.СпособЗаполнения = "Вручную";
// табличная часть документа
РезультатЗапроса.Колонки.Добавить("СубконтоДт");
РезультатЗапроса.Колонки.Добавить("СубконтоКт");
Для Каждого ТекущаяСтрокаРезультатЗапроса Из РезультатЗапроса Цикл
СубконтоДт = Новый Соответствие;
СубконтоДт.Вставить(Новый Структура("Код", "00005"), ТекущаяСтрокаРезультатЗапроса.Контрагент);
СубконтоДт.Вставить(Новый Структура("Код", "00016"), ТекущаяСтрокаРезультатЗапроса. Договор);
ТекущаяСтрокаРезультатЗапроса.СубконтоДт = СубконтоДт;
СубконтоКт = Новый Соответствие;
ТекущаяСтрокаРезультатЗапроса.СубконтоКт = СубконтоКт;
КонецЦикла;
ВходящиеДанные.Хозрасчетный = РезультатЗапроса;
ВыгрузитьПоПравилу(, ,ВходящиеДанные , , "ОперацияБух");
КонецЕсли;
Самая главная строка, необходимая для Субконто:
СубконтоДт.Вставить(Новый Структура("Код", "00005"), ТекущаяСтрокаРезультатЗапроса.Контрагент)
Новый Структура("Код", "00005") – добавляется код элемента плана видов характеристик, как он определен в базе-приемнике (в данном случае – это элемент "Контрагенты").
2. Создание правил конвертации объектов
- Для документа «ОперацияБух»
приемник - реквизит «Хозрасчетный» документа «ОперацияБух»
Здесь самая главная строка:
ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные";
Аналогично заполяется для приемника и СубконтоКт
- Для плана видов характеристик «ВидыСубконтоХозрасчетные»
- Для Субконто «Контрагенты»
3. Последний штрих
То, что я не встретил ни в одном источнике: если создано несколько правил конвертации объектов с одинаковым типом у источника (например для контрагентов создано два правила по конвертации данных), то для того чтобы система попадала в нужное правило, приоритет у этого правила должен быть максимальными среди них.
Решил разместить публикацию, так как сам потратил много времени, пока нашёл нужное решение. В той литературе, что есть, этот момент описан скудно, пришлось пересмотреть множество правил обмена.
Надеюсь, кому-то поможет данная статья.