Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/268: Рейтинг темы: голосов - 268, средняя оценка - 4.66
moxkross
1

секции в макете 1с 7.7

26.09.2011, 16:54. Показов 52577. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, как поправить макет или же запрос и его вывод в макет, чтобы все получилось правильно.
Скрины вложил. Там вся суть проблемы.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Процедура Запрос()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Запрос)
|Период с ВыбНачПериода по ВыбКонПериода;
|Номенклатура = Регистр.Продажи.Номенклатура;
|Контрагент = Регистр.Продажи.Контрагент;
|Количество = Регистр.Продажи.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура упорядочить по Номенклатура.Наименование;
|Группировка Контрагент упорядочить по Контрагент.Наименование;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
 
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Запрос");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Номенклатура
Пока Запрос.Группировка(2) = 1 Цикл
Таб.ВывестиСекцию("Номенклатура");
 
// Заполнение полей Контрагент
Таб.ВывестиСекцию("Контра");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Запрос", "");
КонецПроцедуры
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2011, 16:54
Ответы с готовыми решениями:

Может ли быть в секции еще секции?
Добрый времени суток. Я самообучаюсь верстке, поэтому у меня к вам такие простые и странные...

Структуры. Вывести информацию по победителю в каждой секции и найти средний бал по каждой секции
Ведомости про участников конкурса содержат следующую информацию: фамилию,имя,секцию,набранный...

Найти и вывести информацию о победителе в каждой секции. Найти средний балл каждой секции.
Добрый вечер, друзья) Прошу помочь с кодом, а именно с функцией search_winner. Совсем запутался,...

Расшифровка в макете
Есть отчет, в нем форма и макет. Макет открывается в отдельном окне, в него выводиться вся инф....

24
moxkross
28.09.2011, 15:32 21
Author24 — интернет-сервис помощи студентам
Еще момент.
В режиме 1с предприятия, делая отчет, получаю то что показано на последнем рисунке.
Запускаю отладчик, ставлю точку останова на строке, например:
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Прохожу дальше, получаю
ТЗ.КоличествоСтрок() = 0;
и
Запрос.Группировка(1) = 0.

И ошибку:
Пока Запрос.Группировка(2) = 1 Цикл
{Отчет.ПродажиТоваров.Форма.Модуль(43)}: Не было обращения к старшим уровням выборки.

Как такое возможно? Как влияет режим отладки?
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 107
28.09.2011, 16:24 22
Цитата Сообщение от maxgross
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Прохожу дальше, получаю
ТЗ.КоличествоСтрок() = 0;
и
Запрос.Группировка(1) = 0.

И ошибку:
Пока Запрос.Группировка(2) = 1 Цикл



Цитата Сообщение от maxgross
Как такое возможно?
Ну разве что ТЗ.КоличествоСтрок() = 1 и Запрос.Группировка(1) = 1 не были условиями для вхождения внутрь цикла.
В отладчике открыл старую версию отчета.
Глюки 1Ски

Но у меня такого еще не было ни разу. ;)
0
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 107
28.09.2011, 16:42 23
Да, еще одна штука - но это из разряда шаманства.
Запрос.Группировка(1) несомненно правильно, но я никогда так не пишу, я обращаюсь напрямую к названию группировки, т.е.

Запрос.Группировка("Контрагент");
Запрос.Группировка("Товар");

Точно так же написано в хелповке.
И помнится, у меня что-то долго не получалось, а вылечилось простой заменой цифры на название.
0
moxkross
28.09.2011, 18:18 24
Попробовал изменить на названия - не получилось.

Вот небольшая база, где пытаюсь всё это сделать.
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 107
28.09.2011, 21:35 25
Цитата Сообщение от maxgross
Пока Запрос.Группировка(2)=1 Цикл
Для й=1 по ТЗ.КоличествоСтрок() цикл
ТЗ.ПолучитьСтрокуПоНомеру(й);
Если ТЗ.Контрагент = Запрос.Контрагент тогда
Сумма = Запрос.КоличествоСумма;
Иначе Сумма =0;
КонецЕсли;
Таб.присоединитьСекцию("Номенклатура|Контра");
КонецЦикла;
КонецЦикла;
Вот этот кусочек если не можешь пройти в отладчике, возьми пройди на листике бумаги.
Ты обходишь группировку по контрагентам - два раза, внутри обходишь ТЗ - еще два раза, и все четыре выводишь в таблицу.
В общем, здесь нужно подумать, каким образом отсечь контрагентов, которые не должны быть в выводимой колонке.
0
28.09.2011, 21:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2011, 21:35
Помогаю со студенческими работами здесь

УТ 3.1 Расшифровка в макете 1C 8.3
Есть документ СверкаВзаиморасчетов. В нем есть макет "ПФ_MXL_АктСверкиВзаимныхРасчетов" (Акт сверки...

Колонки в макете
Добрый день! Не могу понять как создать колонки с датами. Объясню что надо: Я выбираю период с...

Группировка в макете
Пытаюсь группировать данные в макете таким вот образом ТабДок.НачатьАвтоГруппировкуСтрок();...

Отчет На Макете
Добрый день! Покажите пожалуйста на примере, как сделать отчет с помощью макета (не СКД) вручную!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru