![]() |
![]() |
|
ПослеЗаписи выполняется 2 раза! | ☑ | ||
---|---|---|---|---|
0
AndreiS
27.06.08
✎
09:17
|
В справочнике контрагенты в общем модуле прописана процедура выгрузки элемента. В модуле формы она вызывается из процедуры ПослеЗаписи.
Дак вот, при простом изменении данных справочника, процедура выполняется один раз, а при вводе нового выполняется два раза. Я так понимаю что при вводе нового ета процедура вызывается гдето еще раз. Но где в модуле я не нашел. ??? как можно ето пофикситить??? |
|||
1
ТелепатБот
гуру
27.06.08
✎
09:17
|
||||
2
AndreiS
27.06.08
✎
09:47
|
ап
|
|||
3
zbv
27.06.08
✎
09:50
|
нельзя пофиксить... это установка ГоловногоКонтрагента...
|
|||
4
H A D G E H O G s
27.06.08
✎
09:54
|
(3) Пофиксить можно, если умеючи.
(0) Стэк вызовов о чем нибудь говорит? |
|||
5
AndreiS
27.06.08
✎
09:55
|
(3) а где тогда вставить процедуру выгрузки, чтоб она выполнялось один раз при изменении и один раз при записи нового?
|
|||
6
AndreiS
27.06.08
✎
09:55
|
(4) а поподробней....
|
|||
7
zbv
27.06.08
✎
10:00
|
(4) я имел ввиду двойную запись...
(5) перед записью не катит? |
|||
8
H A D G E H O G s
27.06.08
✎
10:04
|
Вообще то это запись основного договора.
Пофиксить можно через Получить/УстановитьСсылкуНового и НачатьТранзакцию() Но лом |
|||
9
AndreiS
27.06.08
✎
10:34
|
(7) да пробовал перед записью. тоже при вводе нового 2 раза выполняет.
|
|||
10
zbv
27.06.08
✎
10:36
|
(9) а что за конфа то...
|
|||
11
AndreiS
27.06.08
✎
10:38
|
УПП 1.1.3.5
|
|||
12
H A D G E H O G s
27.06.08
✎
10:39
|
ППЦ, заведи переменную в модуле, там пропиши, это 2 запись или первая.. И при 2-ой записи пускай свою процедуру..
|
|||
13
zbv
27.06.08
✎
10:41
|
(12) + проверку на новый (тоже переменной), а то измененные не взлетят...
|
|||
14
AndreiS
27.06.08
✎
10:44
|
(12) а почему при второй? может тока при перво? мне ведь вторую как раз нужно пофиксить.
|
|||
15
AndreiS
27.06.08
✎
10:46
|
(12)
я сделал проверку на первый прогон тогда все пишется по одному разу (13) лучше наверно всетаки прикрутить и проверку на новый и поставить запись при втором прогоне, а то так при простом нажатии Ок срабатывает. |
|||
16
AndreiS
27.06.08
✎
10:48
|
(15) неее всетаки лучше пусть будет при первом вызове выполняется, а то если делать при втором и проверку, то будет делаться тока при вводе нового а при изм не будет.
|
|||
17
simol
27.06.08
✎
11:05
|
(11) де ты ее откопал :). А по теме - ищи в отработке проведения принудительную запись
|
|||
18
AndreiS
27.06.08
✎
11:07
|
(17)Я когда пришел она стояла, переписанная вся и потому не обнавлялась довно.
Щас какраз потихоньку идет подготовка к перезоду на 8.1 и посл релиз. с минимон наших доработок. |
|||
19
AndreiS
27.06.08
✎
11:12
|
(17) а не подскажешь приблизительно в каком месте его искать?
|
|||
20
AndreiS
27.06.08
✎
11:36
|
ап
|
|||
21
zbv
27.06.08
✎
11:38
|
(16) Выгружать Если (Новый и ВтораяЗапись) или (не Новый и ПерваяЗапись)
|
|||
22
Fynjy
27.06.08
✎
11:43
|
(0) Посмотри в подписке на событие.
|
|||
23
AndreiS
27.06.08
✎
11:45
|
(21) новый и вторая запись. выгружается тока новый. т.к. вторая запись появляется тока при вводе нового.
не новый и первая запись всеравно что просто первая запись. т.к. при вводе нового запись срабатывае при второй не пройдет условие не новый. |
|||
24
AndreiS
27.06.08
✎
11:46
|
там есть при ОбработкаВводаНового это понятно. и есть ПриИзменении.
ставлю тока во вторую. дак он срабатывает просто при открытии. |
|||
25
AndreiS
27.06.08
✎
11:46
|
(24)->(22)
|
|||
26
zbv
27.06.08
✎
11:47
|
(23) см (13)
... проверку на новый (тоже ПЕРЕМЕННОЙ)... |
|||
27
AndreiS
27.06.08
✎
12:08
|
(26)
ставим 2 переменные: первый вариант: 1.новый (срабатывает на Да) 2.количество раз. (срабатывает на 2) при вводе нового: новый=да. при выполнении первый раз в услосии не проходит то что переменная "кол-во раз"=1, при выполнении второй раз все нормально срабатывает. при изменении. новый = нет. первый раз опять же срабатывает условие по переменной "кол-во раз", далеее при "изменении" процедура не вызывается второй раз второй вариант: 1.новый (срабатывает на Нет) 2.количество раз. (срабатывает на 2) при вводе нового: новый=да Первый раз отбрасывается и 1 условие и второе, при втором выполнении отврасывается только первое условие. при изменении: выгрузка не проходит из-за того что второе условие не выполнено. итог в первом случае срабатывает только на ввод нового. во втором не срабатывает ни на то ни на другое. разве я не прав? |
|||
28
zbv
27.06.08
✎
12:35
|
(27) см (21)
второе условие даже можно сократить... |
|||
29
Aprobator
27.06.08
✎
12:38
|
а одной переменной не хватит для контрольки, что выгрузка уже делалась?
|
|||
30
AndreiS
27.06.08
✎
12:42
|
(28) получается тоже самое, что и просто выгружать только при первом вызове.
|
|||
31
zbv
27.06.08
✎
12:42
|
(29) если новый, то правильнее выгружать при последей записи...
Хотя спорно... ;) |
|||
32
zbv
27.06.08
✎
12:44
|
(30) код
|
|||
33
AndreiS
27.06.08
✎
12:44
|
в общем понят пусть вызружается при любом нажатии на ок. и плевать.
|
|||
34
AndreiS
27.06.08
✎
12:45
|
(32) всмысле?
|
|||
35
zbv
27.06.08
✎
12:45
|
(34) ну код как реализуешь...
|
|||
36
AndreiS
27.06.08
✎
12:48
|
Перем флаг;
........ Процедура ПриОткрытии() флаг=1; ..... КонецПроцедуры ....... Процедура ПослеЗаписи(Отказ) Если (Родитель=Справочники.Контрагенты.НайтиПоКоду("01966")) и (флаготкрытия=1) Тогда ВыгрузитьИзмененияПоставщику(Ссылка,Отказ); КонецЕсли; флаг=флаг+1; КонецПроцедуры ......... |
|||
37
AndreiS
27.06.08
✎
12:48
|
ой там не (флаготкрытия а флаг
|
|||
38
Aprobator
27.06.08
✎
12:50
|
Ну тады создаем переменную НадоВыгружать - тип Булево. Делаем ее = Истина В Процедуре ПередЗаписью() (если она кончено тоже 2 раза вызывается)
лепим Если ЭтоНовый() Тогда Если НадоВыгружать = Истина Тогда НадоВыгружать = Ложь Иначе НадоВыгружать = Истина КонецЕсли; КонецЕсли; |
|||
39
Aprobator
27.06.08
✎
12:53
|
(+38) Хотя надо смотреть как себя в этом случае Метод ЭтоНовый() ведет. Если Перед второй записью он покажет Ложь, то все становится более проще.
|
|||
40
AndreiS
27.06.08
✎
13:08
|
вставляю в проц ПередЗаписью:
сообщить(ЭтоНовый()); при вводе нового: истина ложь Идет формирование файла выгрузки. Идет запись файла выгрузки. Файл записан. при изменении: ложь Идет формирование файла выгрузки. Идет запись файла выгрузки. Файл записан. но впинципе получается тоже что и при переменной флаг. или я не прав? |
|||
41
Aprobator
27.06.08
✎
13:22
|
(36) а что после первой записи элемента метод
Справочники.Контрагенты.НайтиПоКоду("01966") возращает неопределенно? И как отрабатывает этот код при записи не нового элемента? |
|||
42
AndreiS
27.06.08
✎
13:30
|
(41)точно также как и при записи нового. только разнича в том, что при записи нового он отрабатывает 2 раза.
Справочники.Контрагенты.НайтиПоКоду("01966") - всегда возвращает "Поставщики". если я правильно понял тебя. |
|||
43
Aprobator
27.06.08
✎
13:38
|
(38) Выгрузка происходит при 2 - й записи. А у в твоем коде при первой.
|
|||
44
AndreiS
27.06.08
✎
13:47
|
дак в том то и прикол, что втая запись появляется только при вводе нового, а мне надо еще выгружать если у элемента справочника изменились какие либо данные.
|
|||
45
Aprobator
27.06.08
✎
14:05
|
(38) для нового пишет при второй, для старого при первой.
После Ну тады создаем переменную НадоВыгружать - тип Булево. Делаем ее = Истина. Я пропустил точку. т.е. должно быть еще Перем НадоВыгружать; и где - нить лепим ее начальное значение НадоВыгружать = Истина. Если Метод ЭтоНовый() перед второй записью покажет Ложь, То код в (38) сокритится до Если ЭтоНовый() Тогда НадоВыгружать = Ложь Иначе НадоВыгружать = Истина КонецЕсли; |
|||
46
Aprobator
27.06.08
✎
14:06
|
(+45 довесок к окончанию) и первоначальная установка значения НадоВыгружать в данном случае не потребуется.
|
|||
47
AndreiS
27.06.08
✎
14:10
|
дак я не вижу смысла в том чтоб разделять одну при первой записи другую при второй. если можно все при первой выгрузить. вот еслиб отследить момент что в элементе что то изменено, что тогда выгружать а то получается что выгружает даже если просто нажимаешь кнопку ок без изменений. но я решил наверно оставлю все как есть. и так пойдет, пусть они там грузят одно и тоже несколько раз, славо богу в справочник редко заходят и нажимают ок.
|
|||
48
Aprobator
27.06.08
✎
14:26
|
а Модифированность() в процедуре ПередЗаписью не поможет?
|
|||
49
Said_We
27.06.08
✎
14:28
|
(0) Модуль формы вызывается два раза. Старая байда.
|
|||
50
Said_We
27.06.08
✎
14:30
|
Объясняется просто (самими разработчиками 1С) Один раз вы инициализируете сам объект и один раз форма инициализирует объект. Как итог если ПолучитьОбъект() то модуль выполняется один раз, а из формы дважды.
|
|||
51
AndreiS
27.06.08
✎
14:50
|
(49)посмотрел, вроде подходит. ща тока подумаю как прикрутить получше это все.
|
|||
52
Said_We
27.06.08
✎
14:55
|
к (49) модуль ОБЪЕКТА вызывается два раза... описался... по (50) это понятно..
|
|||
53
NewNick
27.06.08
✎
15:54
|
вобше то НадоВыгружать придумывать не надо. ее итак придумали называется оно ОбменДанными. через него и надо работать а не через левые переменные.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |