8.х Проведение по регистру накопления из обработки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем User, 13 сен 2016.

  1. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    Помогите, пожалуйста, решить задачу. Есть регистр накопления в который документом записывается приход, а обработкой - расход. При записи расхода документ-регистратор тот же, что и приход.
    Код:
    Код:
    Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ТЗ_Продукция.ЗаказНаПроизводство КАК ЗаказНаПроизводство,
                       |    ЕСТЬNULL(ТЗ_Продукция.КоличествоПродукции, 0) КАК Количество,
                       |    ТЗ_Продукция.Продукция,
                       |    ТЗ_Продукция.ТипИзделия,
                       |    ТЗ_Продукция.ТипБирки
                       |ПОМЕСТИТЬ ВТ
                       |ИЗ
                       |    &ТЗ_Продукция КАК ТЗ_Продукция
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ВТ.ЗаказНаПроизводство,
                       |    ВТ.Количество,
                       |    ВТ.Продукция,
                       |    ВТ.ТипИзделия,
                       |    ВТ.ТипБирки
                       |ИЗ
                       |    ВТ КАК ВТ";
          
        Запрос.УстановитьПараметр("ТЗ_Продукция", ЭтотОбъект.ПродукцияЗаказа.Выгрузить());  
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Количество()>0 тогда
        Пока Выборка.Следующий() Цикл  
            НаборЗаписей = РегистрыНакопления.КоличествоЗН.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Регистратор.Установить(Выборка.ЗаказНаПроизводство);
            Движение = НаборЗаписей.ДобавитьРасход();
            Движение.Период = ТекущаяДата();
            Движение.Регистратор = Выборка.ЗаказНаПроизводство;
            Движение.ЗаказНаПроизводство = Выборка.ЗаказНаПроизводство;
            Движение.Номенклатура = Выборка.Продукция;
            Движение.ТипИзделия = Выборка.ТипИзделия;
            Движение.ТипБирки = Выборка.ТипБирки;
            Движение.Количество = Выборка.Количество;
            НаборЗаписей.Записать();
          
        КонецЦикла;
        КонецЕсли;
    После выполнения кода приход по заказу очищается и записывается только последняя строка из табличной части (выборка). Подскажите более грамотное решение задачи, ПОЖАЛУЙСТА!!!
    Последнее редактирование: 13 сен 2016
  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    688
    Симпатии:
    8
    Баллы:
    29
    Код:
    РезультатЗапроса  = Запрос.Выполнить();
    
    Если НЕ РезультатЗапроса.Пустой() тогда
        Выборка = РезультатЗапроса.Выбрать();
        НаборЗаписей = РегистрыНакопления.КоличествоЗН.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Установить(Выборка.ЗаказНаПроизводство);
        НаборЗаписей.Прочитать();
    
        Пока Выборка.Следующий() Цикл
        
            Движение = НаборЗаписей.ДобавитьРасход();
            Движение.Период = ТекущаяДата();
            Движение.Регистратор = Выборка.ЗаказНаПроизводство;
            Движение.ЗаказНаПроизводство = Выборка.ЗаказНаПроизводство;
            Движение.Номенклатура = Выборка.Продукция;
            Движение.ТипИзделия = Выборка.ТипИзделия;
            Движение.ТипБирки = Выборка.ТипБирки;
            Движение.Количество = Выборка.Количество;
        
        КонецЦикла;
        НаборЗаписей.Записать();
    
    КонецЕсли;
    
    
    И не забудь уничтожить временную таблицу в запросе.
    А вообще решение, по моему, по меньшей мере странное - расход и приход одним документом, причем расход обработкой. Представим на минуточку, что после формирования расхода по документу этот документ перепроведут, тогда всё, пипец не будет твоего расхода, если свойство документа "Удалять движение" установлено в "удалять автоматически"
    User нравится это.
  3. TopicStarter Overlay
    User
    Offline

    User Опытный в 1С

    Регистрация:
    4 фев 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Спасибо, что сказали про возможное перепроведение самого заказа. Наверно, я лучше какой-нибудь док создам для присвоение номеров и буду его подсовывать обработке. Благодарю!

Поделиться этой страницей