Работа с обменами данных — это одна из наиболее частых задач программиста 1С. Часто возникают ситуации, когда типовые правила обмена между «Управление торговлей 11» (УТ) и «Бухгалтерия предприятия 3.0» (БП) не учитывают специфику бизнес-процессов предприятия. В данной статье мы подробно разберем, как внести изменения в правила конвертации данных (КД 2.1), чтобы обеспечить перезапись существующих документов и корректную передачу даты реализации.
Разберем ситуацию, когда документ при повторной выгрузке не обновляется в базе-приемнике. В 1С:Конвертация данных 2.1 за это поведение отвечают настройки в Правилах конвертации объектов (ПКО). Проанализируем, на что нужно обратить внимание в первую очередь.
Во-первых, откроем нужное ПКО (в нашем случае для документа «Передача между организациями») и перейдем на закладку «Настройки». Проверим, не установлен ли флаг Не замещать существующие объекты в приемнике, а только создавать новые. Если этот флаг стоит, система найдет объект по полям поиска, но не станет обновлять его реквизиты. Для решения нашей задачи этот флаг должен быть снят.
Во-вторых, необходимо заглянуть в обработчики событий. Часто в типовых правилах логика запрета перезаписи может быть скрыта в обработчике ПриЗагрузке или ПослеЗагрузки. Посмотрим на пример кода, который может блокировать перезапись:
Если НЕ Объект.ЭтоНовый() Тогда
// Если объект уже существует, мы можем принудительно отказаться от его изменения
// Отказ = Истина;
КонецЕсли;
Если в вашем ПКО в обработчике ПослеЗагрузки вызывается общий алгоритм, например, Выполнить(Алгоритмы.ОбработатьЗаписьДокументаПослеЗагрузки), обязательно изучите содержимое этого алгоритма на соответствующей закладке в КД. Возможно, там стоит проверка на режим загрузки или флаг модифицированности.
Также важно помнить про поля поиска. Если вы хотите, чтобы документ именно перезаписывался, а не создавался дубль, убедитесь, что поля поиска (например, Номер, Дата, Организация) настроены корректно и однозначно идентифицируют объект.
Рассмотрим проблему, когда вместо даты документа из источника в приемник попадает текущая дата или начало дня. Это происходит из-за настроек в Правилах конвертации свойств (ПКС). Разберем шаги по исправлению этой ситуации.
Дата.ПередВыгрузкой данного свойства.
Значение = ТекущаяДата(); // Ошибка: всегда будет текущая дата
// Или так:
Значение = НачалоДня(Источник.Дата); // Усекает время
Для того чтобы дата в БП была идентична дате в УТ, нам нужно в поле Источник явно выбрать реквизит Дата. Если же логика требует особого преобразования, используем стандартное обращение к источнику:
Значение = Источник.Дата;
Иногда в типовых конфигурациях дата документа-приемника может перезаписываться в обработчике ПКО ПослеЗагрузки. Обратите внимание на использование таблицы ЗагруженныеОбъекты в параметрах. Если объект помещается в таблицу отложенной обработки, его дата может быть изменена позже специальными процедурами в самой базе «Бухгалтерия предприятия».
Современные версии УТ 11 и БП 3.0 используют механизм Синхронизации данных, который требует загрузки правил в виде ZIP-архива. Выясним, из чего должен состоять этот архив, чтобы система приняла его без ошибок. В архиве обязательно должны присутствовать три файла с фиксированными именами:
После того как мы подготовили эти три файла, упакуем их в ZIP-архив (название самого архива может быть произвольным). Для загрузки правил в 1С:Предприятие выполним следующие действия:
Перейдем в раздел Администрирование — Настройки синхронизации данных — Синхронизация данных. Выберем нашу настройку, нажмем Параметры синхронизации — Загрузить правила. Выберем вариант «Из файла на компьютере» и укажем наш созданный ZIP-архив. Система проверит файлы и обновит логику обмена.
Часто возникает вопрос: «Где взять актуальные правила, которые уже работают в базе?». Разберем наиболее надежный способ. Самый простой вариант — выгрузить их непосредственно из настроек синхронизации. В окне «Загрузить правила» почти всегда есть кнопка «Сохранить правила в файл». Это позволит нам получить именно тот XML-файл, который используется системой в данный момент, со всеми ранее внесенными изменениями.
Если же этот способ недоступен, правила можно найти в Конфигураторе. Откроем дерево метаданных, найдем Планы обмена (например, УправлениеТорговлейБухгалтерияПредприятия30), перейдем в Макеты. Там вы увидите макеты с именами ПравилаОбмена, ПравилаРегистрации и ПравилаОбменаКорреспондента. Сохраните содержимое этих макетов как текст, а затем переименуйте расширение в .xml.
Проанализируем важный нюанс: при работе с УТ 11.1 используется КД 2.1, но при переходе на более новые версии (например, УТ 11.5) может потребоваться переход на технологию КД 3.0 (через формат EnterpriseData). Поэтому, дорабатывая правила КД 2.1, всегда документируйте свои изменения, чтобы их было проще перенести в будущем на новую технологию обмена.
Используя эти методы, мы сможем гибко управлять процессом передачи данных, гарантируя актуальность информации в бухгалтерской базе и соответствие дат документов первичным данным из торговой системы.