Имя: Пароль:
1C
1С v8
8.2 Вывод данных в таблицу значений внешней обработки используя СКД
0 DSSS
 
03.09.11
12:13
Доброго дня.
УТ 11.0.5.4, 8.2.14.519
Братцы, помогите решить такую задачку:
Есть внешняя обработка, у которой есть макет СКД, содержащий вот такой простенький запрос:
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыНаСкладахОстатки.Склад КАК Склад,
   ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
{ВЫБРАТЬ
   Номенклатура.*,
   Склад.*,
   Остаток}
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад), (Номенклатура)}) КАК ТоварыНаСкладахОстатки

На форме обработки расположен реквизит Отбор, путь к данным КомпоновщикНастроек.Настройки.Отбор, есть реквизит КомпоновщикНастроек тип КомпоновщикНастроекКомпоновкиДанных. Еще на форме есть таблица значений, с колонками номенклатура и остаток. Так вот, нужно, чтобы эта таблица значений заполнилась с учетом отборов, которые проставит пользователь на форме.
Что делаю: по полной аналогии с обработкой печать этикеток в УТ пишу в модуле формы:

СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемыКомпоновкиДанных);
   
   // Подготовка компоновщика макета компоновки данных.
   Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
   Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   Компоновщик.Настройки.Отбор.Элементы.Очистить();
   
   Если КомпоновщикНастроек <> Неопределено Тогда
       ОбщегоНазначенияУТКлиентСервер.СкопироватьЭлементы(Компоновщик.Настройки.Отбор, КомпоновщикНастроек.Настройки.Отбор);
   КонецЕсли;
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Компоновщик.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   Запрос = Новый Запрос(МакетКомпоновкиДанных.НаборыДанных.НаборДанных.Запрос);
   
   Для каждого Параметр Из МакетКомпоновкиДанных.ЗначенияПараметров Цикл
       Запрос.Параметры.Вставить(Параметр.Имя, Параметр.Значение);
   КонецЦикла;
   
   ТЗ = Запрос.Выполнить().Выгрузить();

Все валится на строке

Запрос = Новый Запрос(МакетКомпоновкиДанных.НаборыДанных.НаборДанных.Запрос);
из-за того, что МакетКомпоновкиДанных не содержит ни одного набора данных. Подскажите, кто в курсе, что еще нужно сделать, чтобы в МакетКомпоновкиДанных появился нужный набор данных?
Спасибо.
1 Alexandr Puzakov
 
03.09.11
13:51
Это делается не так...
2 nicxxx
 
03.09.11
14:14
3 DSSS
 
03.09.11
15:31
(2) Спасибо.