Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Почему в РезультатеЗапроса - пусто?

Почему в РезультатеЗапроса - пусто?
Я
   ILove1C
 
05.11.19 - 14:56
Вот запрос и код процедуры.
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

    массив.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    
    Запрос.УстановитьПараметр("Субконто", Массив);    
    
    //РезультатЗапроса = Запрос.Выполнить().Выбрать();
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    МенеджерЗаписи.Перерасход = РезультатЗапроса.КоличествоОборотДт / Запись.Пробег * 100;
    
    МенеджерЗаписи.Записать();
КонецПроцедуры

Расчёт ведётся в регистре сведений.
На строке МенеджерЗаписи.Перерасход = РезультатЗапроса.КоличествоОборотДт / Запись.Пробег * 100; ничего не происходит и не выводится результат в регистре на форме списка.
 
 
   Beduin
 
1 - 05.11.19 - 15:02
У тебя запись в регистре в любом случае, не зависимо от запроса.
   D_E_S_131
 
2 - 05.11.19 - 15:02
А почему должно что-то происходить?
   sqr4
 
3 - 05.11.19 - 15:03
РезультатЗапроса  - таблица значения. ВОт это РезультатЗапроса.КоличествоОборотДт колонка таблицы значений, а че число как тебе видится.
   sqr4
 
4 - 05.11.19 - 15:04
Если РезультатЗапроса.Количество() > 0 Тогда
МенеджерЗаписи.Перерасход = РезультатЗапроса.Итог("КоличествоОборотДт") / Запись.Пробег * 100;
КонецЕсли;
   sqr4
 
5 - 05.11.19 - 15:05
да и ЗАпись.Пробег лучше проверить на ноль
   ILove1C
 
6 - 05.11.19 - 15:05
(3) МенеджерЗаписи помогает сделать вывод на форму списка. Однако, никаких ошибок или вывода результата в колонке не видно.
   D_E_S_131
 
7 - 05.11.19 - 15:08
Не только лишь все знают про "Отладчик"...
   ILove1C
 
8 - 05.11.19 - 15:09
(4) спасибо, сработало!
   dezss
 
9 - 05.11.19 - 16:27
хм...сперва выгрузим в ТЗ, потом посчитаем итог...а почему это сразу в запросе не сделать, а то как-то неоптимальненько))))
   sqr4
 
10 - 05.11.19 - 16:31
(9) до "оптимальненько", ТСу пока далековато)
   dezss
 
11 - 05.11.19 - 16:37
(10) На самом деле, запрос может же выдавать неправильные значения.
Там же группировка по всем полям, а если есть несколько записей с одинаковыми СуммаОборотДт и КоличествоОборотДт?
   dezss
 
12 - 05.11.19 - 16:39
(11) Хотя там обороты по периоду...вроде не должно такого случиться.
   sqr4
 
13 - 05.11.19 - 16:40
(11) запрос не читал, надеюсь учебная задача, а проверяющий объяснит как надо)

Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.