Написать функцию получения скидки

1. cdpomaa 4 18.03.23 15:09 Сейчас в теме
Есть регистр СкидкиНоменклатуры где Измерение Номенклатура(элемент или группа), ресурс процентСкидки.

Скидки можно установить как на конкретную позицию, так и на папку с позициями. Вложенность папок, например, может достигать 15 уровней.
Если скидка установлена на конкретную позицию, то она для нас имеет наивысший приоритет. Если на позицию скидки нет, то получаем скидки по уровням иерархии. Приоритетней, например, будет скидка на группу "Сплит-системы", а на группу "Блоки", скидка имеет более низкий приоритет.

Нужно написать функцию (или несколько функций) в которую мы передаем Ссылку на Номенклатуру, а она возвращает числовое значение процента скидки. Если скидка не задана, то ноль.
Прикрепленные файлы:
1Cv8.dt
Вознаграждение за ответ
Показать полностью
Найденные решения
3. aka Любитель XML 18.03.23 15:53 Сейчас в теме +2 $m
Функция ПолучитьСкидку(Номенклатура)
    НаборЗаписей = РегистрыСведений.СкидкиНоменклатуры.СоздатьНаборЗаписей();
    Отбор = НаборЗаписей.Отбор;
    Отбор.Номенклатура.Установить(Номенклатура);
    НаборЗаписей.Прочитать();
    Если НаборЗаписей.Количество() > 0 Тогда
        Возврат НаборЗаписей[0]. процентСкидки;
    Иначе
        Если ЗначениеЗаполнено(Номенклатура.Родитель) Тогда
            ПолучитьСкидку(Номенклатура.Родитель);
        Иначе
            Возврат 0;
    КонецЕсли;
КонецФункции
Показать
YA_514896950; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. aka Любитель XML 18.03.23 15:49 Сейчас в теме
(0) рекурсивно обходи родителей до тех пор, пока не найдешь запись в РС
3. aka Любитель XML 18.03.23 15:53 Сейчас в теме +2 $m
Функция ПолучитьСкидку(Номенклатура)
    НаборЗаписей = РегистрыСведений.СкидкиНоменклатуры.СоздатьНаборЗаписей();
    Отбор = НаборЗаписей.Отбор;
    Отбор.Номенклатура.Установить(Номенклатура);
    НаборЗаписей.Прочитать();
    Если НаборЗаписей.Количество() > 0 Тогда
        Возврат НаборЗаписей[0]. процентСкидки;
    Иначе
        Если ЗначениеЗаполнено(Номенклатура.Родитель) Тогда
            ПолучитьСкидку(Номенклатура.Родитель);
        Иначе
            Возврат 0;
    КонецЕсли;
КонецФункции
Показать
YA_514896950; +1 Ответить
5. user1881120 18.03.23 16:43 Сейчас в теме
(3) Да не стоит это двух мани! Пусть сам учится...
6. rovodap 18.03.23 17:52 Сейчас в теме
(5) Да бог с ними с убогими. Они почему-то считают себя самыми умными и не допускают мысли, что проверяющие тоже пользуются интернетом и ходят на теже самые сайты, где они клянчат решения.

Так что когда оно эту "АЯК Задача №1", "Авторские права на конфигурацию: Востриков Д.С." сдавать будет, будет интересно.
4. aka Любитель XML 18.03.23 15:53 Сейчас в теме
Примерно так, dt не качал, писал на коленке, мог где-то ошибится
7. Dr.HiHi 3 18.03.23 17:55 Сейчас в теме
(1) подойди к задаче с другой стороны
создать регистр сведений связи номенклатуры, в который будут записываться елемент и вся вышестоящая иерархия и приоритет (уровень иерархии)
добавить событие при записи номенклатуры, чтобы сделались записи относительной изменяемой / создаваемой номенклатуры

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

