8.х Как реализовать алгоритм?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Sova123, 3 июн 2009.

  1. TopicStarter Overlay
    Sova123
    Offline

    Sova123

    Регистрация:
    24 фев 2008
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Есть спецификация для продукциии в нее еще вложены спецификации
    вот так вот

    Продукция1
    Материал1
    Сборка1
    ДетальСборки1
    Сборка2
    ДетальСборки2
    ДетальСборки1


    Мне нужно заполнить ТЧ следующим образом

    УровеньСборки Материал

    Продукция1
    Материал1
    1 Сборка1
    1 ДетальСборки1
    2 Сборка2
    2 ДетальСборки2
    1 ДетальСборки1

    Делаю так
    Код:
    Процедура ПолучитьПолныйСписокНоменклатуры(ТЗБланкаРасчета,НоваяСтрока,Продукция, Количество,НижнийУровень,УровеньСборки)
    
    // Получаем табличную часть из запроса
    
    
    НоваяСтрока.Сборка         = "ДетальСборки";
    НоваяСтрока.Продукция      = Продукция;
    НоваяСтрока.КоличествоШтук = Количество;
    НоваяСтрока.УровеньСборки  = УровеньСборки;
    УровеньСборки1             = УровеньСборки;
    ВыборкаДляСборки = ПолучитьСпецификациюПоПродукции(НоваяСтрока.Номенклатура);
    ВыборкаДляСборки.Следующий();
    
    Если  ВыборкаДляСборки.ИсходныеКомплектующие  <> Неопределено Тогда
    
    ИсходныеКомплектующиеДляСборки  = ВыборкаДляСборки.ИсходныеКомплектующие.Выбрать();
    
    НоваяСтрока.Сборка         = "Сборка";
    Отбор = Новый Структура;
    Отбор.Вставить("Сборка","Сборка"); 
    Строчка =  ТЗБланкаРасчета.НайтиСтроки(Отбор);
    Индекс = Строчка.Количество()-1; 
    
    Если НЕ НижнийУровень Тогда
    УровеньСборки = 1;
    Иначе
    УровеньСборки = Строчка[Индекс].УровеньСборки +1;
    КонецЕсли;
    
    Пока  ИсходныеКомплектующиеДляСборки.Следующий() цикл
    
    
    НоваяСтрокаСборка = ТЗБланкаРасчета.Добавить();  
    
    ЗаполнитьСтрокиТЗБланкРасчета(ИсходныеКомплектующиеДляСборки,НоваяСтрокаСборка);
    НоваяСтрокаСборка.Сборка         = "ДетальСборки";
    НоваяСтрокаСборка.Продукция      = Продукция;
    НоваяСтрокаСборка.КоличествоШтук = Количество;
    Если  НижнийУровень Тогда
    НоваяСтрокаСборка.УровеньСборки  = УровеньСборки;
    Иначе
    НоваяСтрокаСборка.УровеньСборки  = УровеньСборки1;
    КонецЕсли;
    
    ПолучитьПолныйСписокНоменклатуры(ТЗБланкаРасчета,НоваяСтрокаСборка,Продукция, Количество,Истина,УровеньСборки)                    
    КонецЦикла;    
    КонецЕсли; 
    
    КонецПроцедуры  
    
    Заполняется вот так
    УровеньСборки Материал

    Продукция1
    Материал1
    1 Сборка1
    1 ДетальСборки1
    1 Сборка2
    2 ДетальСборки2
    2 ДетальСборки1
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    В УПП есть обработка "конструктор спецификаций" - посмотрите на нее, очень интересно сделана.

Поделиться этой страницей