|
Помогите с загрузкой из Excel в 1С | ☑ | ||
---|---|---|---|---|
0
shaman_blr
07.02.23
✎
14:50
|
Здравствуйте. Помогите с выгрузкой из excel в 1с.
Есть список: 1 колонка это код , 2 колонка это наименование. A фывфывфывв 01 фывфывфывфыв 01.1 фывфывфыв 01.11 фывфывфы 01.11.1 Пфывфывфы 01.11.11 фывфывфыв 01.11.11.100 фывфыфывфы вот код Процедура ПрочитатьВыбранныйФайл() Экспорт Прогресс=0; ТабДок = ПрочитатьТабличныйДокумент(); Если не ТабДок=null тогда КоличествоСтрокТаблицы = ТабДок.ВысотаТаблицы; Для НомерСтрокиТаблицы = 2 по 15 цикл Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C1"); ТекущаяОбласть = Область.ТекущаяОбласть; Столбец2 = СокрЛП(ТекущаяОбласть.Текст); Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C2"); ТекущаяОбласть = Область.ТекущаяОбласть; Столбец3 = СокрЛП(ТекущаяОбласть.Текст); Сообщить(Столбец2 +" " + столбец3); КонецЦикла; Прогресс = 100; Предупреждение("Выполнено!!!"); Прогресс = 0; КонецЕсли; КонецПроцедуры Вопрос таков. Мне нужно чтобы эти поля записались как группа A 01 01.1 01.11 01.11.1 01.11.11 а это строчка последняя 01.11.11.100 чтобы была в группе 01.11.11 |
|||
1
Злопчинский
07.02.23
✎
14:53
|
то что ты написал - это не "выгрузкой из excel в 1с."
это загрузка из Экселя в 1С. а то что ты написал - это когда Эксель пишет в 1С. |
|||
3
Kassern
07.02.23
✎
14:55
|
(0) СтрРазделить по первой колонке, где разделитель это точка. Обходите массив и создаете нужную иерархию.
|
|||
4
shaman_blr
07.02.23
✎
14:56
|
(1) описался)
|
|||
5
Kassern
07.02.23
✎
14:56
|
(4) вас сейчас и тут не правильно поймут без ударения)
|
|||
6
PR
07.02.23
✎
14:59
|
Сложнее всего понять, что это конец и это уже должен быть элемент, а не группа
Для этого я бы смотрел следующую строку, на предмет того, это уже новая иерархия или нет |
|||
7
Kassern
07.02.23
✎
15:02
|
(6) Можно сделать проще
Типа так: Родитель=""; Для каждого ТекГруппа Из МассивГрупп Цикл ТекГруппа=ПолучитьГруппу(ТекГруппа,Родитель); Родитель=ТекГруппа; КонецЦикла; Тогда не нужно будет проверять конец это, или нет. |
|||
8
PR
07.02.23
✎
15:04
|
(7) И что?
И как понять на каждом этапе, группу создавать или элемент? |
|||
9
Kassern
07.02.23
✎
15:05
|
(8) Поиск по имени и родителю. Если нет, то создавать. Для этого и передается родитель в функцию
|
|||
10
Kassern
07.02.23
✎
15:06
|
(8) а вы про элемент/группа. Как я понял у него в 1 колонке иерархия, а элементы во второй.
|
|||
11
mistеr
07.02.23
✎
15:06
|
(0) Так чем отличается элемент от группы, если не ограничиваться одним примером?
Формализуй этот критерий, запиши псевдокодом, затем переложи на 1С. |
|||
12
Kassern
07.02.23
✎
15:06
|
(10) если это не так, тогда да, нужно свойство передавать, элемент это, или группа.
|
|||
13
mistеr
07.02.23
✎
15:07
|
(10) Цитата: "1 колонка это код , 2 колонка это наименование"
|
|||
14
shaman_blr
07.02.23
✎
15:08
|
(10) НЕТ, 1 колонка это код иерархия а 2 это название его
|
|||
15
PR
07.02.23
✎
15:11
|
(10) Что именно тебе подсказало эту мысль?
У него в первой код, во второй наименование И всё |
|||
16
Kassern
07.02.23
✎
15:12
|
(13) Увидел. Ему тогда нужно как-то определить, что эти строки для группы, а это для элемента.
У вас точками регулируется уровень в иерархии. В этом случае просто проверяете последний ли это элемент массива, если так, это это элемент, иначе это группа. |
|||
17
PR
07.02.23
✎
15:12
|
(11) Тем, что он последний в иерархии, понятно же
|
|||
18
PR
07.02.23
✎
15:13
|
(16) Какого массива?
|
|||
19
Kassern
07.02.23
✎
15:13
|
(18) СтрРазделить(СтрокаКолонки1,".");
|
|||
20
Kassern
07.02.23
✎
15:14
|
Единственное, нужно как-то определить, есть ли элементы на 1ом уровне. Если нет, то все просто.
|
|||
21
mistеr
07.02.23
✎
15:18
|
(17) Мне не понятно. Может там где-то дальше есть еще глубже :)
|
|||
22
Kassern
07.02.23
✎
15:19
|
(21) Поэтому придется вначале весь файл прочитать, а потом уже определять, где группа, а где элемент)
|
|||
23
Kassern
07.02.23
✎
15:20
|
Что за изврат делать это в экселе. Неужели так сложно простенький протокол написать на json/xml...
|
|||
24
Kassern
07.02.23
✎
15:26
|
Ну и следующие ожидаемые косяки, если это не разовая операция:
К примеру 01.11.11.100 фывфыфывфы переместили в другую группу, следовательно у этой позиции код уже будет 02.21.11.200 К примеру. В этом случае, при загрузке, нафигачите кучу дублей. |
|||
25
Kassern
07.02.23
✎
15:27
|
Если бы код у элементов отличался по структуре от групп, то тогда было бы гораздо проще и меньше косяков на выходе.
|
|||
26
PR
07.02.23
✎
16:01
|
(19) И что?
Как понять, последний элемент в массиве — это группа или элемент? |
|||
27
PR
07.02.23
✎
16:02
|
(22) Что мешает смотреть следующую строку?
|
|||
28
Kassern
07.02.23
✎
16:03
|
(27) А где гарантия что файл упорядочен по группам и нет там такого?
A фывфывфывв 01 фывфывфывфыв 01.1 фывфывфыв 01.11 фывфывфы 01.11.1 Пфывфывфы 01.11.11 фывфывфыв 01.11.11.100 фывфыфывфы Б фывфывфывв 01.11.11.100.50 фывфыфывфы |
|||
29
PR
07.02.23
✎
16:13
|
(28) Да там вообще никаких гарантий
Вдруг 1с — это не программа Нуралиева Вдруг иерархия элементов Вдруг справочник подчинен другому и нужно еще владельца заполнять Вдруг пустые строки есть Вдруг еще триллион высосанных из пальца вдруг |
|||
30
Kassern
07.02.23
✎
16:18
|
(27) (29) А вот и еще пример
A Мебель 01 Мебель для дома 01.1 Кухня 01.11 Гарнитуры 01.11.1 Встроенная техника 01.11.1.10 Посудомойка (Элемент в группе "Встроенная техника") 01.11.20 Кухонный гарнитур Эконом (Элемент в группе "Гарнитуры") 01.11.11 Умывальники 01.11.11.100 Смеситель М1 (Элемент) 02 Мебель для Дачи В общем, если есть элементы не в конечных группах, то тоже будет косяк. Пускай ТС на своем примере проверяет, какая там иерархия в файле, обратит внимание на порядок, нахождение элементов в группах, а после уже ваяет решение. Подсказок итак много дали. |
|||
31
PR
07.02.23
✎
16:21
|
(30) И что здесь такого?
Во всех трех случаях элемент легко вычисляется, потому что после него идет другая ветка групп |
|||
32
Kassern
07.02.23
✎
16:21
|
+По-любому в этом файле есть и другие колонки, по которым можно понять элемент это, или группа. Всякие там цены, единицы изменения, штрихкоды и т.д.
|
|||
33
PR
07.02.23
✎
16:21
|
+(31) Только вместо 11 нужно было написать 1.1
|
|||
34
Kassern
07.02.23
✎
16:24
|
(31) Это сработает, если нет конечных групп без элементов. Я за годы столько изврата повидал, что там у ТС, только ему и известно.
|
|||
35
Kassern
07.02.23
✎
16:25
|
(31) Да взять банально A Мебель - как понять, это элемент без родителя, или группа?
|
|||
36
PR
07.02.23
✎
16:25
|
(34) Естественно
Поэтому мы отталкиваемся от написанного в (0), то есть от того, что в конце элемент |
|||
37
Kassern
07.02.23
✎
16:25
|
(35) Что скажет в этом случае следующая строчка?)
|
|||
38
PR
07.02.23
✎
16:26
|
(35) Группа, потому что первая строка
|
|||
39
PR
07.02.23
✎
16:27
|
(37) Если следующая строка в иерархии текущей, то текущая — это группа
|
|||
40
Kassern
07.02.23
✎
16:27
|
(39) Ну так у ТС вот так дела обстоят)
A 01 01.1 А не в иерархии 01, но почему-то ТС хочет, чтобы она группой стала |
|||
41
PR
07.02.23
✎
16:28
|
(40) Блеать, см. (38)
|
|||
42
PR
07.02.23
✎
16:39
|
(40) А, сорри, не понял сразу
Ну, конкретно про этот тупняк с первой А, а потом 01, 01.1 и т. д. пусть ТС сам ищет истину в своем вермуте |
|||
43
Kassern
07.02.23
✎
16:39
|
(41) Вы же понимаете, что это все сраные костыли? Дальше может быть Б и это элемент в корне, а не группа, в которой "блеать" идет 02....
Как вообще можно гадать сцуко по одному элементу и обезличенному тексту? По уму должно быть на подобии: { "groups": [ { "id": "001", "parent_id": "", "Name": "Мебель" }, { "id": "123", "parent_id": "001", "Name": "Для кухни" } ], "goods": [ { "id": "01", "parent_id": "123", "Name": "Стол" }, { "id": "02", "parent_id": "123", "Name": "Стул" } ] } Тогда никаких косяков не будет, разве что коды групп и элементов могут пересекаться, а в 1с это 1 справочник. Для этого можно таблицу соответствия завести. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |