Имя: Пароль:
1C
1С v8
Запрос в запросе
,
0 PitNN
 
26.04.12
10:16
Добрый день, друзья.
Подскажите с такой штукой, а то сам не могу придумать. Суть в следующем. Есть таблица ячейки которой содержат в себе инструкцию на языке запросов, например:
"Выбор когда истина тогда 1 иначе 0 как Флаг,".
Как можно и можно ли вообще внутри одного запроса получить эти инструкции и при этом чтобы они выполнились?
1 Ненавижу 1С
 
гуру
26.04.12
10:17
с помощью одного запроса склеить другой и выполнить его, можно
2 butterbean
 
26.04.12
10:17
типа запрос к тексту запроса?? не взлетит
3 Maxus43
 
26.04.12
10:20
динамически формировать текст запроса тока
4 izekia
 
26.04.12
10:21
(1) текст запроса как в запросе склеить?
5 Ненавижу 1С
 
гуру
26.04.12
10:21
(4) зачем в запросе? обход результата запроса
6 Wobland
 
26.04.12
10:22
(4) запрос, рожающий запрос? оригинально
7 skiller3000
 
26.04.12
10:22
да, смотря  к чему идет обращение, если просто собрать в запросе, то склеить текст и обход по ячейкам
8 izekia
 
26.04.12
10:28
(5) в запросе его нет, он у выборки)
(6) это к (0) мне такое не надо
9 Ненавижу 1С
 
гуру
26.04.12
10:31
(8) ты всё понял, хватит поясничать ))
10 PitNN
 
26.04.12
10:32
И как же его, простите, склеить?
Что бы было более понятно опишу ситуацию.
Есть таблицы "ТипыЦен" и "ПравилаРасчета"
У таблицы ТипыЦен колонки: "НомерСтроки", "Цена1", "Цена2", "Цена3"
У таблицы ПравилаРасчета колонки: "НомерСтроки", "Правило"
Предположим вторая таблица содержит 2 строки:
1; "Выбор Когда ТипыЦен.Цена1 > ТипыЦен.Цена2 Тогда ТипыЦен.Цена1+ТипыЦен.Цена2 Иначе ТипыЦен.Цена3 КАК Результат"
2; "Выбор Когда ТипыЦен.Цена3 < 0 Тогда ТипыЦен.Цена1-ТипыЦен.Цена3 Иначе ТипыЦен.Цена2 КАК Результат"

Как получить третью таблицу, которая будет содержать номер строки и результат расчета?
11 Ненавижу 1С
 
гуру
26.04.12
10:34
(10) ты сначала покажи как ты из этих данных сам без компьютера напишешь текст запроса
12 butterbean
 
26.04.12
10:34
(10) запросы в цикле по строкам
13 izekia
 
26.04.12
10:35
(9) да тема тупая, чем еще заняться?)
14 izekia
 
26.04.12
10:35
пойду поработаю
15 PitNN
 
26.04.12
10:38
(11) Не понял вопроса
(12) В цикле это на крайний случай. Интересует можно ли получить результат одним запросом?
16 butterbean
 
26.04.12
10:40
(15) текст запроса "внутри" запроса нельзя обработать, имхо конечно
17 izekia
 
26.04.12
10:44
в 1С это точно нельзя сделать в запросе и вообще подобный шаблон не для скл, как мне кажется
18 Ненавижу 1С
 
гуру
26.04.12
10:45
(15) ок, в (10) ты показал данные, что ты хочешь получить в итоге на конкретных значениях?
19 PitNN
 
26.04.12
10:46
Ясно. Нельзя, значит. Всем спасибо
20 PitNN
 
26.04.12
10:50
(18) У тебя есть видение как это можно реализовать?
ТипыЦен содержит:
НомерСтроки;Цена1;Цена2;Цена3
1; 5; 7; 9;
2; 2; 8; -4;

Результирующая таблица:
НомерСтроки;Результат
1; 9;
2; -6;
21 PitNN
 
26.04.12
10:51
(20) Ошибка. Вторая строка "6"
22 Ненавижу 1С
 
гуру
26.04.12
10:52
(20) посмотрим, а почему для первой строки данных ты применил первую строку правил, а не вторую?
23 Ненавижу 1С
 
гуру
26.04.12
10:52
+(22) а для второй второе?
24 PitNN
 
26.04.12
10:55
Потому что таблица "ПравилаРасчета" содержит колонку "НомерСтроки" по которой идет связь с таблицей цен
25 Ненавижу 1С
 
гуру
26.04.12
11:07
(24) делаем запрос к таблице правил и строим следующую бешеную конструкцию:
ВЫБОР
 КОГДА НомерСтроки=1 ТОГДА Выбор Когда ТипыЦен.Цена1 > ТипыЦен.Цена2 Тогда ТипыЦен.Цена1+ТипыЦен.Цена2 Иначе ТипыЦен.Цена3 КАК Результат //правило 1 строки
 КОГДА НомерСтроки=2 ТОГДА Выбор Когда ТипыЦен.Цена3 < 0 Тогда ТипыЦен.Цена1-ТипыЦен.Цена3 Иначе ТипыЦен.Цена2 КАК Результат
 ...
КОНЕЦ КАК Результат

натравливаем полученный текст запроса на таблицу ТипыЦен
26 PitNN
 
26.04.12
11:27
спасибо за помощь