Добрый день, подскажите пож-та. Имеется регистр сведений где для номенклатуры заданы некие проценты, могут быть заданы как для элемента так и для группы в целом. Подскажите как то можно получить данный процент для каждой позиции номенклатуры, т.е. там где задан отдельно для номенклатуры, брать его, а где задан для группы нужно всем номенклатурам в данной группе проставить данный процент.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
1. Получить все записи из РС(с отбором или без - не важно).
2. Обработать результат п.1, проверяя номенклатуру на группу. Если группа, то запросом получить всю подчиненную номенклатуру группе, значение процента будет значением для группы, полученное в п.1
Если нужны подробности в виде кода, то покажите то, что уже сделали и у вас не получилось.
1. Получить все записи из РС(с отбором или без - не важно).
2. Обработать результат п.1, проверяя номенклатуру на группу. Если группа, то запросом получить всю подчиненную номенклатуру группе, значение процента будет значением для группы, полученное в п.1
Если нужны подробности в виде кода, то покажите то, что уже сделали и у вас не получилось.
(1) Тут есть несколько путей. Допустим вот такая картина в справочнике
Группа 1
--- Группа 2
------ Товар 1
------ Товар 2
--- Группа 3
------ Товар 3
------ Товар 4
А в регистре такие записи
Группа 1 - 10%
Группа 2 - 12%
Товар 1 - 9%
Товар 3 - 14%
Товар 4 - 0%
Какие результирующие данные должны получиться для товаров?
От твета на данный вопрос зависит как вам можно помочь.
Группа 1
--- Группа 2
------ Товар 1
------ Товар 2
--- Группа 3
------ Товар 3
------ Товар 4
А в регистре такие записи
Группа 1 - 10%
Группа 2 - 12%
Товар 1 - 9%
Товар 3 - 14%
Товар 4 - 0%
Какие результирующие данные должны получиться для товаров?
От твета на данный вопрос зависит как вам можно помочь.
(17) Уточню пару моментов.
1 - Занчение 0 можно считать как занчение отсутствует?
2 - Как реаливовано редактирование данных в регистре. На прямую или в справочнике номенклатуры указываются данные которые потом в регистр попадают
3 - Допустимо ли вносить изменения в конфигурацию?.
1 - Занчение 0 можно считать как занчение отсутствует?
2 - Как реаливовано редактирование данных в регистре. На прямую или в справочнике номенклатуры указываются данные которые потом в регистр попадают
3 - Допустимо ли вносить изменения в конфигурацию?.
(19)
Поздравляю вам повезло :) у вас есть возможность сделать все хорошо и без насилия над собой и сервером 1С.
В вашем случае чтобы это работало в СКД нужно умудриться собрать дерево иерархии с актуальными значениями процентов. И это при том что вложеность неизвестна (хотя можно програмно ограничить себя 50 вложениями) а значит будет ещё тот геморой у запроса. Запрос будет супер монстром и супер не оптимальным.
Это всё страшилки, но есть и хороший вариант (такое решения внедрили мы на схожей задаче).
Тезисно что нужно сделать
1 - Для регистра информации внести служебное поле "НаследованноеЗначение" типа Булево. Тут не важно это ресурс или реквизит.
2 - Отказаться от прямого редактирования регистра. В номенклатуре сделать поле форме или сделать АРМ (мы делали АРМ решая в нём и другие задачи). Хотя думаю в вашем случае мы бы на форму номенклатуры/спика номенклатуры перенесли ввод значения.
3 - При вводе значения для группы носенклатуры пройтись рекурсивно для всех ниже стояших папок и установить такой же процент и установить "НаследованноеЗначение" в ИСТИНА. Учтите что нужно отсекать ветки в иерархии если есть для указанной группы запись в регистре и это не наследованное значение.
4 - При удалении процента для группы не забывать обновить для данной ветки иерархии.
5 - Ввести понятие значение не указано например "-99999" и вместо удаления заполнять им.
Таким образом вы один раз потратите вычислительные мощности (при это они размазаны во времени и их просто можно игнорировать) для составления структуры где для каждой группы есть значение и в запросе достаточно анализировать одно значение полученное соединением по родителю для номенклатуры. в СКД всё будет работать шустро и сам запрос будет элементарный.
Поздравляю вам повезло :) у вас есть возможность сделать все хорошо и без насилия над собой и сервером 1С.
В вашем случае чтобы это работало в СКД нужно умудриться собрать дерево иерархии с актуальными значениями процентов. И это при том что вложеность неизвестна (хотя можно програмно ограничить себя 50 вложениями) а значит будет ещё тот геморой у запроса. Запрос будет супер монстром и супер не оптимальным.
Это всё страшилки, но есть и хороший вариант (такое решения внедрили мы на схожей задаче).
Тезисно что нужно сделать
1 - Для регистра информации внести служебное поле "НаследованноеЗначение" типа Булево. Тут не важно это ресурс или реквизит.
2 - Отказаться от прямого редактирования регистра. В номенклатуре сделать поле форме или сделать АРМ (мы делали АРМ решая в нём и другие задачи). Хотя думаю в вашем случае мы бы на форму номенклатуры/спика номенклатуры перенесли ввод значения.
3 - При вводе значения для группы носенклатуры пройтись рекурсивно для всех ниже стояших папок и установить такой же процент и установить "НаследованноеЗначение" в ИСТИНА. Учтите что нужно отсекать ветки в иерархии если есть для указанной группы запись в регистре и это не наследованное значение.
4 - При удалении процента для группы не забывать обновить для данной ветки иерархии.
5 - Ввести понятие значение не указано например "-99999" и вместо удаления заполнять им.
Таким образом вы один раз потратите вычислительные мощности (при это они размазаны во времени и их просто можно игнорировать) для составления структуры где для каждой группы есть значение и в запросе достаточно анализировать одно значение полученное соединением по родителю для номенклатуры. в СКД всё будет работать шустро и сам запрос будет элементарный.
Примерно так:
Цикл
Если первый проход цикла, то
Получить цены и номенклатуру уровня 0, для которой Родитель = ПустаяСсылка. Поместить ее во временную таблицу ВТ_0 и просто в выборку
Иначе
Получить цену и номенклатуру уровня N, для которой Родитель В (ВТ_(N-1)). Поместить ее во временную таблицу ВТ_N и просто в выборку
В запросе брать цену: если указана для номенклатуры текущего уровня, то ее, иначе цену номенклатуры уровня N-1
КонецЕсли
Если Результат просто выборки пустой, то прервать цикл
КонецЦикла.
Собрать общий запрос из ВТ_0... ВТ_N
Цикл
Если первый проход цикла, то
Получить цены и номенклатуру уровня 0, для которой Родитель = ПустаяСсылка. Поместить ее во временную таблицу ВТ_0 и просто в выборку
Иначе
Получить цену и номенклатуру уровня N, для которой Родитель В (ВТ_(N-1)). Поместить ее во временную таблицу ВТ_N и просто в выборку
В запросе брать цену: если указана для номенклатуры текущего уровня, то ее, иначе цену номенклатуры уровня N-1
КонецЕсли
Если Результат просто выборки пустой, то прервать цикл
КонецЦикла.
Собрать общий запрос из ВТ_0... ВТ_N
(14) а нужно делать не для всей номенклатуры.
В схеме автора это реализуется просто: для группы выставляем Цена = 100 рублей. Для отдельных позиций выставляем 110, 120, 130 рублей.
Можно изменить цену группы на 105 рублей. Цены отдельных позиций не поменяются.
В схеме автора это реализуется просто: для группы выставляем Цена = 100 рублей. Для отдельных позиций выставляем 110, 120, 130 рублей.
Можно изменить цену группы на 105 рублей. Цены отдельных позиций не поменяются.
(15) В чем проблема обрабатывать этот момент при установке значения для группы?
Если уж нужны именно группы номенклатуры в том виде, в котором вы приводите пример, то для этого заводят отдельный справочник этих самых групп, а не пытаются извратится в условиях иерархии.
Если уж нужны именно группы номенклатуры в том виде, в котором вы приводите пример, то для этого заводят отдельный справочник этих самых групп, а не пытаются извратится в условиях иерархии.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот