tormozit / RDT1C

Подсистема "Инструменты разработчика" для платформы 1С 8
http://devtool1c.ucoz.ru
88 stars 8 forks source link

Анализ техножурнала. Поле объекта не обнаружено (Свойства_ИспользоватьСвойства) #523

Closed PerlAmutor closed 10 months ago

PerlAmutor commented 10 months ago

ТЖ: тест.zip

https://github.com/tormozit/RDT1C/assets/87958986/e690951a-56a3-4606-a050-2866512b4390

Информация для технической поддержки Платформа: 8.3.20.1996 Режим БД: файловый Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.5.12.47) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_17 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Инструменты разработчика. Версия: Портативный 6.96.1p Инструменты разработчика. Инструмент: Анализ техножурнала Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Серверный модуль БСП: Да Расширения. Понижайка () Клиент. Приложение: Обычное приложение 64б Клиент. Проверка модальных вызовов: Нет Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Нет Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Майкрософт Windows 10 Pro 64-разрядная Русский Клиент. ОС от имени администратора: Нет Клиент. ОС выполнение BAT: Да Клиент. ОС Текущая кодовая страница: 866

Воспроизведение проблемы

  1. При активизации строки события ТЖ в инструменте Техножурнал на некоторых событиях возникает ошибка:
Поле объекта не обнаружено (Свойства_ИспользоватьСвойства)
{ОбщийМодуль.УправлениеСвойствамиКлиент.Модуль(28)}:    Если НЕ Форма.Свойства_ИспользоватьСвойства
{Документ.ВнутреннееПотребление.Форма.ФормаДокумента.Форма(337)}:   Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
{ВнешняяОбработка.ирОболочкаРегВыражение.МодульОбъекта(337)}:   Оповестить("ирПолучитьБазовуюФорму", Контейнер);
{ВнешняяОбработка.ирОбщий.МодульОбъекта(19437)}:            Результат = Менеджер.Создать(ПолноеИмяФайла, Ложь);
{ВнешняяОбработка.ирОбщий.МодульОбъекта(7207)}: Результат = СоздатьОбъектПоИмениМетаданныхЛкс("Обработка.ирОболочкаРегВыражение");
{ВнешняяОбработка.ирКэш.МодульОбъекта(809)}:    Результат = ирОбщий.НовоеРегВыражениеЛкс();
{ВнешняяОбработка.ирОбщий.МодульОбъекта(7183)}:     Вычислитель = ирКэш.ВычислительРегВыраженийЛкс();
{ВнешняяОбработка.ирОбщий.МодульОбъекта(27287)}:    Возврат СокрЛП(ЗаменитьРегВыражениеЛкс(ИмяФайла, Шаблон, НаЧтоМенять, Ложь));
{ВнешняяОбработка.ирПлатформа.МодульОбъекта(3456)}:     ИмяФайлаМодуляБезРасширения = ирОбщий.ЗаменитьНедопустимыеСимволыВИмениФайлаЛкс(ИмяФайлаМодуляБезРасширения, "_");
{ВнешняяОбработка.ирПлатформа.МодульОбъекта(7431)}:     ФайлФормы = ирКэш.Получить().ФайлМодуляИзКраткогоИмени(СлужебныеДанные.ИмяФормы, "xml", Истина);
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.МодульОбъекта(10682)}:           Форма = мПлатформа.ПассивнаяФормаПоИмениКэш(ИмяМодуля);
{ВнешняяОбработка.ирКэш.МодульОбъекта(1944)}:   ПолеТекстаМодуля.УстановитьТекст(,,,,, СтрЗаменить(ИмяМодуля, "\", " "));
{ВнешняяОбработка.ирКлиент.МодульОбъекта(17340)}:       ПолеТекстаМодуля = ирКэш.ПолеТекстаМодуляЛкс(ИмяФайлаМодуля);
{ВнешняяОбработка.ирПлатформа.МодульОбъекта(6836)}:     ПолеТекстаМодуля = ирКлиент.ПолеТекстаМодуляЛкс(ИмяФайлаИлиПолеТекстаМодуля);
{ВнешняяОбработка.ирПлатформа.МодульОбъекта(6825)}: ИмяМетода = НайтиИмяМетодаСтрокиФайлаМодуля(ОписаниеМодуля.ИмяФайлаМодуля, НомерСтроки, СодержаниеСтроки, ТекстыМодулей, СтароеИмяФайлаМодуляБезРасширения, ЧислоСтрокДляПоискаИмениМетода);
{ВнешняяОбработка.ирАнализТехножурнала.Форма.Форма.Форма(1461)}:        СтрокаСтека.Метод = мПлатформа.НайтиИмяМетодаСтрокиМодуля(СтрокаСтека.Модуль, СтрокаСтека.НомерСтроки, СтрокаСтека.СтрокаМодуля);
{ВнешняяОбработка.ирАнализТехножурнала.Форма.Форма.Форма(1422)}:            ОбновитьТаблицуКонтекста(ЗначениеПоля);
{ВнешняяОбработка.ирАнализТехножурнала.Форма.Форма.Форма(1394)}:    ОбновитьТекущуюСтраницуПанелиЭлемента();

Похоже это как-то связано с тем, что при создании формы некоторых документов ERP програмно не создаются некоторые реквизиты формы, которые потом используются в общих модулях. В портативном варианте версии 86 такой ошибки не наблюдается.

tormozit commented 10 months ago

Обработчик оповещения в форме "Документ.ВнутреннееПотребление.Форма.ФормаДокумента" выполняет обработку моего оповещения с явно моим именем события "ирПолучитьБазовуюФорму". Он проверяет имя события после обращения к динамически создаваемым реквизитам, что конечно является плохим тоном. Отключить его я не могу, т.к. метод УстановитьДействие недоступен на клиенте.

tormozit commented 10 months ago

Жалобу на опасный код отправил разработчикам БСП https://partners.v8.1c.ru/forum/t/2154197/m/2154197

PerlAmutor commented 10 months ago

Может тогда есть смысл пока не передавать ключ "Автотест" через Параметры, чтобы эти реквизиты создавались, т.к. в ПриСозданииНаСервере до их создания дело не доходит? Сделать например проверку на версию БСП пока не поправят. Где-нибудь тут, возвращать Неопределено или что-то служебное:

image

image

image

ИР её еще зачем-то и отслеживать пытается, хотя никаких полезных действий над формой не производит:

image

tormozit commented 10 months ago

Попробую сделать защиту https://www.hostedredmine.com/issues/971252

tormozit commented 10 months ago

Исправлено в 6.97