Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Сформировать ЗаказПоставщику из Табличной Части/

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

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



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

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

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

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

   Для Каждого СтрНайденыш Из НайденныеСтроки Цикл
    //Заполняешь таб часть

   конецЦикла;
 КонецЕсли;
КонецЦикла;
   DmitriiKr
 
10 - 16.11.20 - 14:06
ТаблЗнач = ЭтотОбъект.ТЧ.Выгрузить();
    
    ТаблЗначСв = ТаблЗнач.Скопировать();
 ТаблЗначСв.Свернуть("Поставщик","");
Для Каждого СтрСв Из ТаблЗначСв Цикл
 СтруктураПоиска = Новый Структура();
 СтруктураПоиска.Вставить("Поставщик",СтрСв.Поставщик);
 НайденныеСтроки  = ТаблЗнач.НайтиСтроки(СтруктураПоиска);
 Если НайденныеСтроки.Количество() > 0 Тогда  // создаем новый документ

 ДокументЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
 ДокументЗаказПоставщику.Дата = ТекущаяДата();
        ДокументЗаказПоставщику.Контрагент = СтрСв.Поставщик;
        ДокументЗаказПоставщику.Склад = Склад;

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


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


СПАСИБО БОЛЬШОЕ!!!!!

Список тем форума
Рекламное место пустует  Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.