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

Запросы

Автор Элина, 02 дек 2017, 22:06

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

Элина

Есть следующий листинг. Срабатывает всё без ошибок, но проблема в том, что движений по регистрам ОстаткиМатериалов и СтоимостьМатериалов нет.
В чем может быть ошибка?


Процедура ОбработкаПроведения(Отказ, Режим)
   
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;

МенеджерВТ = Новый МенеджерВременныхТаблиц;

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

Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;
Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;

Движения.СтоимостьМатериалов.Записать();
Движения.ОстаткиМатериалов.Записать();

Результат = Запрос.Выполнить();


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

Результат = Запрос2.Выполнить();            

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
   Если ВыборкаДетальныеЗаписи.Количество = 0
      Тогда
      СтоимостьМатериала = 0;
Иначе
СтоимостьМатериала  =  ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи. Количество;    
КонецЕсли;
   
Если  ВыборкаДетальныеЗаписи.ВидНоменклатуры  =  Перечисления.ВидыНоменклатуры.Материалы ИЛИ
   ВыборкаДетальныеЗаписи.ВидНоменклатуры  =  Перечисления.ВидыНоменклатуры.Лекарства ИЛИ
   ВыборкаДетальныеЗаписи.ВидНоменклатуры  =  Перечисления.ВидыНоменклатуры.Инструменты  Тогда
   
   // Регистр ОстаткиМатериалов Расход
    Движение = Движения.ОстаткиМатериалов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Склад = Склад;
    Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
   
   // Регистр СтоимостьМатериалов Расход
    Движение = Движения.СтоимостьМатериалов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;    
         
КонецЕсли;

// Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Клиент = Клиент;
Движение.Врач = Врач;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество =  ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе; 

КонецЦикла;
Движения.Записать();

КонецПроцедуры

ilyay

После

Движения.СтоимостьМатериалов.Записать();
Движения.ОстаткиМатериалов.Записать();

еще раз напишите

Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;

Теги:

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

Рейтинг@Mail.ru

Поиск