helpf.pro
Регистрация

Как заполнить параметр СКД списком значений из запроса?

alex81nzp
12.08.2010 08:11Прочитано: 11181
Здравствуйте!
Вопрос заключается в следующем, есть внешний отчет с несколькими макетами скд, у всех компоновок есть одинаковый параметр НевходящиеВидыРасчета, пытаюсь заполнить этот параметр следующим кодом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ОсновныеНачисленияОрганизаций.Ссылка ИЗ ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций
|ГДЕ
| (ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""52%""
| ИЛИ ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""Оплата больничных листов"")
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ДополнительныеНачисленияОрганизаций.Ссылка ИЗ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций КАК ДополнительныеНачисленияОрганизаций
|ГДЕ
| (ДополнительныеНачисленияОрганизаций.Наименование ПОДОБНО ""111 Подарки%""
| ИЛИ ДополнительныеНачисленияОрганизаций.Наименование ПОДОБНО ""Пособие за счет ФСС в связи%"")";
ЗначениеПараметра= КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НевходящиеВидыРасчета"));
ЗначениеПараметра.Значение = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ЗначениеПараметра.Использование = Истина;

Что я делаю не так? На параметре НевходящиеВидыРасчета установлена галочка "Доступен список значений", запрос выполняется без ошибок, но список значений в параметр не попадает.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
12.08.2010 10:00Ответ № 1
Посмотри тип значения после ВыгрузитьКолонку("Ссылка"), там вроде как массив предается *17
alex81nzp
12.08.2010 10:40Ответ № 2
(1) E_Migachev, ВыгрузитьКолонку() действительно имеет тип массив, только мне от этого ни тепло ни холодно к сожалению. Список значений Параметра тоже в своем роде массив значений. Я пытаюсь выгрузить данные из одной таблицы в другую. Может не тот способ выбрал, подскажите пожалуйста.
E_Migachev
12.08.2010 12:20Ответ № 3
(2) Всмысле ты из одной СКД получаешь ТЗ и хочешь ее потом использовать во второй СКД?
alex81nzp
12.08.2010 12:47Ответ № 4
Не совсем так!
Мне нужно чтобы результат исполнения запроса (см. пост №1), конкретно, поле "ссылка" попало в список значений параметра СКД "НевходящиеВидыРасчета" тип параметра составной: ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций,ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций

В моем внешнем отчете используется несколько макетов СКД, различаются они только 2мя параметрами, с изменением одного проблем не возникает, а вот с изменением содержания второго параметра - есть проблемы. Параметр "НевходящиеВидыРасчета" своего рода фильтр, список видов расчета указанных в нем не попадают в отчет.
E_Migachev
12.08.2010 13:56Ответ № 5
Попробуй все же перед передачей параметра преобразовать массив в список значений, так то вроде должно работать
alex81nzp
12.08.2010 15:27Ответ № 6
Попробовал сделать вот так...
ЗапросРез = Запрос.Выполнить().Выгрузить();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Строка"));
ТЗ.ЗаполнитьЗначения(.ЗагрузитьКолонку(ЗапросРез.ВыгрузитьКолонку("Ссылка"),"Колонка");
ЗначениеПараметра.Значение = ТЗ.ВыгрузитьКолонку("Колонка");
ЗначениеПараметра.Использование = Истина;

Все равно - НИЧЕГО!!! )
alex81nzp
12.08.2010 15:28Ответ № 7
Простите, опечатка закралась
ЗапросРез = Запрос.Выполнить().Выгрузить();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Строка"));
ТЗ.ЗагрузитьКолонку(ЗапросРез.ВыгрузитьКолонку("Ссылка"),"Колонка");
ЗначениеПараметра.Значение = ТЗ.ВыгрузитьКолонку("Колонка");
ЗначениеПараметра.Использование = Истина;
E_Migachev
12.08.2010 17:31Ответ № 8
Что:
Код 1C v 8.х
  ЗначениеПараметра.Значение = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");    


Что:
Код 1C v 8.х
 ЗапросРез = Запрос.Выполнить().Выгрузить();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Строка"));
ТЗ.ЗагрузитьКолонку(ЗапросРез.ВыгрузитьКолонку("Ссылка"),"Колонка");
ЗначениеПараметра.Значение = ТЗ.ВыгрузитьКолонку("Колонка");

Это одно и тоже *09

Тебе нужно полученный массив Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); перебрать и добавить в новый массив
E_Migachev
12.08.2010 17:32Ответ № 9
опс опечатался *11:
перебрать и каждый элемент добавить в новый список значений
E_Migachev
12.08.2010 17:42Ответ № 10
+ (8) тебе нужно что то типо:
Код 1C v 8.х
 
ВыгрМассив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
СписокВидов= Новый СписокЗначений;
Для каждого ЭлементМассива Из ВыгрМассив Цикл
СписокВидов.Добавить(ЭлементМассива);
КонецЦикла;
// и далее
ЗначениеПараметра.Значение = СписокВидов;
alex81nzp
13.08.2010 06:32Ответ № 11
Огромнейшее Вам спасибо!!! *05 Заработало!!!
Вот я балда все вокруг этого цикла ходил ходил...
Исходный текст, может кому пригодиться:
Для тех кому нужно заполнить Параметр Системы Компоновки Данных списком значений, например видами расчета
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ОсновныеНачисленияОрганизаций.Ссылка ИЗ ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций
|ГДЕ
| (ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""Учебный отпуск по календарным дням%""
| ИЛИ ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""Оплата очередного отпуска по кал%"")";
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидыОтпусков"));
СписокВидов = Новый СписокЗначений;
ВыгрМассив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")
Для каждого ЭлементМассива Из ВыгрМассив Цикл
СписокВидов.Добавить(ЭлементМассива);
КонецЦикла;
ЗначениеПараметра.Значение = СписокВидов;
ЗначениеПараметра.Использование = Истина;
Где,
ВидыОтпусков (ЗначениеПараметра) - Параметр СКД с отметкой Доступен список значений
"Ссылка" - Название колонки в результате выполнения запроса
ВыгрМассив - Массив в который выгружаются значения из колонки "Ссылка" результата выполнения запроса
СписокВидов - Список значений в который поочередно (в цикле) добавляется каждый элемент массива ВыгрМассив
alex81nzp
13.08.2010 06:34Ответ № 12
Огромнейшее Вам спасибо!!! Заработало!!!
Вот я балда все вокруг этого цикла ходил ходил...
Исходный текст, может кому пригодиться:
Для тех кому нужно заполнить Параметр Системы Компоновки Данных списком значений, например видами расчета

Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ОсновныеНачисленияОрганизаций.Ссылка ИЗ ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций
|ГДЕ
| (ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""Учебный отпуск по календарным дням%""
| ИЛИ ОсновныеНачисленияОрганизаций.Наименование ПОДОБНО ""Оплата очередного отпуска по кал%"")";
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидыОтпусков"));
СписокВидов = Новый СписокЗначений;
ВыгрМассив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")
Для каждого ЭлементМассива Из ВыгрМассив Цикл
СписокВидов.Добавить(ЭлементМассива);
КонецЦикла;
ЗначениеПараметра.Значение = СписокВидов;
ЗначениеПараметра.Использование = Истина;


Где,
ВидыОтпусков (ЗначениеПараметра) - Параметр СКД с отметкой Доступен список значений
"Ссылка" - Название колонки в результате выполнения запроса
ВыгрМассив - Массив в который выгружаются значения из колонки "Ссылка" результата выполнения запроса
СписокВидов - Список значений в который поочередно (в цикле) добавляется каждый элемент массива ВыгрМассив
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.