Перенос бухгалтерских проводок и ручных операций из конфигураций платформы 1С:Предприятие 8 в базы 1С:Предприятие 7.7 — нестандартная задача, с которой сталкиваются разработчики при поддержке устаревших информационных баз или поэтапной миграции систем. Архитектура бухгалтерского учета в 1С 7.7 существенно отличается от восьмой версии платформы, что накладывает специфические ограничения при настройке правил обмена в конфигурации Конвертация данных 2.1.
Разберем архитектурные различия платформ, выясним причину сложностей при прямой выгрузке в ручные операции и рассмотрим два способа решения задачи: выгрузку в документ Бухгалтерская справка и прямую настройку правил для объекта Операция.
Для правильной настройки правил обмена проанализируем различия в хранении проводок между платформами:
Документ.ОперацияБух), движения которого записываются в регистр бухгалтерии (РегистрБухгалтерии.Хозрасчетный). В 1С 7.7 Операция является самостоятельным объектом метаданных, привязанным к журналу операций, либо встроенным свойством документа.Проведен(). Попытка вызвать типовые проверки проведения при загрузке через внешнюю обработку V77Imp.ert приведет к ошибкам времени выполнения.Субконто(1), Субконто(2), Субконто(3). При переносе важно соблюдать строгую позиционную последовательность.В типовой конфигурации «1С:Бухгалтерский учет 7.7» присутствует документ Бухгалтерская справка. Загрузка данных в табличную часть этого документа вместо создания прямой операции считается наиболее надежным подходом. В этом случае мы работаем со стандартным документом платформы 7.7, у которого проведение и формирование проводок выполняются штатными модулями конфигурации-приемника.
Разберем по шагам настройку правил обмена для этого способа:
ДокументСсылка.ОперацияБух (или произвольный источник данных, если проводки собираются запросом), а приемником выбирается Документ.БухгалтерскаяСправка.Проводки или ТабличнаяЧасть в зависимости от конфигурации 7.7).СчетДт и СчетКт настраиваются отдельные ПКО для планов счетов. Значения субконто передаются в соответствующие реквизиты строки табличной части с сопоставлением типов данных справочников.Если требуется перегрузить данные именно в несвязанную с документами операцию, правила настраиваются напрямую для объекта Операция.
Рассмотрим порядок настройки ПКО:
Операция. Источником может служить выборка из регистра бухгалтерии, формируемая в обработчике ВыборкаДанных.Проводки. Сопоставляем реквизиты каждой проводки:
// Обязательные свойства строки проводки:
СчетДт -> ПланСчетов (сопоставление через ПКО)
СчетКт -> ПланСчетов (сопоставление через ПКО)
Сумма -> Число
КоличествоДт -> Число
КоличествоКт -> Число
ВалСумма -> Число
Валюта -> Справочник.Валюты
НомерЖурнала -> Строка (например, "ГЛ")
Содержание -> Строка
ПередВыгрузкой свойства субконто определяется позиция вида субконто на счете приемника.Если стандартный механизм сопоставления коллекции проводок в V77Imp.ert вызывает сложности с заполнением субконто или валютных сумм, операцию можно сформировать программно на встроенном языке 1С 7.7 в обработчике ПослеЗагрузки объекта-приемника.
Посмотрим на пример заполнения операции через код 1С 7.7:
// Обработчик "ПослеЗагрузки" в КД 2 (выполняется на стороне 1С 7.7)
Опер = СоздатьОбъект("Операция");
// Проверяем наличие операции на текущую дату и документ-основание
Если Опер.НайтиОперацию(Объект) = 1 Тогда
Опер.УдалитьПроводки();
Иначе
Опер.Новая();
Опер.ДатаОперации = Объект.ДатаДок;
Опер.Содержание = "Перенос из 1С 8: " + Объект.НомерДок;
КонецЕсли;
// В цикле обходим полученную из 1С 8 таблицу параметров проводок
Для Ном = 1 По ПараметрыОбъекта.ТаблицаПроводок.КоличествоСтрок() Цикл
ПараметрыОбъекта.ТаблицаПроводок.ПолучитьСтрокуПоНомеру(Ном);
Опер.НоваяПроводка();
Опер.Дебет.Счет = ПараметрыОбъекта.ТаблицаПроводок.СчетДт;
Опер.Дебет.Субконто(1, ПараметрыОбъекта.ТаблицаПроводок.СубконтоДт1);
Опер.Дебет.Субконто(2, ПараметрыОбъекта.ТаблицаПроводок.СубконтоДт2);
Опер.Кредит.Счет = ПараметрыОбъекта.ТаблицаПроводок.СчетКт;
Опер.Кредит.Субконто(1, ПараметрыОбъекта.ТаблицаПроводок.СубконтоКт1);
Опер.Сумма = ПараметрыОбъекта.ТаблицаПроводок.Сумма;
Опер.НомерЖурнала = "ГЛ";
Опер.СодержаниеПроводки = ПараметрыОбъекта.ТаблицаПроводок.Содержание;
КонецЦикла;
Опер.Записать();
При загрузке данных в 1С 7.7 обратите внимание на следующие нюансы:
V77Imp.ert, поставляемый в каталоге шаблонов установленной конфигурации «Конвертация данных 2.1». Несоответствие версий формата выгрузки и файла загрузки приводит к ошибкам разбора XML.