При переходе с устаревшей редакции «1С:Комплексная автоматизация 1.1» на современные версии (КА 2.4 или актуальную 2.5) специалисты часто сталкиваются с вопросом корректного переноса исторических документов и справочников. Рассмотрим подробнее, какие типовые инструменты существуют, в чем их ограничения, и разберем по шагам решение проблемы с пропавшими функциями при использовании «Конвертации данных 3».
Проанализируем доступные варианты обмена данными, которые предлагает фирма «1С» и разработчики.
ExtFiles) поставляется штатная обработка и макет с правилами обмена в формате 2.01. Важно понимать, что этот механизм ориентирован в первую очередь на перенос нормативно-справочной информации (справочников) и начальных остатков на дату перехода. Перенос оборотов и документов за прошлые периоды в нем реализован крайне ограниченно.EnterpriseData. Это позволяет настроить более «плавный» переход и обмен документами. Однако универсальный формат жестко регламентирован XDTO-пакетами. На исторических «грязных» данных (незаполненные обязательные реквизиты, дубли) валидация XDTO часто выдает ошибки и не пропускает объекты.Для сложных разовых переходов с переносом документов программисты до сих пор предпочитают дорабатывать правила на классической «Конвертации данных 2.1», так как она позволяет гибко обходить ошибки в старых базах.
Если вы решили использовать формат EnterpriseData и вам необходимо скорректировать правила через «Конвертацию данных 3» (КД 3), вам понадобится выгрузить и загрузить обратно программный код в общий модуль МенеджерОбменаЧерезУниверсальныйФормат. Выясним, обязательно ли для этого снимать конфигурацию-источник с поддержки.
Снимать конфигурацию с замка не обязательно. В современных версиях Библиотеки стандартных подсистем (БСП) в настройках синхронизации данных можно переключить режим работы. Вы можете указать, что модуль МенеджерОбменаЧерезУниверсальныйФормат находится во внешней обработке. Таким образом, вы просто помещаете модифицированный код в обработку, подключаете её в пользовательском режиме и радуетесь — конфигурация остается типовой (хотя обновления для КА 1.1 уже давно не выпускаются).
Посмотрим на пример распространенной ошибки. При выгрузке модуля менеджера обмена из КД 3 и попытке применить его в КА 1.1 возникает множество синтаксических ошибок, например:
{ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(221,7)}: Процедура или функция с указанным именем не определена (ЭтоСБДСРасчетыСКонтрагентами)
Если <<?>>ЭтоСБДСРасчетыСКонтрагентами(ДанныеИБ) Тогда (Проверка: Толстый клиент (обычное приложение))
Причина проблемы: Ошибка возникает из-за особенностей парсинга текста в «Конвертации данных 3». При загрузке структуры из текстового файла общего модуля КД 3 ориентируется на служебные комментарии-теги. Если при загрузке теги считались некорректно, секция //Алгоритмы просто не переносится в базу КД 3. При обратной генерации кода этот блок оказывается пустым, и все функции, к которым обращаются ПКО и ПОД, пропадают.
Решение: Нам необходимо вручную скопировать недостающий блок алгоритмов из оригинального типового модуля МенеджерОбменаЧерезУниверсальныйФормат старой конфигурации (или УПП 1.3) в сгенерированный итоговый модуль внешней обработки. Ниже приведен код пропавшей функции для работы с безналичными расчетами:
Функция ЭтоСБДСРасчетыСКонтрагентами(ДанныеИБ, ВидРасчетов = "")
ВидОперации = ДанныеИБ.ВидОперации;
Если ВидОперации = Перечисления.ВидыОперацийСписаниеБезналичныхДенежныхСредств.ВозвратДенежныхСредствПокупателю
Или ВидОперации = Перечисления.ВидыОперацийППИсходящее.ВозвратДенежныхСредствПокупателю Тогда
ВидРасчетов = "СПокупателем";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийСписаниеБезналичныхДенежныхСредств.ОплатаПоставщику
Или ВидОперации = Перечисления.ВидыОперацийППИсходящее.ОплатаПоставщику Тогда
ВидРасчетов = "СПоставщиком";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийСписаниеБезналичныхДенежныхСредств.РасчетыПоКредитамИЗаймам
Или ВидОперации = Перечисления.ВидыОперацийППИсходящее.РасчетыПоКредитамИЗаймамСКонтрагентами Тогда
ВидРасчетов = "КредитыИЗаймы";
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийСписаниеБезналичныхДенежныхСредств.ПрочиеРасчетыСКонтрагентами
Или ВидОперации = Перечисления.ВидыОперацийППИсходящее.ПрочиеРасчетыСКонтрагентами Тогда
ВидРасчетов = "Прочее";
Иначе
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
Вставьте эту и другие недостающие функции из раздела алгоритмов в конец вашего модифицированного модуля. После этого проверка синтаксиса пройдет успешно, и обмен через формат EnterpriseData заработает корректно.