При настройке синхронизации между конфигурациями «1С:Управление торговлей 11» (УТ) и «1С:Бухгалтерия предприятия 3.0» (БП) пользователи часто сталкиваются с ситуацией, когда монитор обмена сообщает об успешной выгрузке, но в базе-приемнике документы так и не появляются. Рассмотрим детально, почему это происходит, как диагностировать проблему и какими способами её можно решить.
Если в УТ 11 документ отмечен как выгруженный, но в БП 3.0 в списке Поступление (акты, накладные) его нет, первым делом проанализируем состояние загрузки в базе-приемнике. Проблема часто кроется не в самом процессе передачи файла, а в этапе валидации данных перед записью объекта.
Для поиска причины выполним следующие шаги:
Типичная ошибка в журнале регистрации выглядит так: Событие: Получение. Обработчик: ПриКонвертацииДанныхXDTO. Ошибка выполнения обработчика. Поле Номер полученного объекта имеет некорректное значение 01/202002190379. Загрузка не возможна.
Эта ошибка означает, что программный механизм XDTO (XML Data Transfer Objects) отклонил объект еще до попытки его записи в базу, так как структура данных не соответствует схеме, принятой в конфигурации БП 3.0.
Разберем ситуацию подробно. В конфигурации «Бухгалтерия предприятия» для большинства документов, включая Поступление (акты, накладные), длина реквизита Номер ограничена 11 символами. Это стандарт платформенного решения для данной конфигурации.
В «Управлении торговлей» контроль номеров более гибкий. Длина номера может быть установлена в 12, 15 или более символов. Кроме того, пользователи могут вручную вводить номера со спецсимволами (например, слеш /, дефис - или префиксы подразделений). Если номер документа в УТ имеет вид 01/202002190379 (13 символов), то при попытке загрузки в БП система видит, что строка не помещается в стандартное поле из 11 символов, и блокирует создание документа.
Самый правильный и надежный способ — это модификация правил отправки данных в УТ 11. Мы не будем менять метаданные и снимать конфигурацию с поддержки. Вместо этого воспользуемся механизмом расширений и перехватим процедуру в модуле менеджера обмена.
Проанализируем код, который необходимо внедрить. Нам нужен общий модуль МенеджерОбменаЧерезУниверсальныйФормат. В нем найдем процедуру, отвечающую за отправку данных документа ПриобретениеТоваровУслуг.
Пример кода для модификации (используем префикс Пр_ для своего расширения):
&После("ПКО_Документ_ПриобретениеТоваровУслуг_Отправка_ПриОтправкеДанных")
Процедура Пр_ПКО_Документ_ПриобретениеТоваровУслуг_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
// Если это вложенная выгрузка, пропускаем
Если СтекВыгрузки.Количество() > 1 Тогда
Возврат;
КонецЕсли;
// Обрезаем номер до 11 символов справа, чтобы он влез в БП
Если СтрДлина(ДанныеXDTO.КлючевыеСвойства.Номер) > 11 Тогда
ДанныеXDTO.КлючевыеСвойства.Номер = Прав(ДанныеXDTO.КлючевыеСвойства.Номер, 11);
КонецЕсли;
КонецПроцедуры
Разберем, что делает этот код: перед тем как данные будут упакованы в XML-пакет для БП, мы проверяем длину сформированного номера в объекте ДанныеXDTO. Если она превышает 11 символов, функция Прав() отсекает лишние знаки слева, оставляя только значимую правую часть номера. Это позволяет сохранить уникальность в большинстве случаев.
Часто номер становится слишком длинным из-за нагромождения префиксов: префикс организации (2 знака) + префикс ИБ (2 знака) + дефис + сам номер.
Выясним, как это можно исправить без программирования:
УТ), попробуем сократить его до одного или вовсе убрать.Если проблемных документов немного, рассмотрим вариант ручного исправления в УТ 11. Мы можем воспользоваться стандартной обработкой «Групповое изменение реквизитов».
Пошаговый алгоритм:
Приобретение товаров и услуг.Номер.Важный нюанс: при ручном изменении номеров в УТ следите за тем, чтобы поле Номер входящего документа (куда записывается реальный номер накладной от поставщика) оставалось нетронутым. Именно оно является ключевым для бухгалтера, а внутренний номер 1С служит лишь для технического учета и связи объектов.
Рассмотрим вариант увеличения длины реквизита Номер в конфигураторе БП 3.0. На первый взгляд, это кажется простым решением, но оно несет в себе серьезные риски:
Проанализировав ситуацию, мы пришли к выводу, что наиболее стабильным решением является программное ограничение длины номера при выгрузке из УТ 11. Это позволяет сохранить типовую конфигурацию «Бухгалтерии» в неприкосновенности и гарантирует, что документы будут загружены без ошибок. При использовании обрезки номера (функция Прав) всегда проверяйте, не приведет ли это к появлению дублей, если в вашей базе используются схожие номера с разными префиксами.