В процессе интеграции конфигураций 1С:Управление нашей фирмой и 1С:Бухгалтерия пользователи часто сталкиваются с ситуацией, когда номер документа после обмена выглядит иначе, чем в исходной базе. Например, вместо ожидаемого префикса и полного номера документа мы видим усеченное значение. Давайте разберемся, как диагностировать эту проблему и где искать причину искажения данных.
Первым делом необходимо понять, на каком этапе происходит изменение номера. Обмен данными — это процесс, состоящий из выгрузки из базы-источника и загрузки в базу-приемник. Чтобы локализовать ошибку, выполним следующие шаги:
EnterpriseData (технология КД 3.0). Если вы используете файловый обмен, откройте сформированный файл выгрузки в текстовом редакторе. Найдите в нем нужный ЗаказПокупателя и посмотрите значение реквизита Номер. Если в файле номер уже обрезан, значит, проблема в логике формирования данных при выгрузке из УНФ. Если же в файле номер верный, значит, искажение происходит в момент загрузки или обработки документа в Бухгалтерии.Журнал регистрации в УНФ и отфильтруйте события по объекту Заказ покупателя. Проверьте, не было ли ручного изменения номера пользователем непосредственно перед или во время обмена. Часто пользователи ошибочно меняют нумерацию, что затем отражается во всех последующих обменах.Если вы убедились, что данные в УНФ верны, а при выгрузке номер все равно искажается, необходимо проанализировать правила конвертации. В современных версиях 1С правила обмена, как правило, встроены в конфигурацию.
Рассмотрим, как найти логику формирования номера:
ЗаказПокупателя во всех модулях, особенно в общих модулях, отвечающих за обмен (например, МенеджерОбменаЧерезУниверсальныйФормат).Номер.Префикс. Если в конфигурации УНФ длина номера ограничена, а вы используете длинные префиксы, 1С при записи объекта может автоматически обрезать номер до максимально допустимой длины.Рассмотрим пример анализа кода, где может задаваться формирование номера:
// Пример поиска логики формирования номера в модуле
Если Объект.Метаданные().Имя = "ЗаказПокупателя" Тогда
// Проверяем, не обрезается ли номер программно
Если СтрДлина(Объект.Номер) > МаксДлина Тогда
Объект.Номер = Лев(Объект.Номер, МаксДлина);
КонецЕсли;
КонецЕсли;
Если код обмена не менялся, а проблема возникла внезапно, возможно, были внесены изменения в структуру метаданных. Сравните документ Заказ покупателя в текущей конфигурации с конфигурацией поставщика или с копией базы, сделанной в период, когда обмен работал корректно.
Важные моменты для проверки:
Номер (строка) — она должна совпадать в обеих базах.Подписок на событие, которые могут срабатывать при записи документа и принудительно менять его номер.Чаще всего ситуация с «обрезанными» номерами — это либо прямое вмешательство пользователя (изменение номера вручную), либо несоответствие длины строки номера в метаданных баз 1С. Мы рекомендуем:
Журнал регистрации, чтобы исключить действия пользователей по изменению нумерации.Конвертации данных 3.0 для отладки выгрузки.Номер остались прежними.Помните, что если вы обнаружили, что номера были исправлены пользователем в интерфейсе программы, необходимо провести разъяснительную работу, так как 1С принудительно запрашивает подтверждение при изменении номера, что делает такое действие осознанным.