по результатам выборки выводятся не все данные

1. Simon-Phoenix 28.02.08 07:42 Сейчас в теме
Проблема в том, что цена не считывается, следовательно и сумма не просчитывается...т.е. обработка видит, что у позиции есть заводская цена, но не может ее прочитать...
Если же вместо "ВыборкаТовар = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Товар");" ставлю "ВыборкаТовар = Результат.Выбрать();", то каждая позиция утраивается (видимо т.к. цен у нас три: розничная, закупочная и заводская) и цена заводская прописывается у третей строки каждой позиции, но сумма и в этом случае все равно не считается...никак не могу понять что к чему...несколько дней уже бьюсь
Процедура КнопкаВыполнитьНажатие(Кнопка)

Запрос = Новый Запрос;
Запрос.Текст =

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


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

Макет = ЭтотОбъект.ПолучитьМакет("Макет");
Таблица = ЭлементыФормы.Таблица;
Таблица.Очистить();
Таблица.Вывести(Макет.ПолучитьОбласть("Шапка|База"));

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

Таблица.ФиксацияСверху = Таблица.ВысотаТаблицы;

Пока ВыборкаТовар.Следующий() Цикл
ВыборкаПодразделение = ВыборкаТовар.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Подразделение", "Все");
Пока ВыборкаПодразделение.Следующий() Цикл
Область = Макет.ПолучитьОбласть("Шапка|Данные");
Область.Параметры.Заполнить(ВыборкаПодразделение);
Таблица.Присоединить(Область);
КонецЦикла;
Прервать;
КонецЦикла;

ВыборкаТовар.Сбросить();

ОбластьБаза = Макет.ПолучитьОбласть("Строка|База");
ОбластьДанные = Макет.ПолучитьОбласть("Строка|Данные");

Пока ВыборкаТовар.Следующий() Цикл
Цена = ?(ВыборкаТовар.Цена = NULL, 0, ВыборкаТовар.Цена);
ОбластьБаза.Параметры.Заполнить(ВыборкаТовар);
Таблица.Вывести(ОбластьБаза);

ВыборкаПодразделение = ВыборкаТовар.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Подразделение","Все");
Пока ВыборкаПодразделение.Следующий() Цикл
КоличествоБезнал = ?(ВыборкаПодразделение.КоличествоБезнал = NULL, 0, ВыборкаПодразделение.КоличествоБезнал);
СуммаБезнал = КоличествоБезнал * Цена;
ОбластьДанные.Параметры.Заполнить(ВыборкаПодразделение);
Таблица.Присоединить(ОбластьДанные);
КонецЦикла;

КонецЦикла;

Таблица.ТолькоПросмотр = ИСТИНА;
Таблица.Показать();

ВыборкаТовар.Сбросить();

КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sacred 173 28.02.08 12:21 Сейчас в теме
ВыборкаТовар = Результат.Выбрать(); - каждая позиция утраивается не из-за цен. У вас же указано что используется только заводская цена, то есть одна. Утраивается из-за значений свойств. Непонятно, зачем вообще в запросе свойства, если они не выводятся в результирующий отчёт. Если их убрать - утраивания не будет.
3. Simon-Phoenix 28.02.08 12:37 Сейчас в теме
не, значение свойств нужно...забыл просто отметить при очередной переборке кода
в оригинале должнол быть:
ЗначенияСвойствОбъектов.Значение КАК Производитель

и это не из-за этого, т.к. свойств у номенклатуры 3 как минимум, а обычно не меньше 5 указано...т.е. некоторые позиции должны упятеряться, ушестиряться и т.д. - а они все утраиваются лишь )....
4. Simon-Phoenix 28.02.08 13:34 Сейчас в теме
в общем вывода цены добился, введя отдельно обход по Цене
|ИТОГИ ПО
|Цена,
|Товар,
|Подразделение
--------
Таблица.Вывести(Макет.ПолучитьОбласть("Шапка|База"));
Таблица.Присоединить(Макет.ПолучитьОбласть("Шапка|Цена"));
---------
ОбластьБаза = Макет.ПолучитьОбласть("Строка|База");
ОбластьЦена = Макет.ПолучитьОбласть("Строка|Цена");
ОбластьДанные = Макет.ПолучитьОбласть("Строка|Данные");
----------
Пока ВыборкаТовар.Следующий() Цикл
ОбластьБаза.Параметры.Заполнить(ВыборкаТовар);
Таблица.Вывести(ОбластьБаза);

ВыборкаЦена = ВыборкаТовар.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Цена");
Пока ВыборкаЦена.Следующий() Цикл
Цена = ?(ВыборкаЦена.Цена = NULL, 0, ВыборкаЦена.Цена);
ОбластьЦена.Параметры.Заполнить(ВыборкаЦена);
Таблица.Присоединить(ОбластьЦена);
КонецЦикла;
...но сейчас ругается, что не может преобразовать
СуммаБезнал = КоличествоБезнал * Цена;
в число, хотя я и задал ему условия, что если КоличествоБезнал или Цена отсутствуют, то считать их нулем...
5. Simon-Phoenix 29.02.08 08:47 Сейчас в теме
еще нюанс: на сообщить(Цена ) выводит нули, хотя в таблицу же выводит нормальные цены
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот