В начало

Сравнение Объект и ЭтотОбъект

           

Если установить точку останова в конфигураторе и вычислить выражение «Объект», то можно получить следующие данные.

Рис. Объект

Рис. «Объект» из модуля формы

 

            Но как ни странно, Объект входит в некую хрень под названием «ЭтотОбъект» и это вовсе не одно и тоже.

 

Рис. ЭтотОбъект

Рис. «ЭтотОбъект» из модуля формы, выделен «Объект»

 

            Нечто под названием «ЭтотОбъект» можно просмотреть в режиме отладки и из модуля объекта. Насколько хорошо видно, никакого элемента «Объект» в нем нет, зато есть непонятная и ненужная рекурсия на самого себя, т.е. на «ЭтотОбъект».

Рис. «ЭтотОбъект» из модуля объекта, «Объекта» отдельной строкой нет

 

            Т.е. если в модуле формы документа, в процедуре «При открытии» написать код как тот, что показана ниже, то это просто пользовательской переменной присвоится значение, соответствующее читателю из справочника «Читатели».

 

Листинг 1. Просто переменная «Читатель»

&НаКлиенте

Процедура ПриОткрытии(Отказ)

      Читатель = ПриОткрытииНаСервере("Латышенко");

КонецПроцедуры

 

&НаСервере

Функция ПриОткрытииНаСервере(СтрЧит) 

      СсылЧит = Справочники.Читатели.НайтиПоНаименованию(СтрЧит)

      Возврат СсылЧит;

КонецФункции

 

 

            Если прописать переменную отталкиваясь от «Объект» через точку, то уже подцепится реквизит объекта. Но при этом данная запись является сокращенной.

 

Листинг 2. Реквизит «Читатель»

&НаКлиенте

Процедура ПриОткрытии(Отказ)

      Объект.Читатель = ПриОткрытииНаСервере("Молдавский");

КонецПроцедуры

 

+ Функция ПриОткрытииНаСервере(СтрЧит) …

 

 

            В том случае, если слегка размотать этот змеиный клубок, то следует писать начиная с «ЭтотОбъект», потом уже через точку «Объект» и наконец реквизит «Читатель».

 

Листинг 3. Полный путь к реквизиту «Читатель»

&НаКлиенте

Процедура ПриОткрытии(Отказ)

      ЭтотОбъект.Объект.Читатель = ПриОткрытииНаСервере("Уваров");

КонецПроцедуры

 

+ Функция ПриОткрытииНаСервере(СтрЧит) …

 

 

            РЕЗЮМЕ: вся эта котовасия с отсутствием обязательного декларирования переменных, а также с сокращением записей объектов и похожими на первый взгляд названиями «Объект» и «ЭтотОбъект» является источником многих ошибок.

 

Кто так строит?