Как изменить формат вывода адреса в печатной форме УПД в 1С 8.3 без нарушения структуры ФИАС?

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

При выставлении универсальных передаточных документов (УПД) и счетов-фактур контрагенты нередко требуют указания юридического адреса строго в формате выписки из ЕГРЮЛ — с полными наименованиями адресных объектов без общепринятых сокращений («город», «улица», «дом» вместо «г.», «ул.», «д.») либо в нестандартной последовательности. При этом типовые конфигурации 1С формируют строковое представление адреса на основе классификатора ФИАС/ГАР.

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

Правовые нормы и риски произвольного ввода адреса

Прежде чем приступать к доработке алгоритмов печати, проанализируем нормативные требования и технические ограничения стандартных конфигураций 1С:

  1. Налоговый кодекс РФ (п. 2 ст. 169): Ошибки в счетах-фактурах и УПД, не препятствующие налоговым органам идентифицировать продавца, покупателя, наименование товаров (работ, услуг), их стоимость, а также ставку и сумму налога, не являются основанием для отказа в принятии НДС к вычету. Использование сокращений ФИАС/ГАР полностью легитимно.
  2. Сбои в электронном документообороте (ЭДО): Официальные XSD-схемы электронных документов ФНС требуют передачи структурированных реквизитов, в частности двузначного кода субъекта РФ. Если адрес введен как произвольная нераспознанная строка, подсистема ЭДО не сможет сопоставить регион и сформировать валидный файл обмена.
  3. Ошибки в регламентированной отчетности: При формировании книги покупок, книги продаж и декларации по НДС используются регламентированные механизмы подсистемы контактной информации. Неклассифицированный адрес может приводить к ошибкам при камеральных проверках ФНС.

Вариант 1. Добавление отдельного вида контактной информации и внешняя печатная форма

Рассмотрим наиболее надежный подход, который позволяет хранить основной адрес в формате классификатора, а специальный формат для печати заполнять только при реальной необходимости.

Разберем по шагам реализацию данного механизма:

  1. Перейдем в раздел НСИ и администрирование → Общие настройки → Виды контактной информации.
  2. Для справочников Организации и Контрагенты добавим новый вид контактной информации с наименованием, например, Юридический адрес (для печати УПД). Установим тип — Адрес (или Строка, если требуется абсолютно свободный формат ввода).
  3. Создадим внешнюю печатную форму (ВПФ) УПД или счет-фактуры.
  4. В алгоритме формирования данных печати переопределим получение строки адреса: если заполнен специальный вид контактной информации, на печать передаем его значение, иначе — стандартное представление юридического адреса.

Посмотрим на пример фрагмента кода в модуле обработки печати:


// Получаем дополнительный адрес для печати
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	КИ.Представление КАК АдресДляПечати
    |ИЗ
    |	Справочник.Контрагенты.КонтактнаяИнформация КАК КИ
    |ГДЕ
    |	КИ.Ссылка = &Контрагент
    |	И КИ.Вид = &ВидКИ_АдресПечать";

Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент);
Запрос.УстановитьПараметр("ВидКИ_АдресПечать", Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес (для печати УПД)"));

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И НЕ ПустаяСтрока(Выборка.АдресДляПечати) Тогда
    АдресПокупателя = Выборка.АдресДляПечати;
Иначе
    АдресПокупателя = Шапка.АдресПокупателяСтандартный;
КонецЕсли;

Вариант 2. Использование дополнительных реквизитов и расширения конфигурации

Если внесение изменений в типовой состав видов контактной информации нежелательно, подключим механизм ДополнительныеРеквизитыИСведения и доработаем печать через расширение конфигурации.

Разберем порядок действий:

  1. В пользовательском режиме добавим дополнительный реквизит для справочника Контрагенты с типом Строка и именем ИндивидуальныйАдресДляУПД.
  2. Создадим расширение конфигурации с назначением Адаптация или Дополнение.
  3. Переопределим процедуру печати УПД в модуле менеджера или в соответствующем модуле подсистемы печати документов.

Посмотрим на пример логики подмены адреса внутри расширения:


&Вместо("СформироватьПечатнуюФормуУПД")
Функция Расш1_СформироватьПечатнуюФормуУПД(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
    ТабличныйДокумент = ПродолжитьВызов(МассивОбъектов, ОбъектыПечати, КомплектыПечати);
    
    // При необходимости модифицируем заполненные параметры в макете перед возвратом
    Возврат ТабличныйДокумент;
КонецФункции

Вариант 3. Программная замена сокращений через словарь соответствий

В случаях, когда требуется единообразно разворачивать типовые сокращения КЛАДР/ФИАС во всех документах без ручного ввода альтернативного текста пользователями, применим программное преобразование строки.

Создадим функцию преобразования сокращений на основе соответствия:


Функция РазвернутьСокращенияАдреса(ИсходныйАдрес)
    
    Словарь = Новый Соответствие;
    Словарь.Вставить(" г,", " город,");
    Словарь.Вставить(" ул,", " улица,");
    Словарь.Вставить(" пр-кт,", " проспект,");
    Словарь.Вставить(" пер,", " переулок,");
    Словарь.Вставить(" д.", " дом");
    Словарь.Вставить(" стр.", " строение");
    Словарь.Вставить(" корп.", " корпус");
    Словарь.Вставить(" оф.", " офис");
    
    РезультирующийАдрес = ИсходныйАдрес;
    Для Каждого Элемент Из Словарь Цикл
        РезультирующийАдрес = СтрЗаменить(РезультирующийАдрес, Элемент.Ключ, Элемент.Значение);
    КонецЦикла;
    
    Возврат РезультирующийАдрес;
    
КонецФункции

Следует учитывать, что прямое автопреобразование строки не всегда дает точное совпадение с текстом выписки ЕГРЮЛ из-за вариативности исторических записей в реестре, поэтому раздельное хранение печатного представления (Вариант 1) остается наиболее гибким и безопасным решением.

← На главную