Программирую внешнюю печатную форму. Смысл в том, чтобы учитывать расход по номенклатуре. Но не просто за период, а за определенные даты за период. Т.е. есть период в месяц, за этот месяц, предположим, 10 отпусков товаров. Т.е. поле расход "размножается" по количеству таких дат (отпусков товара) за месяц. "Размножение" шапки я благополучно сделал (скрин "Реестры").
Далее необходимо заполнить тело таблицы. Формирую запрос, который выводит мне итоговый результат по каждой номенклатуре, а во второй группе находит те даты, за которые по данной номенклатуре был отпуск. Скрин "Результат запроса".
Теперь, если я буду заполнять параметр области с реестрами (пустая область на первом скрине) предположим для номенклатуры из скриншота, то при обходе результатов второй группировки будет добавлено 3 ячейки подряд, не сопоставимые с датами в шапке таблицы.
К этому вопрос, возможно ли как-то вытащить все даты за период для каждой группировки по номенклатуре. Т.е. сейчас выводятся даты по факту отпуска, а мне нужно, чтобы выводились все даты за период. Скрин " Как нужно"
Сам запрос:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(СебестоимостьТоваровОстаткиИОбороты.Период, ДЕНЬ) КАК Период,
СебестоимостьТоваровОстаткиИОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
СебестоимостьТоваровОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
СебестоимостьТоваровОстаткиИОбороты.СтоимостьРасход КАК СтоимостьРасход
ПОМЕСТИТЬ втРегистр
ИЗ
РегистрНакопления.СебестоимостьТоваров.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , ) КАК СебестоимостьТоваровОстаткиИОбороты
ГДЕ
СебестоимостьТоваровОстаткиИОбороты.РазделУчета = &РазделУчета
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
втРегистр.Период КАК Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
СУММА(втРегистр.КоличествоРасход) КАК КоличествоРасход,
СУММА(втРегистр.СтоимостьРасход) КАК СтоимостьРасход
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ втРегистр КАК втРегистр
ПО (Номенклатура.Ссылка = втРегистр.АналитикаУчетаНоменклатурыНоменклатура.Ссылка)
СГРУППИРОВАТЬ ПО
втРегистр.Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура,
Номенклатура.Наименование
УПОРЯДОЧИТЬ ПО
Наименование
ИТОГИ ПО
Наименование
Заранее спасибо за ответы. PS программирую недавно)
Далее необходимо заполнить тело таблицы. Формирую запрос, который выводит мне итоговый результат по каждой номенклатуре, а во второй группе находит те даты, за которые по данной номенклатуре был отпуск. Скрин "Результат запроса".
Теперь, если я буду заполнять параметр области с реестрами (пустая область на первом скрине) предположим для номенклатуры из скриншота, то при обходе результатов второй группировки будет добавлено 3 ячейки подряд, не сопоставимые с датами в шапке таблицы.
К этому вопрос, возможно ли как-то вытащить все даты за период для каждой группировки по номенклатуре. Т.е. сейчас выводятся даты по факту отпуска, а мне нужно, чтобы выводились все даты за период. Скрин " Как нужно"
Сам запрос:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(СебестоимостьТоваровОстаткиИОбороты.Период, ДЕНЬ) КАК Период,
СебестоимостьТоваровОстаткиИОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
СебестоимостьТоваровОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
СебестоимостьТоваровОстаткиИОбороты.СтоимостьРасход КАК СтоимостьРасход
ПОМЕСТИТЬ втРегистр
ИЗ
РегистрНакопления.СебестоимостьТоваров.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , ) КАК СебестоимостьТоваровОстаткиИОбороты
ГДЕ
СебестоимостьТоваровОстаткиИОбороты.РазделУчета = &РазделУчета
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
втРегистр.Период КАК Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
СУММА(втРегистр.КоличествоРасход) КАК КоличествоРасход,
СУММА(втРегистр.СтоимостьРасход) КАК СтоимостьРасход
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ втРегистр КАК втРегистр
ПО (Номенклатура.Ссылка = втРегистр.АналитикаУчетаНоменклатурыНоменклатура.Ссылка)
СГРУППИРОВАТЬ ПО
втРегистр.Период,
втРегистр.АналитикаУчетаНоменклатурыНоменклатура,
Номенклатура.Наименование
УПОРЯДОЧИТЬ ПО
Наименование
ИТОГИ ПО
Наименование
Заранее спасибо за ответы. PS программирую недавно)
Прикрепленные файлы:
По теме из базы знаний
- Изготовление внешних печатных форм
- Создание внешних печатных форм под управляемым приложением с нуля
- Пользовательские макеты для внешних печатных форм (обработок)
- Универсальная печатная форма "Анализ объекта" + шаблон подключаемой обработки для 1С на управляемых формах + отладка внешней печатной формы.
- Улучшенная обработка "Внешние печатные формы" для типовых конфигураций на базе 1С 7.7
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Не очень понятно, что надо.
Но если я правильно понял, то просто добавить в Итоги поле Период и при обходе второй группировки присоединять
П.с: В первом запросе лучше добавить условие не в конце, а в параметры виртуальной таблицы.
И получать остатки можно в первом запросе
Но если я правильно понял, то просто добавить в Итоги поле Период и при обходе второй группировки присоединять
П.с: В первом запросе лучше добавить условие не в конце, а в параметры виртуальной таблицы.
И получать остатки можно в первом запросе
(7) Спасибо! С оптимизацией и параметрами виртуальной таблицы разберусь попозже)
Что нужно:
У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?
Есть запрос, благодаря которому я получаю все значащие даты за период и заполняю шапку области с Расходом:
Его результат - все даты, когда были отпуски в отделение, т.е. 5,7,8,11,12,15 числа.
Пробовал левым соединением приклеить к нему результат прошлого запроса, все даты все равно не выводятся
Что нужно:
У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?
Есть запрос, благодаря которому я получаю все значащие даты за период и заполняю шапку области с Расходом:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОтпускТоваровВОтделение.Дата, ДЕНЬ) КАК Дата
ИЗ
Документ.ОтпускТоваровВОтделение КАК ОтпускТоваровВОтделение
ГДЕ
ОтпускТоваровВОтделение.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(ОтпускТоваровВОтделение.Дата, ДЕНЬ)
ПоказатьЕго результат - все даты, когда были отпуски в отделение, т.е. 5,7,8,11,12,15 числа.
Пробовал левым соединением приклеить к нему результат прошлого запроса, все даты все равно не выводятся
(11) тогда в первом запросе у Вас уже есть данные регистратору
В первом запросе получить поле Регистратор тогда, проверить на тип документа
Во втором запросе добавить в Итоги Регистратор
Обход запроса делать по группировкам:
Сначала по номенклатуре, потом по регистратору (при обходе по регистратору, присоединять к табличному документу колонки)
В первом запросе получить поле Регистратор тогда, проверить на тип документа
Во втором запросе добавить в Итоги Регистратор
Обход запроса делать по группировкам:
Сначала по номенклатуре, потом по регистратору (при обходе по регистратору, присоединять к табличному документу колонки)
(2)
Научите как правильно, я обязательно исправлю. Главное, чтобы не нашелся следующий, кого не устроит ваш заголовок ;)
2. FatPanzer 15 19.10.21 10:44 Сейчас в теме
Потрясающий талант. Написать заголовок про ВПФ, а в теле сообщения написать про недостаток работы с макетами.. .
Потрясающий талант. Написать заголовок про ВПФ, а в теле сообщения написать про недостаток работы с макетами.. .
Научите как правильно, я обязательно исправлю. Главное, чтобы не нашелся следующий, кого не устроит ваш заголовок ;)
(6)
У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?
но говорят так и не понял что надо, два раза перечитал)
Предлагаю автору на картинке показать что есть в таблице и что хотим видет
Предлагаю автору на картинке показать что есть в таблице и что хотим видет
У макета есть шапка таблицы и тело таблицы. Есть область с реестрами (на первом скриншоте видно, что у этой области заполняется шапка таблицы, а тело пустое. В шапке под ячейкой "Расход (№ реестра, дата)" - "размножаются" ячейки в таком количестве, когда был отпуск товара в отделение (т.е. если посмотреть на скриншот отпуск был 5, 7, 8, 11, 12 и 15 числа).
Переходим к заполнению тела. Здесь во втором скриншоте пример номенклатуры и видно, что отпуск этой номенклатуры был 5, 12 и 15 числа. А остальных значащих дат нет. 7, 8 и 11 число не заполнится. Отсюда вопрос, как привести результат запроса к виду, как на 3 скриншоте?
(12) 1. Пользуйтесь тегами для кода.
2. Вам нужен вывод по всей номенклатуре, что есть в справочнике? Вот прям по всей? И с помеченными на удаление тоже?
3. Выбираем обороты по регистратору, а потом приводим периоды к началу дня и группируем. В чём смысл регистратора?
4. Ну и не нужно выводить значения куда придётся, нужно индекс присоединяемой колонки учитывать для заполнения корректного значения. Соответствие, к примеру, в помощь.
5. Как вариант перестроить запрос, для первой полученной таблицы (которая втРегистр) сделать полное соединение самой на себя с выборкой по двум полям Период и Номенклатура и флагом Различные (чтоб без группировки). Потом полученную таблицу еще раз соединить левым соединением с первичной таблицей. Будут все даты с привязкой ко всей номенклатуре в первой таблице. (Оптимизация: полное соединение делать после выборки различных по Период и Номенклатура).
2. Вам нужен вывод по всей номенклатуре, что есть в справочнике? Вот прям по всей? И с помеченными на удаление тоже?
3. Выбираем обороты по регистратору, а потом приводим периоды к началу дня и группируем. В чём смысл регистратора?
4. Ну и не нужно выводить значения куда придётся, нужно индекс присоединяемой колонки учитывать для заполнения корректного значения. Соответствие, к примеру, в помощь.
5. Как вариант перестроить запрос, для первой полученной таблицы (которая втРегистр) сделать полное соединение самой на себя с выборкой по двум полям Период и Номенклатура и флагом Различные (чтоб без группировки). Потом полученную таблицу еще раз соединить левым соединением с первичной таблицей. Будут все даты с привязкой ко всей номенклатуре в первой таблице. (Оптимизация: полное соединение делать после выборки различных по Период и Номенклатура).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот