Выборка данных в запросе

1. ghostrid3r 12.05.20 14:13 Сейчас в теме
Добрый день, подскажите пож-та. Имеется регистр сведений где для номенклатуры заданы некие проценты, могут быть заданы как для элемента так и для группы в целом. Подскажите как то можно получить данный процент для каждой позиции номенклатуры, т.е. там где задан отдельно для номенклатуры, брать его, а где задан для группы нужно всем номенклатурам в данной группе проставить данный процент.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 12.05.20 14:19 Сейчас в теме
(1)Необходимо дополнительным запросом получать список номенклатуры иерархически по группе.
3. ghostrid3r 12.05.20 14:20 Сейчас в теме
(2) по подробнее можно пож-та?
5. nomad_irk 72 12.05.20 14:25 Сейчас в теме
(3)
1. Получить все записи из РС(с отбором или без - не важно).
2. Обработать результат п.1, проверяя номенклатуру на группу. Если группа, то запросом получить всю подчиненную номенклатуру группе, значение процента будет значением для группы, полученное в п.1

Если нужны подробности в виде кода, то покажите то, что уже сделали и у вас не получилось.
7. ghostrid3r 12.05.20 14:36 Сейчас в теме
(5) это все в одном запросе?
10. nomad_irk 72 12.05.20 14:55 Сейчас в теме
(7)Если элемент номенклатуры - это не группа, то один, для групп нужно создавать дополнительный запрос.
4. alex-l19041 8 12.05.20 14:24 Сейчас в теме
(1) соединяйте с регистром два раза - один раз по номенклатуре, второй раз по родителю (группа).
6. nomad_irk 72 12.05.20 14:25 Сейчас в теме
(4)....и получит вложения первого уровня в группе, а если уровней вложений - 100?
16. Arabo_xv 5 12.05.20 18:28 Сейчас в теме
(1) Тут есть несколько путей. Допустим вот такая картина в справочнике
Группа 1
--- Группа 2
------ Товар 1
------ Товар 2
--- Группа 3
------ Товар 3
------ Товар 4

А в регистре такие записи
Группа 1 - 10%
Группа 2 - 12%
Товар 1 - 9%
Товар 3 - 14%
Товар 4 - 0%

Какие результирующие данные должны получиться для товаров?
От твета на данный вопрос зависит как вам можно помочь.
17. ghostrid3r 12.05.20 18:31 Сейчас в теме
(16)
Товар 1 - 9%
Товар 2 -12%
Товар 3 14%
Если задано для Товар 4 - 0 тогда 0 Иначе по группе 1 - 10%
18. Arabo_xv 5 12.05.20 18:55 Сейчас в теме
(17) Уточню пару моментов.
1 - Занчение 0 можно считать как занчение отсутствует?
2 - Как реаливовано редактирование данных в регистре. На прямую или в справочнике номенклатуры указываются данные которые потом в регистр попадают
3 - Допустимо ли вносить изменения в конфигурацию?.
19. ghostrid3r 12.05.20 19:12 Сейчас в теме
(18)
Если отсутствует то должно быть по группе значение, а если стоит 0 значит 0.
Редактирование напрямую в регистре. Можно вносить изменения.
21. Arabo_xv 5 12.05.20 19:47 Сейчас в теме
(19)
Поздравляю вам повезло :) у вас есть возможность сделать все хорошо и без насилия над собой и сервером 1С.
В вашем случае чтобы это работало в СКД нужно умудриться собрать дерево иерархии с актуальными значениями процентов. И это при том что вложеность неизвестна (хотя можно програмно ограничить себя 50 вложениями) а значит будет ещё тот геморой у запроса. Запрос будет супер монстром и супер не оптимальным.
Это всё страшилки, но есть и хороший вариант (такое решения внедрили мы на схожей задаче).
Тезисно что нужно сделать
1 - Для регистра информации внести служебное поле "НаследованноеЗначение" типа Булево. Тут не важно это ресурс или реквизит.
2 - Отказаться от прямого редактирования регистра. В номенклатуре сделать поле форме или сделать АРМ (мы делали АРМ решая в нём и другие задачи). Хотя думаю в вашем случае мы бы на форму номенклатуры/спика номенклатуры перенесли ввод значения.
3 - При вводе значения для группы носенклатуры пройтись рекурсивно для всех ниже стояших папок и установить такой же процент и установить "НаследованноеЗначение" в ИСТИНА. Учтите что нужно отсекать ветки в иерархии если есть для указанной группы запись в регистре и это не наследованное значение.
4 - При удалении процента для группы не забывать обновить для данной ветки иерархии.
5 - Ввести понятие значение не указано например "-99999" и вместо удаления заполнять им.

Таким образом вы один раз потратите вычислительные мощности (при это они размазаны во времени и их просто можно игнорировать) для составления структуры где для каждой группы есть значение и в запросе достаточно анализировать одно значение полученное соединением по родителю для номенклатуры. в СКД всё будет работать шустро и сам запрос будет элементарный.
8. ipoloskov 162 12.05.20 14:52 Сейчас в теме
Примерно так:
Цикл
Если первый проход цикла, то
Получить цены и номенклатуру уровня 0, для которой Родитель = ПустаяСсылка. Поместить ее во временную таблицу ВТ_0 и просто в выборку
Иначе
Получить цену и номенклатуру уровня N, для которой Родитель В (ВТ_(N-1)). Поместить ее во временную таблицу ВТ_N и просто в выборку
В запросе брать цену: если указана для номенклатуры текущего уровня, то ее, иначе цену номенклатуры уровня N-1
КонецЕсли
Если Результат просто выборки пустой, то прервать цикл
КонецЦикла.
Собрать общий запрос из ВТ_0... ВТ_N
9. ghostrid3r 12.05.20 14:53 Сейчас в теме
(8) мне все в запросе надо, отчет на скд будет.
11. ipoloskov 162 12.05.20 14:56 Сейчас в теме
(9) в СКД запросе можно текст запроса собирать динамически в процедуре ПриКомпоновкеРезультата
12. nomad_irk 72 12.05.20 14:56 Сейчас в теме
(9)Сделайте записи в регистре исключительно по элементам и все заработает без извратов.
alex-l19041; +1 Ответить
13. ipoloskov 162 12.05.20 15:12 Сейчас в теме
(12) это самый главный изврат и есть. Если потребуется поменять цену по группе, но у некоторых позиций оставить прежней.
14. nomad_irk 72 12.05.20 15:13 Сейчас в теме
(13)Делается при изменении для всей номенклатуры иерархически. Никакого изврата не наблюдаю.
15. ipoloskov 162 12.05.20 17:39 Сейчас в теме
(14) а нужно делать не для всей номенклатуры.
В схеме автора это реализуется просто: для группы выставляем Цена = 100 рублей. Для отдельных позиций выставляем 110, 120, 130 рублей.
Можно изменить цену группы на 105 рублей. Цены отдельных позиций не поменяются.
20. nomad_irk 72 12.05.20 19:37 Сейчас в теме
(15) В чем проблема обрабатывать этот момент при установке значения для группы?

Если уж нужны именно группы номенклатуры в том виде, в котором вы приводите пример, то для этого заводят отдельный справочник этих самых групп, а не пытаются извратится в условиях иерархии.
Оставьте свое сообщение

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