Вход | Регистрация

1С:Предприятие ::

Метки: 

Движение регистра накопление с запросом

Я
   Shamil84
 
09.12.17 - 18:26
Здравствуйте! Подскажите пожалуйста что не так? Я только учусь) Создаю конструктором движение по документу Расходные. Затем добавляю запрос в движение по выборке. Движение не происходит)

Процедура ОбработкаПроведения(Отказ, Режим)
    
    
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ


    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    МАКСИМУМ(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
        |    МАКСИМУМ(ЕСТЬNULL(Остатки.СтоимостьОстаток, 0)) КАК СтоимостьОстаток,
        |    ДокТЧ.Номенклатура,
        |    СУММА(ДокТЧ.Количество) КАК Количество
        |ИЗ
        |    Документ.РассходнаяНакладная.ТабличнаяЧасть1 КАК ДокТЧ
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени) КАК Остатки
        |        ПО ДокТЧ.Номенклатура = Остатки.Номенклатура
        |ГДЕ
        |    НЕ ДокТЧ.Номенклатура.Услуга
        |    И ДокТЧ.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ДокТЧ.Номенклатура";
    
    //Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

    //Запрос.УстановитьПараметр("Ссылка", Ссылка);

    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Движения.ОстаткиТоваров.Записывать = Истина;
    Пока Выборка.Следующий() Цикл
         
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрокаТабличнаяЧасть1.Номенклатура;
        Движение.Количество = ТекСтрокаТабличнаяЧасть1.Количество;
        Движение.Стоимость = ТекСтрокаТабличнаяЧасть1.Сумма;

    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


    
    
            

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры
 
  Рекламное место пустует
   Shamil84
 
1 - 09.12.17 - 18:28
Чуть подправил))

Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Количество = Выборка.Количество;
        Движение.Стоимость = Выборка.Сумма;
   Pandoch
 
2 - 09.12.17 - 18:39
попробуй добавить Движения.ОстаткиТоваров.Записать()
   Pandoch
 
3 - 09.12.17 - 18:45
хотя и без этого должно работать.

параметры запроса в рабочем коде же раскоменчены? отладкой проверял, в цикл вобще заходит?
   Mankubus
 
4 - 09.12.17 - 20:24
В начале добавь движения. Остатки товаров. Записывать = истина
   Shamil84
 
5 - 09.12.17 - 21:46
Да разкоментировал параметры, блин отладкой в цикл не заходит( чет я не догадался посмотреть отладкой.
   Shamil84
 
6 - 09.12.17 - 21:47
Запрос рабочий, в консоле запроса набирал все четко выходит, чет с кодом не то((
   Shamil84
 
7 - 09.12.17 - 21:50
Да если запустить конструктор движений регистр накопления там отсутствует(. код с запросом затираешь регистр снова появляется в конструкторе
   МимохожийОднако
 
8 - 09.12.17 - 22:12
Используй набор записей
   Shamil84
 
9 - 09.12.17 - 22:19
Все ок в Цикл заходит. Крутится)) блин но в регистре движении по остаткам ничего(
   МимохожийОднако
 
10 - 09.12.17 - 22:21
выкинь запрос, бери из табличной части данные
 
  Рекламное место пустует
   Shamil84
 
11 - 09.12.17 - 22:28
Да я понял, запрос нужен, дело в том что мне нужно посчитать себестоимость всего товара сколько осталось в остатках. Т.е мне нужно с регистра остатков вытащить количество и сумму. Один фиг то же самое.

Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!


    // регистр РегистрЦен

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

    // регистр ОстаткиТоваров Расход

    
            //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ


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

    КонецЦикла;
    
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


    
    
            

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры
   Shamil84
 
12 - 09.12.17 - 22:43
Все ОК записывает. Странно а почему он в конструкторе не отражается? Т.е если конструктором строишь движение там ведь регистры появляются ставишь регистры и сохраняешь, а тут как бы заходишь в конструктор движение а там только один сохраненый регистр хотя должно быть два.
   МимохожийОднако
 
13 - 09.12.17 - 22:54
Конструктор для затравки. Остальное пишешь сам.
   h-sp
 
14 - 09.12.17 - 23:51
(12) может из-за этого
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда


остатка не хватает


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