При оформлении логистических документов, таких как Транспортная накладная (ТН), пользователи часто сталкиваются с необходимостью многократного ввода одних и тех же адресов погрузки. Стандартный механизм 1С предполагает использование классификатора ФИАС/ГАР, что при каждом заполнении требует времени на поиск и выбор элементов. В этой статье мы разберем, как ускорить этот процесс, используя стандартные возможности конфигурации 1С:Управление торговлей 11.5, и какие программные доработки помогут реализовать выбор из списка ранее введенных адресов.
Часто пользователи замечают, что в поле адреса присутствует кнопка выбора (три точки или лупа), но при нажатии на неё ничего не происходит или снова открывается пустая форма ФИАС. Разберем причины этого поведения. В типовых решениях на базе Библиотеки стандартных подсистем (БСП) поле адреса часто является составным строковым полем. Если система не находит связанных объектов (например, адресов, уже привязанных к конкретному складу или контрагенту), она не может предложить список для выбора. Кроме того, программный код формы может ограничивать выбор, если не заполнены ключевые реквизиты, такие как Грузоотправитель или Склад.
Прежде чем приступать к программированию, рассмотрим штатный механизм, который часто игнорируется. Для каждого партнера (будь то перевозчик, поставщик или клиент) в системе можно хранить неограниченное количество адресов. Для автоматизации этой задачи можно использовать готовое расширение для учета адресов доставки партнеров.
АдресаДоставки.Если адрес погрузки — это фактически адрес вашего склада, наиболее логичным будет настроить его автоматическое подтягивание. Выясним, как это сделать правильно:
В конфигурации УТ 11.5 адрес погрузки в транспортной накладной по умолчанию пытается инициализироваться из данных склада, указанного в документе-основании (например, в Реализации товаров и услуг). Чтобы это работало, выполним следующие шаги:
Важный момент: если поле адреса в ТН остается пустым, проверьте, указана ли Организация и Склад. Система часто блокирует интерактивный выбор адреса, если контекст документа не определен.
Современные версии 1С поддерживают кэширование последних введенных значений. В форме ввода адреса (которая открывается при нажатии на гиперссылку или кнопку) часто присутствует значок в виде небольшой стрелки или списка. Рассмотрим подробнее, как заставить этот механизм работать:
История сохраняется только в том случае, если адрес был признан валидным. Если пользователь просто вписал текст, не выбрав элементы из ФИАС, такой адрес в историю не попадет. Чтобы включить сохранение истории, нужно проверить настройки Видов контактной информации в разделе НСИ и администрирование. Найдем там тип «Адрес» для соответствующих объектов и проверим, разрешено ли хранение истории изменений.
Если стандартные методы не подходят и нужен именно «выпадающий список» (как при выборе номенклатуры), проанализируем техническую реализацию через механизм расширений. Мы можем создать небольшой регистр сведений для хранения «популярных» адресов погрузки.
Алгоритм реализации будет следующим:
ИсторияАдресовПогрузки с измерениями Организация и АдресСтрокой.ТранспортнаяНакладная перехватим событие начала выбора поля адреса.Посмотрим на пример кода, который можно разместить в модуле формы расширения:
&НаКлиенте
Процедура Расш1_АдресПогрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // Отменяем стандартное открытие ФИАС
СписокАдресов = ПолучитьСписокПопулярныхАдресов();
Если СписокАдресов.Количество() > 0 Тогда
ВыбранныйЭлемент = СписокАдресов.ВыбратьЭлемент("Выберите адрес погрузки");
Если ВыбранныйЭлемент <> Неопределено Тогда
Объект.АдресПогрузки = ВыбранныйЭлемент.Значение;
КонецЕсли;
Иначе
// Если история пуста, вызываем стандартный диалог
СтандартнаяОбработка = Истина;
КонецЕсли;
КонецПроцедуры
Для того чтобы этот список пополнялся, проанализируем процедуру записи документа. Нам нужно добавить обработчик ПриЗаписи, который будет сохранять уникальные адреса в наш регистр:
&НаСервере
Процедура Расш1_ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЗначениеЗаполнено(ТекущийОбъект.АдресПогрузки) Тогда
МенеджерЗаписи = РегистрыСведений.ИсторияАдресовПогрузки.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Организация = ТекущийОбъект.Организация;
МенеджерЗаписи.АдресСтрокой = ТекущийОбъект.АдресПогрузки;
МенеджерЗаписи.Период = ТекущаяДата();
МенеджерЗаписи.Записать();
КонецЕсли;
КонецПроцедуры
В продвинутых сценариях использования логистики в 1С:УТ 11.5 (когда включено управление доставкой) существует справочник ПунктыПоМаршруту. Разберем, как его задействовать:
Вместо того чтобы работать с адресом как с текстом, система позволяет оперировать объектами этого справочника. В документе Задание на перевозку или в связанных транспортных накладных выбор происходит мгновенно, так как вы выбираете конкретный элемент справочника, к которому уже «привязан» адрес ФИАС. Это самый надежный способ для крупных компаний, у которых есть фиксированный перечень логистических точек.
Резюмируем: если вам нужно быстрое решение без программирования — заполните Адреса доставки в карточке перевозчика или настройте Контактную информацию склада. Если же требуется максимальное удобство с историей последних вводов — используйте механизм расширений и создание вспомогательного регистра сведений, как мы рассмотрели выше. Это позволит существенно сократить время на рутинные операции и избежать ошибок ручного ввода.