Имя: Пароль:
1C
1С v8
Сформировать ЗаказПоставщику из Табличной Части/
0 DmitriiKr
 
16.11.20
13:06
Доброго времени суток.

Для каждого СтрТЧ Из ТЧ Цикл
        
        ДокументЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
        
        ДокументЗаказПоставщику.Дата = ТекущаяДата();
        ДокументЗаказПоставщику.Контрагент = СтрТЧ.Номенклатура.Поставщик;
        ДокументЗаказПоставщику.Склад = Склад;
        
        НоваяСтрокаТЧДокумента = ДокументЗаказПоставщику.Товары.Добавить();
        НоваяСтрокаТЧДокумента.Номенклатура = СтрТЧ.Номенклатура;
        НоваяСтрокаТЧДокумента.Количество = СтрТЧ.КупитьНужно;
        НоваяСтрокаТЧДокумента.Сумма = СтрТЧ.ЦенаЗакупки;
        
        ДокументЗаказПоставщику.Записать();
        
        ДокументЗаказПоставщику.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        
        Сообщить("Создан документ: заказ поставщику " + СтрТЧ.Номенклатура.Поставщик + " на товар " + СтрТЧ.Номенклатура + " в количестве " + СтрТЧ.КупитьНужно + " шт.");
        
        Элементы.СозданиеЗаказаПотавщику.Доступность = Ложь;
        
        
    КонецЦикла;



Этот код просто берет значения которые указаны в ТЧ на форме (в обработке), данные на форме получаются из документа:ЗаказПокупателя за определенный период.

Так вот застрял на том: В Табличной части есть несколько номенклатурой с одним и темже поставщиком.
Как сделать так чтобы заказПоставщику формировался по одному поставщику с несколькими номенклатурами.

Я так понимаю что можно просто выбрать разных поставщиков из ТЧ  потом перебрать строки по каждому.

Но вот хоть убей не понимаю как мне это сделать....
1 Kigo_Kigo
 
16.11.20
13:36
А где циклы по ТЧ, где проверка на поставщика?
2 spiller26
 
16.11.20
13:39
(0) ТабЧасть в ТабЗначений, сверни по Номенклатуре и Поставщику.
3 DmitriiKr
 
16.11.20
13:40
Так вот я не понимаю как это сделать. Пните в направление...Т.е. я так понимаю нужно сделать цикл в цикле?
4 DmitriiKr
 
16.11.20
13:40
Я когда сворачиваю то остается только поле поставщик все остальные поля пустые
5 spiller26
 
16.11.20
13:42
(4) Код в студию
6 shuhard
 
16.11.20
13:43
(3) да, нужны итоги в запросе и обход в два уровня
7 Kigo_Kigo
 
16.11.20
13:46
Как минимум, добавить колонку "Поставщик", пройтись и ее заполнить из СтрТЧ.Номенклатура.Поставщик;
после сортировать по колонке Поставщик
Если Поставщик = СтрТЧ.Поставщик, пишем новую строку в создаваемы документ, если <> то запоминаем нового поставщика, создаем новый док
8 spiller26
 
16.11.20
13:48
ТаблЗнач = ДокТаблЧастьТовары.Выгрузить();
ТаблЗнач.Колонки.Добавить("Поставщик");
Для Каждого СтрТаб Из ТаблЗнач Цикл
   СтрТаб.Поставщик = СтрТаб.Номенклатура.Поставщик;
КонецЦикла;
ТаблЗнач.Свернуть("Поставщик, Номенклатура", "Количество, Сумма");
9 spiller26
 
16.11.20
13:54
(8) ТаблЗначСв = ТаблЗнач.Скопировать();
ТаблЗначСв.Свернуть("Поставщик","");
Для Каждого СтрСв Из ТаблЗначСв Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Поставщик",СтрСв.Поставщик);
НайденныеСтроки  = ТаблЗнач.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() > 0 Тогда
   //Создаёшь новый док, заполняешь шапку
   Для Каждого СтрНайденыш Из НайденныеСтроки Цикл
     //Заполняешь таб часть
   конецЦикла;
КонецЕсли;
КонецЦикла;
10 DmitriiKr
 
16.11.20
14:06
ТаблЗнач = ЭтотОбъект.ТЧ.Выгрузить();
    
    ТаблЗначСв = ТаблЗнач.Скопировать();
ТаблЗначСв.Свернуть("Поставщик","");
Для Каждого СтрСв Из ТаблЗначСв Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Поставщик",СтрСв.Поставщик);
НайденныеСтроки  = ТаблЗнач.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() > 0 Тогда  // создаем новый документ
ДокументЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
ДокументЗаказПоставщику.Дата = ТекущаяДата();
        ДокументЗаказПоставщику.Контрагент = СтрСв.Поставщик;
        ДокументЗаказПоставщику.Склад = Склад;

        Для Каждого СтрНайденыш Из НайденныеСтроки Цикл
            
    НоваяСтрокаТЧДокумента = ДокументЗаказПоставщику.Товары.Добавить();
        НоваяСтрокаТЧДокумента.Номенклатура = СтрНайденыш.Номенклатура;
        НоваяСтрокаТЧДокумента.Количество = СтрНайденыш.КупитьНужно;
        НоваяСтрокаТЧДокумента.Сумма = СтрНайденыш.ЦенаЗакупки;
        
        ДокументЗаказПоставщику.Записать();
        
        ДокументЗаказПоставщику.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        
        Сообщить("Создан документ: заказ поставщику " + СтрНайденыш.Номенклатура.Поставщик + " на товар " + СтрНайденыш.Номенклатура + " в количестве " + СтрНайденыш.КупитьНужно + " шт.");
        
        Элементы.СозданиеЗаказаПотавщику.Доступность = Ложь;
        
   конецЦикла;
КонецЕсли;
КонецЦикла;


Вот так вот получилось.


СПАСИБО БОЛЬШОЕ!!!!!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс