Подскажет ли кто?
Суть проблемы: бух захотел отчет по продукции (счет 43) в разрезе видов номенклатуры (сиречь видов деятельности). Надо было уважить, и, поскольку вид номенклатуры есть реквизит номенклатуры, решил применить запрос. Привожу текст:
Функция ВыбБухИт(ТипВыборки,ТипСуммы,Товар)
Если ТипВыборки=1 Тогда //"СНД"
Возврат БухИт.СНД(Сч43,ТипСуммы,,Товар);
ИначеЕсли ТипВыборки=3 Тогда //"СКД"
Возврат БухИт.СКД(Сч43,ТипСуммы,,Товар);
ИначеЕсли ТипВыборки=5 Тогда //"ДО"
Возврат БухИт.ДО(Сч43,ТипСуммы,,Товар);
ИначеЕсли ТипВыборки=6 Тогда //"КО"
Возврат БухИт.КО(Сч43,ТипСуммы,,Товар);
КонецЕсли;
КонецФункции
Это потому, что в запросе конструция типа Функция СальдоН=Сумма(БИ.СНД(""43"",1,,номенклатура)) не проходит, а проходит следующее:
БухИт.Рассчитать(ВыбНачПериода,ВыбКонПериода,Сч43);
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Продукция = Справочник.Номенклатура.ТекущийЭлемент;
|Заказ = Справочник.Номенклатура.ВидНоменклатуры;
|Функция НачСумма = Сумма(ВыбБухИт(1,1,Продукция));
|Функция НачКол_во = Сумма(ВыбБухИт(1,3,Продукция));
|Функция КонСумма = Сумма(ВыбБухИт(3,1,Продукция));
|Функция КонКол_во = Сумма(ВыбБухИт(3,3,Продукция));
|Функция ДОСумма = Сумма(ВыбБухИт(5,1,Продукция));
|Функция ДОКол_во = Сумма(ВыбБухИт(5,3,Продукция));
|Функция КОСумма = Сумма(ВыбБухИт(6,1,Продукция));
|Функция КОКол_во = Сумма(БыбБухИт(6,3,Продукция));
|Группировка Заказ Упорядочить по Заказ.Код;
|Группировка Продукция Упорядочить по Продукция.Наименование;
|Условие (Продукция.ТипНоменклатуры=Перечисление.ТипыНоменклатуры.Продукция);
|"//}}ЗАПРОС
;
Конечно, БухИт и Сч43 общие переменные, Сч43=СчетПоКоду("43"); (простите за подробности)
Так вот, все чудно сработало, но при выводе (не стану утомлять тривиальным) выяснилось, что Запрос.НачСумма и другие имеют ЦЕЛЫЙ тип. (Само собой, в ячейке таблицы: Запрос.НачСумма#N14.2)
Конешно, значения можно определять и вне запроса, при просмотре
Пока Запрос.Группировка("Заказ") = 1 Цикл
Пока Запрос.Группировка("Продукция")=1 Цикл
НачСумма=БухИт.СНД(Сч43,1,,Запрос.Продукция);
и т.д. и т.п., но это не так красиво, медленней, и, главное, итоги имеем не в начале цикла Запрос.Группировка("Заказ"), а после Запрос.Группировка("Продукция"), что портит весь макияж при выводе.
Может, кто-то побеждал сей глюк? (релиз 18) Поделитесь, а?