И снова безопасный режим и выполнение операции запрещено
Добрый день!
Конфигурация Зарплата и управление персоналом, редакция 3.1 (3.1.5.171), платформа 1С:Предприятие 8.3 (8.3.11.3034)
Пишу внешний отчет, в отчете используется СКД, в самом отчете необходимо вывести ФИО сотрудника в дательном падеже, типа Выдана тому то тому то..
Для этого использую в вычисляемых полях выражение СклонениеПредставленийОбъектов.ПросклонятьФИО(ФизическоеЛицо, 3, ФизическоеЛицо)
И вот тут засада - в данной функции глобального модуля есть строчка ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклоненияФИО"), код компоненты, соответственно, зашит в общем макете. Из-за этого при исполнении отчета выдается ругательство "Установлен безопасный режим. Выполнение операции запрещено". Да, всё логично. Отчет ломится использовать внешнюю компоненту, с точки зрения безопасности 1С верно блокирует запуск небезопасного кода. Перерыл кучу тем на форумах, отыскал простое решение, в процедуре где заполняются параметры регистрации внешнего отчета, нужно добавить строчку:
ПараметрыРегистрации.Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты("ОбщийМакет.КомпонентаСклоненияФИО", "Фамилия в дательном падеже")); И более ничего, и народ радуется, у них все получилось... Но только не у меня.
Ну все же вроде как верно, перепроверил 100 раз, глаза замылились. Но наблюдаю все ту же фразу: "Установлен безопасный режим. Выполнение операции запрещено". Подскажите, что не так то? И знающие люди, подскажите, как вообще платформа 1С понимает использование небезопасного кода, как фильтрует что разрешено, а что нет, как вызов метода ПодключитьВнешнююКомпоненту анализируется что он добавлен в разрешения? Прошу помощи...
Конфигурация Зарплата и управление персоналом, редакция 3.1 (3.1.5.171), платформа 1С:Предприятие 8.3 (8.3.11.3034)
Пишу внешний отчет, в отчете используется СКД, в самом отчете необходимо вывести ФИО сотрудника в дательном падеже, типа Выдана тому то тому то..
Для этого использую в вычисляемых полях выражение СклонениеПредставленийОбъектов.ПросклонятьФИО(ФизическоеЛицо, 3, ФизическоеЛицо)
И вот тут засада - в данной функции глобального модуля есть строчка ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклоненияФИО"), код компоненты, соответственно, зашит в общем макете. Из-за этого при исполнении отчета выдается ругательство "Установлен безопасный режим. Выполнение операции запрещено". Да, всё логично. Отчет ломится использовать внешнюю компоненту, с точки зрения безопасности 1С верно блокирует запуск небезопасного кода. Перерыл кучу тем на форумах, отыскал простое решение, в процедуре где заполняются параметры регистрации внешнего отчета, нужно добавить строчку:
ПараметрыРегистрации.Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты("ОбщийМакет.КомпонентаСклоненияФИО", "Фамилия в дательном падеже")); И более ничего, и народ радуется, у них все получилось... Но только не у меня.
Ну все же вроде как верно, перепроверил 100 раз, глаза замылились. Но наблюдаю все ту же фразу: "Установлен безопасный режим. Выполнение операции запрещено". Подскажите, что не так то? И знающие люди, подскажите, как вообще платформа 1С понимает использование небезопасного кода, как фильтрует что разрешено, а что нет, как вызов метода ПодключитьВнешнююКомпоненту анализируется что он добавлен в разрешения? Прошу помощи...
По теме из базы знаний
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов
- Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) из-за новой фичи на сайте по модерации сообщений со ссылками (хотя ссылка на официальный сайт 1С была) предыдущее сообщение так и не появилось.
Смысл следующий. Если используется клиент-серверная архитектура и компонента подключается на сервере, тогда смотрите в сторону Профили безопасности на сервере.
Смысл следующий. Если используется клиент-серверная архитектура и компонента подключается на сервере, тогда смотрите в сторону Профили безопасности на сервере.
У внешнего отчета:
Действия - Открыть модуль объекта
поправьте поля под себя
Действия - Открыть модуль объекта
поправьте поля под себя
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Наименование", "Т-53");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Информация", "Любая дополнительная информация");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0");
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ВедомостьНаВыплатуЗарплатыВКассу");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
тзКоманды = Новый ТаблицаЗначений;
тзКоманды.Колонки.Добавить("Идентификатор");
тзКоманды.Колонки.Добавить("Представление");
тзКоманды.Колонки.Добавить("Модификатор");
тзКоманды.Колонки.Добавить("ПоказыватьОповещение");
тзКоманды.Колонки.Добавить("Использование");
строкаКоманды = тзКоманды.Добавить();
строкаКоманды.Идентификатор = "Т53";
строкаКоманды.Представление = "Т-53 внешняя";
строкаКоманды.Модификатор = "ПечатьMXL";
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовСерверногоМетода";
ПараметрыРегистрации.Вставить("Команды", тзКоманды);
Возврат ПараметрыРегистрации;
КонецФункции
Показать
(8) Не знаю что там у кого работало, но СКД ВСЕГДА исполняет внешние функции в безопасном режиме. Так было не всегда и, видимо, вам попалось "решение" с тех ещё времён... Решения НЕТ. Я в своё время угрохал кучу времени и нашёл где-то в дебрях ИТСа строчку про безусловно безопасное исполнение кода внешних функций СКД. Возможно, конечно, что с тех времён опять что-то поменялось и теперь оно опять не так...
Сделать в физлицах доп. реквизит "ФИО в дательном падеже". Обработкой заполнить реквизит. Сделать подписку на события при записи регистра сведений "ФИОФизлиц" и справочника "Физлица", заполняющее этот реквизит.
Использовать в отчете готовое ФИО в дательном падеже, радовацца. Получить благодарность за ускорение работы отчета (опционально)
Использовать в отчете готовое ФИО в дательном падеже, радовацца. Получить благодарность за ускорение работы отчета (опционально)
(11) Примерно к такому решению я и подошел, только используется встроенный регистр сведений СклоненияПредставленийОбъектов, там хранятся склонения всевозможных объектов, однако не все элементы туда попадают. Да, и конечно же, изменять конфигурацию совсем не хотелось бы
(10) Как то совсем безутешно )
(10) Как то совсем безутешно )
В итоге сделал в модуле отчета в процедуре ПриКомпоновкеРезультата такие строки:
Для Каждого ЭлементНастройки ИЗ КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ЭлементНастройки.Параметр = Новый ПараметрКомпоновкиДанных("ФизическоеЛицо") Тогда
ЗначениеПараметраФизЛица = ЭлементНастройки.Значение;
ФИОВДательномПадеже = СклонениеПредставленийОбъектов.ПросклонятьФИО(ЗначениеПараметраФизЛица.Наименование, 3, ЗначениеПараметраФизЛица);
КонецЕсли;
КонецЦикла;
При этом функция ПросклонятьФИО так же записывает сведения в регистр сведений СклоненияПредставленийОбъектов, а в СКД я использую этот регистр и извлекаю готовое значение в дательном падеже. Все изящно, все работает, огромное спасибо всем помогавшим!
Для Каждого ЭлементНастройки ИЗ КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ЭлементНастройки.Параметр = Новый ПараметрКомпоновкиДанных("ФизическоеЛицо") Тогда
ЗначениеПараметраФизЛица = ЭлементНастройки.Значение;
ФИОВДательномПадеже = СклонениеПредставленийОбъектов.ПросклонятьФИО(ЗначениеПараметраФизЛица.Наименование, 3, ЗначениеПараметраФизЛица);
КонецЕсли;
КонецЦикла;
При этом функция ПросклонятьФИО так же записывает сведения в регистр сведений СклоненияПредставленийОбъектов, а в СКД я использую этот регистр и извлекаю готовое значение в дательном падеже. Все изящно, все работает, огромное спасибо всем помогавшим!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот