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

ВПФ Спецификации номенклатуры

Автор tatohka, 19 сен 2016, 06:38

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

tatohka

Здравствуйте, люди добрые помогите пожалуйста, не знаю как в печатной форме раскидать количество по столбцам номенклатуры
                         

//
Функция ПечатьСпецификации()
   
   ТабДок = Новый ТабличныйДокумент;
   ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация";
   ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
   Макет = ПолучитьМакет("Спецификация");
       ЗапросШапка = Новый Запрос;
    ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
   ЗапросШапка.Текст =

      "ВЫБРАТЬ
      |   СпецификацииНоменклатуры.Родитель КАК Родитель,
      |   СпецификацииНоменклатуры.Наименование КАК Наименование
      |ИЗ
      |   Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
      |ГДЕ
      |   СпецификацииНоменклатуры.Ссылка = &ТекущийДокумент";
   
    Выборка = ЗапросШапка.Выполнить().Выбрать();
   Выборка.Следующий();

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

       
   Результат = Запрос.Выполнить();

      ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подписи");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   
    ОбластьЗаголовок.параметры.Родитель = Выборка.родитель;
    ОбластьЗаголовок.параметры.Наименование = Выборка.Наименование;

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ОбластьШапкаТаблицы =Макет.ПолучитьОбласть("R7C1:R9C13");
    ОбластьШапкаТаблицы.Параметры.АрматурныеЭлементы = "Арматурные элементы";
   ОбластьШапкаТаблицы.Параметры.Блоки  = "Блоки АРМ каркасов";
   ОбластьШапкаТаблицы.Параметры.Марка = "Марка";
   ОбластьШапкаТаблицы.Параметры.КоличествоПоМарке = "Кол-во по марке, шт";
   ОбластьШапкаТаблицы.Параметры.Диаметр = "Диаметр";
   ОбластьШапкаТаблицы.Параметры.Масса = "Масса п.м., кг.";
    ОбластьШапкаТаблицы.Параметры.Размеры = "Размеры, мм";
   ОбластьШапкаТаблицы.Параметры.Количество = "Кол-во, шт";
   ОбластьШапкаТаблицы.Параметры.МассаЭлеммента = "Масса1 элемента по р.ч.";
   ОбластьШапкаТаблицы.Параметры.МассаИзделия = "Масса на изделие без потерь";
   
ТабДок.Вывести(ОбластьШапкаТаблицы);
   ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура|ШапкаТаблицы");
    ОбластьЗаписей = Макет.ПолучитьОбласть("Детали|Номенклатура");

     ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.Прямой);
         КоличествоСтолбцовНом = 0;
Пока ВыборкаНоменклатура.Следующий() Цикл
    КоличествоСтолбцовНом = КоличествоСтолбцовНом + 1;
   ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
      ТабДок.Присоединить(ОбластьНоменклатура);
     Если ОбластьНоменклатура.Параметры.Номенклатура <> "" тогда
       ТабДок.Область(6,14,6,14+ (КоличествоСтолбцовНом-1)).Объединить();
       ТабДок.Область(6,14,6,14+ (КоличествоСтолбцовНом-1)).Текст = "МассаБезПотерь";
        ТабДок.Область(7,14,7,14+ (КоличествоСтолбцовНом-1)).Объединить();
       ТабДок.Область(6,14,6,14+ (КоличествоСтолбцовНом-1)).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
       КонецЕсли;
    
    ВыборкаСтрок = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.Прямой);

     Пока ВыборкаСтрок.Следующий() Цикл
         ОбластьЗаписей.Параметры.Заполнить(ВыборкаСтрок);
         ТабДок.Область(6,14,6,14+ (КоличествоСтолбцовНом-1)).Присоединить(ОбластьЗаписей);

      КонецЦикла;
   
    КонецЦикла;


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

    Результат1 = ЗапросСтрока.Выполнить();


   ОбластьНомерОперацииМаршрута = Макет.ПолучитьОбласть("НомерОперацииМаршрута");
   ОбластьПозицияПоСпецификации = Макет.ПолучитьОбласть("ПозицияПоСпецификации");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
   ОбластьЗаписей = Макет.ПолучитьОбласть("Детали|Номенклатура");
   ОбластьПодписи= Макет.ПолучитьОбласть("Подписи");

   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаНомерОперацииМаршрута = Результат1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   Пока ВыборкаНомерОперацииМаршрута.Следующий() Цикл
      ОбластьНомерОперацииМаршрута.Параметры.Заполнить(ВыборкаНомерОперацииМаршрута);
      ОбластьНомерОперацииМаршрута.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
      ОбластьНомерОперацииМаршрута.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
      ТабДок.Вывести(ОбластьНомерОперацииМаршрута, ВыборкаНомерОперацииМаршрута.Уровень());
             
      ВыборкаПозицияПоСпецификации = ВыборкаНомерОперацииМаршрута.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаПозицияПоСпецификации.Следующий() Цикл
       ОбластьПозицияПоСпецификации.Параметры.Заполнить(ВыборкаПозицияПоСпецификации);
         ОбластьПозицияПоСпецификации.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
          ОбластьПозицияПоСпецификации.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
         ТабДок.Вывести(ОбластьПозицияПоСпецификации, ВыборкаПозицияПоСпецификации.Уровень());

         ВыборкаДетальныеЗаписи = ВыборкаПозицияПоСпецификации.Выбрать();
         
                 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            Областьзаписей.Параметры.Количество = ВыборкаДетальныеЗаписи.Номенклатура;              
             
           ОбластьДетальныхЗаписей.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
              ОбластьДетальныхЗаписей.Область(1,2,1,14+ (КоличествоСтолбцовНом-1)).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
            
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
            
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодписи);
     
Возврат ТабДок;

КонецФункции // ПечатьСпецификаци()

Теги:

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

Рейтинг@Mail.ru

Поиск