Имя: Пароль:
1C
1С v8
Как программно проставить номенклатуру в проводки бгу редакция 1.0
0 ppkmlite
 
24.06.15
11:26
Здравствуйте.Скажите, пожалуйста,нужно программно проставить номенклатуру в записи регистра бухгалтерии,которые создает документ "требование на выдачу продуктов питания". Вопрос в том, что у нас номенклатура берется из табличной части этого документа,но я не могу проставить номенклатуру, так как обработка берет одну номенклатуру, которая первая  в списке в табл части, и проставляет всем позициям одну и ту же номенклатуру в регистре!
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ДвиженияДокумента = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
        ДвиженияДокумента.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.ссылка);
        ДвиженияДокумента.Прочитать();
        
        Для каждого проводка из ДвиженияДокумента Цикл
            Если Не ЗначениеЗаполнено(Проводка.СубконтоКт.Номенклатура) Тогда
                
                    Проводка.СубконтоКт.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                    Проводка.СубконтоКт.ЦМО = ВыборкаДетальныеЗаписи.МестоХранения;
                    Проводка.СубконтоКт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетКредита;
                    Проводка.СубконтоДт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетДебета;
                КонецЕсли;
        КонецЦикла;
        ДвиженияДокумента.Записать();
        
    КонецЦикла;
1 ppkmlite
 
24.06.15
21:20
поставили сравнение по номеру документа, то есть если номер в табл части равен номеру в регистре, то записываем номенклатуру
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл  
        ДвиженияДокумента = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
        ДвиженияДокумента.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.ссылка);
        ДвиженияДокумента.Прочитать();
      
        Для каждого проводка из ДвиженияДокумента Цикл
            Если Не ЗначениеЗаполнено(Проводка.СубконтоКт.Номенклатура) и проводка.НомерСтроки = ВыборкаДетальныеЗаписи.НомерСтроки  Тогда
            
                    Проводка.СубконтоКт.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                    Проводка.СубконтоКт.ЦМО = ВыборкаДетальныеЗаписи.МестоХранения;
                    Проводка.СубконтоКт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетКредита;
                    Проводка.СубконтоДт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетДебета;
                КонецЕсли;
        КонецЦикла;
        ДвиженияДокумента.Записать();
    
    КонецЦикла;
Теперь вопрос такой  если в табл части документа позиции повторяются,напрмер
1- апельсины
2 -апельсины
3-яблоки
4-груши
то обработка проставляет след образом
1- апельсины
2-яблоки
3-груши
то есть пропускает повторяющуюся позицию
2 Славен
 
24.06.15
21:33
Либо группировка в запросе, либо свернуть() это надо убрать
А вообще правильно пропускает, она сворасивает эти строки, номенклатура остается а сумма и количество увеличивается
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший