Заранее извиняюсь за дилетантский вопрос, со схемой компоновки данных знаком очень поверхностно.
Есть регистр накопления Продажи с измерениями Покупатель и Номенклатура. Требуется создать отчёт с двумя полями ввода для юзера: КупленнаяНоменклатура и НекупленнаяНоменклатура. Пользователь выбирает купленную и некупленную номенклатуру, а отчёт на основе регистра Продажи выдаёт список покупателей, которые удовлетворяют двум условиям: купили первую номенклатуру и не купили вторую.
Получается сделать отбор по одному условию через, собственно, механизм отбора. Как сделать так, чтобы проверялись оба условия - ума не приложу
Есть регистр накопления Продажи с измерениями Покупатель и Номенклатура. Требуется создать отчёт с двумя полями ввода для юзера: КупленнаяНоменклатура и НекупленнаяНоменклатура. Пользователь выбирает купленную и некупленную номенклатуру, а отчёт на основе регистра Продажи выдаёт список покупателей, которые удовлетворяют двум условиям: купили первую номенклатуру и не купили вторую.
Получается сделать отбор по одному условию через, собственно, механизм отбора. Как сделать так, чтобы проверялись оба условия - ума не приложу
По теме из базы знаний
- «Программное заполнение настроек СКД» или «Как сделать отчёт на СКД с понятным для пользователя интерфейсом». (1С: Предприятие 8.1, 8.2 обычное приложение)
- Использование СКД на примере создания простого отчёта на управляемых формах
- Улучшенный шаблон отчёта СКД ОФ (обычные формы), подобный стандартной управляемой форме отчёта
- Ограничение доступа пользователей к внешнему отчёту на СКД
- Пример создания кадрового отчета для ЗУП 3.1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Делаю через виртуальную таблицу, получается запрос
Т.к. в регистре содержатся записи формата "Покупатель | Номенклатура", то в отчёте получаем всех покупателей, у которых есть хотя бы одна строка в регистре, которая условию соответствует. То есть, если Боб купил компьютер и мышь, а мы ставим в НекупленныйТовар компьютер, то Боб всё равно попадёт в отчёт, ведь есть запись "Боб | Мышь", удовлетворяющая нашему требованию. Не понимаю, как именно этот нюанс отразить
ВЫБРАТЬ
ПродажиОбороты.Покупатель КАК Покупатель,
ПродажиОбороты.Номенклатура КАК Номенклатура
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ГДЕ
НЕ ПродажиОбороты.Номенклатура = &НедокупленныйТовар
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Покупатель,
ПродажиОбороты.Номенклатура
ПоказатьТ.к. в регистре содержатся записи формата "Покупатель | Номенклатура", то в отчёте получаем всех покупателей, у которых есть хотя бы одна строка в регистре, которая условию соответствует. То есть, если Боб купил компьютер и мышь, а мы ставим в НекупленныйТовар компьютер, то Боб всё равно попадёт в отчёт, ведь есть запись "Боб | Мышь", удовлетворяющая нашему требованию. Не понимаю, как именно этот нюанс отразить
(6) Это учебная конфигурация, пока только несколько элементов номенклатуры. Подобного рода связки нет, по условию задачи она должна быть кастомизируемой: в форме отчёта пользователь задаёт товар, который куплен, который недокуплен, и получает список подходящих покупателей. И именно с определением некупленного товара у меня проблемы: нужен какой-то механизм, который возьмёт все записи регистра с КупленнымТоваром, и Покупателей из этих записей проверит на то, что в регистре отсутствуют записи этих Покупателей с НедокупленнымТоваром. В силу своего незнания СКД это я реализовать не могу, но подозреваю, что решение кроется в правильной настройке группировки/иерархии.
На псевдокоде:
На псевдокоде:
КупленныйТовар = Ввод()
НедокупленныйТовар = Ввод()
Если КупленныйТовар в Регистре
Если Не (НедокупленныйТовар в Регистре и НедокупленныйТовар.Покупатель = КупленныйТовар.Покупатель)
Вывод(КупленныйТовар.Покупатель)
(7) Тогда проще. В качестве параметра можно передавать не только один элемент сравнения, но и список:
Получается тебе нужно сначала получить список купленной номенклатуры по покупателю и передать это в качестве параметра для отбора в справочник номенклатуры. Но сразу оговорюсь: в реальной боевой базе так можно очень элегантно положить сервер.
НЕ Номенклатура В (&Список)
Получается тебе нужно сначала получить список купленной номенклатуры по покупателю и передать это в качестве параметра для отбора в справочник номенклатуры. Но сразу оговорюсь: в реальной боевой базе так можно очень элегантно положить сервер.
(8) Благодарю за ответ. Пожалуй, это то что нужно. Но я уже реализовал таким вот образом. Механизм получается вроде тот же, что и у тебя.
ВЫБРАТЬ
ПродажиОбороты.Покупатель КАК Покупатель,
ПродажиОбороты.Номенклатура КАК Номенклатура
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ГДЕ
ПродажиОбороты.Номенклатура = &КупленныйТовар
И НЕ (ПродажиОбороты.Покупатель, ПродажиОбороты.Номенклатура) В
(ВЫБРАТЬ
ПродажиОбороты.Покупатель,
ПродажиОбороты.Номенклатура
ИЗ
РегистрНакопления.Продажи.Обороты КАК ВложенныеПродажи
ГДЕ
ВложенныеПродажи.Покупатель = ПродажиОбороты.Покупатель
И ВложенныеПродажи.Номенклатура = &НедокупленныйТовар)
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот