Имя: Пароль:
1C
 
ФормированиеОтчетаИзФормыСпискаСОтбором
0 antotti
 
21.08.14
14:51
Добрый день! Подскажите пожалуйста.
Нужно из формы списка справочника номенклатура(при нажатие на кнопку), вызвать отчет(СКД-шный), и чтобы он сформировался с отбором по выделенным позициям номенклатуры.  Он формируется тупо по всем позициям(( Помогите разобраться!
Вот пример кода:
&НаКлиенте
Процедура Печать(Команда)

УсловияОтбора  = Новый Структура;
    
Для Каждого ВыделеннаяСтрока Из Элементы.Список.ВыделенныеСтроки Цикл
    УсловияОтбора.Вставить("Товар", ВыдСтрока);
КонецЦикла;
    ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
    ОткрытьФорму("Отчет.Товары_Остатки.ФормаОбъекта", ПараметрыФормы);

КонецПроцедуры
1 vicof
 
21.08.14
14:53
Нужно тупо отбор в тупую СКД тупо передать.
2 Timon1405
 
21.08.14
14:57
СП со скидками, налетай.
Расширение управляемой формы для отчета (Managed form extension for reports)
Отбор (Filter)
Описание:

Тип: Структура.
Используется для установки отбора и параметров данных в форме отчета.
Ключ элемента структуры содержит имя поля или параметра, на которое нужно наложить отбор.
Значение элемента структуры содержит значение отбора.
Если имеется параметр системы компоновки данных с именем, соответствующим имени ключа структуры, то значение будет установлено ему. Если параметра нет, но есть поле, то будет добавлен отбор на это поле.
Если значение является массивом или списком значений с не одним элементом, то отбор будет применяться с видом сравнения ВСписке.

См последний абзац
3 antotti
 
21.08.14
15:39
Добавил в СКД отбор по получаемому массиву, в итоге вобще перестало выводить(
Вот текст запроса в СКД:

ВЫБРАТЬ
    спрНоменклатура.Ссылка КАК Номенклатура,
    спрНоменклатура.Артикул,
    ОстаткиТоваровОстатки.КоличествоОстаток
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(, ) КАК ОстаткиТоваровОстатки
        ПО спрНоменклатура.Ссылка = ОстаткиТоваровОстатки.Номенклатура
ГДЕ
    спрНоменклатура.Ссылка В(&УсловиеОтбора)
4 antotti
 
21.08.14
15:40
Не пойму где туплю???
5 antotti
 
21.08.14
15:44
Timon, понял)) Спасибо большое. Нужно было название поменять ключа)
6 antotti
 
21.08.14
15:54
Только он последнюю из выделенных выводит теперь, а как сделать чтобы выводил по всем выделенным?? Наверное я неправильно структуру заполняю, раз там только последний элемент оказывается...?
7 Timon1405
 
21.08.14
16:16
вообще убери "ГДЕ" в запросе, система сама все сделает!
8 antotti
 
21.08.14
16:21
Если убираю ГДЕ, то по всем выводит, не срабатывает. А так как сейчас, только последнюю выделенную(((  А чтобы все выделенные, никак не выходит...(
9 Timon1405
 
21.08.14
16:22
покажи текущий код процедуры
10 vicof
 
21.08.14
16:24
УсловияОтбора  = Новый Структура;
    
Для Каждого ВыделеннаяСтрока Из Элементы.Список.ВыделенныеСтроки Цикл
    УсловияОтбора.Вставить("Товар", ВыдСтрока);
КонецЦикла;

чо это за хрень?
У тебя всегда и будет последняя номенклатура
11 antotti
 
21.08.14
16:24
Vicof, А как правильно структуру заполнить?
12 Timon1405
 
21.08.14
16:25
видимо в (2) намек на список значений был слишком тонкий
13 antotti
 
21.08.14
16:28
Заполнить список значений в цикле, и его передать в качестве значения структуры?
14 vicof
 
21.08.14
16:30
(13) В тебе проснулся разум)
15 antotti
 
21.08.14
16:31
Спасибо народ, помогли, все зработало)))
16 Timon1405
 
21.08.14
16:33
запили сюда код чтоли для будущих поколений)
17 antotti
 
21.08.14
16:43
Рабочий код
&НаКлиенте
Процедура Печать(Команда)
    УсловияОтбора  = Новый Структура;
    СписокЗначений = Новый СписокЗначений;
    Счетчик = 0;
    Для Каждого ВыдСтрока Из Элементы.Список.ВыделенныеСтроки Цикл
        СписокЗначений.Вставить(Счетчик,ВыдСтрока);
        счетчик = счетчик + 1;
    КонецЦикла;
    УсловияОтбора.Вставить("СписокСтрок", СписокЗначений);
    ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
    ОткрытьФорму("Отчет.Товары_Остатки.Форма", ПараметрыФормы);
КонецПроцедуры