При работе с обменом данными между различными информационными системами, такими как 1С:Бухгалтерия и "Мой Склад", часто возникает необходимость тонкой настройки правил сопоставления объектов. Одной из распространенных задач является изменение полей поиска для организаций в универсальном формате обмена (EnterpriseData). Давайте рассмотрим, как мы можем добиться этого без прямого вмешательства в типовой код, а также как решить сопутствующие проблемы, связанные с некорректным сопоставлением по глобальным уникальным идентификаторам (GUID).
Универсальный формат обмена, или EnterpriseData, тесно интегрирован с конфигурацией "1С:Конвертация данных 3" (КД3). Именно КД3 является основным инструментом для разработки, модификации и тонкой настройки правил обмена данными. Если мы хотим изменить, по каким полям система будет искать организацию при загрузке данных, то наши шаги будут следующими:
// Пример из модуля МенеджерОбменаЧерезУниверсальныйФормат13::
// Процедура ДобавитьПКО_Справочник_Организации_Получение(ПравилаКонвертации)
// ...
// ПравилоКонвертации.ПоляПоиска.Добавить("ИНН,КПП");
// ПравилоКонвертации.ПоляПоиска.Добавить("НаименованиеПолное");
// ПравилоКонвертации.ПоляПоиска.Добавить("Наименование");
// КонецПроцедуры
// В КД3 эти настройки задаются через графический интерфейс,
// минуя прямое редактирование кода.
Мы обращаемся к свойствам этого ПКО. Обычно на закладке "Поиск объектов в приемнике" или в общих свойствах ПКО мы можем вручную указать реквизиты, по которым система должна производить поиск. Например, для точного сопоставления по данным ФНС, мы можем указать "ИНН" и "КПП".
Таким образом, КД3 позволяет нам гибко настраивать поля поиска без необходимости изменять исходный код конфигурации, что является предпочтительным подходом при работе с типовыми решениями.
В тех случаях, когда конфигурация находится на поддержке, и мы хотим внести изменения в логику обмена, но не можем или не хотим использовать КД3 (например, если речь идет о тонкой модификации поведения на этапе загрузки или при специфичных условиях), наиболее предпочтительным способом является создание расширения конфигурации.
Хотя прямое изменение XDTO-пакетов через расширения может быть ограничено или затруднено, мы можем использовать обработчики событий. Расширения позволяют переопределить поведение модулей или объектов, реагируя на определенные события. Например, мы можем найти правило конвертации свойств организации и внести изменения в логику его работы через расширение. Это может быть реализовано путем подписки на события перед записью объекта или при его поиске в приемнике, позволяя нам скорректировать набор полей поиска или даже логику сопоставления.
Создание расширения – это "безопасный" способ доработки, так как он не затрагивает основную конфигурацию и позволяет обновлять ее без потери наших изменений. Этот подход особенно актуален для облачных версий 1С:Предприятия (1С:Фреш), где прямое изменение конфигурации или даже некоторые настройки через интерфейс могут быть ограничены.
Даже при правильной настройке полей поиска в КД3, мы можем столкнуться с ситуацией, когда организации сопоставляются некорректно. Основной причиной этого является механизм сопоставления по уникальному идентификатору (GUID).
Публичные идентификаторы синхронизируемых объектов. Этот регистр хранит информацию о соответствии объектов между базами, фактически устанавливая, какой GUID во внешней системе соответствует какому объекту в текущей базе 1С.Как работать с регистром:
После удаления записи из регистра Публичные идентификаторы синхронизируемых объектов, при следующем обмене система не сможет найти объект по GUID и будет вынуждена использовать резервный механизм – поиск по настроенным нами полям. Если мы правильно настроили поиск по "ИНН" и "КПП" в КД3, то сопоставление произойдет корректно, даже если наименования различаются.
Для пользователей облачных версий 1С:Предприятия ("Fresh") существуют определенные ограничения:
ОбменДанными.Загрузка: Для предотвращения конфликтов и ошибок при обмене данными в расширениях мы можем использовать атрибут ОбменДанными.Загрузка в обработчиках модулей объектов. Этот атрибут позволяет временно отключать некоторые проверки при записи объекта в режиме обмена, что может быть полезно при загрузке данных, которые иначе вызвали бы ошибки валидации.В заключение, эффективное управление обменом данных с организациями в 1С требует комплексного подхода. Мы начинаем с точной настройки полей поиска в "Конвертации данных 3", далее внимательно отслеживаем и корректируем сопоставление по GUID с помощью регистра Публичные идентификаторы синхронизируемых объектов, и при необходимости применяем расширения конфигурации для специфических доработок, особенно в "Fresh"-среде. Такой подход позволяет нам добиться надежного и корректного обмена данными, избегая типовых ошибок и конфликтов.