Синхронизация данных между конфигурациями 1С:Розница и 1С:Бухгалтерия предприятия (БП) — один из самых частых процессов в автоматизации розничной торговли. Однако при обновлении релизов или использовании распределенных информационных баз (РИБ) пользователи часто сталкиваются со сбоями. Рассмотрим одну из самых распространенных ошибок загрузки, возникающую на стороне 1С:Бухгалтерии при переносе договоров контрагентов.
Во время загрузки данных в 1С:Бухгалтерию платформа аварийно завершает сеанс обмена и выводит в журнал регистрации следующее сообщение:
Ошибка в обработчике события ПоследовательностьПолейПоиска ИмяПКО = ТипОбъекта = Договор Обработчик = Последовательность полей поиска ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить): {(7, 39)}: Не задано значение параметра "Организация" И ДоговорыКонтрагентов.Организация = >&Организация
Давайте разберем по шагам, почему это происходит. При импорте договоров система пытается сопоставить загружаемый объект с уже существующим в базе БП. Для этого в правилах конвертации объектов (ПКО «ДоговорыКонтрагентов») в обработчике «Последовательность полей поиска» выполняется поисковый запрос к СУБД. В тексте этого запроса жестко прописано условие отбора по организации, которой принадлежит договор:
И ДоговорыКонтрагентов.Организация = &Организация
Ошибка возникает из-за того, что в момент выполнения запроса параметр Организация оказывается равен значению Неопределено или пустой ссылке. Платформа не может обработать запрос с незаполненным параметром и аварийно прекращает чтение пакета XML.
Проанализировав практику работы обменов, мы можем выделить три ключевые причины возникновения этой ситуации:
Организация в карточке договора может быть не заполнен пользователем или скрыт из интерфейса. В результате XML-файл обмена просто не содержит сведений об организации для данного договора.Рассмотрим подробнее четыре практических способа устранения этой проблемы, от самых простых пользовательских настроек до изменения правил в конфигураторе.
Прежде чем приступать к изменению правил обмена, нам необходимо убедиться в чистоте данных на стороне источника (особенно если обмен идет из РИБ-узла магазина):
Современные конфигурации 1С используют Библиотеку стандартных подсистем (БСП). Разработчики настоятельно рекомендуют создавать и инициировать настройку синхронизации **именно со стороны 1С:Бухгалтерии**.
Выполним процедуру по шагам:
При таком сценарии конфигурации автоматически обменяются наиболее актуальными правилами конвертации, встроенными в их конфигурации, без необходимости ручной загрузки внешних XML-файлов, что исключит ошибку передачи параметров поиска.
Если конфигурации невозможно обновить до актуальных версий, а стандартная настройка не помогает, программисту потребуется внести исправления в правила конвертации объектов (ПКО). Разберем, как обойти обязательную проверку организации в полях поиска.
Выполните следующие действия:
ДоговорыКонтрагентов.
Если СвойстваПоиска["Организация"] = Неопределено Или Не ЗначениеЗаполнено(СвойстваПоиска["Организация"]) Тогда
// Если организация не передана в свойствах поиска, меняем алгоритм
// Исключаем ее из ключевых полей и ищем договор только по владельцу (контрагенту) и коду/наименованию
СтрокаИменСвойствПоиска = "Код, Владелец";
Иначе
// Стандартный алгоритм поиска с установкой параметра
Запрос.УстановитьПараметр("Организация", СвойстваПоиска["Организация"]);
КонецЕсли;
Очень часто обмен между Розницей и Бухгалтерией настраивают только ради одной задачи — формирования регламентированной отчетности (например, алкогольной декларации, как описано в практических кейсах пользователей). Если базы Розницы работают в режиме жесткого РИБ по магазинам, а Бухгалтерия является Базовой версией, стандартный обмен может постоянно сбоить.
В этом случае проанализируем альтернативный, более простой путь: