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

Отчет ничего не выводит...

Автор Nail2010, 18 апр 2011, 10:01

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

Nail2010

Доброго дня всем!
Подскажите, в чем загвоздка в коде - формирует шапку таблицы, но не заполняет ничего.....


Процедура ДействияФормыОтчетСформировать(Кнопка)
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
Отчет(ТабДок, ВыбДата,ВыбСклад, ВыбТипЦен);
КонецПроцедуры

функция РознЦена(Номенклатура,ВыбДата,ВыбТипЦен)
Отбор = Новый Структура("Номенклатура,ТипЦен",Номенклатура,ВыбТипЦен);
ЗначенияРесурсов = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ВыбДата,Отбор);
Возврат  ЗначенияРесурсов.Цена;

КонецФункции

Процедура Отчет(ТабДок, ВыбДата,ВыбСклад, ВыбТипЦен) Экспорт

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

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьНоменклатураИерархия = Макет.ПолучитьОбласть("НоменклатураИерархия");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

ТабДок.Очистить();
ОбластьЗаголовок.Параметры.ВыбДата = Формат(ВыбДата,"ДФ='дд ММММ гггг'") + " г.";
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

Если ВыборкаНоменклатура.Номенклатура.ЭтоГруппа = Ложь Тогда
Цена = РознЦена(ВыборкаНоменклатура.Номенклатура,ВыбТипЦен,);
КонецЕсли;


ТабДок.Вывести(Область, ВыборкаНоменклатура.Уровень());


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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ОбластьДетальныхЗаписей.Параметры.Номенклатура = СокрЛП(ВыборкаДетальныеЗаписи.Номенклатура.НаименованиеПолное);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры

Klyacksa

Ну, первым делом ставим точку останова и проверяем, вернул ли нам запрос хоть какие-то данные
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Nail2010


Klyacksa

Хаха, всегда бы так вопросы решались ;)
Впрочем, тогда не нужен был бы форум.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

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

Рейтинг@Mail.ru

Поиск