Доброе время суток! Есть регистр остатков (Продукция) - у него есть
измерения: номенклатура, местохранения
ресурсы: количество, сумма
реквизиты: кодоперации, видтмц
есть запрос
при выполнении запроса, если не выбран ВидТМЦ - показываются НачОст(кол-во и сумма), Приход(кол-во и сумма), Расход(кол-во и сумма), КонОст(кол-во и сумма)
Но когда выбираю ВидТМЦ - показываются только приход и расход за период.
Подскажите где грабля! Спасибо!
измерения: номенклатура, местохранения
ресурсы: количество, сумма
реквизиты: кодоперации, видтмц
есть запрос
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Номенклатура = Регистр.Продукция.Номенклатура;
|МестоХранения = Регистр.Продукция.МестоХранения;
|Количество = Регистр.Продукция.Количество;
|Сумма = Регистр.Продукция.Сумма;
|КодОперации = Регистр.Продукция.КодОперации;
|ТипТМЦ = Регистр.Продукция.ТипТМЦ;
|ТекущийДокумент = Регистр.Продукция.ТекущийДокумент;
|Функция КоличествоНачОст = НачОст(Количество);
|Функция КоличествоПриход = Приход(Количество);
|Функция КоличествоРасход = Расход(Количество);
|Функция КоличествоКонОст = КонОст(Количество);
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаПриход = Приход(Сумма);
|Функция СуммаРасход = Расход(Сумма);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Номенклатура упорядочить по Номенклатура.Код без групп все;
|Группировка МестоХранения упорядочить по МестоХранения.Код без групп все;
|Условие(Номенклатура в ВыбНоменклатура);
|Условие(МестоХранения в ВыбМестоХранения);
|Условие(ТипТМЦ в ВыбТипТМЦ);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Номенклатура
Таб.ВывестиСекцию("Номенклатура");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей МестоХранения
Таб.ВывестиСекцию("МестоХранения");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
Показатьпри выполнении запроса, если не выбран ВидТМЦ - показываются НачОст(кол-во и сумма), Приход(кол-во и сумма), Расход(кол-во и сумма), КонОст(кол-во и сумма)
Но когда выбираю ВидТМЦ - показываются только приход и расход за период.
Подскажите где грабля! Спасибо!
По теме из базы знаний
- Описание механизмов программных реализаций на платформе 1С:Предприятие 8.1 : «Использование временных таблиц в запросах»
- Ошибка номер пять. "Получение расчетных данных не из регистра"
- Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Как читать чужой код? Часть 3. Разбор и доработка запросов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) По идее, указание фильтра по ВидТМЦ, (по реквизиту!), сответствует фильтрации движений, т.е. "прихода" и "расхода", возможно, функции остатка теряют актуальность (показаны не все движения), поэтому не отображаются в запросе.
Может, имеет смысл делать два запроса - один по фильтруемым движениям, второй - по остаткам без фильтра по видуТМЦ?
Может, имеет смысл делать два запроса - один по фильтруемым движениям, второй - по остаткам без фильтра по видуТМЦ?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот