Имя: Пароль:
1C
1С v8
Нужен совет по организации скидок
0 Быдло замкадное
 
20.02.20
15:46
Привет.
Есть некая база, в ней скидки заведены в регистр сведений с измерениями папка номенклатуры, контрагент.

В документах ищется самая близкая папка по иерархии со скидкой и подставляется в документ. (Смотрим есть ли скидка на родителя, потом на родителя.родителя, и так пока не найдем)

Вроде бы работает.

Появилась задача вывести отчет прайс лист с этими скидками для 1 клиента, сделал отчет который использует этот алгоритм из общего модуля.
Номенклатуры 20 тысяч штук.
Но 20 тысяч раз вызывать общий модуль очень медленно.

Подумал сделать вспомогательный регистр сведений в котором хранить готовую скидку.
Но 20 тысяч номенклатуры * 7 тысяч клиентов это 140 млн записей. Даже регламентное задание в ночь умрет...

Как сделать то?!
1 Быдло замкадное
 
20.02.20
15:47
пока писал подумал, а может в запросе сделать много запросов родитель.родитель.родитель и т.д. раз 10)) и брать самую первую скидку..
2 shuhard
 
20.02.20
15:47
(0) использовать группы скидок и группы клиентов
3 Быдло замкадное
 
20.02.20
15:47
да, так и сделаю... оказывается надо было просто выговориться и решение пришло)
4 Быдло замкадное
 
20.02.20
15:50
Максимум 7 родителей, в запросе получу для всех и готово!
5 Сияющий в темноте
 
20.02.20
15:52
папок не так много.
расчитать скидки для папок,и если у товара нет скидки,то смотреть в таблице папок.
просто и быстро.
6 Быдло замкадное
 
20.02.20
17:17
Отличный говнокод получился

ВЫБОР
    КОГДА ВТВсеСкидки.СкидкаНоменклатура <> 0
        ТОГДА ВТВсеСкидки.СкидкаНоменклатура
    ИНАЧЕ ВЫБОР
            КОГДА ВТВсеСкидки.СкидкаРодитель <> 0
                ТОГДА ВТВсеСкидки.СкидкаРодитель
            ИНАЧЕ ВЫБОР
                    КОГДА ВТВсеСкидки.СкидкаРодитель2 <> 0
                        ТОГДА ВТВсеСкидки.СкидкаРодитель2
                    ИНАЧЕ ВЫБОР
                            КОГДА ВТВсеСкидки.СкидкаРодитель3 <> 0
                                ТОГДА ВТВсеСкидки.СкидкаРодитель3
                            ИНАЧЕ ВЫБОР
                                    КОГДА ВТВсеСкидки.СкидкаРодитель4 <> 0
                                        ТОГДА ВТВсеСкидки.СкидкаРодитель4
                                    ИНАЧЕ ВЫБОР
                                            КОГДА ВТВсеСкидки.СкидкаРодитель5 <> 0
                                                ТОГДА ВТВсеСкидки.СкидкаРодитель5
                                            ИНАЧЕ ВЫБОР
                                                    КОГДА ВТВсеСкидки.СкидкаРодитель6 <> 0
                                                        ТОГДА ВТВсеСкидки.СкидкаРодитель6
                                                    ИНАЧЕ ВЫБОР
                                                            КОГДА ВТВсеСкидки.СкидкаРодитель7 <> 0
                                                                ТОГДА ВТВсеСкидки.СкидкаРодитель7
                                                            ИНАЧЕ 0
                                                        КОНЕЦ
                                                КОНЕЦ
                                        КОНЕЦ
                                КОНЕЦ
                        КОНЕЦ
                КОНЕЦ
        КОНЕЦ
КОНЕЦ
7 Сияющий в темноте
 
21.02.20
08:53
(6) а если уровней,скажем 17 ?
хотя,текст запроса можно собирать в коде,чтобы враги не догадались.
AdBlock убивает бесплатный контент. 1Сергей