Как настроить маппинг товаров и адресов доставки в модуле Контур.Логистика для 1С:УПП

Программист 1С v8.3 (Обычные формы) Управленческий учет
← На главную

Внедрение модуля Контур.Логистика в конфигурацию 1С:Управление производственным предприятием (УПП) часто сопряжено с трудностями, так как типовые механизмы маппинга (сопоставления полей) не всегда очевидны для сложных документов, таких как Электронные транспортные накладные (ЭТрН) или Заявки на перевозку. В данной статье мы разберем, как правильно настроить передачу данных о номенклатуре и сформировать сложный маршрут доставки с несколькими точками погрузки и выгрузки.

Подготовительный этап: использование расширений и доработок

Прежде чем приступать к написанию кода маппинга, проанализируем состояние вашей конфигурации. Если ваша 1С:УПП находится на поддержке или имеет значительные кастомизации, рекомендуется использовать поставляемый компанией Контур файл cf для интеграции дополнительных реквизитов. Рассмотрим, почему это важно:

  1. Упрощение маппинга: Использование стандартных объектов из поставки Контура позволяет модулю автоматически подхватывать нужные данные без написания сложных запросов.
  2. Хранение специфических данных: В ЭТрН требуется передавать информацию, которой в типовой УПП может не быть (например, коды упаковки по классификатору, данные о водителе или транспортном средстве в формате ФНС).
  3. Обновляемость: При изменении форматов электронных документов Контур обновляет свой cf, что минимизирует риск ошибок при отправке данных на портал.

Настройка маппинга табличной части «Товары»

Одной из первых проблем является заполнение номенклатуры из документа-основания (например, Заказ покупателя). Проанализируем способы решения этой задачи. Вместо прямой привязки полей в маппинге, лучше использовать Базовое соответствие номенклатуры. Это встроенный механизм модуля, который позволяет сопоставить внутренние справочники 1С с требованиями торговых сетей или логистических операторов.

Если данные необходимо вытягивать программно, рассмотрим пример использования выражения 1С для получения нужных строк. Выясним причину, по которой данные могут не передаваться: часто это связано с неверным указанием источника (Документ-основание) или отсутствием связей между документами в цепочке (например, если Заявка создается на основании Реализации, а данные нужны из Заказа).

Важный нюанс: При заполнении веса и объема следите за единицами измерения. Если в 1С:УПП вес хранится в граммах, а модуль ожидает килограммы, обязательно применяйте арифметические операции в поле «Результат вычисления». Для быстрой загрузки массы и объема в базу можно использовать обработку загрузки весогабаритных параметров номенклатуры из Excel.

Программное формирование адресов доставки через МассивСтруктур

Самый сложный вопрос — это заполнение нескольких точек маршрута (адресов доставки) в одну заявку, когда в одной машине едут заказы для разных клиентов. Для решения этой задачи в модуле Контур.Логистика используется объект МассивСтруктур. Разберем по шагам, как сформировать этот массив с помощью встроенного языка 1С.

Посмотрим на пример кода, который собирает данные о погрузке из справочника пунктов маршрута и данные о выгрузке из табличной части документа-основания:


МассивСтруктур = Новый Массив;

// 1. Формируем точку погрузки
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	КонтурЛогистика_ПунктыМаршрута.Наименование КАК АдресПогрузки
|ИЗ
|	Справочник.КонтурЛогистика_ПунктыМаршрута КАК КонтурЛогистика_ПунктыМаршрута
|ГДЕ
|	КонтурЛогистика_ПунктыМаршрута.GLN = &GLN";

// Укажите ваш GLN или идентификатор склада
Запрос.УстановитьПараметр("GLN", "Ваш_Идентификатор_GLN"); 

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если Выборка.Следующий() Тогда
    АдрПункт = Новый Структура;
    АдрПункт.Вставить("Погрузка", Истина);
    АдрПункт.Вставить("Выгрузка", Ложь);
    АдрПункт.Вставить("ДатВрОпер", ТекущаяДата());
    АдрПункт.Вставить("ПунктМаршрута", Выборка.АдресПогрузки);
    АдрПункт.Вставить("ПредВрОпер", 0);
    МассивСтруктур.Добавить(АдрПункт);
КонецЕсли;

// 2. Циклом обходим точки выгрузки из табличной части Основания
Для Индекс = 0 По Основание.Маршруты.Количество() - 1 Цикл
    АдрПункт = Новый Структура;
    АдрПункт.Вставить("Погрузка", Ложь);
    АдрПункт.Вставить("Выгрузка", Истина);
    АдрПункт.Вставить("ДатВрОпер", ТекущаяДата());
    // Путь к адресу доставки в вашем документе
    АдрПункт.Вставить("ПунктМаршрута", Основание.Маршруты[Индекс].АдресДоставки); 
    АдрПункт.Вставить("ПредВрОпер", 0);
    МассивСтруктур.Добавить(АдрПункт);
КонецЦикла;

РезультатВычисления = МассивСтруктур;

Важное замечание: При настройке маппинга для этого поля в колонке «Способ конвертации значений» необходимо выбрать пустое значение или «Без конвертации». Как показывает практика, включение дополнительных преобразований на этом этапе может привести к тому, что массив очистится или передастся некорректно.

Особенности передачи данных для ЭТрН (Титул 1)

Проанализируем требования законодательства к ЭТрН. Несмотря на то, что Заявка на перевозку может содержать множество адресов, для формирования Титула 1 (Грузоотправитель) важно помнить: согласно постановлениям правительства, на каждую точку выгрузки должна оформляться отдельная электронная накладная. Если вы пытаетесь объединить разные адреса в одну ЭТрН, портал может выдать ошибку валидации.

Для корректной работы с ЭТрН в 1С:УПП рекомендуется:

Устранение ошибок на портале

Если после успешной выгрузки из 1С на портале Контура заявка отображается с ошибками, выясним причину. Чаще всего это связано с:

  1. Несоответствием типов данных: Например, в поле КоличествоМест передается дробное число, хотя ожидается целое. Используйте функцию Цел() в коде маппинга.
  2. Отсутствием МЧД: Если документ подписывается не руководителем организации, в Титуле 1 должен быть передан номер машиночитаемой доверенности.
  3. Пустыми значениями в ТЧ: Если в табличной части товаров есть строки с нулевой ценой или количеством, это может заблокировать отправку документа.

Таким образом, настройка модуля Контур.Логистика в 1С:УПП требует не только понимания интерфейса маппинга, но и навыков написания запросов для сбора данных из связанных документов. Используя гибкую настройку через РезультатВычисления и массив структур, можно автоматизировать работу даже с самыми сложными логистическими цепочками.

← На главную