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

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

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

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

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

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

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

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