По любому счету (или регистру) в конфигурации, по которому ведется учет по двум аналитикам (например, материалы и склады), необходимо разработать отчет по остаткам. Вниз должны идти материалы, а вправо склады. Отчет должен формироваться на указанную пользователем дату, с возможностью отбора по материалам и складам. Остатки выводить только по количеству. Если по какому-то из складов нет остатка по выбранному пользователем материалу, то и колонка с наименованием склада не должна выводиться
Отчет должен быть разработан БЕЗ использования СКД (системы компоновки данных), БЕЗ построителя отчета, БЕЗ построителя запроса.
Высылать для проверки можно только отчет (erf), можно добавить несколько скриншотов с результатом работы отчета.
(1) Решение задачи Вы можете найти в книге "Язык запросов 1С:Предприятия 8" (Е.Ю.Хрусталева) в "Главе 2. Работа с запросами во встроенном языке", часть "Создание кросс-отчета" (стр. 194). Замените только виртуальную таблицу оборотов остатками.
(3) Значит это проверка элементарных навыков алгоритмизации, работы с запросами и табличным документом.
Рисуешь на форме нужные отборы и параметры, передаешь их в запрос, выгружаешь результат в таблицу значений, получаешь из нее наборы номенклатуры и складов, идешь по ним в цикле (по складам - вложенный), находишь нужные данные на пересечении в ТЗ и формируешь табличный документ слева-направо, сверху-вниз построчно. Кому-то проще сначала транспонировать таблицу значений, чтобы упростить блок вывода в табличный документ. Но как по мне - это лишние телодвижения.
(9) Мне это не интересно. Может, кому другому...
(14) Есть такой объект. ПостроительЗапроса. Сейчас редко используется. Но иногда полезен, так как может работать с разными интересными источниками данных.
(9)Зачем браться за задачу, если вы не знаете как она решается и не хотите разбираться, чтобы найти решение?
5sm за все - у кого час работы 2.5sm(150рублей ) - ну пусть делает......
(13)что есть построитель запроса? конструктор? как вы в готовом запросе (тексте) проверите написали -ли его руками или создали конструктором?
Результат в виде табличного документа подойдет?
Еще встречал интересный вариант, когда формируется две выборки. Одна с итогами по номенклатуре, другая с итогами сначала по складам, а потом по номенклатуре. Тогда можно обойтись только обходом выборок. Вывод строк идет при обходе первой выборки, а вывод колонок - поиском во второй.
Но это было удобно при построении универсальных отчетов на 7.7, где шахматка была одна из опций. А иначе накладно. Все-таки два запроса.
Попробуй вот так. Для примера взял регистр накопления ТоварыНаСкладах
Макет рисовать не стал, я думаю знаешь как выводить и присоединять области.
Отбор = Новый Структура;
Отбор.Вставить("Склад",СписокСкладов);
Отбор.Вставить("Номенклатура",СписокНоменклатуры);
ТаблицаОстатков = РегистрыНакопления.ТоварыНаСкладах.Остатки(НаДату,Отбор,"Склад,Номенклатура","Количество");
ТаблицаОстатков.Сортировать("Номенклатура,Склад");
ТаблицаОстатков.Скопировать(ВремТаблица,"Склад");
ВремТаблица.Свернуть("Склад","Количество");
МассивСкладов = ВремТаблица.ВыгрузитьКолонку("Склад");
Таб = Новый ТабличныйДокумент;
//Заполнение шапки
//Выводим область шапки первой колонки (Номенклатура)
Для Сч=1 по МассивСкладов.Количество() Цикл
//Присоединяем область шапки других колонок (Названия складов)
КонецЦикла;
ТекущаяНоменклатура = "";
Для Сч=1 По ТаблицаОстатков.Количество() Цикл
СтрокаТаблицы = ТаблицаОстатков.Получить(Сч);
Если НЕ СтрокаТаблицы.Номенклатура = ТекущаяНоменклатура Тогда
//Тут выводим область (Номенклатура)
Иначе
//Тут присоединяем область (Количество)
КонецЕсли;
ТекущаяНоменклатура = СтрокаТаблицы.Номенклатура;
КонецЦикла;
я думаю знаешь как выводить и присоединять области
Спасибо за код. Я нашел пример кода, где выводятся и присоединяются области макета
Но не понятно, как настраивать форму обработки, чтобы на ней появились поля для отбора и кнопки для управления отчетом
Поэтому желательно все таки представить решение в виде erf модуля. За это я готов рассчитаться ;)
(23)Налепил на скорую руку, проверить некогда, бегу домой с работы.
Если не заработает - завтра доделаю.
Делал на конфигурации Розница 2.3 УФ
Но в УТ 11.3 такие же регистры. должно заработать
(25) Ну во первых строки задвоены, а во вторых не учитывается остаток к отгрузке. Отчет не правильно пока работает. Продолжаем наблюдение)
p/s Предлагаю запрос :)
ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) - СУММА(ТоварыНаСкладахОстатки.КОтгрузкеОстаток) КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| &Дата,
| ВЫБОР
| КОГДА НЕ &Номенклатура = &НоменклатураПустойМассив
| ТОГДА Номенклатура В (&Номенклатура)
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА НЕ &МассивСкладов = &СкладыПустойМассив
| ТОГДА Склад В (&МассивСкладов)
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК ТоварыНаСкладахОстатки
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Склад
|
|УПОРЯДОЧИТЬ ПО
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Склад;