Сталкивались ли вы с ситуацией, когда у одного сотрудника в настройках модуля «Диадок» есть пункт для работы с доверенностями, а у другого он отсутствует, хотя в веб-кабинете все настроено корректно? Это не ошибка, а логичное поведение системы, которое зависит от типа используемого сертификата электронной подписи. Давайте подробно разберемся, почему так происходит и как это работает «под капотом» в коде 1С.
Основной вопрос заключается в следующем: у пользователя в веб-версии «Диадока» настроен и сертификат, и машиночитаемая доверенность (МЧД), но в обработке для 1С соответствующий пункт меню для управления доверенностями не виден. Проанализируем причину и найдем решение.
Ключевая причина отсутствия пункта «Доверенности» — тип сертификата электронной подписи (КЭП), с которым пользователь авторизуется в модуле. Система 1С автоматически определяет, требуется ли для работы с этим сертификатом машиночитаемая доверенность, и в зависимости от этого показывает или скрывает нужный элемент интерфейса.
Рассмотрим основные типы сертификатов и их влияние на отображение настроек:
Таким образом, проблема, описанная в исходной ситуации, решилась, когда пользователь вошел в систему под правильным, актуальным сертификатом физического лица, а не под старым сертификатом сотрудника юрлица. Система корректно определила необходимость МЧД и показала соответствующий пункт меню.
Чтобы полностью понять механику процесса, давайте заглянем в код обработки «Диадок». Видимость кнопки для перехода к настройкам доверенностей управляется специальной процедурой.
Вот процедура, которая отвечает за отображение элемента:
Процедура НастроитьВидимостьКнопкиНастроекДоверенности()
Элементы.ОткрытьСписокДоверенностей.Видимость = ЕстьЯщикДляДействийСДокументамиВКоторомНужнаМЧД();
КонецПроцедуры
Как мы видим, свойство Видимость элемента формы ОткрытьСписокДоверенностей напрямую зависит от результата, который возвращает функция ЕстьЯщикДляДействийСДокументамиВКоторомНужнаМЧД(). Название функции говорит само за себя. Давайте посмотрим, что у нее внутри.
Код функции:
//&НаКлиенте
Функция ЕстьЯщикДляДействийСДокументамиВКоторомНужнаМЧД()
Результат = Ложь;
СтрокиКонтекста = Модуль_Ядро().КонтекстСеанса_СтрокиКонтекста();
Для Каждого СтрокаКонтекста Из СтрокиКонтекста Цикл
КонтекстЯщика = СтрокаКонтекста.Значение;
Если КонтекстЯщика.ТребуетсяМЧД Тогда
Результат = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Разберем логику этой функции по шагам:
Результат устанавливается в значение Ложь. Если проверка не найдет ни одного ящика, для которого нужна МЧД, функция вернет именно это значение.Модуль_Ядро().КонтекстСеанса_СтрокиКонтекста() получает информацию о текущем сеансе работы пользователя в «Диадоке», включая данные о его ящиках (организациях).Для Каждого перебирает все доступные пользователю ящики.КонтекстЯщика.ТребуетсяМЧД. Этот флаг устанавливается самим модулем «Диадок» в момент авторизации пользователя на основе анализа его сертификата.
ТребуетсяМЧД установлен в Истина, она присваивает переменной Результат значение Истина и немедленно выходит из цикла с помощью команды Прервать. Этой информации достаточно, чтобы показать кнопку.Вывод из анализа кода: видимость пункта «Доверенности» — это не просто настройка, а результат логической проверки, заложенной разработчиками. Она напрямую связана с тем, какой сертификат был использован для входа, и соответствует текущим требованиям законодательства по работе с электронными подписями.
Если вы или ваш пользователь столкнулись с проблемой отсутствия пункта «Доверенности», выполните следующие шаги для диагностики и решения:
В заключение, отсутствие меню «Доверенности» — это не сбой, а штатное поведение модуля «Диадок». Интерфейс динамически подстраивается под контекст работы, определяемый типом сертификата. Понимание этой логики поможет быстро диагностировать и решать подобные вопросы.