• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите, пожалуйста с отчетом

  • Автор темы Mark888
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Mark888

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



Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");

Таб.ВывестиСекцию("Деталь|Шапка");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

Таб.ВывестиСекцию("Заголовок|Деталь");

Пока Запрос.Группировка(1)=1 Цикл

Таб.ПрисоединитьСекцию("Заголовок|Место");
КонецЦикла;

Запрос.ВначалоВыборки();

Пока Запрос.Группировка(1) = 1 Цикл


Пока Запрос.Группировка(2) = 1 Цикл
Таб.ВывестиСекцию("Строка|Деталь");
КонецЦикла;
Таб.ПрисоединитьСекцию("Строка|Место");
КонецЦикла;

Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");

КонецПроцедуры
----------------------------------------------------------------------
Пробывал разные варианты. Смотрел на аналогичный код в методичке, вроде делаю все как там описано- на выходе бред какой-то получается. Если не сложно, подскажите, пожалуйста начинающему.
 
Z

Zab

поменяй местами группировки. При выводе в таблицу: Внешний цикл, ВывестиСекцию - выводи начало строки, с деталью. Вложенный цикл, ПрисоединитьСекцию - присоединяй столбцы со значениями остатков по складам. Ну и соответственно в запросе порядок группировок наоборот. Удачи
 
L

LSH

1. При такой последовательности группировок (Место -> Деталь) такой вид отчета, который надо тебе построить сложно.
2. Необходимо использовать ТаблицуЗначений с динамическим добавлением колонок, соответствующих складам, т.к. будет неправильно выводиться склад (например, всего складов 5, товар есть только на 3-ем складе, у тебя он выведется в 1-ую колонку, что неправильно).
3. Вместо ТаблицыЗначений можно в запросе написать "|Группировка Место Все;". Тогда будут выбираться все имеющиеся склады, но в отчет попадет много ненужного.
 
B

b00tch

<!--QuoteBegin-LSH+23:07:2007, 08:56 -->
<span class="vbquote">(LSH @ 23:07:2007, 08:56 )</span><!--QuoteEBegin-->"|Группировка Место Все;".
[snapback]72999" rel="nofollow" target="_blank[/snapback]​
[/quote]

а ишш0 есть ключевое слово Все Вошедшие В Запрос...
 
M

Mark888

Спасибо за советы. Действительно, через Запрос получается не то. Слишком много лишнего. Проще через ТаблицуЗначений.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!