|
Убрать рекурсию при записи документов. | ☑ | ||
---|---|---|---|---|
0
Dastes
27.03.14
✎
16:27
|
Есть два связанных документа. При записи каждого из них переносятся данные в другой и он разумеется тоже записывается и инициирует перенос данных обратно в первый документ, и до бесконечности, что бессмысленно. Весь код в модулях объекта в "при записи".
Есть ли какой то лаконичный способ убрать рекурсию без участия пользователя, как то узнать, например откуда инициализирована запись документа или что другое? |
|||
1
ДенисЧ
27.03.14
✎
16:29
|
ОбменДанными.Загрузка = Истина.
|
|||
2
ДенисЧ
27.03.14
✎
16:29
|
А вообще - проще пристрелить автора механизма...
|
|||
3
butterbean
27.03.14
✎
16:29
|
убрать дебильную схему записи данных в посторонние документы
|
|||
4
dj_serega
27.03.14
✎
16:29
|
Установи в начале процедуры
ОбменДанными.Загрузка = Истина |
|||
5
Господин ПЖ
27.03.14
✎
16:30
|
проще разработчика за ноги об забор пару раз
|
|||
6
dj_serega
27.03.14
✎
16:30
|
(2) (5) оба нужно реализовать.
|
|||
7
х86
27.03.14
✎
16:30
|
(1)+1
(2)+100 можно еще в доп.свойства флаг писАть |
|||
8
Господин ПЖ
27.03.14
✎
16:31
|
>ОбменДанными.Загрузка = Истина
а кто сказал что на это будет какая-то реакция в коде? |
|||
9
dj_serega
27.03.14
✎
16:32
|
(8) Так написать реакцию.
|
|||
10
cw014
27.03.14
✎
16:32
|
Заноси при проведении ДополнительныеСвойства в объект, что бы определять, что именно ты кладешь в рекурсию. Потом проверяй, есть ли в этом свойство с твоим документом и пропускай его...
|
|||
11
dj_serega
27.03.14
✎
16:33
|
(4) Ну да. Ошибся.
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; |
|||
12
ptiz
27.03.14
✎
16:35
|
(5) рекурсивно...
|
|||
13
Dastes
27.03.14
✎
16:36
|
Ахахаха)) Какие все доброжелательные
Меня заказчик заставил так сделать, не получилось его переубедить отказаться от этой затеи. |
|||
14
х86
27.03.14
✎
16:37
|
(13)тогда за такую бню нужно по тройному тарифу брать
чтоб потом когда уши будут гореть не обидно бы за что |
|||
15
Господин ПЖ
27.03.14
✎
16:40
|
>Меня заказчик заставил так сделать
спорим, что он хотел нормальные подписки на событие, меняющие статусы в связанных документах, а не (0) |
|||
16
Fish
27.03.14
✎
16:42
|
(0) могу тебя обрадовать, бесконечных рекурсий в 1С не бывает.
|
|||
17
Ненавижу 1С
гуру
27.03.14
✎
16:45
|
В модуле каждого из документов создаешь
в начале модуля: Перем ЭтоПринудительнаяЗапись Экспорт; в конце модуля: ЭтоПринудительнаяЗапись = Ложь; в месте вызова записи другого документа (также для каждого модуля): Если Не ЭтоПринудительнаяЗапись Тогда ДругойДокументОбъект.ЭтоПринудительнаяЗапись = Истина; ДругойДокументОбъект.Записать(); КонецЕсли; |
|||
18
Dastes
27.03.14
✎
16:45
|
(15) Они формируют заказ-покупателю в строках ТЧ которого выбирается заказ-поставщику в который нужно эти строки перенести. Сделать перенос по кнопке не захотел, нужно было именно при записи. Первое время все было отлично.
Вскоре появилось необходимость откорректированные позиции из заказа-поставщику переносить обратно в заказ покупателя. |
|||
19
Timon1405
27.03.14
✎
16:49
|
(16)
Функция аРавноА(А) Возврат аРавноА(А); КонецФункции АА = аРавноА(5); |
|||
20
Ненавижу 1С
гуру
27.03.14
✎
16:54
|
(19) на 100500 миллионной итерации она упадет
|
|||
21
DexterMorgan
27.03.14
✎
17:24
|
(17) Можно в доп свойства пихать и анализировать
|
|||
22
cw014
27.03.14
✎
17:40
|
Я рад, что вы меня в (10) проигнорировали ))))
|
|||
23
Ненавижу 1С
гуру
27.03.14
✎
20:45
|
(21)вот все пишут про доп. свойства, чем они лучше обычных экспортных переменных, если текст модуля все равно кромсать?
|
|||
24
Dastes
28.03.14
✎
14:53
|
(17) Спасибо, взлетело.
|
|||
25
Jonny_Khomich
28.03.14
✎
14:54
|
я бы сделал запись изменений в модуле формы, тогда бы взлетело
|
|||
26
Starhan
28.03.14
✎
14:55
|
(24) по ходу ты очень далек от программирования и занимаешь чье-то место, потому что это (17) первое что приходит в голову после прочтения (0).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |