Имя: Пароль:
1C
1С v8
как решать парадоксы? (использование несуществующих данных)
0 vde69
 
01.09.14
12:07
есть документ, документ может иметь много статусов, статусы определяются БП подписание. На основания статуса делаются движения.

порядок такой
1. документ без БП - статус "создан", никаких движений
2. документ с открытым БП - статус "На согласовании" есть движения
3. Документ с исполненым БП статус или "Отказан" или "Исполнен" движения могут быть а могут и нет.

мне нужно ДО создания БП получить движения которых еще нет и которые зависят от БП
1 zulu_mix
 
01.09.14
12:09
намути регистр в который пиши всевозможную движку со статусами
2 XLife
 
01.09.14
12:09
сделать фейковую транзакцию?
3 DrZombi
 
гуру
01.09.14
12:16
Что такое БП и ДО? :)
4 piter3
 
01.09.14
12:17
(3) бизнес процессы и просто до.не?
5 DrZombi
 
гуру
01.09.14
12:18
Что такое Статус и как он определяется?
Какой статус у Проведенного документа?
Какой статус у Не проведенного?
А если его удалили? :)
6 DrZombi
 
гуру
01.09.14
12:19
(4) И чем БП отличается от "состояния" документа?
7 DrZombi
 
гуру
01.09.14
12:19
Что в БП такого особенного?
8 DrZombi
 
гуру
01.09.14
12:20
+ У Регистров есть поле "Активный"
9 Garykom
 
гуру
01.09.14
12:21
(0) Т.е. не зная какой БП хочешь узнать движения которые от выбранного БП зависят?

Это не сюда а к Кассандре ))
10 ptiz
 
01.09.14
13:10
(0) Зачем именно движения?
А вообще, должна быть какая-то общая функция, которая вызывается при проведении для формирования движений, её же вызывать при смене статуса.
11 Maxus43
 
01.09.14
13:11
фейковая транзакция вариант, даже в типовых применялось раньше. Это чтоб меньше писать
12 Garykom
 
гуру
01.09.14
13:20
(11) млин какой нафик фейк, в лучшем случае кучу вариантов получим по кол-ву разных БП

неизвестно же какая БП выбрана
13 Maxus43
 
01.09.14
13:29
(12) автор уверен что знает какие движения должны быть (на какой статус или ещё что ему надо), иначе тогда смысл его действий вообще непонятен (желаемый результат)
14 Волшебник
 
модератор
01.09.14
13:30
(0) Делай движения с признаком Активность=Ложь
15 Garykom
 
гуру
01.09.14
13:30
(13) если знает то сделать копию дока, провести его, получить нужные данные и грохнуть?
16 Maxus43
 
01.09.14
13:32
(15) да нет, этот же док провести, снять движения и Откатить транзакцию.
В типовых это для контроля остатков использовалось например
17 Garykom
 
гуру
01.09.14
13:34
(16) а куда то надо запоминать статусы и проч временное? чтоб вернуть
а если сбой какой и полетит документа по...

в моем случае просто грохнуть этот док причем автоматом если привязка идет к примеру по хитрому номеру дока
18 Maxus43
 
01.09.14
13:36
(17)
НачатьТранзакцию();
ДокОбъект.Статус = нужныйдлядвижений;
ДокОбъект.записать(режимзаписидокумента.проведение);
//запрос к движениям, выгрузка их в ТЗ или ещё куда
ОтменитьТранзакцию();

Всё вернётся в изначальное состояние Само
19 Garykom
 
гуру
01.09.14
13:37
(17)+ мда сразу вспоминается 1С 7.7 и стандартный механизм УРБД

в котором чтоб обойти ограничение на передачу документа только в определенную базу из центра (а есть только миграция все базы, место создания и центр, и только место создания)

сначала в периферийных базах создавали документы - пустышки определенной датой и потом эти созданные пустые доки юзали как нормальные перемещения из центра в периферию нужную...
20 Garykom
 
гуру
01.09.14
13:38
(18) а итоги где берем?
21 Maxus43
 
01.09.14
13:39
(20) в рамках транзакции все данные будут, в т.ч. и итоги актуальные
22 vde69
 
01.09.14
13:40
Отвечу по порядку:
БП определяет статус документа в зависимости от динамически сформированого маршрута.

Суть моей задачи - прочухать, что продажа идет в минус, для этого нужно анализировать проводки документа "ПартииТоваровНаСкладах" и сравнивать с регистром "Продажи", при минусовом значении хоть по одной строке нужно добавить определенную точку в маршрут БП.

Про "Активность" - как-то стремно, хотя имеет право на "подумать".
23 vde69
 
01.09.14
13:41
(21) про транзакцию - получить нужно ВНЕ транзакции, по тому как возможно придется задать вопрос "Вы действительно продаете в минус?"
24 Maxus43
 
01.09.14
13:43
(23)>(18)
Фраза выгружаем в ТЗ иль ещё куда - не впечатлила? После отмены транзакции она никуда не денется и циферки не пропадут
25 Garykom
 
гуру
01.09.14
13:43
(22) тогда нет проблем вообще, снова все свелось к рекурсии ))

в процедуре проведения сделать проверку на минуса и если есть изменяем БП (добавляем эту точку) и заново запускаем процедуру проведения...
26 vde69
 
01.09.14
13:48
(24)(25) не хочу 2 раза вызывать процедуры проведения.

(24) в принцепе ты меня натолкнул на мысль, у меня процедура проведения на 100% вынесена в модуль менеджера и позволяет делать формировать движения без записи документа индивидуально по любому регистру, просто мне придется как-то подделать статус и моя проблемма решится...
27 13_Mult
 
01.09.14
13:49
Я бы бизнес процесс замутил.
28 Garykom
 
гуру
01.09.14
15:46
(26) так не надо его подделывать ты его в процедуру проведения передавай (если не передали то берем из дока)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший