Как вывести адрес подразделения в трудовой договор в 1С:ЗУП 3.1: пошаговое руководство

Программист 1С v8.3 (Управляемые формы)
← На главную

При оформлении трудовых договоров в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП) пользователи часто сталкиваются с техническим ограничением версии ПРОФ: в справочнике Подразделения отсутствует стандартное поле для ввода почтового адреса. В отличие от версии КОРП, где такая возможность предусмотрена штатно, в ПРОФ-версии разработчики исходили из строгой трактовки трудового законодательства. Однако на практике адрес конкретного офиса, магазина или склада часто необходимо зафиксировать в печатной форме договора.

В данной статье мы разберем несколько проверенных способов решения этой задачи: от использования дополнительных реквизитов до настройки обособленных подразделений и написания программного кода для внешней печатной формы.

Почему в ЗУП ПРОФ нет адресов подразделений?

Прежде чем переходить к техническим решениям, проанализируем причину такого устройства программы. Согласно статье 57 ТК РФ, в трудовом договоре обязательно указывается место работы. Если сотрудник принимается в филиал или иное обособленное подразделение, находящееся в другой местности, адрес этого подразделения должен быть указан. Если же подразделение находится в той же местности, что и головной офис, указывать точный адрес по закону не обязательно — достаточно названия отдела. Именно этой логики придерживались разработчики 1С, ограничив ввод адресов только для объектов, имеющих статус обособленных.

Способ №1: Использование дополнительных реквизитов (без программирования в конфигурации)

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

  1. Перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Выберем пункт Дополнительные реквизиты.
  3. В списке найдем справочник Подразделения (или Подразделения организаций).
  4. Нажмем кнопку Создать и добавим новый реквизит с наименованием Адрес подразделения.
  5. Тип значения выберем Строка (длинная) или Адрес (если требуется интеграция с ФИАС).
  6. Теперь в карточке каждого подразделения на вкладке Дополнительные реквизиты появится поле для ввода адреса.

Проанализируем ситуацию с выводом этого поля в печатную форму. Чтобы данные попали в трудовой договор, нам потребуется изменить код внешней печатной формы. Для получения значения дополнительного реквизита используем программный интерфейс БСП:


// Пример получения значения дополнительного реквизита
Функция ПолучитьАдресПодразделения(СсылкаНаПодразделение)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ПодразделенияОрганизацийДополнительныеРеквизиты.Значение КАК Адрес
        |ИЗ
        |   Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК ПодразделенияОрганизацийДополнительныеРеквизиты
        |ГДЕ
        |   ПодразделенияОрганизацийДополнительныеРеквизиты.Ссылка = &Ссылка
        |   И ПодразделенияОрганизацийДополнительныеРеквизиты.Свойство.Заголовок = ""Адрес подразделения""";
    
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаПодразделение);
    Результат = Запрос.Выполнить();
    
    Если Не Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Адрес;
    КонецЕсли;
    
    Возврат "";
КонецФункции

Способ №2: Использование признака «Обособленное подразделение»

Выясним, как задействовать штатный функционал хранения адресов, доступный в версии ПРОФ. Если поставить в карточке подразделения галочку Это обособленное подразделение, программа автоматически откроет вкладку Адреса и телефоны.

Важный нюанс: многие боятся включать этот признак, опасаясь, что подразделение станет отдельным налогоплательщиком. Однако, если подразделение не имеет своего КПП и не стоит на учете в другой ИФНС, достаточно просто указать его как обособленное для хранения адреса, при этом данные о регистрации в налоговом органе оставить от головной организации. В этом случае в печатных формах адрес будет доступен через регистр сведений Контактная информация.

Посмотрим на пример кода для извлечения такого адреса:


// Получение фактического адреса подразделения через БСП
Функция ПолучитьКонтактнуюИнформациюПодразделения(ОбъектПодразделение)
    ПараметрыЗапроса = УправлениеКонтактнойИнформацией.ПараметрыПолученияКонтактнойИнформацииОбъектов();
    ПараметрыЗапроса.ТипыИнформации = Перечисления.ТипыКонтактнойИнформации.Адрес;
    ПараметрыЗапроса.ВидыИнформации = Справочники.ВидыКонтактнойИнформации.АдресМестонахожденияПодразделения;
    
    ТаблицаАдресов = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформациюОбъектов(Новый Массив(ОбъектПодразделение), ПараметрыЗапроса);
    
    Для Каждого СтрокаАдреса Из ТаблицаАдресов Цикл
        Возврат СтрокаАдреса.Представление;
    КонецЦикла;
    
    Возврат "";
КонецФункции

Способ №3: Программная обработка макета с условиями

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

Рассмотрим по шагам реализацию такой логики:

  1. В макете внешней печатной формы создаем параметр АдресМестаРаботы.
  2. В коде формирования (обычно это процедура СформироватьПечатнуюФорму) прописываем условия.

// Логика выбора адреса в зависимости от подразделения
ПодразделениеСотрудника = ДанныеПечати.Подразделение;
АдресТекстом = "";

Если ПодразделениеСотрудника.Наименование = "Магазин №1" Тогда
    АдресТекстом = "г. Москва, ул. Ленина, д. 10";
ИначеЕсли ПодразделениеСотрудника.Наименование = "Склад Северный" Тогда
    АдресТекстом = "г. Москва, промышленная зона Парнас, проезд 4";
Иначе
    // Если подразделение не специфичное, берем адрес организации
    АдресТекстом = УправлениеКонтактнойИнформацией.АдресОрганизации(ДанныеПечати.Организация, Перечисления.ТипыКонтактнойИнформации.АдресМестонахождения);
КонецЕсли;

ОбластьМакета.Параметры.АдресМестаРаботы = АдресТекстом;

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

Оптимальный алгоритм для внешней печатной формы

Проанализируем самый надежный подход, который сделает вашу печатную форму универсальной. Рекомендуется реализовать каскадный поиск адреса. Это избавит вас от необходимости создавать десятки макетов (как упоминалось в Сообщении 2 на форуме) и обеспечит корректность данных.

Алгоритм работы функции заполнения должен быть следующим:

  1. Проверяем, заполнено ли поле Адрес подразделения в дополнительных реквизитах.
  2. Если пусто — проверяем, является ли подразделение обособленным и есть ли у него заполненный адрес в контактной информации.
  3. Если и там пусто — проверяем механизм Территорий (если он включен в настройках учетной политики Использовать территории). Каждой территории можно назначить свой адрес.
  4. В самом крайнем случае выводим юридический адрес организации.

Такая иерархия позволяет гибко настраивать систему: для офисных сотрудников будет печататься адрес головного офиса, а для сотрудников торговых точек — адреса их магазинов, заведенные через доп. реквизиты.

Рекомендации по оформлению в макете

При оформлении трудового договора важно не только найти адрес, но и правильно его вписать в контекст предложения. В макете (обычно это формат MXL или Word) используйте конструкцию вида:

"Местом работы Сотрудника является подразделение [ПодразделениеНаименование], расположенное по адресу: [АдресМестаРаботы]."

Использование квадратных скобок в макете 1С позволяет автоматически подставлять значения параметров, переданных из кода. Не забывайте использовать функцию СокрЛП(), чтобы убрать лишние пробелы в начале и конце строк адреса.

Таким образом, даже в версии ЗУП ПРОФ можно эффективно решить задачу вывода адресов подразделений, выбрав метод, наиболее подходящий под масштаб вашего бизнеса и квалификацию технического специалиста. Для решения этой задачи также подойдёт готовая внешняя печатная форма трудового договора для 1С:ЗУП 3.1, которую можно взять за основу и адаптировать под свои требования.

← На главную