так же нужно понимать еще другой нюанс - дата установки скидки... если скидка на группу поменялась, то в приоритете должна быть скидка номенклатуры, которая была установлена несколько лет назад, или скидка группы, которая была установлена сегодня...
8. rovodap 18.03.23 18:10 Сейчас в теме
(7)
чтобы сделались записи относительной изменяемой / создаваемой номенклатуры
Хехе. А также записи для всего поддерева в случае изменения группы.
9. user1881120 18.03.23 18:18 Сейчас в теме
(8) Да. Именно так и работает регистр ИерархияПартнеров. Ничего страшного в этом нет, не так часто там изменения происходят.
10. rovodap 18.03.23 18:23 Сейчас в теме
(9) Да я знаю. Вот только для грамотной реализации такого механизма надо уровень повыше, чем у кандидата.
20. пользователь 18.03.23 19:14
Сообщение было скрыто модератором.
...
11. пользователь 18.03.23 18:24
Сообщение было скрыто модератором.
...
12. пользователь 18.03.23 19:02
Сообщение было скрыто модератором.
...
13. пользователь 18.03.23 19:03
Сообщение было скрыто модератором.
...
26. пользователь 18.03.23 19:37
Сообщение было скрыто модератором.
...
14. пользователь 18.03.23 19:07
Сообщение было скрыто модератором.
...
15. пользователь 18.03.23 19:08
Сообщение было скрыто модератором.
...
16. пользователь 18.03.23 19:10
Сообщение было скрыто модератором.
...
17. пользователь 18.03.23 19:11
Сообщение было скрыто модератором.
...
18. пользователь 18.03.23 19:13
Сообщение было скрыто модератором.
...
23. пользователь 18.03.23 19:18
Сообщение было скрыто модератором.
...
24. пользователь 18.03.23 19:19
Сообщение было скрыто модератором.
...
25. пользователь 18.03.23 19:23
Сообщение было скрыто модератором.
...
19. пользователь 18.03.23 19:14
Сообщение было скрыто модератором.
...
21. пользователь 18.03.23 19:15
Сообщение было скрыто модератором.
...
22. пользователь 18.03.23 19:17
Сообщение было скрыто модератором.
...
27. пользователь 18.03.23 19:38
Сообщение было скрыто модератором.
...
28. пользователь 18.03.23 19:39
Сообщение было скрыто модератором.
...
29. пользователь 18.03.23 19:40
Сообщение было скрыто модератором.
...
30. пользователь 18.03.23 19:41
Сообщение было скрыто модератором.
...
31. пользователь 18.03.23 19:43
Сообщение было скрыто модератором.
...
32. пользователь 18.03.23 19:43
Сообщение было скрыто модератором.
...
33. пользователь 18.03.23 19:45
Сообщение было скрыто модератором.
...
34. пользователь 18.03.23 19:45
Сообщение было скрыто модератором.
...
35. пользователь 18.03.23 19:47
Сообщение было скрыто модератором.
...
36. пользователь 18.03.23 19:48
Сообщение было скрыто модератором.
...
37. пользователь 18.03.23 19:48
Сообщение было скрыто модератором.
...
38. пользователь 18.03.23 19:49
Сообщение было скрыто модератором.
...
39. пользователь 18.03.23 19:50
Сообщение было скрыто модератором.
...
40. пользователь 18.03.23 19:50
Сообщение было скрыто модератором.
...
41. пользователь 18.03.23 19:51
Сообщение было скрыто модератором.
...
43. пользователь 18.03.23 19:52
Сообщение было скрыто модератором.
...
49. пользователь 18.03.23 20:01
Сообщение было скрыто модератором.
...
50. пользователь 18.03.23 20:02
Сообщение было скрыто модератором.
...
51. пользователь 18.03.23 20:08
Сообщение было скрыто модератором.
...
42. пользователь 18.03.23 19:51
Сообщение было скрыто модератором.
...
44. пользователь 18.03.23 19:53
Сообщение было скрыто модератором.
...
45. пользователь 18.03.23 19:55
Сообщение было скрыто модератором.
...
46. пользователь 18.03.23 19:56
Сообщение было скрыто модератором.
...
47. пользователь 18.03.23 19:56
Сообщение было скрыто модератором.
...
48. пользователь 18.03.23 19:57
Сообщение было скрыто модератором.
...
52. пользователь 18.03.23 20:09
Сообщение было скрыто модератором.
...
53. пользователь 18.03.23 20:13
Сообщение было скрыто модератором.
...
54. пользователь 18.03.23 20:13
Сообщение было скрыто модератором.
...
55. пользователь 18.03.23 20:16
Сообщение было скрыто модератором.
...
56. rovodap 19.03.23 19:12 Сейчас в теме
Начинаем вторую серию от того же автора.
Наверно с решением задачи что-то действительно пошло не так.
Прикрепленные файлы:
57. user1881120 19.03.23 19:38 Сейчас в теме
58. rovodap 19.03.23 21:06 Сейчас в теме
(57) Он же в поиске, не переживай. Просто он еще не до конца определился =)
59. muskul 20.03.23 04:23 Сейчас в теме
(56)как по айпи вычислит можно вакансии по безопасности скидывать ему)))
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 200 000 руб.
Полный день

Аналитик
Москва
зарплата от 150 000 руб. до 300 000 руб.
Полный день

Системный архитектор
Москва
зарплата от 150 000 руб.
Полный день

Ведущий консультант аналитик 1С ERP, УХ
Ульяновск
зарплата от 120 000 руб.
Полный день