Внедрение модуля Контур.Логистика в конфигурацию 1С:Управление производственным предприятием (УПП) часто сопряжено с трудностями, так как типовые механизмы маппинга (сопоставления полей) не всегда очевидны для сложных документов, таких как Электронные транспортные накладные (ЭТрН) или Заявки на перевозку. В данной статье мы разберем, как правильно настроить передачу данных о номенклатуре и сформировать сложный маршрут доставки с несколькими точками погрузки и выгрузки.
Прежде чем приступать к написанию кода маппинга, проанализируем состояние вашей конфигурации. Если ваша 1С:УПП находится на поддержке или имеет значительные кастомизации, рекомендуется использовать поставляемый компанией Контур файл cf для интеграции дополнительных реквизитов. Рассмотрим, почему это важно:
cf, что минимизирует риск ошибок при отправке данных на портал.Одной из первых проблем является заполнение номенклатуры из документа-основания (например, Заказ покупателя). Проанализируем способы решения этой задачи. Вместо прямой привязки полей в маппинге, лучше использовать Базовое соответствие номенклатуры. Это встроенный механизм модуля, который позволяет сопоставить внутренние справочники 1С с требованиями торговых сетей или логистических операторов.
Если данные необходимо вытягивать программно, рассмотрим пример использования выражения 1С для получения нужных строк. Выясним причину, по которой данные могут не передаваться: часто это связано с неверным указанием источника (Документ-основание) или отсутствием связей между документами в цепочке (например, если Заявка создается на основании Реализации, а данные нужны из Заказа).
Важный нюанс: При заполнении веса и объема следите за единицами измерения. Если в 1С:УПП вес хранится в граммах, а модуль ожидает килограммы, обязательно применяйте арифметические операции в поле «Результат вычисления». Для быстрой загрузки массы и объема в базу можно использовать обработку загрузки весогабаритных параметров номенклатуры из Excel.
Самый сложный вопрос — это заполнение нескольких точек маршрута (адресов доставки) в одну заявку, когда в одной машине едут заказы для разных клиентов. Для решения этой задачи в модуле Контур.Логистика используется объект МассивСтруктур. Разберем по шагам, как сформировать этот массив с помощью встроенного языка 1С.
Посмотрим на пример кода, который собирает данные о погрузке из справочника пунктов маршрута и данные о выгрузке из табличной части документа-основания:
МассивСтруктур = Новый Массив;
// 1. Формируем точку погрузки
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтурЛогистика_ПунктыМаршрута.Наименование КАК АдресПогрузки
|ИЗ
| Справочник.КонтурЛогистика_ПунктыМаршрута КАК КонтурЛогистика_ПунктыМаршрута
|ГДЕ
| КонтурЛогистика_ПунктыМаршрута.GLN = &GLN";
// Укажите ваш GLN или идентификатор склада
Запрос.УстановитьПараметр("GLN", "Ваш_Идентификатор_GLN");
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
АдрПункт = Новый Структура;
АдрПункт.Вставить("Погрузка", Истина);
АдрПункт.Вставить("Выгрузка", Ложь);
АдрПункт.Вставить("ДатВрОпер", ТекущаяДата());
АдрПункт.Вставить("ПунктМаршрута", Выборка.АдресПогрузки);
АдрПункт.Вставить("ПредВрОпер", 0);
МассивСтруктур.Добавить(АдрПункт);
КонецЕсли;
// 2. Циклом обходим точки выгрузки из табличной части Основания
Для Индекс = 0 По Основание.Маршруты.Количество() - 1 Цикл
АдрПункт = Новый Структура;
АдрПункт.Вставить("Погрузка", Ложь);
АдрПункт.Вставить("Выгрузка", Истина);
АдрПункт.Вставить("ДатВрОпер", ТекущаяДата());
// Путь к адресу доставки в вашем документе
АдрПункт.Вставить("ПунктМаршрута", Основание.Маршруты[Индекс].АдресДоставки);
АдрПункт.Вставить("ПредВрОпер", 0);
МассивСтруктур.Добавить(АдрПункт);
КонецЦикла;
РезультатВычисления = МассивСтруктур;
Важное замечание: При настройке маппинга для этого поля в колонке «Способ конвертации значений» необходимо выбрать пустое значение или «Без конвертации». Как показывает практика, включение дополнительных преобразований на этом этапе может привести к тому, что массив очистится или передастся некорректно.
Проанализируем требования законодательства к ЭТрН. Несмотря на то, что Заявка на перевозку может содержать множество адресов, для формирования Титула 1 (Грузоотправитель) важно помнить: согласно постановлениям правительства, на каждую точку выгрузки должна оформляться отдельная электронная накладная. Если вы пытаетесь объединить разные адреса в одну ЭТрН, портал может выдать ошибку валидации.
Для корректной работы с ЭТрН в 1С:УПП рекомендуется:
ИдентификаторАдреса. В УПП это поле часто связано с адресным классификатором. Это позволит избежать ошибок распознавания адреса на стороне сервера Контура.гггг-мм-дд (например, через функцию Формат(Дата, "ДФ=yyyy-MM-dd")).Если после успешной выгрузки из 1С на портале Контура заявка отображается с ошибками, выясним причину. Чаще всего это связано с:
КоличествоМест передается дробное число, хотя ожидается целое. Используйте функцию Цел() в коде маппинга.Таким образом, настройка модуля Контур.Логистика в 1С:УПП требует не только понимания интерфейса маппинга, но и навыков написания запросов для сбора данных из связанных документов. Используя гибкую настройку через РезультатВычисления и массив структур, можно автоматизировать работу даже с самыми сложными логистическими цепочками.