|
Алгоритм загрузки иерархических прайсов из Excel в 1с | ☑ | ||
---|---|---|---|---|
0
Herber
26.07.12
✎
12:14
|
Доброе время суток, Форумчане!
http://s017.radikal.ru/i443/1207/41/d864eca01018.png В общем примерный алгоримт нужен. Через какой цикл пробежать по данным, как сохранить подчиненность групп и т.д |
|||
1
Herber
26.07.12
✎
12:14
|
ГоловнаяГруппа
Пример1 -- Наименование -- Наименование -- Наименование Пример2 Подпример2.1 -- Наименование -- Наименование Подпример2.2 -- Наименование -- Наименование Пример3 |
|||
2
zak555
26.07.12
✎
12:14
|
рекурсия ?
|
|||
3
mzelensky
26.07.12
✎
12:15
|
Зачем рекурсия?
Просто построчно идешь и обрабатываешь. |
|||
4
mzelensky
26.07.12
✎
12:17
|
(3) + Если у всех элементов присутствует "--" , то вот тебе и флаг. Если нет "--", значит группа, иначе элемент. А чтобы сохранить иерархию Хранишь два элемента Текущий элемент и Родительский элемент.
|
|||
5
Herber
26.07.12
✎
12:18
|
Сперва была идея пройтись по массиву и "построить" список групп. [Группа,СтрокаВхождени]
|
|||
6
Reset
26.07.12
✎
12:19
|
(4) Двух элементов недостаточно, нужен стек(банальный массив) родителей.
|
|||
7
Herber
26.07.12
✎
12:19
|
"--" знаки для наглядности. В прайсе их конечно же нету
|
|||
8
х86
26.07.12
✎
12:20
|
рекурсией проще
|
|||
9
Herber
26.07.12
✎
12:21
|
(8) Можно примерно хоть в набросках
|
|||
10
х86
26.07.12
✎
12:22
|
(9)помнится мне у Стаса в книжке был
|
|||
11
х86
26.07.12
✎
12:23
|
а это универсальный загрузчик из табличных доков разве тебе не подойдет?
|
|||
12
Herber
26.07.12
✎
12:23
|
(10) Кто такое Стас если не секрет
|
|||
13
Herber
26.07.12
✎
12:23
|
*такой
|
|||
14
mikecool
26.07.12
✎
12:24
|
(12) все, пипец тебе )
|
|||
15
zladenuw
26.07.12
✎
12:25
|
стыдно. надо знать wiki:Участник:Станислав_Митичкин
|
|||
16
zak555
26.07.12
✎
12:26
|
(12) МодерБот
|
|||
17
Herber
26.07.12
✎
12:28
|
(10) Боюсь спросить где достать эту книгу)
|
|||
18
and2
26.07.12
✎
12:29
|
продам с автографом автора.
дорого |
|||
19
Herber
26.07.12
✎
12:30
|
Я уже просмотрел. Нету там ничего подходяещго
|
|||
20
Herber
26.07.12
✎
12:32
|
В c# есть Dictionary<TKey, TValue>. Есть ли в 1с подобное?
|
|||
21
mikecool
26.07.12
✎
12:32
|
(19) короче - юзай рекурсию
|
|||
22
mikecool
26.07.12
✎
12:32
|
(20) без понятия что это такое
|
|||
23
mikecool
26.07.12
✎
12:32
|
или купи у Мани обработку - он вроде рекламировал ее как супер-пупер
|
|||
24
zladenuw
26.07.12
✎
12:33
|
получай тз элементов с экселя и делай что хочешь потом
|
|||
25
Herber
26.07.12
✎
12:33
|
(21) Я только один пример из рекурсии знаю)) нахождение факториала. Так что предлагайте другой метод
|
|||
26
zladenuw
26.07.12
✎
12:36
|
ПолучитьГруппыИерархически();
Процедура ПолучитьГруппыИерархически(Группа=Неопределено) Выборка=Справочники.Номенклатура.Выбрать(?(Группа=Неопределено,Справочники.Номенклатура.ПустаяСсылка(),Группа)); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Сообщить(Выборка.Наименование); ПолучитьГруппыИерархически(Выборка.Ссылка); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
27
Herber
26.07.12
✎
12:41
|
(26) У меня мозг щас в рекурсию уйдет. Нет примера старым дедовским методом через Для
|
|||
28
Сияющий Асинхраль
26.07.12
✎
12:44
|
А ты думаешь быстрее поймешь без рекурсии? На самом деле без проблем можно и без, хотя не думаю, что это проще для запоминания
|
|||
29
Сияющий Асинхраль
26.07.12
✎
12:45
|
То бишь для понимания, а не запоминания
|
|||
30
Herber
26.07.12
✎
12:48
|
(26) Получили мы группы. Дальше?
|
|||
31
Сияющий Асинхраль
26.07.12
✎
12:49
|
Сам экселевский файл в каком виде, хоть пример покажи
|
|||
32
Сияющий Асинхраль
26.07.12
✎
12:50
|
А то, в принципе, могу скинуть пример, не скажу, что сильно красиво, но работает...
|
|||
33
Feanorko
26.07.12
✎
12:52
|
(12) неудачнег какой-то :)
|
|||
34
Reset
26.07.12
✎
12:53
|
(30) Ничего дальше. Это тебе привели пример рекурсии (кроме факториала). С твоей задачей ничего общего.
|
|||
35
Herber
26.07.12
✎
12:56
|
||||
36
Сияющий Асинхраль
26.07.12
✎
13:01
|
(35) И каким образом для такого варианта ты сам то уровни отличаешь? Пробелы перед наименованием, что ли, считаешь? Если так, то как-то криво и неоднозначно...
|
|||
37
Herber
26.07.12
✎
13:05
|
(36) В том то и дело что по пробелам не вариант различать. Примерно как я думаю
for int i=0; i< Sheets.count; i++) Если ячейка i,С3 пустая, то Создаем группу Буф= созданная группа; Если ячейка i+1,c3 пустая Буф.Родитель = ГоловнаяГруппа; СоздаемГруппу; КонецЕсли ИначеЕсли .... Это для групп. |
|||
38
Сияющий Асинхраль
26.07.12
✎
13:05
|
Короче, есть загрузка для варианта:
ГоловнаяГруппа|Световые приборы|Светильник|ф|100|10 ГоловнаяГруппа|Световые приборы|Светильник1|ы|100|10 ГоловнаяГруппа|Световые приборы|Светильник2|в|100|10 и т.д. |
|||
39
Сияющий Асинхраль
26.07.12
✎
13:11
|
(37) И как ты различишь, что "Инструменты" у тебя находится на втором уровне, а не на третьем, как, например, молотки?
|
|||
40
Herber
26.07.12
✎
13:26
|
(37) Если два раза подряд идут элементы с жирным шрифтом или элементы у которых пустая третья ячейка, то первый будет головным, а второй будет подчиненным.
|
|||
41
Сияющий Асинхраль
26.07.12
✎
13:32
|
(40) Прикольно. :-) Вместо того, чтобы построить вменяемое структурирование, анализировать жирность шрифта, это класс...
|
|||
42
sergeystav
26.07.12
✎
13:43
|
у тебя каждый уровень в соответствующем столбце?
|
|||
43
Сияющий Асинхраль
26.07.12
✎
13:45
|
Судя по картинкам все в одном :-( , эх ладно побег я, товарищ говорит по одной фразе в пол часа...
|
|||
44
Herber
26.07.12
✎
13:48
|
(42) Ага
|
|||
45
Reset
26.07.12
✎
13:51
|
(42)(44) Нифуя, у него все в одном
|
|||
46
Herber
26.07.12
✎
14:12
|
апну тему
|
|||
47
Herber
26.07.12
✎
14:13
|
ГоловнаяГруппа
Пример1 -- Наименование -- Наименование -- Наименование Пример2 Подпример2.1 -- Наименование -- Наименование Подпример2.2 -- Наименование -- Наименование Пример3 А если использовать Таблицу Значений? |
|||
48
Ахиллес
26.07.12
✎
14:19
|
(47) Я не возражаю. Используй.
|
|||
49
Ахиллес
26.07.12
✎
14:19
|
Откуда вообще этот прайс? Может его изначально можно составить по другому?
|
|||
50
Feanorko
26.07.12
✎
14:20
|
(47) используй ДеревоЗначений и не иппи моск :)
|
|||
51
Herber
26.07.12
✎
14:22
|
(50) а потом не будет проблематично загрузить из Дерева в номенклатуру
|
|||
52
abitfrosty
26.07.12
✎
14:24
|
Есть такое понятие "Родитель", вот если он заполнен - пихаешь свой элемент туда. Если этот родитель не создан - создаешь. Если у этого родителя есть родитель - создаешь его. Удачи.
|
|||
53
Ахиллес
26.07.12
✎
14:30
|
Кароче. Определяешь максимальный уровень вложенности групп (вручную).
Далее: ТекущийРодитель_1 ТекущийРодитель_2 ТекущийРодитель_3 ТекущийРодитель_4 ТекущийРодитель_N По максимальному уровню вложенности. Далее в строке находишь данные, определяешь группа или номенклатура, записываешь с текущимродителем - 1 уровень. |
|||
54
Feanorko
26.07.12
✎
14:33
|
(51) а в чем там может быть проблема?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |