|
Обход справочники с учетом иерархии | ☑ | ||
---|---|---|---|---|
0
serg-lom89
03.10.14
✎
10:46
|
Подскажите алгоритм ..что то додуматься не могу.Может у кого есть пример..тему поднимал но так ничего не понял
Есть 2 таблицы у меня 1 таблица Товар Родитель наценка Товар1 БУмага цветная Товар2 Карандаш мелкий Товар1 Ластик Товар1 Точилки 2 таблица ГруппыНом Наценка Ластик 2 Бумага 3 Канцтовары 10 Задача состоит в том .что бы обойти таб 1,и установить наценку для товара,с учетом иерархии.Папка канцтовары является родителем для всех из таб 1. Канцтовары | | -БУмага(Папка) | | | |-БУмага цветная(Папка) | |-Бумага ексел (нац =3) |-Бумага 100 штук (нац =3) | |-Карандаши(Папка) | | | |-Элем. справоч. Карандаш мелкий(Нац 10) | |---Ластик(Папка) | | | |-Ластик круглый(Папка) | | | |-Элем. справоч. ластик для карандаша(нац =2) | |-Элем. справоч. ластик для ручки(нац =2) | |-Точилки | |-точилки абраз.(папка) | | | |-Элем. справоч. Точилка абр. 2 (нац 10) | |-Элем. справоч. Точилка абр. 5 (нац 10) | | |-Точилки неАбразивные(папка) | |-Элем. справоч. Точилка неАбразивные. 2 (нац 10) |-Элем. справоч. Точилка неАбразивные. 5 (нац 10) ну и в таб 1 должны записать наценки с учетом иерархии? подскажите алгоритм пжл? |
|||
1
cons74
03.10.14
✎
10:52
|
ДляКаждого строка из таблица2 цикл
выборкаНоменкл = справочники.номенклатура.выбрать(строка.ГруппыНом) пока выбкаНомкнк.следующий() цикл выбкаНомкнк.наценка = строка.наценка кц кц |
|||
2
Лодырь
03.10.14
✎
10:52
|
Есть таблица товаров аля
Товар1 Товар2 Товар3 Преобразуем ее добавляя родителей в Товар1 Товар1 0 Товар1 Родитель11 1 Товар2 Товар2 0 Товар2 Родитель21 1 Товар2 Родитель22 2 Товар3 ТОвар3 0 Товар3 Товар31 1 Соединяем в таблицей наценок и выбираем записи с наименьшим приоритетом (колонка 3 в предыдущей таблице) для каждого товара (колонка 1 в предыдущей таблице). Вуаля. |
|||
3
serg-lom89
03.10.14
✎
10:58
|
точнее как бы обход не справчоника,а пользователя есть 2 таб части
|
|||
4
serg-lom89
03.10.14
✎
11:11
|
(2) ну так я в таб1 и вывел родителя,для наглядности
а в таб2 пользователь указывает папочки для которых надо установить наценку в таб1 |
|||
5
Лодырь
03.10.14
✎
11:14
|
(4) Ну дык, за чем дело то тогда? Пиши запрос.
|
|||
6
serg-lom89
03.10.14
✎
11:19
|
(5)
ну вот не понимаю как в запросе все это склепать))) получается беру таб1 Товар1 Товар1 Товар1 Родитель11 Товар2 Товар2 Товар2 Родитель21 Товар2 Родитель22 и присобачиваю таб2...вот только как в запросе определить что для моего товара,его родитель есть уровнем ниже чем установлен в таб2.и для него элементов нужно установить нац,а для остальных установить другую нац |
|||
7
Лодырь
03.10.14
✎
11:19
|
Обрати внимание на приоритет! это еще одна колонка.
|
|||
8
serg-lom89
03.10.14
✎
11:23
|
(7) как его вытянуть,приоритет?
|
|||
9
Лодырь
03.10.14
✎
11:30
|
(8) Когда ты строишь таблицу номенклатуры с родителями - паралельно вытягиваешь приоритет.
Там будет конструкция вида: Для Каждого Стр из ИсходнаяТаблицаТоваров Цикл ТекущийЭлемент = Стр.Товар; ТекущийПриоритет = 0; НС = ВыходнаяТаблица.Добавить(); НС.Товар = ТекущийЭлемент; НС.Приоритет = ТекущийПриоритет; Пока ЗначениеЗаполнено(ТекущийЭлемент.Родитель) Тогда ТекущийЭлемент = ТекущийЭлемент.Родитель; ТекущийПриоритет = ТекущийПриоритет+1; НС = ВыходнаяТаблица.Добавить(); НС.Товар = ТекущийЭлемент; НС.Приоритет = ТекущийПриоритет; КонецЕсли; КонецЦикла; |
|||
10
serg-lom89
03.10.14
✎
11:34
|
ВыходнаяТаблица я так понимаю это ТабилцаЗначений?
|
|||
11
Лодырь
03.10.14
✎
11:37
|
(10) Ага, ты ее потом засунешь в запрос и сделаешь соединение с таблицей наценок. А уже результат соединения (РС) сгруппируешь по товару и получишь минимальный приоритет записи для каждого товара. Снова соединишь с РС по Товару и Приоритету и получишь то что хотел.
|
|||
12
serg-lom89
03.10.14
✎
11:47
|
(11) я так понимаю надо будет еще определить и для таб 2 приоритет и затем с этими 2 таблицами работать?
|
|||
13
Лодырь
03.10.14
✎
12:05
|
(12) смотри (11)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |