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