Имя: Пароль:
IT
 
Как свернуть одинаковые значения цен в группы?
0 ИС-2
 
naïve
03.03.14
12:29
Пусть на входе есть таблица с ценами номенклатуры по контрагентам. Надо на выходе получить таблицу свернутую по значениям типа цен.
Есть только вариант с суммированием цен, но это медленно (проверено) и ненадежно.
Какие еще есть варианты?
http://storage9.static.itmages.ru/i/14/0303/h_1393835124_3742148_b8399a7128.jpg
1 Feunoir
 
03.03.14
12:37
(0) http://static.diary.ru/userdir/2/7/3/4/2734195/71565945.jpg и подозреваю, что я не одинок.
2 ИС-2
 
naïve
03.03.14
12:43
(1) ага, была у кого-то такая проблема
3 Ненавижу 1С
 
гуру
03.03.14
12:44
(0) а зачем?
4 1Сергей
 
03.03.14
12:47
средствами 1С?
5 ИС-2
 
naïve
03.03.14
13:24
(3) для оптимизации выгрузки цен в мобильную торговлую. Если для каждого клиента выгружать по 1 типу цен, то объем будет большим. А вот если свернуть, то норм
6 ИС-2
 
naïve
04.03.14
07:55
вот то, что мне надо в более наглядном представлении:

https://www.dropbox.com/s/g81kqsfq59x0kgg/Скриншот%202014-03-04%2007.54.42.png
7 PuhUfa
 
04.03.14
08:19
(6) 2я табличка это обычный прайс лист, не?
8 Feunoir
 
04.03.14
08:24
(6) Хм. Интересно. Такая идея

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Цены1.Контрагент
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК Цены
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены1
        ПО Цены.Контрагент = &Контрагент
            И Цены1.Контрагент <> &Контрагент
            И Цены.Номенклатура = Цены1.Номенклатура
            И Цены.Цена <> Цены1.Цена

По идее этот запрос должен выдать тебе всех контрагентов, у которых цены на товары отличаются от цены &Контрагент. Но подозреваю, что оно может сработать неправильно если товарные матрицы отличаются для разных контрагентов. Надо проверять.

Ну а дальше циклом по всем контрагентам.
9 ИС-2
 
naïve
04.03.14
08:30
(7) нет.

Первая таблица это фактические цены у контрагентов с учетом скидок и наценок. Они получены расчетным путем.
Есть всего несколько типов цен (например, розница, мелкий опт, крупный опт) на которые накладываются скидки и наценки действующие на контрагента и номенклатуру(нетиповой механизм). В результате чего получается таблица 1.

Теперь стоит задача - выделить клиентов с одинаковыми ценами.

Но нужно быстрое решение - 2000 позиций на 10 клиентов дают 20000 строк, которые надо обработать. Поэтому вариант с циклом не подходит.
10 sda553
 
04.03.14
08:32
Все цены клиента в строку
100110100150170...
от этой строки вычисляешь хэш, например 0x1234fedc
Записываем в соответствие
соотв[0x1234fedc]=новыйТипЦенИзАвтонумератора
А если в соответствии уже есть ключ 0x1234fedc то значит какой то клиент в цикле до этого уже использовал такой же тип цен и просто пишем этому клиенту типЦенн=соотв[0x1234fedc]

Спасибо за внимание
11 sda553
 
04.03.14
08:34
Алгоритм можно ускорить если конкатенировать не цены, а прейскуранты
12 ИС-2
 
naïve
04.03.14
09:20
(8) вот. Но опять проблема с производительностью - для всего нужен цикл.
(11) Прейскуранты - это от чего зависят сами сформированные цены. Например, сумма скидки, группа товаров и т.д. Если да, то уже сделано. Но алгоритм жуть - делал осенью сейчас смотрю и боюсь его. Поэтому хочу упросить...
13 Feunoir
 
04.03.14
12:03
(12) Запрос выполняется считанные миллисекунды, 10 клиентов обработается за 1 секунду. Тебе надо быстрее? Или ты надеешься без цикла это сделать вообще.
14 ИС-2
 
naïve
04.03.14
15:10
(13) в том то и дело, что не 10 клиентов, а десятки и сотни, а  на каждого клиента могут свои скидки по группам номенклатуры
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн