|   |   | 
| 
 | Помогите с загрузкой из 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 справочник. Для этого можно таблицу соответствия завести. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |