В модуле объекта нельзя выполнить ЭтотОбъект.ЭкспортнаяПеременнаяМодуля

question
1c

#1

Нарвался на неожиданную проблему.

Есть объект-встроенная обработка.
Есть экспортная переменная модуля объекта “Перем ЭкспортнаяПеременнаяМодуля Экспорт;”

Хочу изменить ее значение через “ЭтотОбъект.ЭкспортнаяПеременнаяМодуля = 1;”

Не работает, выдается ошибка.

В отладчике при просмотре “ЭтотОбъект” также не видно “ЭкспортнаяПеременнаяМодуля”, а видны только реквизиты обработки.

Очень странно.
У меня свежайшая платформа 8.3.10.2650

Проверьте, плиз, на своих платформах такое поведение.


#2

Платформа 8.3.9.2170 , поведение аналогичное:

image


#3

8.3.8.2054
Аналогично, правда пробовал во внешнней обработке
Перем ТестоваяПеременная Экспорт;
Функция УстановитьЗначениеПеременной(Тест)
ТестоваяПеременная = 1;
КонецФункции
ЭтотОбъект.ТестоваяПеременная = 1;

Ошибка инициализации модуля: ВнешняяОбработка.Тест.МодульОбъекта
по причине:
{ВнешняяОбработка.Тест.МодульОбъекта(5)}: Поле объекта не обнаружено (ТестоваяПеременная)


#4

Всем привет)) Ребят, а что вы пытаетесь сделать? Вы же делаете обращение к свойству объекта обработки, понятное дело, что там нету никакой экспортной переменной.


#5

Надо идти через Обработки.ххх.создать()


#6

Не получится. Все равно только реквизиты обработки доступны. До тех переменных, которые в модуле объявлены экспортными не достучаться.


#7

это код в обработке “СУУ_ИмпортXML_ИмпортСделок_FX”

Перем ЭтоЗагрузкаКнижекETDCASSTTCAвОперБезД Экспорт;

функция какая-то()
Об = Обработки.СУУ_ИмпортXML_ИмпортСделок_FX.Создать();
Об.ЭтоЗагрузкаКнижекETDCASSTTCAвОперБезД = Истина;
конецФункции

1С:Предприятие 8.2 (8.2.19.83)


#8

Ага, ввел в заблуждение эксперимент )) Налицо явное несоответствие между тем как ведет себя ЭтотОбъект в разделе инициализации модуля и в методах этого модуля. Если обратится внутри метода, то ошибки не возникает.

То есть платформа добавляет свойство с именем экспортной переменной в объект обработки только после завершения выполнения раздела инициализации. А до этого их запоминает вне объекта ЭтотОбъект:

image


#9

В методе поле с именем экспортной переменной у объекта ЭтотОбъект уже есть:

А до окончания блока инициализации такое поле еще не добавляется в объект обработки:

Очень интересное поведение.


#10

У меня есть строчка в разделе инициализации
ЭтоЗагрузкаКнижекETDCASSTTCAвОперБезД = Ложь;

Наверное наткнулся на эту же “фичу” и добавил.


#11

Прикольно )
Я не знал и в 1Скрипте по-моему будет работать, как предполагал автор топика - свойство будет видимо на момент инициализации модуля