# Модуль API ВМТП



# Инструкция API ВМТП

## Регистрация

Важно. Для доступа к API необходимо отправить заявку на доступ.   
[Заявка на доступ к API-сервисам порта.doc](https://cloud.accounter.org/index.php/s/7kyqjdfRKanp52C)

## Установка

Загрузите файл обработки в "Дополнительные обработки" 1С:  
[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/qxWimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/qxWimage.png)

Обработка содержит 3 команды:

- Автоматическая загрузка - загружает данные исходя из настроек. Предназначена для автоматического запуска по расписанию (По умолчанию расписание отключено);
- Открыть настройки - открывает настройки модуля. Предназначена для запуска администратором и уполномоченных им лиц;
- Рабочий стол ВМТП по API - Инструмент для ручной загрузки информации пользователем.

## Настройка

Сначала укажите логин и пароль, полученные от ВМТП. Возможна загрузка по нескольким компаниям в одну базу:

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/HbXimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/HbXimage.png)

## Типовые параметры

<table border="1" id="bkmrk-%D0%A2%D0%B8%D0%BF%D0%BE%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%D0%9F" style="border-collapse: collapse; width: 100%; height: 2293.19px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Типоразмер</td><td style="height: 29.7969px;">ЗначениеПараметра = Типоразмер(cargo.container.type);</td></tr><tr style="height: 113.781px;"><td style="height: 113.781px;">Коммерческое разрешение</td><td style="height: 113.781px;">Если cargo.Свойство("release") И cargo.release.Свойство("commercial") И cargo.release.commercial.state=Истина Тогда  
ЗначениеПараметра = РаспознатьДату(cargo.release.commercial.date)  
КонецЕсли</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">Вес брутто</td><td style="height: 46.5938px;">ЗначениеПараметра = Число(cargo.weight) + Число(cargo.container.weight)</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Вес нетто</td><td style="height: 29.7969px;">ЗначениеПараметра = Число(cargo.weight) </td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">Выгружен в порту</td><td style="height: 63.3906px;">ЕСЛИ cargo.arrival.Свойство("date") ТОГДА  
 ЗначениеПараметра = РаспознатьДату(cargo.arrival.date)  
КОНЕЦЕСЛИ</td></tr><tr style="height: 147.375px;"><td style="height: 147.375px;">Внутрипортовые операции</td><td style="height: 147.375px;">Если cargo.Свойство("customsData") Тогда  
ЗначениеПараметра = "";  
Для каждого ТамПроц Из cargo.customsData.surveys цикл  
ЗначениеПараметра = ЗначениеПараметра + ?(ЗначениеПараметра="","",",") + ?(ТамПроц.type="Физический","Досмотр",ТамПроц.type);   
КонецЦикла;  
КОнецЕсли  
</td></tr><tr style="height: 116.781px;"><td style="height: 116.781px;">Отгружен по ЖД

</td><td style="height: 116.781px;">ЕСЛИ cargo.status = "Убыл" и  
cargo.departure.direction = "RW"  
ТОГДА  
 ЗначениеПараметра = РаспознатьДату(cargo.departure.date)  
КОНЕЦЕСЛИ</td></tr><tr style="height: 113.781px;"><td style="height: 113.781px;">Автовывоз с терминала</td><td style="height: 113.781px;">ЕСЛИ cargo.status = "Убыл" и  
cargo.departure.direction = "AUTO"  
ТОГДА  
 ЗначениеПараметра = РаспознатьДату(cargo.departure.date)  
КОНЕЦЕСЛИ</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Груз</td><td style="height: 29.7969px;">ЗначениеПараметра = cargo.description</td></tr><tr style="height: 164.172px;"><td style="height: 164.172px;">Тип перевозки</td><td style="height: 164.172px;">Если cargo.arrival.direction = "SEA" Тогда  
ЗначениеПараметра = Справочники.CW\_ТипыПеревозок.НайтиПоНаименованию("Импорт");  
Иначе  
ЗначениеПараметра = Справочники.CW\_ТипыПеревозок.НайтиПоНаименованию("Экспорт");  
КонецЕсли</td></tr><tr style="height: 113.781px;"><td style="height: 113.781px;">Принят на погрузку</td><td style="height: 113.781px;">ЕСЛИ cargo.Свойство("departure") И cargo.departure.Свойство("direction") И cargo.departure.direction = "RW" ТОГДА  
 ЗначениеПараметра = РаспознатьДату(cargo.departure.RWAcceptanceDate)  
КОНЕЦЕСЛИ  
</td></tr><tr style="height: 214.516px;"><td style="height: 214.516px;">Коносамент</td><td style="height: 214.516px;">ЗначениеПараметра = "";

ТипВхДокумента = ?(cargo.arrival.direction = "SEA","Коносамент (входящий)","ЖД накладная");  
Для каждого Документ Из cargo.arrival.documents цикл  
 Если Документ.type = ТипВхДокумента тогда  
 ЗначениеПараметра = ЗначениеПараметра + ?(ЗначениеПараметра="","",",") + Документ.number;  
 КонецЕсли   
КонецЦикла

</td></tr><tr style="height: 164.172px;"><td style="height: 164.172px;">Линия</td><td style="height: 164.172px;">Если cargo.arrival.direction = "SEA" И cargo.Свойство("arrival") И cargo.arrival.Свойство("transport") Тогда  
ЗначениеПараметра = cargo.arrival.transport.voyage.line.name;  
ИНАЧЕЕсли cargo.arrival.direction = "RW" И cargo.Свойство("departure") Тогда  
ЗначениеПараметра = Линия(cargo.departure.transport.voyage.line.name);  
КонецЕсли  
</td></tr><tr style="height: 130.578px;"><td style="height: 130.578px;">Номера ДТ</td><td style="height: 130.578px;">ЗначениеПараметра = "";  
Если cargo.customsData.Свойство("declarations") Тогда  
Для каждого Д Из cargo.customsData.declarations цикл  
ЗначениеПараметра = ЗначениеПараметра + ?(ЗначениеПараметра="","",",") +Д.number;   
КонецЦикла  
КонецЕсли  
</td></tr><tr style="height: 147.375px;"><td style="height: 147.375px;">Номер пломбы</td><td style="height: 147.375px;">ЗначениеПараметра = "";  
Для каждого Пломба Из cargo.seals цикл  
ЗначениеПараметра = ЗначениеПараметра + ?(ЗначениеПараметра="","",",") + СтрЗаменить(Пломба.number,"ИМП ","");   
КонецЦикла;  
ЗначениеПараметра = СтрЗаменить(ЗначениеПараметра,"Прочее ","");</td></tr><tr style="height: 130.578px;"><td style="height: 130.578px;">Номер рейса</td><td style="height: 130.578px;">Если cargo.arrival.direction = "SEA" И cargo.Свойство("arrival") Тогда  
ЗначениеПараметра = cargo.arrival.transport.voyage;  
ИНАЧЕЕсли cargo.arrival.direction = "RW" И cargo.Свойство("departure") Тогда  
ЗначениеПараметра = cargo.departure.transport.voyage;  
КонецЕсли</td></tr><tr style="height: 96.9844px;"><td style="height: 96.9844px;">Охрана</td><td style="height: 96.9844px;">ЕСЛИ cargo.departure.Свойство("direction") ТОГДА  
 ЕСЛИ cargo.departure.direction = "RW" ТОГДА  
 ЗначениеПараметра = cargo.departure.guard  
 КОНЕЦЕСЛИ  
КОНЕЦЕСЛИ</td></tr><tr style="height: 231.359px;"><td style="height: 231.359px;">Повреждение</td><td style="height: 231.359px;">ЗначениеПараметра = "";  
Если cargo.Свойство("damage") Тогда  
М=Новый Массив;  
Для каждого Повреждение Из cargo.damage цикл  
М.Добавить(Повреждение.place + " - " +Повреждение.name);  
КонецЦикла;  
СортировкаВыбором(М);  
Для каждого П Из М цикл  
ЗначениеПараметра = ЗначениеПараметра + ?(ЗначениеПараметра="","",",") + П;   
КонецЦикла;  
КонецЕсли  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Релиз получен</td><td style="height: 29.7969px;">Если cargo.Свойство("release") И cargo.release.Свойство("agent") И cargo.release.agent=Истина Тогда  
ЗначениеПараметра = Истина;  
КонецЕсли</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Станция назначения</td><td style="height: 29.7969px;">ЕСЛИ cargo.status = "Убыл" И cargo.departure.direction = "RW" ТОГДА  
ЗначениеПараметра = ЖДСтанция(cargo.departure.document.station.name, cargo.departure.document.station.code, Истина);  
КОНЕЦЕСЛИ;

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Станция отправления</td><td style="height: 29.7969px;">ЗначениеПараметра = ЖДСтанция("ПОРТ ВЛАДИВОСТОК");</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Судно</td><td style="height: 29.7969px;">ЕСЛИ cargo.type = "Контейнер" и   
cargo.status = "Убыл" и  
cargo.arrival.direction = "SEA" и   
cargo.departure.direction = "RW"   
ТОГДА  
 ЗначениеПараметра = РаспознатьДату(cargo.departure.date)  
КОНЕЦЕСЛИ

ЗначениеПараметра = Справочники.CW\_ТипыПеревозок.НайтиПоНаименованию(Наименование)

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Таможенный режим</td><td style="height: 29.7969px;">Если cargo.customsData.Свойство("declarations") Тогда  
Для каждого Д Из cargo.customsData.declarations цикл  
Если Д.type = "ДТ" ТОГДА   
ЗначениеПараметра = "ГТД";  
ИНАЧЕЕсли Д.type = "Транзитная декларация" ТОГДА   
ЗначениеПараметра = "ВТТ";  
КонецЕсли;  
КонецЦикла  
КонецЕсли

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Терминал</td><td style="height: 29.7969px;">ЗначениеПараметра = Справочники.CW\_Терминалы.НайтиПоНаименованию("ВМТП")</td></tr></tbody></table>

Для получения консультации обращайтесь на <help@accounter.org>

# Изменения API ВМТП

## API ВМТП v1.6


---

### Обновлён отбор запроса к ВМТП:

#### Поля выбираются из списка:

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/lfyimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/lfyimage.png)

#### Если у типа поля предполагается конечное количество вариантов - они будут использованы как список правых значений:  


#### [![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/vqZimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/vqZimage.png)  
Произвольное условие отбора

Введена галочка, позволяющая написать условия к примеру "ИЛИ":

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/FPMimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/FPMimage.png)

### Переработаны рассылки

Теперь их 2 и одна содержит информацию о данных загруженных в базу, а другая наличие ошибок

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-09/scaled-1680-/DzYimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-09/DzYimage.png)

### Оптимизированы функции обращающиеся к справочникам

Теперь они будут использовать буфер для того чтобы не лезть в базу n-ое количество раз

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/aj5image.png)](https://book.accounter.org/uploads/images/gallery/2023-03/aj5image.png)

### Починил поле кода загрузки (были проблемы с переключением на вкладки)

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/TPTimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/TPTimage.png)

### Введены шаблоны

(пока в таком виде - наверное потом как-то по-другому оформлю). Это просто предопределенные настройки заполнения предполагаемых параметров. Там же используется новая функция ПолучитьЗначениеИзМассива.

[![image.png](https://book.accounter.org/uploads/images/gallery/2023-03/scaled-1680-/KYIimage.png)](https://book.accounter.org/uploads/images/gallery/2023-03/KYIimage.png)

# API ВМТП

Считывает оперативную информацию о ваших перевозках через ВМТП в "Бухгалтерию Экспедитора" в ручном и автоматическом режимах. С помощью данного модуля, в вашей 1С будет обновляться информация о находящихся в порту, убывших и ожидающихся к прибытию перевозках, без участия человека. Среди всех данных, предоставляемых ВМТП, наиболее популярными являются:

- Типоразмер (20DC, 40HC)
- Дата прибытия
- Дата принятия на погрузку
- Дата получения коммерческого разрешения
- Дата убытия
- Судно (NIIGATA TRADER)
- Рейс (2302E)
- Линия (SINOKOR)
- Номер коносамента (SNKO000000000000)
- Наименование груза (ВИДЕООБОРУДОВАНИЕ, ПРИНАДЛЕЖНОСТИ)
- Вес брутто груза (вес нетто груза + вес упаковки). Без веса контейнера
- Вес контейнера
- Количество мест
- Номера ДТ (через запятую)
- Таможенный режим (ДТ/ВТТ)
- Номер пломбы
- Охрана (да/нет)
- Повреждения контейнера (КТК - деформация ребер,КТК - загрязнение снаружи)
- Релиз получен (Да/Нет)
- Станция назначения

Механизм настройки модуля позволяет произвести адаптацию под ваши условия без дополнительных затрат на работу программиста, в большинстве случаев. Стоимость модуля без внедрения **60 000р**. Стоимость внедрения взимается по факту, в соответствие с потраченным временем.  
  
Для получения консультации обращайтесь на <help@accounter.org>