Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мая 2024, 00:20

Как программно проставить номенклатуру в проводки бгу редакция 1.0

Автор notaSS, 24 июн 2015, 11:29

0 Пользователей и 1 гость просматривают эту тему.

notaSS

Здравствуйте.Скажите, пожалуйста,нужно программно проставить номенклатуру в записи регистра бухгалтерии,которые создает документ "требование на выдачу продуктов питания". Вопрос в том, что у нас номенклатура берется из табличной части этого документа,но я не могу проставить номенклатуру, так как обработка берет одну номенклатуру, которая первая  в списке в табл части, и проставляет всем позициям одну и ту же номенклатуру в регистре!



   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   УППБУ_ТребованиеПродуктыПитания.Номенклатура,
   |   УППБУ_ТребованиеПродуктыПитания.Ссылка.МестоХранения,
   |   УППБУ_ТребованиеПродуктыПитания.КОСГУСчетДебета,
   |   УППБУ_ТребованиеПродуктыПитания.КОСГУСчетКредита,
   |   УППБУ_ТребованиеПродуктыПитания.Ссылка.Ссылка
   |ИЗ
   |   Документ.УППБУ_Требование.ПродуктыПитания КАК УППБУ_ТребованиеПродуктыПитания
   |ГДЕ
   |   УППБУ_ТребованиеПродуктыПитания.Ссылка.Ссылка = &Ссылка";
   //   
   //Запрос.УстановитьПараметр("Дата", Датанач);
   //Запрос.УстановитьПараметр("Дата", ДатаКон);
   Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
   РезультатЗапроса = Запрос.Выполнить();
   
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл   
        ДвиженияДокумента = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
        ДвиженияДокумента.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.ссылка);
        ДвиженияДокумента.Прочитать();
       
        Для каждого проводка из ДвиженияДокумента Цикл
            Если Не ЗначениеЗаполнено(Проводка.СубконтоКт.Номенклатура) Тогда
               
                    Проводка.СубконтоКт.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                    Проводка.СубконтоКт.ЦМО = ВыборкаДетальныеЗаписи.МестоХранения;
                    Проводка.СубконтоКт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетКредита;
                    Проводка.СубконтоДт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетДебета;
                КонецЕсли;
        КонецЦикла;
        ДвиженияДокумента.Записать();
     
    КонецЦикла;

ppkmlite

с этим вопросом разобрались,сделали условие по номеру документа, но теперь такой вопрос
если в табл части документа позиции повторяются,напрмер
1- апельсины
2 -апельсины
3-яблоки
4-груши
то обработка проставляет след образом
1- апельсины
2-яблоки
3-груши
то есть пропускает повторяющуюся позициюПока ВыборкаДетальныеЗаписи.Следующий() Цикл   
        ДвиженияДокумента = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
        ДвиженияДокумента.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.ссылка);
        ДвиженияДокумента.Прочитать();
       
        Для каждого проводка из ДвиженияДокумента Цикл
            Если Не ЗначениеЗаполнено(Проводка.СубконтоКт.Номенклатура) и проводка.НомерСтроки = ВыборкаДетальныеЗаписи.НомерСтроки  Тогда
           
                    Проводка.СубконтоКт.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                    Проводка.СубконтоКт.ЦМО = ВыборкаДетальныеЗаписи.МестоХранения;
                    Проводка.СубконтоКт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетКредита;
                    Проводка.СубконтоДт.КОСГУ = ВыборкаДетальныеЗаписи.КОСГУСчетДебета;
                КонецЕсли;
        КонецЦикла;
        ДвиженияДокумента.Записать();
     
    КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск