Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 02:14

Вывод элементов выбранной группы справочника

Автор shutani, 13 апр 2015, 10:25

0 Пользователей и 1 гость просматривают эту тему.

shutani

Добрый день/вечер/ночь! Комплексная конфигурация. Создала отчет, в котором в Таблице выводится номенклатура, цены которой изменились за выбранный период (сами цены тоже выводятся по столбцам - цена на начальную и цена на конечную дату). Появилась необходимость в диалоге выбрать товар или группу товаров, элементы которой будут выводится также при условии изменения цены.  Добавила на форму поле ВыбНомен с ссылкой на Справочник.Номенклатура. Как сделать, чтобы выводились товар и цены только выбранной группы или элемента? Листинг самого отчета прилагается:

Перем Цена1, Цена2;           
Процедура Сформировать()   
    СпрТовар = СоздатьОбъект("Справочник.Номенклатура");
    СпрЦена = СоздатьОбъект("Справочник.Цены");
    СпрТовар.ВыбратьЭлементы();
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
        Таб.ВывестиСекцию("Заголовок");
        Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

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

Таб.ТолькоПросмотр(1);
Таб.Показать("Таблица", "");           

КонецПроцедуры

fipolaz

В процедуре Сформировать замени фильтр

        Если СпрТовар.ЭтоГруппа()=1 Тогда   
        продолжить;
            КонецЕсли;

на вызов фильтрующей функции

Если Продoлжить(СпрТовар.ТекущийЭлемент())=1 Тогда   
Продолжить;
КонецЕсли;

выше процедуры Сформировать добавь код функции

Функция Продoлжить(Элемент)
Если Элемент.ЭтоГруппа()=1 Тогда   
Возврат 1;
КонецЕсли;
Если ПустоеЗначение(ВыбНомен)=0 Тогда
Если ВыбНомен.ЭтоГруппа()=1 Тогда
Если Элемент.ПринадлежитГруппе(ВыбНомен)=0 Тогда
Возврат 1;
КонецЕсли;
Иначе
Если НЕ(Элемент=ВыбНомен) Тогда
Возврат 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат 0;
КонецФункции//Продoлжить

shutani

fipolaz, огромное спасибо! Всё работает! Добра)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск