В процессе проверки модулей после обновления конфигурации 1С: ERP на версию 2.4 (2.4.1.215) была обнаружена ошибка "{ОбщийМодуль.ДатыЗапретаИзмененияСлужебный.Модуль(581,4)}: Процедура или функция с указанным именем не определена (УстановитьОтключениеБезопасногоРежима)".
Анализ программного кода модуля ОбщийМодуль.ДатыЗапретаИзмененияСлужебный версии 2.4 показал, что в функцию "ДействующиеДатыЗапрета() Экспорт" добавлены строки:
Не удалось найти описание (определение) метода УстановитьОтключениеБезопасногоРежима по всей конфигурации 2.4. Также не удается найти определение и спомощью поиска в интернете.
Найден материал на ИТС:
https://its.1c.ru/db/v8310doc#bookmark:dev:TI000000186 5.5.4.3. Безопасный режим работы
// Корректное использование
Процедура ИмяПроцедуры()
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьБезопасныйРежим(Истина);
УстановитьБезопасныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецПроцедуры
Прошу оказать помощь и разъяснить где происходит описание метода УстановитьОтключениеБезопасногоРежима. В каком модуле должно быть описание модуля метода УстановитьОтключениеБезопасногоРежима? Может быть что какой-то новый модуль не попал в новую конфигурацию поставщика версии 2.4?
Причем на метод УстановитьПривилегированныйРежим проверка модулей не ругается - значит описание метода где-то есть и сделано корректно.
Привожу полностью текст функции "ДействующиеДатыЗапрета() Экспорт"
версия 2.2:
// Возвращает действующие даты запрета с учетом последней версии после изменений.
Функция ДействующиеДатыЗапрета() Экспорт
ПоследняяПроверка = ДатыЗапретаИзмененияСлужебныйПовтИсп.ПоследняяПроверкаВерсииДействующихДатЗапрета();
ДействующиеДаты = ПараметрыСеанса.ДействующиеДатыЗапретаИзменения;
Если ТекущаяДатаСеанса() > (ПоследняяПроверка.Дата + 5) Тогда
Если ДействующиеДаты.НачалоДня <> НачалоДня(ТекущаяДатаСеанса())
Или ДействующиеДаты.Версия <> Константы.ВерсияДатЗапретаИзменения.Получить() Тогда
ОчищаемыеПараметры = Новый Массив;
ОчищаемыеПараметры.Добавить("ДействующиеДатыЗапретаИзменения");
ПараметрыСеанса.Очистить(ОчищаемыеПараметры);
ДействующиеДаты = ПараметрыСеанса.ДействующиеДатыЗапретаИзменения;
КонецЕсли;
ПоследняяПроверка.Дата = ТекущаяДатаСеанса();
КонецЕсли;
Возврат ДействующиеДаты;
КонецФункции
Показать
Версия 2.4:
// Возвращает действующие даты запрета с учетом последней версии после изменений.
Функция ДействующиеДатыЗапрета() Экспорт
ПоследняяПроверка = ДатыЗапретаИзмененияСлужебныйПовтИсп.ПоследняяПроверкаВерсииДействующихДатЗапрета();
ДействующиеДаты = ПараметрыСеанса.ДействующиеДатыЗапретаИзменения;
Если ТекущаяДатаСеанса() > (ПоследняяПроверка.Дата + 5) Тогда
Если ДействующиеДаты.НачалоДня <> НачалоДня(ТекущаяДатаСеанса())
Или ДействующиеДаты.Версия <> Константы.ВерсияДатЗапретаИзменения.Получить() Тогда
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ОчищаемыеПараметры = Новый Массив;
ОчищаемыеПараметры.Добавить("ДействующиеДатыЗапретаИзменения");
ПараметрыСеанса.Очистить(ОчищаемыеПараметры);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
ДействующиеДаты = ПараметрыСеанса.ДействующиеДатыЗапретаИзменения;
КонецЕсли;
ПоследняяПроверка.Дата = ТекущаяДатаСеанса();
КонецЕсли;
Возврат ДействующиеДаты;
КонецФункции
Справка имеет описание про метод УстановитьОтключениеБезопасногоРежима в разделе Глобального контекста. Таким образом косвенно предполагается наличие метода в конфигурации.
Та же проблема при обновлении УТ на версию 11.4.3.160
рекомендуется платформа 8.3.10.2620, стоит пока тоже 8.3.10.2561 (в УТ 11.3.4.81 на платформе 8.3.10.2561 ошибка не диагностировалась)
вечером обновлю платформу.
1С продолжает жечь. Сначала вводим ПривилегированныйРежим для модулей, потом вводим функцию УстановитьПривилегированныйРежим, потом придумываем для защиты от неё БезопасныйРежим, потом вводим функцию УстановитьОтключениеБезопасногоРежима... ;)))
Нет предела... совершенству ?