Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Переменные модуля объекта

Переменные модуля объекта
Я
   Chesnok
 
17.10.21 - 15:44
На ИТС написано так:
... для передачи внутренних параметров между обработчиками событий модуля объекта целесообразно использовать неэкспортные переменные модуля объекта, которые недоступны из внешнего кода.
Например:
Перем ПредыдущееЗначениеОрганизации; // значение реквизита "Организация" до записи объекта в базу

Процедура ПередЗаписью(Отказ)
  ПредыдущееЗначениеОрганизации = ...; // с помощью запроса выясняем значение до записи объекта в базу
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
  Если ПредыдущееЗначениеРеквизита <> Организация Тогда
    // отрабатываем изменение значения реквизита при записи
    ...
  КонецЕсли;
КонецПроцедуры

Сделал так:
Перем ОбъектКопированияСсылка;

Процедура ПриКопировании(ОбъектКопирования)
    ОбъектКопированияСсылка = ОбъектКопирования.Ссылка;
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
    Если ЗначениеЗаполнено(ОбъектКопированияСсылка) Тогда
        ...
КонецПроцедуры

Почему в процедуре ПриЗаписи переменная пустая (при копировании естественно проинициализировалась)?
   Ненавижу 1С
 
1 - 17.10.21 - 16:09
Интерактивно делаете через клиента?
Так вот это два разных экземпляра объекта
   серый КТУЛХУ
 
2 - 17.10.21 - 16:39
серверный контекст?
   Chesnok
 
3 - 17.10.21 - 17:06
(1) Копирование - да, интерактивно. Тогда не совсем понятна рекомендация использовать переменные модуля объекта для передачи внутренних параметров между обработчиками событий модуля объекта.
   серый КТУЛХУ
 
4 - 17.10.21 - 17:12
наверное все-таки модуля формы(!) объекта. причем именно в клиентском контексте (т.к. переменные модуля формы насервере тупо не жтвут сколько надо - максимум один серверный вызов).
   RomanYS
 
5 - 17.10.21 - 18:52
(3) В ОФ объект жил вместе с формой. В УФ при каждом уходе на сервер объект будет другой. ПередЗаписью и ПриЗаписи будут выполняться всегда для одного объекта. А вот при копировании в УФ будет один объект, при записи уже другой
   Жан Пердежон
 
6 - 18.10.21 - 01:10
(3) между серверными вызовами объекта не существует
   Chesnok
 
7 - 18.10.21 - 11:01
(4) Можете сами почитать: https://its.1c.ru/db/v8std/content/639/hdoc
Там именно про обработчики событий модуля объекта.
   Chesnok
 
8 - 18.10.21 - 11:02
(5) Ясно, я так и подумал, но смутило то, что написано на ИТС.
   fisher
 
9 - 18.10.21 - 11:16
(8) Так главное - не обманывают. Главное чтобы все происходило в одном серверном вызове. Пример с ПередЗаписью и ПриЗаписи - вполне рабочий.
   Chesnok
 
10 - 18.10.21 - 11:33
(9) Обманывают, т.к. не пишут что это не всегда работает.
   Ненавижу 1С
 
11 - 18.10.21 - 11:39
(10) ну почему пишут, но почему-то в скобках:

Следует иметь в виду, что значения серверных переменных модуля формы не сохраняются между вызовами с клиента.
   Chesnok
 
12 - 18.10.21 - 11:48
(11) Это в другом разделе и про переменные модуля формы, а не про переменные модуля объекта.
   RomanYS
 
13 - 18.10.21 - 12:10
(10) оно всегда работает, но для одного объекта. А вот когда создается объект ты должен сам понимать и знать
   fisher
 
14 - 18.10.21 - 12:18
(10) Всегда работает. Просто про то, что для разных серверных вызовов будут созданы разные объекты - в другом месте написано :)
Ну и раз возникают подобные вопросы, то традиционно рекомендую: https://infostart.ru/1c/articles/198766/
   Chesnok
 
15 - 18.10.21 - 12:24
(13) Я должен был родиться с этими знаниями? Для того и существует ИТС, чтобы дать мне эти знания. Я считаю, что нельзя писать вот так:
"В то же время, для передачи внутренних параметров между обработчиками событий модуля объекта целесообразно использовать неэкспортные переменные модуля объекта, которые недоступны из внешнего кода."
не указывая на существенные условия использования этих переменных.
   Chesnok
 
16 - 18.10.21 - 12:26
(14) Спасибо, почитаю.
   RomanYS
 
17 - 18.10.21 - 12:32
(15) Ты считаешь, что в каждой статье должен идти прицеп всех необходимых знаний? Ну ОК. Но такого не бывает.
   fisher
 
18 - 18.10.21 - 12:32
(15) Возможно, статья была написана до рождества УФ и небрежно портирована. Да и вообще ЖКК обычно не отличаются методической глубиной. Поэтому читай по ссылке из (14) не откладывая. 10 минут времени, а кучу вопросов сразу снимешь.

Список тем форума
 
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.