При развитии систем автоматизации оптовой и розничной торговли на базе 1С:Управление торговлей 10.3 (УТ 10.3) часто возникает потребность в управлении собственной логистикой. В типовом решении функционал маршрутных листов отсутствует, в отличие от более современных конфигураций, таких как УТ 11. Однако переход на новую платформу только ради одного модуля часто нецелесообразен из-за различий в логике проведения документов и стоимости доработки. Рассмотрим, как грамотно спроектировать и внедрить подсистему «Маршрутные листы» с нуля, используя возможности обычных форм и архитектуры 8.3.
Первый вопрос, который встает перед разработчиком: стоит ли хранить данные в базе в виде документов или достаточно выводить информацию в интерактивной обработке на лету? Проанализируем оба подхода. Если использовать только обработку, которая собирает данные из Заказов покупателей по дате отгрузки, мы лишаемся возможности хранить историю изменений, фиксировать конкретного водителя и автомобиль на конкретный рейс, а также не сможем вводить дополнительные статусы доставки.
Рекомендуемый подход — использование полноценного документа Маршрутный лист. Разберем преимущества этого решения:
Прежде чем приступать к созданию документов, проанализируем необходимые аналитические разрезы. Нам понадобятся следующие объекты:
1. Справочник «Транспортные средства»: Здесь мы будем хранить информацию о собственном или наемном транспорте. Важно добавить реквизиты Грузоподъемность и ОбъемКузова. Эти данные позволят системе автоматически контролировать перегруз при формировании маршрута.
2. Справочник «Маршруты»: Это справочник стандартных направлений (например, «Север», «Центр», «Область Юг»). Рассмотрим целесообразность указания маршрута непосредственно в Заказе покупателя. Если маршруты клиентов заранее известны, добавим реквизит Маршрут в справочник Контрагенты или АдресаДоставки, чтобы он автоматически подставлялся в заказы.
3. Регистр сведений «Расстояния между точками»: Для расчета планового пробега и расхода ГСМ полезно создать периодический регистр, где будет храниться информация о километраже между складом и основными зонами доставки.
Рассмотрим структуру документа более детально. Шапка документа должна содержать стандартные реквизиты: Организация, Подразделение, Автомобиль, Водитель и Склад. В табличную часть СоставМаршрута включим следующие поля:
ЗаказПокупателя (тип: ДокументСсылка.ЗаказПокупателя);АдресДоставки (строка или ссылка на контактную информацию);Вес и Объем (вычисляемые поля на основе данных номенклатуры);СуммаЗаказа;Порядок (число, определяющее последовательность посещения точек).Проанализируем ситуацию с проведением документа. Для фиксации того, что товар «уехал», можно использовать регистр накопления. Если в компании практикуется отгрузка «день в день», маршрутный лист может делать движения по регистру ТоварыВПути. Однако, как отмечалось в обсуждении, часто РеализацияТоваровУслуг создается только на следующий день. В таком случае Маршрутный лист выступает в роли распоряжения на отгрузку.
Создание документов вручную — трудоемкий процесс. Выясним, как упростить жизнь пользователю. Создадим обработку «Рабочее место логиста», разделенную на две части. В левой части отобразим список нераспределенных Заказов покупателей. Проанализируем типичный запрос для получения этого списка:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка КАК Заказ,
| ЗаказПокупателя.Контрагент КАК Контрагент,
| ЗаказПокупателя.СуммаДокумента КАК Сумма
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Проведен = ИСТИНА
| И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
| И ЗаказПокупателя.Ссылка НЕ В (ВЫБРАТЬ МаршрутныйЛистСостав.ЗаказПокупателя ИЗ Документ.МаршрутныйЛист.Состав КАК МаршрутныйЛистСостав)";
В правой части обработки отобразим список уже созданных Маршрутных листов на выбранную дату. Реализуем механизм Drag-and-drop, чтобы логист мог перетаскивать заказы из левой таблицы в правую, тем самым наполняя маршруты. При переносе система должна автоматически суммировать вес и объем заказов в машине и сравнивать их с грузоподъемностью из справочника Транспортные средства.
Для корректного планирования загрузки необходимо, чтобы в карточке номенклатуры были заполнены вес и объем. В УТ 10.3 это часто игнорируется. Разберем, как реализовать расчет веса в маршрутном листе. При добавлении заказа в документ проанализируем его табличную часть Товары, получим вес каждой позиции из единиц измерения и умножим на количество. Важно предусмотреть единицы измерения веса (кг, т) и привести их к общему знаменателю.
Современная логистика невозможна без визуализации. Разберем, как добавить карту в обычные формы УТ 10.3. Мы можем использовать элемент формы типа ПолеHTMLДокумента. При выборе маршрута 1С может генерировать HTML-код, который обращается к API Яндекс.Карт или Google Maps. Передавая координаты точек доставки, мы получим визуальное отображение маршрута прямо в интерфейсе программы. Это позволит логисту увидеть «петли» и неоптимальные пути, которые сложно заметить в таблице.
После формирования маршрутного листа склад должен собрать товар. Рассмотрим оптимизацию этого процесса. Вместо того чтобы выдавать кладовщику 30 отдельных накладных, создадим печатную форму «Сводная комплектовочная ведомость». Она будет группировать товары из всех заказов одного маршрутного листа. Проанализируем структуру запроса: мы суммируем поле Количество с группировкой по Номенклатуре и Серии. Кладовщику гораздо проще взять с полки сразу 100 упаковок товара и распределить их по зонам отгрузки, чем возвращаться к одному и тому же стеллажу для каждого заказа.
Посмотрим на финальный этап работы. Когда машина готова к выезду, необходимо распечатать пакет первичных документов. В УТ 10.3 это удобно реализовать через механизм групповой печати. Из документа Маршрутный лист запустим процедуру, которая:
Реализация товаров и услуг для каждого заказа.Такой подход исключает ошибки ручного ввода и гарантирует, что водитель уедет с полным и корректным пакетом документов.
Выясним, как обрабатывать ситуацию, когда клиент отказался от части товара. Добавим в табличную часть Маршрутного листа реквизит СтатусДоставки со значениями: Доставлено, Частичный отказ, Полный возврат. По возвращении водителя диспетчер проставляет эти статусы. Если зафиксирован отказ, система должна автоматически инициировать создание документа Возврат товаров от покупателя или корректировку реализации. Это обеспечит актуальность складских остатков в режиме реального времени.
Резюмируем: реализация маршрутных листов в УТ 10.3 требует комплексного подхода — от создания структуры хранения в виде документов до разработки удобного интерфейса логиста. Использование связки Заказ - Маршрутный лист - Реализация позволяет создать надежный контур управления доставкой, не перегружая систему избыточным функционалом тяжелых ERP-решений.