Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Июн 2021, 15:15
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: ВПФ Спецификации номенклатуры  (Прочитано 870 раз)

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

Оффлайн tatohka

  • *
  • Регистрация: 2015-09-16
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Профессия: Ученик 1С
Здравствуйте, люди добрые помогите пожалуйста, не знаю как в печатной форме раскидать количество по столбцам номенклатуры
                         

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

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

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

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

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

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ОбластьШапкаТаблицы =Макет.ПолучитьОбласть("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);
            
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
            
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;

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

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
67 Сообщений
LexaK
66 Сообщений
antoneus antoneus
32 Сообщений
Ивашка
27 Сообщений
neek666
25 Сообщений
KATERINA 861
19 Сообщений
SSC
15 Сообщений
alexandr_ll
13 Сообщений
Алексей_1985_06
12 Сообщений
MiThO
8 Сообщений

* Кто онлайн

  • Точка Гостей: 700
  • Точка Скрытых: 1
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск