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