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