|  | Помощь с проведением документа по РН 
 kpe4et178, DimVad , arsik , Галахад , rudnitskij , BlottoYolo , НоваяВолна , Prog_man , piter3 , boozin , Elf_80_lvl , timurhv , who respawn | ☑ | 
    
        | 0
    
        kpe4et178   20.02.25✎ 15:41 | 
        Всем привет.
Еще не пятница, но мозг ушел погулять.
 
 Есть справочник Номенклатуры, с реквизитом ТипНоменклатуры.
 ТипНоменклатуры - перчисления Товар, Услуга.
 Есть документ прихода товаров с ТЧ Товары, туда подбираются и услуги и товары.
 
 Как правильно сдлеать обработку проведения, чтобы отразить приход только товаров по регистру ОстаткиТоваров?
 
 Как-то в цикле проверять тип номенклатуры - не айс мне кажется.
 |  | 
    
        | 1
    
        Галахад   гуру 20.02.25✎ 15:43 | 
        Подготовить нужную табличку.
Закинуть табличку в РН.
 Профит.
 
 П.С. Цикл это норм.
 |  | 
    
        | 2
    
        DimVad   20.02.25✎ 15:45 | 
        ТЧ выгружаете во временную таблицу запроса, делаете отбор по типу в запросе, выгружаете для проведения.     |  | 
    
        | 3
    
        Elf_80_lvl   20.02.25✎ 15:46 | 
        (0) Можно выгрузить табличку с отбором, можно циклом.     |  | 
    
        | 4
    
        kpe4et178   20.02.25✎ 15:47 | 
        Движения.ОстаткиТоваров.Записывать = Истина;
// Обходим строки документа
 Для Каждого СтрокаТЧ Из Товары Цикл
 // Проверяем, что тип номенклатуры - "Товар"
 Если СтрокаТЧ.Номенклатура.ТипНоменклатуры = Перечисления.ТипНоменклатуры.Товар Тогда
 // Формируем запись в регистр ОстаткиТоваров
 Движение = Движения.Остатки.Добавить();
 Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
 Движение.Период = Дата;
 Движение.Склад = Склад;
 Движение.Номенклатура = СтрокаТЧ.Номенклатура;
 Движение.Количество = СтрокаТЧ.Количество;
 КонецЕсли;
 КонецЦикла;
 |  | 
    
        | 5
    
        kpe4et178   20.02.25✎ 15:48 | 
        (1) вот я тоже думаю, что будет быстрее Цикл или Выгрузка с отбором?     |  | 
    
        | 6
    
        DimVad   20.02.25✎ 15:54 | 
        (4) СтрокаТЧ.Номенклатура.ТипНоменклатуры - в этот момент система будет загружать весь объект номенклатуры в память (если раньше был загружен - возьмёт из кеша).
 Я имел в виду что-то типа :
 Запрос = Новый Запрос(
 "ВЫБРАТЬ
 |    ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
 |    Товары.Количество КАК Количество
 |ПОМЕСТИТЬ втТовары
 |ИЗ
 |    &тзТовары КАК Товары
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 |    втТовары.Номенклатура,
 |    втТовары.Количество
 |ИЗ
 |    втТовары КАК втТовары
 |ГДЕ
 |    втТовары.Номенклатура.ТипНоменклатуры = Значение(Перечисление.ТипНоменклатуры.Товар)");
 Запрос.УстановитьПараметр("тзТовары",    Док_.Товары.Выгрузить(,"Номенклатура, Количество"));
 |  | 
    
        | 7
    
        arsik   гуру 20.02.25✎ 15:55 | 
        (2) Зачем временную? Можно сразу из базы читать. В момент проведения все данные документа уже в базе.     |  | 
    
        | 8
    
        DimVad   20.02.25✎ 15:57 | 
        (7) Можно. Привычка :-)     |  | 
    
        | 9
    
        kpe4et178   20.02.25✎ 16:07 | 
        (6) Спасибо. Согласен на счет Запроса, будет быстрее.
Мучас грасиас всем
 |  |