Добрый день. Есть задача создать простой отчет по продажам, но так как я не работал с 7-кой, то возникают небольшие трудности. Хотел попросить помощи у форумчан. Отчет должен состоять из таких колонок:Менеджер, Контрагент, Артикул товара, Наименование товара, Отпускная цена, отгружено. Создаю отчет через конструктор отчетов, но в итоге, когда формирую отчет у меня он пустой. Вот код отчета:
Процедура Сформировать()Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Менеджер = Регистр.ПартииТоваров.Контрагент.Менеджер;
|Наименование = Регистр.ПартииТоваров.Контрагент.Наименование;
|Артикул = Регистр.ПартииТоваров.Товар.Артикул;
|Наименование1 = Регистр.ПартииТоваров.Товар.Наименование;
|Группировка Менеджер;
|Группировка Наименование;
|Группировка Артикул;
|Группировка Наименование1;
|Условие(Менеджер=ВыбМенеджер);
|Условие(Наименование1 в ВыбТовар);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедурыЕсли Запрос.Выполнить(ТекстЗапроса) = 0ТогдаВозврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1Цикл// Заполнение полей МенеджерПока Запрос.Группировка(2) = 1Цикл// Заполнение полей НаименованиеПока Запрос.Группировка(3) = 1Цикл// Заполнение полей АртикулПока Запрос.Группировка(4) = 1ЦиклЕсли Запрос.ЭтоГруппа() = 1Тогда// Заполнение полей Наименование1
Таб.ВывестиСекцию("Менеджер");
Таб.ВывестиСекцию("Наименование");
Таб.ВывестиСекцию("Артикул");
Таб.ВывестиСекцию("Наименование1");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Макет выглядит таким образом: Что я делаю не так? Почему в отчете нет данных?
самое первое - попробуйте закомментировать для начала ВывестиСекцию(), и поставить Сообщить(Запрос.Менеджер) и тп. Это покажет, работает запрос или нет. Так как в таблице могут тоже быть ошибки, или просто не заданы формулы в секциях.
То что, вы согнали скопом во внутреннюю группировку вывод четырех секций покажет некрасивый очень результат все равно.
Зачем вам условие во внутренней группировке на ЭтоГРуппа() ?
Сообщение отредактировал Домовик - 27.05.15, 19:36
Почти ветеран
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5
Ну во первых, если это ТИС, то отпускную цену из регистра вы не вытянете просто так, так как там нет такого ресурса, вы можете вытянуть оборот и кол-во, и рассчитать цену, и опять же не ясно какая нужна детализация, по каждой строке документа? или все свернуть по товарной позиции, если да, то о отпускной цене тут говорить нет смысла, есть только средняя цена, поэтому лучше вытягивать оборот по товару и кол-во списанное, соответственно рассчитать среднюю цену, но уж никак не без итогов..как выше написали, иначе функции зачем вставлять. Потом Менеджер, если отбор по 1 менеджеру, то зачем нужна колонка, потом развернуть по контрагентам, потом по товарам, ну типа так:
Процедура Сформировать()Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Менеджер = Регистр.ПартииТоваров.Контрагент.Менеджер;
|Контрагент= Регистр.ПартииТоваров.Контрагент;
|Товар= Регистр.ПартииТоваров.Товар;
|КвоОтгр = Регистр.ПартииТоваров.ОстатокТовара;
|СумОтгр = Регистр.ПартииТоваров.Оборот;
|Функция КвоСум = Расход(КвоОтгр);
|Функция СумСум = Расход(СумОтгр);
|Группировка Контрагент Упорядочить по Контрагент.Наименование без Групп;
|Группировка Товар Упорядочить по Товар.Наименование без Групп;
|Условие(Менеджер=ВыбМенеджер);
|Условие(Товар в ВыбТовар);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0ТогдаВозврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1Цикл
Сообщить(Запрос.Контрагент);
Пока Запрос.Группировка(2) = 1Цикл
Сообщить(""+Запрос.Товар.Наименование+"/"+Запрос.Товар.Артикул+"/"+Запрос.КвоСум+"/"+Запрос.СумСум);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Мда... Вообщето правильней было б формировать по оборотному регистру, если такой имеется... Хотя и по регистру остатков тоже реально вытянуть нужную информацию, в т.ч. и розничные цены типа:
ТекДок = Регистр.ПартииТоваров.ТекущийДокумент;
и
Условие(Когда ТекДок.Вид = "Расходная накладная")
...хотя, инфы недостаточно.
Какой это регистр оборотный или остатков ? В регистре Остатков в реквизитах вполне реально могут храниться виды движений: приход, расход или возврат, со ссылкой в ресурс, например Обороты... Решений вопроса немеряное количество, вплоть до выборки циклом документов, с последующей выгрузкой табличной части в таблицу значений, вложением этой таблицы значений в последующую Таблицу значений и добавлением этого "добра" в список значений по символьному представлению "Иванов", "Петров", "Сидоров" с последующей передачей в запрос как скопом так и по отдельности, все зависит от того какой приходный документ выкурить ):
Автор, может больше раскажете что у Вас там за зверюка или заскриньте содержимое регистра из конфигуратора дабы не флудить ?
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Уже ближе. Еще раз, это точно регистр остатков ? И заодно расшифруйте что такое "КодОперации" и какие значения там хранятся. В конечном результате Вам что нужно вытянуть только обороты или еще нужно получить сумму закупки, сумму продажи и процент дохода ? Чет у меня не выходит угадывать.
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Почти крутой
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0
Цитата(r1p88@mail.ru @ 27.05.15, 14:26)
Есть задача создать простой отчет по продажам
Отчет по продажам - это не простой отчет. Судя по регистрам - у вас конфигурация ТиС. В ней есть подобный отчет, чувствую, вы взяли его за основу. В свое время добавлял в него Менеджеров, каковыми были просто авторы документов.
КодОперации- вероятно код хоз. операции для обмена Торговля-БухУчет( В комплексной там тоже от регистров проводки делаются по хоз операциям). к задаче это не имеет отношения. Не грузите товарища. Пусть хоть что-то выведет, а когда выведет и разберется, добавит, изменит, нарастит, что нужно.
Сообщение отредактировал Домовик - 29.05.15, 12:28
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!