Программирование внешней печатной формы

1. YozZzhik 19.10.21 10:41 Сейчас в теме
Программирую внешнюю печатную форму. Смысл в том, чтобы учитывать расход по номенклатуре. Но не просто за период, а за определенные даты за период. Т.е. есть период в месяц, за этот месяц, предположим, 10 отпусков товаров. Т.е. поле расход "размножается" по количеству таких дат (отпусков товара) за месяц. "Размножение" шапки я благополучно сделал (скрин "Реестры").
Далее необходимо заполнить тело таблицы. Формирую запрос, который выводит мне итоговый результат по каждой номенклатуре, а во второй группе находит те даты, за которые по данной номенклатуре был отпуск. Скрин "Результат запроса".
Теперь, если я буду заполнять параметр области с реестрами (пустая область на первом скрине) предположим для номенклатуры из скриншота, то при обходе результатов второй группировки будет добавлено 3 ячейки подряд, не сопоставимые с датами в шапке таблицы.

К этому вопрос, возможно ли как-то вытащить все даты за период для каждой группировки по номенклатуре. Т.е. сейчас выводятся даты по факту отпуска, а мне нужно, чтобы выводились все даты за период. Скрин " Как нужно"

Сам запрос:

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
втРегистр.Период КАК Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
СУММА(втРегистр.КоличествоРасход) КАК КоличествоРасход,
СУММА(втРегистр.СтоимостьРасход) КАК СтоимостьРасход
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ втРегистр КАК втРегистр
ПО (Номенклатура.Ссылка = втРегистр.АналитикаУчетаНоменклатурыНоменклатура.Ссылка)

СГРУППИРОВАТЬ ПО
втРегистр.Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура,
Номенклатура.Наименование

УПОРЯДОЧИТЬ ПО
Наименование
ИТОГИ ПО
Наименование

Заранее спасибо за ответы. PS программирую недавно)
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
16. MACTEP1C 19.10.21 12:59 Сейчас в теме
Похоже, топик-стартеру нужен кросс-отчёт. Тогда нужно читать про ОбходРезультатаЗапроса.ПоГруппировкам.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. DBV 19.10.21 11:12 Сейчас в теме
(1) Не очень понятно, что надо.
Но если я правильно понял, то просто добавить в Итоги поле Период и при обходе второй группировки присоединять

П.с: В первом запросе лучше добавить условие не в конце, а в параметры виртуальной таблицы.
И получать остатки можно в первом запросе
9. YozZzhik 19.10.21 11:18 Сейчас в теме
(7) Спасибо! С оптимизацией и параметрами виртуальной таблицы разберусь попозже)

Что нужно:
У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?

Есть запрос, благодаря которому я получаю все значащие даты за период и заполняю шапку области с Расходом:
ВЫБРАТЬ
	НАЧАЛОПЕРИОДА(ОтпускТоваровВОтделение.Дата, ДЕНЬ) КАК Дата
ИЗ
	Документ.ОтпускТоваровВОтделение КАК ОтпускТоваровВОтделение
ГДЕ
	ОтпускТоваровВОтделение.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

СГРУППИРОВАТЬ ПО
	НАЧАЛОПЕРИОДА(ОтпускТоваровВОтделение.Дата, ДЕНЬ)
Показать

Его результат - все даты, когда были отпуски в отделение, т.е. 5,7,8,11,12,15 числа.

Пробовал левым соединением приклеить к нему результат прошлого запроса, все даты все равно не выводятся
10. DBV 19.10.21 11:29 Сейчас в теме
(9) ОтпускТоваровВОтделение является регистратором себестоимости?
11. YozZzhik 19.10.21 11:30 Сейчас в теме
(10)
является регистратором

Да
13. DBV 19.10.21 12:12 Сейчас в теме
(11) тогда в первом запросе у Вас уже есть данные регистратору

В первом запросе получить поле Регистратор тогда, проверить на тип документа
Во втором запросе добавить в Итоги Регистратор

Обход запроса делать по группировкам:
Сначала по номенклатуре, потом по регистратору (при обходе по регистратору, присоединять к табличному документу колонки)
2. FatPanzer 19.10.21 10:44 Сейчас в теме
Потрясающий талант. Написать заголовок про ВПФ, а в теле сообщения написать про недостаток работы с макетами.. .
3. YozZzhik 19.10.21 10:50 Сейчас в теме
(2)
2. FatPanzer 15 19.10.21 10:44 Сейчас в теме
Потрясающий талант. Написать заголовок про ВПФ, а в теле сообщения написать про недостаток работы с макетами.. .

Научите как правильно, я обязательно исправлю. Главное, чтобы не нашелся следующий, кого не устроит ваш заголовок ;)
4. FatPanzer 19.10.21 10:56 Сейчас в теме
(3) Правильно так:
Заголовок: Строю дом
Сообщение: Какой нож купить для правильной нарезки линолеума?
5. YozZzhik 19.10.21 10:59 Сейчас в теме
(4)
акой нож купить для правильной нарезки линолеум

Ок, людей с чувством юмора я уважаю!) А по существу есть что ответить?)
6. homer_ 78 19.10.21 11:05 Сейчас в теме
Я честно говорят так и не понял что надо, два раза перечитал)
Предлагаю автору на картинке показать что есть в таблице и что хотим видеть в отчете и что получается
8. YozZzhik 19.10.21 11:15 Сейчас в теме
(6)
но говорят так и не понял что надо, два раза перечитал)
Предлагаю автору на картинке показать что есть в таблице и что хотим видет

У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?
12. YozZzhik 19.10.21 11:44 Сейчас в теме
(6) Вот есть результат запроса (скрин 1)
Есть макет с областью, который сейчас заполнится вот так (скрин 2)
А надо вот так (скрин 3)
Прикрепленные файлы:
14. Release 19.10.21 12:15 Сейчас в теме
(12) 1. Пользуйтесь тегами для кода.
2. Вам нужен вывод по всей номенклатуре, что есть в справочнике? Вот прям по всей? И с помеченными на удаление тоже?
3. Выбираем обороты по регистратору, а потом приводим периоды к началу дня и группируем. В чём смысл регистратора?
4. Ну и не нужно выводить значения куда придётся, нужно индекс присоединяемой колонки учитывать для заполнения корректного значения. Соответствие, к примеру, в помощь.
5. Как вариант перестроить запрос, для первой полученной таблицы (которая втРегистр) сделать полное соединение самой на себя с выборкой по двум полям Период и Номенклатура и флагом Различные (чтоб без группировки). Потом полученную таблицу еще раз соединить левым соединением с первичной таблицей. Будут все даты с привязкой ко всей номенклатуре в первой таблице. (Оптимизация: полное соединение делать после выборки различных по Период и Номенклатура).
15. homer_ 78 19.10.21 12:41 Сейчас в теме
(12) Я тебя могу однозначна сказать, надо переделывать все.
Скорее всего ты взял за основу имеющийся отчет, но его конструкция вывода тебе вряд ли подойдет.
16. MACTEP1C 19.10.21 12:59 Сейчас в теме
Похоже, топик-стартеру нужен кросс-отчёт. Тогда нужно читать про ОбходРезультатаЗапроса.ПоГруппировкам.
Оставьте свое сообщение

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