Алгоритмы и принципы работы¶
Здесь описано, как устроен модуль и откуда он берёт данные заказа. Всё, что модуль подставил, можно поменять в форме отправки: изменения сохраняются в данных модуля для этого заказа, сам заказ и карточки не меняются.
Как устроен модуль¶
Модуль устанавливается как внешняя обработка (Api1C.epf) и не меняет конфигурацию. При первом запуске он создаёт:
- дополнительные сведения документов с префиксом (Api1C) — в них хранятся данные доставки заказа;
- две дополнительные обработки: «Api1C - работа в заказе клиента» и «Api1C - фоновая работа по расписанию».
Фоновая обработка выполняет регламентные задания и содержит служебные команды:
- «Обновить статусы (Api1C)» — обновляет статусы отправленных заказов каждые 30 минут;
- «Обновить кэш модуля Api1C для более быстрой работы» — раз в 6–8 часов, с 7 до 23, обновляет справочные данные служб доставки (ПВЗ, тарифы и т. п.);
- «Настройки Api1C» — открывает форму настроек модуля;
- ПРО «Отгрузки: документы и подтверждения (Api1C)» — открывает форму «Отгрузки», не выбирая заказы в списке;
- «Удалить настройки модуля Api1C» — только по просьбе техподдержки, например если доступ к форме настроек потерян.
Длительные операции — обновление статусов и кэша, получение документов в форме «Отгрузки» — идут в фоне, и в это время можно работать в 1С. Особых прав и настроек для этого не нужно: право на открытие внешних обработок и отключение защиты от опасных действий не требуются. Когда обновление статусов закончится, список заказов обновится сам, а результат появится во всплывающем оповещении или, если сообщений много, в отдельном окне.
Форма «Отгрузки» при открытии статусы не обновляет — показывает те, что уже записаны в базе.
Права пользователей ПРО¶
Как модуль проверяет права, заданные в разделе Права:
- если у пользователя есть своя строка на вкладке «По пользователям», права его групп не учитываются;
- права из нескольких групп складываются; учитываются и подгруппы, и группа «Все пользователи»;
- любое право, кроме «Настройки», даёт и «Просмотр»;
- если есть права «Расчёт» или «Отправка», но нет «Редактирование», пользователь сможет выполнять действие только при корректных данных;
- в форме «Отгрузки» кнопки, которые меняют заказы (получение и очистка документов, подтверждение заказов, подписание поручений), доступны только с правом «Отправка»; без него они недоступны, а вызов не с кнопки заканчивается сообщением об отсутствии права;
- форма «Вызов курьера» открывается с правом «Просмотр», а «Отправить заявку» без права «Отправка» заканчивается сообщением об отсутствии права;
- изменить и отменить отправку, отправить заказ заново можно только с правом «Отправка» — так же, как отправить заказ;
- если право «Настройка» не дано никому, настраивать модуль могут все пользователи. Устанавливать и обновлять модуль может только пользователь с полными правами.
Способы подключения служб¶
К службам доставки модуль подключается двумя способами:
- Напрямую — модуль работает с API самой службы.
- Через ApiShip — остальные службы (их больше 40) модуль подключает через сервис-агрегатор ApiShip: запросы к службе идут через него.
Прямое подключение стабильнее и даёт больше возможностей. Поэтому, если служба доступна обоими способами (например, «ПЭК» или «Деловые линии»), новое подключение к ней создаётся напрямую. Исключение — «Л-Пост»: его новые подключения создаются через ApiShip (если ApiShip не используется — напрямую). Какой способ использован, в модуле не видно: у службы одно название, а в списке подключения она одна.
Подключения, созданные раньше другим способом, продолжают работать в пределах лимита. Все подключения, независимо от способа, показаны в таблице раздела «Службы доставки»; для Базовой версии допускается одно подключение к службе, для ПРО — до трёх (оба способа считаются вместе). Если подключений к службе больше лимита (например, раньше были и прямое, и через ApiShip), лишние подключения ApiShip в таблицу модуля не попадут — модуль об этом сообщит; в личном кабинете ApiShip они остаются.
Аккаунт, под которым вы входите в модуль, — это аккаунт ApiShip. Если он у вас уже есть, войдите под ним. Подключения через ApiShip хранятся в аккаунте, поэтому после сброса настроек они вернутся сами, а прямые подключения придётся вводить заново; отключение такого подключения в настройках модуля удаляет его и из аккаунта. Журнал запросов к службам через ApiShip можно открыть в его личном кабинете (см. Как получить логи запросов к службам доставки).
Какое подключение службы используется ПРО¶
Если у службы несколько подключений (раздел Организации), модуль берёт то, в котором выбрана организация заказа, а если такого нет — подключение «для всех организаций». Если организация выбрана в нескольких подключениях или подключений «для всех организаций» несколько, модуль возьмёт одно из них — одно и то же при расчёте и при отправке.
Служба доставки¶
Служба нового заказа берётся в таком порядке:
- ПРО служба мультиотправки, если заказ в неё входит;
- служба из доп. сведения модуля (его заполняет обмен с сайтом; подходит код службы или её название);
- значение поля «Перевозчик» (в УНФ — «Служба доставки»), если оно выбрано в разделе Соответствие в 1С одного из подключений;
- служба пункта выдачи, если в адресе доставки есть код ПВЗ и пункт найден (см. ПВЗ по коду из адреса заказа).
Если в заказе уже есть служба, пункт по коду ищется только у неё, и служба не меняется. Если службу определить не удалось, поле остаётся пустым, и после расчёта можно сравнить тарифы всех служб. Основная служба (★) в заказ не подставляется: она влияет только на выбор тарифа.
Адрес отправки¶
- Отправка от двери («Заберут со склада») — берётся адрес склада из заказа (в УНФ — структурной единицы). Если в заказе указана группа складов (УТ, КА, ERP) — адрес склада из строк товаров заказа: первый найденный, у которого адрес заполнен. По этому адресу считается тариф.
- Отправка от ПВЗ или терминала («Привезём в терминал») — берётся ПВЗ отправки из подключения службы (какое подключение — см. Какое подключение службы используется): ПРО сначала ПВЗ, указанный для склада заказа, затем общий ПВЗ подключения. Если служба в заказе не выбрана, адрес отправки появится после расчёта и выбора тарифа.
→ Как работать: Адреса складов, ПВЗ отправки
Контакты отправителя¶
Контакты отправителя модуль берёт в таком порядке:
- из подключения службы доставки (раздел Контакты отправителя, ПРО) — если служба в заказе выбрана;
- из раздела Отправители настроек модуля;
- наименование и ИНН — из карточки организации в 1С, контактное лицо, телефон и e-mail — менеджера заказа.
Если в таблице «Отправители» указано контактное лицо, телефон и e-mail тоже берутся оттуда; без контактного лица они из таблицы не подставляются. Телефон и e-mail из подключения службы берутся каждый сам по себе, даже если контактное лицо в подключении не указано, и заменяют остальные.
При смене службы в форме отправки контакты отправителя, поправленные вручную, остаются. Модуль заменяет их, только если они взяты из подключения прежней службы: с заказом совпадают все поля, заполненные в подключении.
Адрес доставки¶
Откуда брать адрес, задаёт настройка «Источник адреса доставки» (раздел Новые заказы): из заказа, адрес доставки клиента, почтовый или фактический адрес клиента. Если заказ пришёл с сайта, адрес лежит в доп. сведении модуля «Адрес доставки».
- Адрес клиента (доставки, почтовый или фактический) подставляется, только если он проходит проверку по адресному классификатору. Иначе модуль сообщит, что адрес заполнен в произвольном формате.
- Из заказа — сначала адрес из доп. сведения модуля, если его нет — из заказа. Если в адресе есть код ПВЗ, модуль ищет пункт по коду (см. ниже) и ставит способ получения «В пункт выдачи».
- Если кода нет, а по умолчанию доставка до двери, адрес принимается, если он разложен по полям и в нём понятен город (или это иностранный адрес). Иначе модуль пробует распознать его через Dadata, если она подключена.
- Если по умолчанию доставка в пункт выдачи, а кода в адресе нет, адрес из заказа остаётся, если в нём понятен город; пункт выбирают вручную.
- Если ничего не получилось, адрес остаётся пустым: строка «Куда» в форме отправки отмечена красным, адрес нужно выбрать вручную.
→ Как работать: Ввод и проверка адреса
ПВЗ по коду из адреса заказа¶
Если заказ пришёл с сайта (Битрикс или другая CMS) и в адресе доставки есть код пункта выдачи в формате «<Адрес>#S<код>» или «<Адрес> # <код>», модуль распознаёт пункт и подставляет его адрес, код и службу доставки. Например: «Магнитогорск, ул. ТРУДА, д. 27 # 1633». Если служба доставки в заказе уже определена (выбрана или подставлена по соответствию служб из настроек), пункт ищется только у неё: служба не меняется, а если у неё пункта с таким кодом нет, пункт не подставляется. Если службы нет, берётся первый найденный пункт с этим кодом — у разных служб коды могут совпасть. Если пункт по коду не найден, адрес нужно ввести вручную.
Получатель и его контакты¶
При открытии формы модуль заполняет только пустые поля получателя: наименование и ИНН — из карточки контрагента, контактное лицо, его телефон и e-mail — как описано ниже. Кнопки «Заполнить как:» в строке «Кому» формы отправки перезаполняют получателя целиком.
В «Управлении торговлей», «Комплексной автоматизации» и ERP:
- контактное лицо — из документа, а если оно не указано — одно из контактных лиц партнёра;
- телефон — мобильный телефон контактного лица, а если его нет — другой телефон контактного лица;
- если клиент — физическое лицо, а у получателя нет ни телефона, ни e-mail, телефон, e-mail и имя берутся из карточки партнёра.
В «Управлении нашей фирмой»: если в заказе указано контактное лицо, его телефон и e-mail тоже берутся из заказа. Иначе — основное, а если его нет, другое контактное лицо контрагента; телефон и e-mail — из его карточки, то, чего в карточке нет, остаётся пустым.
Телефон получателя¶
Телефоны отправителя и получателя модуль приводит к одному виду для всех служб доставки. Если в поле несколько номеров (через запятую, точку с запятой или косую черту), берётся первый; добавочный номер (после доб., # или ext) отбрасывается; остаются цифры и знак + в начале. Российский номер из 11 цифр, начинающийся с 8 или 7, записывается как +7XXXXXXXXXX: например, 8 (916) 123-45-67, доб. 12 станет +79161234567. Номера других стран с + в начале остаются как есть.
Если к телефону нужно добавить что-то ещё (например, добавочный номер), напишите это в «Комментарий для службы доставки» (строка «Ещё» формы отправки).
Дополнительная информация контактного лица¶
Если в карточке контактного лица заполнено поле «Дополнительная информация», оно попадёт в «Комментарий для службы доставки» (в УТ, КА и ERP):
Габариты: источник и расчёт¶
Откуда модуль берёт вес и размеры одной единицы товара в «Управлении торговлей», «Комплексной автоматизации» и ERP:
У упаковки каждый размер и вес берутся отдельно: если у размера не указана единица измерения, значение берётся из настроек. В карточке товара в этих конфигурациях есть только длина, площадь и объём, поэтому ширину и высоту модуль вычисляет:
| Задано в карточке товара | Длина | Ширина | Высота |
|---|---|---|---|
| объём, площадь и длина | длина | площадь / длина | объём / площадь |
| объём и площадь | √площади | √площади | объём / площадь |
| объём и длина | длина | √(объём / длина) | √(объём / длина) |
| только объём | ∛объёма | ∛объёма | ∛объёма |
| площадь и длина | длина | площадь / длина | из настроек |
| только площадь | √площади | √площади | из настроек |
| только длина | длина | из настроек | из настроек |
| ничего | из настроек | из настроек | из настроек |
Размеры округляются до целых сантиметров, но не меньше 1 см. Площадь и объём учитываются, только если у них указана единица измерения.
В «Управлении нашей фирмой» упаковок нет:
Если в заказе покупателя УНФ заполнены длина, ширина и высота, а место в заказе одно, оно получает эти размеры и вес заказа (если вес не указан — сумму веса товаров) вместо расчёта по товарам. Габариты по умолчанию для всех товаров и для мест важнее размеров заказа.
В упаковках лучше использовать целое количество единиц: дробные количества и объёмы искажают расчёт. Если в настройках включено «Использовать габариты места по умолчанию», каждое место получает эти габариты, габариты товаров для места не используются.
Если у товара нет веса или габаритов ни в базе, ни в настройках, при расчёте мест модуль сообщит, у какого товара чего не хватает, — без них служба посчитает тариф неточно или не примет заказ. Подходы к заполнению (настройки — в разделе Груз и места):
- Одинаковые грузы — выберите «Габариты по умолчанию действуют для: всех товаров» и задайте габариты. Тогда габариты в базе можно не заполнять.
- Частично типовые грузы — выберите «…действуют для: товаров с незаполненными габаритами». Реальные размеры задайте только у нетиповых товаров.
- Контроль габаритов — ту же настройку, но без значений по умолчанию. Если габаритов нет, модуль выдаст ошибку — так заполнение габаритов контролируется.
Как модуль считает габариты места¶
Габариты места модуль считает методом «кучи»: укладывает товары компактно, не давая одному измерению расти чрезмерно. Поэтому 10 пар лыж не дадут длину места 18 м, а монитор, клавиатура и мышь дадут «куб», близкий к размеру монитора.
Оплата и наложенный платёж¶
Отметку «Заказ оплачен» в новом заказе ставит настройка «Оплата» (раздел Новые заказы). «Доставка для клиента» заполняется из служебных услуг или ПРО из суммы тарифа с наценкой, если в подключении службы включено «Сумму тарифа оплачивает клиент» (см. Шаг 3. Тариф и параметры). Сумму, изменённую вручную, пересчёт не заменяет: модуль сравнивает её с суммой, которую сам подставил из тарифа, а после повторного открытия заказа - с суммой по тарифу, сохранённому в заказе.
Например, стоимость заказа — 1000 ₽, доставка для клиента — 333 ₽, тариф службы — 150 ₽:
- клиент платит всё → служба берёт с получателя 1000 + 333 ₽, отправителю возвращают 1183 ₽;
- отправитель платит всё → клиент платит 0, отправитель — 150 ₽;
- заказ оплачен, доставка платная → клиент платит 333 ₽;
- заказ с бесплатной доставкой → клиент платит 1000 ₽, отправитель — 150 ₽.
Отдельно от этих сумм у транспортных компаний и части курьерских служб в блоке «Оплата» есть поле Плательщик по умолчанию: кто платит самой службе за перевозку и дополнительные услуги — наша организация или получатель. Это не наложенный платёж: тот описывает деньги за товар. Выбранный плательщик действует для всех оплат заказа, кроме тех, где плательщик указан отдельно в «Услугах» (например, за страховку или забор груза). Пока плательщик не выбран, платит наша организация.
Как считаются сумма заказа, доставка для клиента и наложенный платёж:
Наложенный платёж — это доставка для клиента плюс сумма заказа, если заказ не оплачен. В УНФ к доставке для клиента добавляется ещё поле «Стоимость доставки» заказа — независимо от настройки служебных услуг; если в одну отправку сгруппировано несколько заказов, их стоимости доставки складываются. ПРО Если в подключении службы включено «Сумму тарифа оплачивает клиент», после расчёта «Доставка для клиента» заполняется суммой тарифа с наценкой — и у оплаченного заказа тоже.
Служебные услуги¶
Служебные услуги — номенклатура, которой в заказах обозначают доставку (например, «Доставка товара»). Их задают в разделе Отправка настроек: включите «Использовать служебные услуги» и добавьте номенклатуру в таблицу. Подойдёт только номенклатура с типом «Услуга».
При отправке модуль ищет эту номенклатуру в товарах заказа. Если нашёл, её сумма вычитается из суммы товаров и передаётся в службу как стоимость доставки для клиента — в накладной она будет в поле «Стоимость доставки». Поддерживается не всеми службами.
У оплаченного заказа клиент доставку уже оплатил: при первом открытии «Доставка для клиента» обнуляется, и наложенным платежом за доставку ничего не берётся. Сумму, которую вы ввели и сохранили вручную, модуль не меняет.
Даты и время¶
Если в разделе Новые заказы включено «Заполнять даты доставки и отправки автоматически», при открытии формы неотправленного заказа пустые и прошедшие даты заменяются: дата отправки — сегодняшняя (после 18:00 — завтрашняя), дата доставки — на день позже отправки. О каждой замене модуль сообщает. ПРО Пустое время берётся из настройки «Время по умолчанию». Некоторым службам (например, «Деловым линиям») время отправки обязательно — если его нет, модуль подставит с 10 до 18 ч. В остальных случаях время отправки заполняйте, только если точно знаете, что оно нужно.
Какой тариф модуль выбирает сам¶
После расчёта модуль выбирает тариф так:
- тариф по умолчанию из настроек подключения службы — если он есть среди рассчитанных;
- самый дешёвый тариф основной службы (со звёздочкой в разделе «Службы доставки» настроек) — это важно, когда служба в заказе не выбрана и расчёт идёт по всем службам;
- самый дешёвый тариф среди всех рассчитанных;
- если цену не назвала ни одна служба — первый тариф.
Какой вариант сработал, модуль пишет над таблицей тарифов в правой части формы. Тариф, выбранный вручную, остаётся до следующего расчёта: после «Пересчитать» модуль выбирает тариф заново.
Номер заказа в службе доставки¶
Номер заказа в службе — это номер документа в 1С, а если в заказе заполнен «Номер по данным клиента» (например, заказ пришёл с сайта), — он. Если в разделе Отправка включено «Добавлять дату к номеру заказа», к номеру добавляется дата: 1С каждый год начинает нумерацию заново, и без даты номера в службе начнут повторяться. Выключайте это, только если номера в базе уже уникальны. Номер можно поменять в строке «Ещё» формы отправки.
Если при восстановлении утерянных данных (раздел Обслуживание) нашлись не все заказы, поменяйте настройку «Добавлять дату к номеру заказа», сохраните, запустите восстановление ещё раз и верните настройку.








