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

Вывод в табличный документ с неизвестным количество колонок

Автор ty, 21 июн 2016, 14:14

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

ty

Добрый день как можно вывести полученные данные в запросе в таком виде как на скрине?


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

       



Rasty

ну у вас вполне известное количество колонок, так что обычный макет обычное заполнение таб дока
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

ty

Подразделений может быть много

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

ty

А как установить отбор чтобы дальше нужная цена и спецификация попадали в нужное подразделение

Макет = ПолучитьМакет("Макет");
     ЭлементыФормы.Результат.Очистить();
    Область = Макет.ПолучитьОбласть("Заголовок|Область1");
    Если ЗначениеЗаполнено(Номенклатура) Тогда
        Область.Параметры.Номенклатура = Строка(Номенклатура);
    КонецЕсли;
     Область.Параметры.Подразделения = Подразделения;
    Область.Параметры.ТипЦен = Строка(ТипЦен);
    Область.Параметры.ДатаОкончания = Строка(Формат(ДатаОкончания,"ДФ=dd.MM.yyyy"));
    ЭлементыФормы.Результат.Вывести(Область);
    ЭлементыФормы.Результат.Защита = Истина;
   
            Для Каждого СтрокаПодразделений Из ТаблицаПодразделений Цикл
                ОбластьПодразделения = Макет.ПолучитьОбласть("Заголовок|Подразделение");
                ОбластьПодразделения.Параметры.ПодразделениеОрганизации = Строка(СтрокаПодразделений.Подразделение);
               ОбластьПодразделения.Параметры.РасшифровкаОрганизации = СтрокаПодразделений.Подразделение;
                ЭлементыФормы.Результат.Присоединить(ОбластьПодразделения);    
            КонецЦикла;

vitasw


ty

СКД не катит в этой форме будет ёще два отчета по другим параметрам и регистрам а выводиться должно всё в одно окно а вообще вот готовый код
Если Не ЗначениеЗаполнено(Подразделения) Тогда
      Предупреждение("Вы невыбрали ни одного подразделения отчет не может быть сформирован");
      Возврат;
   ИначеЕсли Не ЗначениеЗаполнено(ДатаОкончания) Тогда
      Предупреждение("Вы не указали дату окончания");
      Возврат;
   ИначеЕсли Не ЗначениеЗаполнено(ТипЦен) Тогда
      Предупреждение("Вы не выбрали тип цены");
      Возврат;
   КонецЕсли;
      
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ВнешняяТаблицаПодразделений" , ПодразделенияТЧ);
   Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
   Запрос.УстановитьПараметр("Период", КонецДня(ДатаОкончания));
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ВнешняяТаблицаПодразделений.Подразделение
      |ПОМЕСТИТЬ ВнешняяТаблицаПодразделений
      |ИЗ
      |   &ВнешняяТаблицаПодразделений КАК ВнешняяТаблицаПодразделений
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка,
      |   ВнешняяТаблицаПодразделений.Подразделение,
      |   СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура,
      |   СпецификацииНоменклатурыИсходныеКомплектующие.Количество
      |ПОМЕСТИТЬ Спецификации
      |ИЗ
      |   ВнешняяТаблицаПодразделений КАК ВнешняяТаблицаПодразделений
      |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
      |      ПО ВнешняяТаблицаПодразделений.Подразделение = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Подразделение
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   Спецификации.Ссылка КАК Спецификация,
      |   Спецификации.Подразделение,
      |   Спецификации.Номенклатура,
      |   Спецификации.Количество,
      |   ЦеныНоменклатурыСрезПоследних.Цена,
      |   ЕСТЬNULL(Спецификации.Количество * ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК СуммаСтроки,
      |   Спецификации.Ссылка.Номенклатура КАК Изделие
      |ИЗ
      |   Спецификации КАК Спецификации
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
      |      ПО Спецификации.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
      |ГДЕ
      |   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен";
   
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   
   
   ТаблицаПодразделений = РезультатЗапроса.Скопировать();
   ТаблицаИзделий = РезультатЗапроса.Скопировать();
   
   ТаблицаИзделий.Свернуть("Изделие");
   ТаблицаПодразделений.Свернуть("Подразделение");
   РезультатЗапроса.Свернуть("Спецификация, Подразделение, Изделие", "СуммаСтроки");
       
    Макет = ПолучитьМакет("Макет");
     ЭлементыФормы.Результат.Очистить();
    Область = Макет.ПолучитьОбласть("Заголовок|Область1");
    Если ЗначениеЗаполнено(Номенклатура) Тогда
        Область.Параметры.Номенклатура = Строка(Номенклатура);
    КонецЕсли;
     Область.Параметры.Подразделения = Подразделения;
    Область.Параметры.ТипЦен = Строка(ТипЦен);
    Область.Параметры.ДатаОкончания = Строка(Формат(ДатаОкончания,"ДФ=dd.MM.yyyy"));
    ЭлементыФормы.Результат.Вывести(Область);
    ЭлементыФормы.Результат.Защита = Истина;
   
            Для Каждого СтрокаПодразделений Из ТаблицаПодразделений Цикл
                ОбластьПодразделения = Макет.ПолучитьОбласть("Заголовок|Подразделение");
                ОбластьПодразделения.Параметры.ПодразделениеОрганизации = Строка(СтрокаПодразделений.Подразделение);
               ОбластьПодразделения.Параметры.РасшифровкаОрганизации = СтрокаПодразделений.Подразделение;
                ЭлементыФормы.Результат.Присоединить(ОбластьПодразделения);    
            КонецЦикла;
 
       
         Область             = Макет.ПолучитьОбласть("Строка|Область1");
           ОбластьСпецификации = Макет.ПолучитьОбласть("Строка|Подразделение");
         
         Для Каждого СтрокаИзделия ИЗ ТаблицаИзделий Цикл
            Изделие = СтрокаИзделия.Изделие;
            Область.Параметры.Изделие = Строка(СтрокаИзделия.Изделие);
            Область.Параметры.РасшифровкаИзделия = СтрокаИзделия.Изделие;
            ЭлементыФормы.Результат.Вывести(Область);
                          Для Каждого СтрокаПодразделений Из ТаблицаПодразделений Цикл
                             Подразделение = СтрокаПодразделений.Подразделение;
                                          Для Каждого СтрокаРезультатаЗапроса из РезультатЗапроса Цикл
                                                 Если СтрокаРезультатаЗапроса.Подразделение = Подразделение И СтрокаРезультатаЗапроса.Изделие = Изделие Тогда
                                                   ОбластьСпецификации.Параметры.спецификация = Строка(СтрокаРезультатаЗапроса.Спецификация);
                                                  ОбластьСпецификации.Параметры.РасшифровкаСпецификации = СтрокаРезультатаЗапроса.Спецификация;
                                                        ОбластьСпецификации.Параметры.сумма        = Строка(СтрокаРезультатаЗапроса.СуммаСтроки);
                                             ЭлементыФормы.Результат.Присоединить(ОбластьСпецификации);
                                               КонецЕсли;
                                          КонецЦикла;           
                          КонецЦикла;
         КонецЦикла;
         

Добавлено: 21 июн 2016, 15:40


осталось ещё пару мелких проблем решить

Теги:

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

Рейтинг@Mail.ru

Поиск