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