Имя: Пароль:
1C
1С v8
Как узнать записывают документ или проводят?
,
0 MAPATNK2
 
naïve
18.09.19
08:54
УПП 1.3.99.1
Здравствуйте, подскажите. В событии при записи прописываю код, который производит определенные манипуляции, но он должен это делать ТОЛЬКО ПРИ ПРОВЕДЕНИИ, если документ просто записывают, код отрабатывать не должен.
Подскажите, как это сделать? Ссылка доступна как при проведении, так и при записи, само событие вызывается как при проведении так и при записи. Даже не знаю, куда копать.
1 ДенисЧ
 
18.09.19
08:56
Так делай свои дела в обработке проведения, в чём проблема?
2 FIXXXL
 
18.09.19
08:56
(0) ПередЗаписью если, я бы понял
но ПриЗаписи если, пиши сразу в ОбработкеПроведения
ну или ПередЗаписью сохрани РежимЗаписи в доп.свойства и анализируй...
3 FIXXXL
 
18.09.19
08:57
типовая ЕРП


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
    
    ДополнительныеСвойства.Вставить("ЭтоНовый",    ЭтоНовый());
    ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);



Процедура ПриЗаписи(Отказ)
    
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    Если Не Отказ
        И Не ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
4 MAPATNK2
 
naïve
18.09.19
08:59
(3) А ДополнительныеСвойства сделать отдельным реквизитом к документу что ли?
5 Cyberhawk
 
18.09.19
09:00
(2) "пиши сразу в ОбработкеПроведения" // С какого-то момента изменять объект в обработке проведения уже нельзя - изменения не запишутся в БД
6 MAPATNK2
 
naïve
18.09.19
09:00
(1) Нужно в форме при записи т.к. код вносит изменения в документ, если он новый и проводится впервые.
7 MAPATNK2
 
naïve
18.09.19
09:00
(5) Нет, нужно именно в форме
8 Cyberhawk
 
18.09.19
09:01
(7) А, ну с формой-то все вообще просто
9 MAPATNK2
 
naïve
18.09.19
09:01
(8) Как?
10 ДенисЧ
 
18.09.19
09:02
(6) В ПРиЗаписи вносить изменения в документ - за такое я бы обрывал руки и странички в трудовой книжке...
11 MAPATNK2
 
naïve
18.09.19
09:02
(10) Вперед
12 MAPATNK2
 
naïve
18.09.19
09:02
Уже нашла способ, всем спасибо. Забыла вообще посмотреть событие "Перед записью" там все есть. Видимо не выспалась.
13 ДенисЧ
 
18.09.19
09:02
(9) В форме - проводить только по кнопке Ок, куда вписать свой код .Записать(РежимЗаписиДокумента.Проведение)
(11) протягивай руки. А то ноги протянешь ))
14 Mikhail Volkov
 
18.09.19
09:15
Схожая проблема: как узнать какую кнопку нажал пользователь: ОК или Записать?
15 MAPATNK2
 
naïve
18.09.19
09:24
(14) В модуле ПриЗаписи есть параметр РежимЗаписи и РежимПроведения. Используй их)))
16 shuhard
 
18.09.19
09:27
(15) и если у документа стоит проводить при записи, то что ты там увидешь ?
17 Mikhail Volkov
 
18.09.19
09:32
(15) При поведении документа добавил свой проверочный код (в конец), который в некоторых случаях формирует сообщение пользователю, и желательно, чтобы форма (обычные) не закрылась (если нажата ОК).
18 elCust
 
18.09.19
09:38
(5) >> С какого-то момента изменять объект в обработке проведения уже нельзя

Интересно с какого? После завершения процедуры ПриЗаписи уже нельзя менять объект.
19 Mikhail Volkov
 
18.09.19
10:24
(18) Объект при записи (проведении) не меняю, но пока, чтобы форма не закрылась, ставлю Отказ = Истина; Этот Отказ не отменяет проведение документа? Как еще можно отменить закрытие формы, если нажата ОК?
20 elCust
 
18.09.19
10:35
(19) Если нажата кнопка Провести и закрыть, находясь в Обработке проведения нельзя отменить закрытие формы, только отменить проведение документа.
21 elCust
 
18.09.19
10:39
Хотя может можно в модуле формы в клиентском методе ПослеЗаписи, но не уверен.
22 Cyberhawk
 
18.09.19
10:44
(18) В УФ это никогда не работало, а в ОФ это всегда работало, но до относительно недавнего момента (какой-то платформы издания 8.3)
23 HardBall
 
18.09.19
11:00
Тема просто кладезь.
Сколько полезных советов для говнокодеров.
24 elCust
 
18.09.19
11:10
(23) Рад помочь, если что обращайся.
25 Mikhail Volkov
 
18.09.19
11:12
(21) Процедура ПослеЗаписи() не имеет Отказ. А ПередЗакрытием() - имеет. Если Отказ = Истина; то не закроется, даже при нажатии ОК?
26 novichok79
 
18.09.19
11:15
мне кажется, что лучше в модуле объекта получать из доп. свойств нужные данные в событии ПриЗаписи, так точно ссылка уже будет записана, и обновлять связанные с объектом сущности.
27 novichok79
 
18.09.19
11:16
а вот эти все обновления в форме при записи - лютый колхоз и говнокод.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.