|
|
Проверить выполнение условия в запросе
Бычье сердце, Garykom, zenik, alexxx961503, Zamestas, kubik_live, sergeev-ag-1977, Hans, Lama12, xenos, KoZuB, Кирпич, craxx, ЛаТина, ejikbeznojek, Chameleon1980, Волшебник, Bigbro, kittystark, Бертыш, Эх-эх-эх, AlvlSpb, ТДК, Vostochnick, oleg_km, Anton1307, PR, tulke, Prog_man, SleepyHead, ДемьянТ, laeg, END, X Leshiy, 2S, Amra, obs191, slafor
| ☑ |
|
0
ЛаТина
14.06.26
✎
16:10
|
Добрый день
при проведении документа (может быть разных типов) подтягиваются все связанные с ним заказы.
нужно в зависимости от типа документа, его статуса и статуса заказа определять новый статус заказа.
раньше проверялся только один реквизит, поэтому условия собраны в макете, по которому запросом по фильтрам определялись новые статусы.
сейчас условия меняются и добавляются. появилась необходимость загнать в запрос условия и выполнить их.
макет упрощенно выглядит так:
тип условие новый статус
ртиу "реквизит1 = а и реквизит2 = в" статус2
ртиу "реквизит1 = б и реквизит2 = ш" статус3
птиу "реквизит1 = с и реквизит5 = д" статус5
птиу "реквизит2 = п и реквизит3 = т" статус1
заявка "реквизит4 = истина" статус4
если забить в макете текстовые условия, то при выполнении запроса валится ошибка
как можно реализовать такое?
|
|
|
1
craxx
14.06.26
✎
15:20
|
(0) Схема компоновки данных в помощь, и не надо никаких макетов.
Точнее схема и будет макетом.
|
|
|
2
ЛаТина
14.06.26
✎
15:35
|
а можете немного конкретизировать, как именно?
пока не понимаю, как из результата запроса сделать сам его текст.
|
|
|
3
Волшебник
14.06.26
✎
16:25
|
ВЫБОР КОГДА ... ТОГДА
КОНЕЦ
|
|
|
4
ЛаТина
14.06.26
✎
16:29
|
(3)
крайний вариант - в реальном макете строк 40 и колонок больше. очень раздутый запрос получится :(
|
|
|
5
Garykom
гуру
14.06.26
✎
16:35
|
Тебе же сказали СКД и даже условия отбора можно программно менять
Откуда их брать пофиг, лично я предпочел бы хранить в базе
Заполнять первоначально да из макетов или предопределенных/кода
А затем возможность менять в базе
И чтобы оно использовалось как правила/условия через СКД
|
|
|
6
Волшебник
14.06.26
✎
16:48
|
(4) генерите запрос программно
|
|
|
7
ЛаТина
14.06.26
✎
16:48
|
(5)
скд сама по себе настолько обширная, что сказать: пользуйте скд - это все равно, что послать.
что именно в скд, где там? как запихать текст условий, полученный из макета в сам текст запроса, чтоб они проверялись?
|
|
|
8
craxx
14.06.26
✎
16:50
|
(7) там макета вообще не надо, в СКД есть волшебная вкладочка "Отбор", где любые по сути условия можно прописать, гораздо круче чем в макете. Запрос самый общий исходный в источнике данных.
|
|
|
9
Garykom
гуру
14.06.26
✎
17:38
|
(8) У ТС задачка не просто отбор а по сути некие правила, которые отвечают за изменение статуса
Поэтому логично их хранить в базе
А еще сделать кнопочку проверки этих правил, на их непротиворечивость и т.д.
Чтобы не получилось что одновременно два разных статуса подходят для состояния документа
|
|
|
10
Волшебник
14.06.26
✎
17:51
|
(0) Какая ошибка?
|
|
|
11
craxx
14.06.26
✎
18:53
|
(9) там может и 2 статуса, там же надо заказы отбирать по статусам, поэтому статусов несколько может под вид докумена
|
|
|
12
ЛаТина
14.06.26
✎
19:13
|
(8) не поняли, что нужно
(9) да, все верно, куча правил
(10) Операция не разрешена в предложении ГДЕ
статусов может несколько подобраться, я потом группирую и с самым маленьким номером беру. ну т.е. самый ранний.
макет упрощенный привела, все работает кроме новых добавленных условий, по ним колхозить приходится
|
|
|
13
Garykom
гуру
14.06.26
✎
19:24
|
(12) Самый простой вариант знаешь какой?
Забить на условия в запросах и просто кодом статусы менять
Причем сами "правила" хранить в виде текстов "скриптов" в базе
Которые банально будут исполняться для каждого документа
В которых доступны нужные данные (сам документ и прочее) как входящие параметры, а на выходе функции (или процедуры с выходными параметрами) скрипта нужный статус(ы)
Один хрен чтобы поправить правила нужен будет спец - так логично делать сразу удобно и наиболее гибко
На ограничиваясь некими условиями/правилами
|
|
|
14
Волшебник
14.06.26
✎
19:28
|
(12) Кто там нам чего-то не разрешает? Давайте разберём. Может Вы поделитесь прикладной частью, без этих "реквизит1=б"? Может Вы начнёте нас воспринимать, как советчиков, а не просто как восстановителей пароля?
|
|
|
15
ЛаТина
14.06.26
✎
19:30
|
(13)
по каждому документу куча заказов может быть и в цикле просто кодом будет долго.
ну и поддерживаемость такая себе.
самое быстрое было как раз запросом в том числе по макету. в итоге пока добавила новые условия по (3), остальное по старому алгоритму.
если бы была возможность текстовое условие подтянутое как результат запроса, пульнуть в условие запроса, было бы проще и красивее. и быстрее
|
|
|
16
Волшебник
14.06.26
✎
19:31
|
(15) Может цикл будет нормально? Вы подумайте, Вы замерьте.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший