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