Имя: Пароль:
1C
1С v8
Как подсунуть ТЗ в СКД?
,
0 МастерВопросов
 
25.08.13
14:17
Передаю таблицу значений в набор данных "Объект" с помощью:

    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("СКДТаблицаЗначений",ТЗНоменклатурныхГрупп);
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);


Потом соединяю с Набором данных "Запрос" по полю Контрагент и группирую по полю Номенклатурная группа, которое берется из ТЗ.

В результате получается следующая картина:

http://xmage.ru/images/vdvvdv.jpg

Подскажите, пожалуйста, как передать ТЗ в Набор данных "Запрос" чтобы там свернуть результат Запроса, или как свернуть выводимые данные в СКД, чтобы была одна строка по "Восточный путь ООО".

http://xmage.ru/images/2xvx.jpg
1 vicof
 
25.08.13
14:25
В таблице, видимо, изначально две строки
2 tushich
 
25.08.13
14:27
Покажи связи наборов данных
3 mgk2
 
25.08.13
15:17
(0) может еще группировки по контрагентам не хватает?
4 МастерВопросов
 
25.08.13
15:55
(1) Да, естественно.

Первая строка, где заполнено значение в первой колонки имеет значение поля НоменклатурнойГруппы = "Аксессуары для кухни". Его я вычисляю в Запросе.
Вторая строка, где заполнено значение во второй колонке, имеет значение поля НоменклатурнойГруппы = NULL. Оно заполняется значением "Аксессуары для кухни" из ТЗ и соответственно только после соединенения с ТЗ.

Отсюда и вопрос:
Как передать ТЗ в Набор данных "Запрос" чтобы там свернуть результат Запроса, или как свернуть выводимые данные средствами СКД, чтобы была одна строка по "Восточный путь ООО"?
5 МастерВопросов
 
27.08.13
09:29
6 МастерВопросов
 
27.08.13
09:30
(0) http://xmage.ru - приказал долго жить, поэтому дублирую картинки на радикал.

Получается так:
http://s001.radikal.ru/i195/1308/11/42d052aa1546.jpg

а хочется так:
http://s61.radikal.ru/i171/1308/c2/ce14a683630d.jpg
7 Wobland
 
27.08.13
09:47
вот тебе пример подсовывания ТЗ
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    Результат=ПолучитьРезультат(НачалоПериода, КонецПериода);
...
    ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("Результат", Результат), ДанныеРасшифровки);
8 МастерВопросов
 
27.08.13
10:01
(7) так я так и делаю в (0) мне нужно передать ТЗ в сам набор данных Запрос.
9 Wobland
 
27.08.13
10:05
(8) всё не читал, но почему бы не передать ТЗ в запрос и не выгрузить его опять в ТЗ?
10 МастерВопросов
 
27.08.13
10:08
(9) да да! Хочу передать ТЗ в запрос СКД, как это сделать?
11 Wobland
 
27.08.13
10:11
(10) да не в СКДшный запрос я имел в виду. типа подготавливаешь свою ТЗ левыми методами, готовый результат в виде ТЗ скармливаешь СКДе
12 МастерВопросов
 
27.08.13
10:13
(11) ну впринципе да, вариант. Спасибо.

//А то меня уже посещали страшные мысли, перебирать ТЗ и программно формировать текст запроса СКД с 80-ю CASE-ами.
13 Wobland
 
27.08.13
10:16
но должно это как-то рулиться на уровне наборов данных. с ходу въехать в проблему не получилось
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.