Имя: Пароль:
1C
 
Проверить выполнение условия в запросе
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) Может цикл будет нормально? Вы подумайте, Вы замерьте.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан