Имя: Пароль:
1C
1С v8
двойное срабатывание события при записи
,
0 бегинер
 
31.05.18
12:20
обычные формы, толстый клиент
есть справочник, в форме элемента в событии "передзаписью" пишу программно новую запись в другой справочник.
если глф_новые_сообщения=истина и отказ=Ложь тогда;
        //сообщить("запись");
        уведомление=справочники.УведомленияПользователей.СоздатьЭлемент();
        уведомление.Дата=текущаядата();
        уведомление.Получатель=глф_получатель_уведомления;
        уведомление.ВидИнициатора=перечисления.ВидыИнициаторовУведомлений.органайзер;
        уведомление.Событие="от ("+глф_отправитель_уведомления+":) новое сообщение в задаче : "+элементыформы.Наименование.Значение;
        уведомление.КодИнициатора=элементыформы.Код.Значение;
        уведомление.Записать();
    конецесли;
1 бегинер
 
31.05.18
12:22
так вот там два раза новый элемент создается, если в событии разкомментирую строку вывод сообщения "сообщить", либо точку останова сделаю внутри события - то записывается ОДИН элемент.

почему два раза получается событие срабатывает?
с сообщ, с точкой остановки - один
2 бегинер
 
31.05.18
12:24
пробовал передзаписью, призаписи, послезаписи - все равно два раза пишет в другой справочник
3 бегинер
 
31.05.18
12:25
как побороть? нужно чтобы один элемент создавался (записывался) в другой справочник а не два
4 sergey198
 
31.05.18
12:27
может подписки установлены?
5 Cool_Profi
 
31.05.18
12:27
Проверяй наличие записи и всё
6 DrShad
 
31.05.18
12:27
может из уведомления идет такой же говнокод и запись твоего справочника?
7 DrShad
 
31.05.18
12:28
стек вызовов что показывает? откуда вторая запись?
8 бегинер
 
31.05.18
12:33
(4) подписок нет
(6) а в чем говнокод просвяти? я не программист 1с  - сам себе конфу пишу под работу
9 Ёпрст
 
31.05.18
12:34
(8) говнокод - создание новых элементов при каждой записи
10 Ёпрст
 
31.05.18
12:34
заместо проверки, что такой элемент уже есть
11 DrShad
 
31.05.18
12:35
+(9) и делать это все в событии перед записью
12 Ёпрст
 
31.05.18
12:35
ну и в значения объекта пихать что-то с ЭлементыФормы.. ну ты понял
13 catena
 
31.05.18
12:36
+(11)в модуле формы
14 Tateossian
 
31.05.18
12:40
У тебя событие очевидно два раза отрабатывает
15 Tateossian
 
31.05.18
12:44
(13) А что не так-то с модулем формы? Может такое и нужно поведение.
16 DrShad
 
31.05.18
12:45
(15) как минимум модуль объекта с обязательной проверка уже существования такового ну и не перед записью
17 бегинер
 
31.05.18
12:50
1справочник: задачи
на форме справочника1 "задачи" есть ТЧ "переписка" постановщика задачи с исполнителем. так вот "передзаписью" элемента справочника1 - по "глф_новые_сообщения" если есть новая переписка - то программно пишу в ДРУГОЙ справочник2 "уведомленияпользователей"

(9) т.е. мне при каждой записи "задачи" если появилось новая переписка в ней в ТЧ - я уведомляю (создаю новый элемент уведомление) в справочнике2

в чем здесь говно? :))
18 бегинер
 
31.05.18
12:51
есть новая переписка (строка в ТЧ) - уведомляю постановщика/исполнителя
19 бегинер
 
31.05.18
12:52
уведомление.КодИнициатора=элементыформы.Код.Значение

уведомление - это справочник2
элементыформы.Код.Значение - это элементформы справочника1 (справочник задач)
20 Ёпрст
 
31.05.18
13:01
(17) я от нечего делать нажимаю на кнопку записать 20 раз, создалось 20 элементов, если для вас это нормально, продолжайте в том же духе
21 Tateossian
 
31.05.18
13:11
(20) Я обычно в дополнительных свойствах при работе с формой фиксирую необходимость сделать какую-то работу, а при записи в объекте эту работу делаю, чтоб как раз не создавалось 20 объектов от нажатий от нечего делать))
22 бегинер
 
31.05.18
13:12
(20) :) нет конечно
я флаг очищаю:
глф_новые_сообщения=ложь

соотв. последующие нажатия кнопки не приведут к записи уведомлений
23 DrShad
 
31.05.18
13:16
(21) повторно открываю форму и как говорится "Никогда такого не было и вот опять!"
24 DrShad
 
31.05.18
13:16
(22) у тебя запись элемента не пройдет по какой-либо причине и что тогда?
25 бегинер
 
31.05.18
13:19
(24) что имеешь ввиду?
если задача не записалась - то и не уведомит
26 бегинер
 
31.05.18
13:26
сейчас все робит как надо, всем спасибо!
27 бегинер
 
31.05.18
13:26
всем добра!
28 catena
 
31.05.18
13:36
(15)Ну хотя бы то, что форменные процедуры выполняются вне транзакции.
29 Tateossian
 
31.05.18
14:41
(24) Все одна транзакция - откатится до записи и не будет создана задача.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс