Имя: Пароль:
1C
1С v8
В ПриЗаписи() узнать что объект новый
0 breezee
 
15.12.15
08:29
Можно как-то в процедуре ПриЗаписи() узнать что объект ранее не записывался? Мне нужна ссылка на объект, Так что ПередЗаписью() не канает.
1 Мэс33
 
15.12.15
08:32
(0) Ссылку можешь получить до записи.
2 Маратыч
 
15.12.15
08:32
(0) Присвой булевой переменной модуля ЭтоНовыйОбъект в ПередЗаписью() значение ЭтоНовый(), а в ПриЗаписи() проверяй его.
3 Мэс33
 
15.12.15
08:32
(0) Или тебе сам объект нужен?
4 Маратыч
 
15.12.15
08:32
(1) Вроде как в ПередЗаписью() она еще пустая.
5 los_hooliganos
 
15.12.15
08:32
Мда...
6 los_hooliganos
 
15.12.15
08:33
(0) Зачем тебе ссылка?
7 Провинциальный 1сник
 
15.12.15
08:34
(2) А ПередЗаписью и ПриЗаписи выполняются в одном серверном вызове? Если в разных - то переменные модуля хранятся только на время вызова, и решение не пройдет.
8 breezee
 
15.12.15
08:34
(2) Да, я так и сделал, мне скзали что это лишнее. Сказали что можно по-другому. (1) Ок, ладно, погуглил, сделаю через получение ссылки новго
9 Мэс33
 
15.12.15
08:35
(0) Что за секретное требование?
10 breezee
 
15.12.15
08:36
(9) Ничего серкретного. На основе одного элемента справочника создается элемент другого справочника, в который нужно поместить в 1 из реквизитов ссылку первого. Чтобы каждый раз не создавался новый, когда я перезаписываю объект - нужно проверить что объект не новый.
11 breezee
 
15.12.15
08:37
поместить в один из реквизитов ссылку первого
Простите что плохочитаемо вышло
12 БукинГена
 
15.12.15
08:39
А ЭтоНовый() не помогает?
13 Feunoir
 
15.12.15
08:42
У объекта есть ДополнительныеСвойства. Перед записью туда кладёшь ЭтоНовый, при записи проверяешь.
14 breezee
 
15.12.15
08:42
(12) ПриЗаписи() Уже есть ссылка. Не помогает. Буду делать через СсылкаНового()
15 breezee
 
15.12.15
08:43
(13) Спаасибо!
16 Мэс33
 
15.12.15
08:49
(10) Не люблю такие вещи.
17 los_hooliganos
 
15.12.15
08:52
(10) Проблема не в документе 1, а в документе 2.
Значит при записи проверка должна относит к документу 2 а не 1.
Более того саму процедуру отнеси к ПослеЗаписи() документа 1. Проверь что нет документа 2 созданного на основе док 1 и только тогда создавай док 2.
18 БукинГена
 
15.12.15
08:52
"Чтобы каждый раз не создавался новый, когда я перезаписываю объект - нужно проверить что объект не новый"
Мне кажется при перезаписи обработчик "Перед записью" тоже вызывается
19 Мимохожий Однако
 
15.12.15
08:55
ПолуОФФ. Недавно пробегала тема с пометкой на удаление связанных через реквизиты справочников. А у меня всё тот же вопрос: Зачем такие извращение, когда есть объект регистр сведений, например.
20 breezee
 
15.12.15
08:57
(19) Где хрананятся все пометки? Лишнее обращение к базе же.
21 breezee
 
15.12.15
09:15
надеюсь тема не умерла. Пишу
ЭтНов = Ложь;
    Если ЭтоНовый() Тогда
        
        ЭтНов = Истина;
        ЭтотОбъект.ДополнительныеСвойства.Вставить("ЭтНов", ЭтНов);
    КонецЕсли;
В ПередЗаписью() Тут же вычисляю и у меня пустая структура ДополнительныеСвойства. Мне же не нужно записывать объект, чтобы дополнительныесвойства записались
22 hhhh
 
15.12.15
09:21
а чего тут же вычисляешь? покажи
23 breezee
 
15.12.15
09:23
(22) Вычисляю ДополнительныеСвойства и ЭтотОбъект.ДополнительныеСвойства (пробовал и в объект и без объекта записывать) В обоих случаях получается пустая структура
24 breezee
 
15.12.15
09:26
Ага, в СП написано "Только чтение". Недопонимаю
ДополнительныеСвойства (AdditionalProperties)
Использование:

Только чтение.
25 ViSo76
 
15.12.15
09:26
1. Событие ПриЗаписи происходит после того как объект записан в базу
2. Сделай через переменную модуля

Перем пЭтоНовый;

ПередЗаписью:
  пЭтоНовый = ЗначениеЗаполнено( Ссылка );
  Можно и так пЭтоНовый = ЭтоНовый();

ПриЗаписи:
  Если пЭтоНовый = Истина Тогда
26 breezee
 
15.12.15
09:28
(25) Да я сделал, мне сказали чтобы сделал по-другому. Посоветовали Дополнительные свойства. Они ничерта не записываются.
27 hhhh
 
15.12.15
09:49
(26)  Дополнительные свойства не записываются. Они просто есть.
28 Мимохожий Однако
 
15.12.15
10:00
(20)Спорное утверждение. ИМХО. В одном запросе можно обратиться ко многим необходимым данным. Эквилибристика с перезаписями связанных объектов даёт еще больше обращений к базе.
29 Feunoir
 
15.12.15
10:24
(21) Сделай без всяких "Если" просто

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
30 Nuobu
 
15.12.15
10:26
(29) Не дополнительное свойство, а параметрыЗаписи.
31 Лефмихалыч
 
15.12.15
10:28
(0) тебе зачем знать, что он новый? Если, чтобы выполнить какие-то действия в базе, то просто проверяй, сделаны эти действия или нет в приЗаписи
32 singlych
 
15.12.15
10:28
Ага.

"На основе одного элемента справочника создается элемент другого справочника, в который нужно поместить в 1 из реквизитов ссылку первого."

Вообще это все в ОбработкаЗаполнения делается.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn