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

Печать справочника номенклатура через запрос

Автор Fateev_max, 13 дек 2010, 10:16

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

Fateev_max

Справочник номенклатура иерархический.Как вывести элементы справочника в макет используя   метод выбрать().

Процедура ДействияФормыПечатьЧерезЗапрос(Кнопка)
   ТабДок=Новый ТабличныйДокумент();
   Макет=Справочники.Номенклатура.ПолучитьМакет("Печать");
   Область=Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(Область);
    Область=Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);

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

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

DenPlus

Уточните пожалуйста, это был вопрос?
Если в макете имена параметров совпадают с именами полей запроса, то все вроде должно печататься.

Fateev_max


DenPlus

1. УПОРЯДОЧИТЬ ПО Номенклатура.Наименование Иерархия
2. Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

не то?

Fateev_max

Нет так печатаются только группы без элементов

Процедура ДействияФормыПечатьЧерезЗапрос(Кнопка)
   ТабДок=Новый ТабличныйДокумент();
   Макет=Справочники.Номенклатура.ПолучитьМакет("Печать");
   Область=Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(Область);
    Область=Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);


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

               Пока Выборка1.Следующий() Цикл
               Элемент=Макет.ПолучитьОбласть("Группа");
   
               Элемент.Параметры.Заполнить(Выборка1);
               ТабДок.Вывести(Группа);
   
                                   КонецЦикла;
            ТабДок.Показать(); 
 
   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
            

Fateev_max

Надо просто было упорядочить по иерархии в запросе.Тема закрыта


Процедура ДействияФормыПечатьЧерезЗапрос(Кнопка)
   ТабДок=Новый ТабличныйДокумент();
   Макет=Справочники.Номенклатура.ПолучитьМакет("Печать");
   Область=Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(Область);
    Область=Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);


   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
                |   Номенклатура.Код,
                |   Номенклатура.Наименование КАК Наименование,
                |   Номенклатура.СтавкаНДС,
                |   Номенклатура.ЭтоГруппа
                |ИЗ
                |   Справочник.Номенклатура КАК Номенклатура
                |
                |УПОРЯДОЧИТЬ ПО
                |   Наименование ИЕРАРХИЯ";
            Результат=Запрос.Выполнить();
Выборка=Результат.Выбрать();
Группа=Макет.ПолучитьОбласть("Группа");
Элемент = Макет.ПолучитьОбласть("Элемент");

Пока Выборка.Следующий() Цикл

Если Выборка.ЭтоГруппа Тогда
Группа.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Группа);
Иначе
Элемент.Параметры.Заполнить(Выборка);

ТабДок.Вывести(Элемент);
КонецЕсли

КонецЦикла;


ТабДок.Показать();

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

Теги:

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

Рейтинг@Mail.ru

Поиск