|
v7: Есть ли событие "после записи элемента справочника" | ☑ | ||
---|---|---|---|---|
0
GrayS19
04.05.23
✎
16:52
|
Делаю обмен с другой программой - выгружаю значения изменившегося элемента справочника в файл. В форме справочника в Процедуре ПриЗаписи() передаю в ГМ ТекущийЭлемент(), но он, естественно, ещё не записан, в нём старое значение. Можно ли поймать событие, когда элемент уже обновлён ? Выкрутился, сделал через ОбработкуОжидания() - читаю его через 1 секунду, он уже записан, но как-то некрасиво.
|
|||
1
vladmenleo
04.05.23
✎
16:58
|
(0) Выгружаешь в файл - там ведь новые значения? передавай в глобал просто ссылку, а там спр = создатьобъект("твойсправочник"); спр.найтиэлемент(твойэлемент) и будет твое нужное значение
|
|||
2
FN
04.05.23
✎
18:06
|
Включи УРБД. В таблице _1SUPDTS будут все измененные объекты (даже измененные кодом/обработками).
|
|||
3
Злопчинский
04.05.23
✎
22:37
|
Можно без УРБД.
В конце процедуры ПриЗаписи генеришь Формексом асинхронное событие, которое отрабатывает после завершения транзакции записи. У меня так кучу лет работает автообмен 7.7 с WMS. |
|||
4
Злопчинский
04.05.23
✎
22:41
|
глСервис.ВнешнееСобытие("FAKIR", "ИЗМЕНЕНИЕНОМЕНКЛАТУРА", ЗначениеВСтрокуВнутр(ТекущийЭлемент()));
//[*]_progadmin, 22.08.2013, ДОБАВЛЕНО НЕТИПОВОЕ КонецПроцедуры // ПриЗаписи() |
|||
5
Злопчинский
04.05.23
✎
22:43
|
Процедура глОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт
Если (Источник = "A100Online") ИЛИ (Источник = "A200Online") Тогда глОбработкаСобытияОтККМ(Источник, Событие, Данные); //[+]progadmin, 22.08.2013, ДОБАВЛЕНО НЕТИПОВОЕ Иначе глОбработкаFAKIR(Источник, Событие, Данные); //[+]_progadmin, 22.08.2013, ДОБАВЛЕНО НЕТИПОВОЕ КонецЕсли; КонецПроцедуры // глОбработкаВнешнегоСобытия() |
|||
6
Злопчинский
04.05.23
✎
22:47
|
или как в (2) - так даже лучше, наверное. И крути роботом обработку содержимого _1SUPDTS
|
|||
7
HawkEye
05.05.23
✎
00:11
|
(0)
вот вы извращенцы... в ПриЗаписи() перед КонецПроцедуры напиши Записать(); потом вызови свою процедуру из ГМ с ТекущийЭлемент() - в нем будет новое значение |
|||
8
serpentt
05.05.23
✎
08:54
|
(7) Запись элемента будет произведена 2а раза....
|
|||
9
GrayS19
05.05.23
✎
08:57
|
(7) Это я сразу проверил. Получаю старое значение, до изменения.
|
|||
10
Андрей_Андреич
naïve
05.05.23
✎
09:01
|
(8) Тебе чернил жалко? ))
|
|||
11
Харлампий Дымба
05.05.23
✎
11:06
|
(9) Первый пост же: перечитай элемент. спр = создатьобъект("твойсправочник"); спр.найтиэлемент(твойэлемент)
Ну или просто посмотри как в типовой бухии вызывается и работает глУчестьМодифицированныйОбъект() |
|||
12
ikea
05.05.23
✎
11:15
|
(0) В чем проблема писать в отдельную табличку (справочник, внешняя таблица DBF) при записи элемент справочника. А при обмене из этой таблички выгружать измененные данные и очищать после выгрузки?
|
|||
13
Злопчинский
05.05.23
✎
11:21
|
(12) ну так урьд так и делает
|
|||
14
Arbuz
05.05.23
✎
17:35
|
(0) Дык, есть же ФормаПослеЗаписи(ИсточникСобытия, флРезультат) из 1cpp
|
|||
15
Злопчинский
06.05.23
✎
02:43
|
(14) хм... Надо будет глянуть, не знал про такую
|
|||
16
big
06.05.23
✎
08:58
|
(13) А как потом из updts записи удалять безболезненно? Индексы 1С свои делает, не как фокспрошный драйвер. Хотя можно и забить, ибо если нет реальной УРБД, то оно и не надо.
|
|||
17
Bigbro
06.05.23
✎
09:16
|
а потом шринк/дроп-криэйт
|
|||
18
Злопчинский
06.05.23
✎
10:01
|
(16) а ты посмотри - в апдейтс индексный файл есть?
|
|||
19
АгентБезопасной Нацио
06.05.23
✎
10:32
|
(18) конечно есть. По DBSign+TypeID+ObjID, и по DwnldID.
|
|||
20
Злопчинский
06.05.23
✎
23:28
|
(19) а, сорри, это я с прямым углом перепутал....
|
|||
21
FirstLine Support
07.05.23
✎
11:34
|
а в семерке есть события? Я и раньше-то не помнил, а теперь уже забыл
|
|||
22
Aleksey
07.05.23
✎
16:59
|
(21) конечно, полно
|
|||
23
Злопчинский
08.05.23
✎
22:32
|
а есть более-менее актуальный ALS для 1С++ ?
Положите на скачку если есть |
|||
24
Aleksey
09.05.23
✎
03:36
|
||||
25
HawkEye
09.05.23
✎
12:36
|
(8) и что?
(9) ГМ Процедура ТестПриЗаписи(вхЭлемент, вхТекст) Экспорт Сообщить(вхТекст + " " + вхЭлемент.Адрес); КонецПроцедуры в справочнике: Процедура ПриЗаписи() ТестПриЗаписи(ТекущийЭлемент(), "до записать"); Записать(); ТестПриЗаписи(ТекущийЭлемент(), "после записать"); КонецПроцедуры // ПриЗаписи() результат: до записать старое значение тут после записать новое значение тут |
|||
26
GrayS19
10.05.23
✎
12:52
|
(25) Проверял, даже проще:
Процедура ПриЗаписи() Сообщить("ДО=" + ТекущийЭлемент().Наименование); Записать(); Сообщить("После=" + ТекущийЭлемент().Наименование); КонецПроцедуры // ПриЗаписи() Результат: ДО=Апликация После=Апликация измененное после записи наименование - другое |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |