#0
by LYuri
Доброго времени суток. Пытаюсь реализовать загрузку номенклатуры посредством внешней обработки. Исходные данные: ИБ - УТ 10.3.29.1 типовая, базовая. Файл экселя с группировками, т.е. иерархический. С чтением из фалы проблем нет. Уровень иерархии - проблем нет, получаю через свойство ExcelЛист.Rows(ТекСтр).OutlineLevel Проблема в следующем. Нужно реализовать правильную загрузку с учетом иерархии. Сам код не интересует, нужна блок-схема или примерный алгоритм. Может у кого есть рабочий пример. Заранее спасибо.
#1
by pessok
А в чем проблема? При обходе записывай к текущей номенклатуре код родителя, а потом в 1С его и устанавливай
#2
by Looser-1c
читаем элемент, ищем для него родителя, не находим - см. пункт первый, находим - записываем
#5
by LYuri
Уровни динамические: 1---- -2--- --3-- ---4- ----5 ----5 ---4- ---4- ---4- --3-- ---4- ---4- -2--- -2--- -2--- Примерно так может быть. число вложений не ограничено
#12
by LYuri
Обязательно, этим щас и занят. Но нужно быстрое решение. Времени нет на теорию,нужен практический пример
#15
by LYuri
Спасибо. Поиском пользовался, эта статья в закладках есть, но пока разобрать ход мысли автора не получилось до конца. Сижу ковыряю.
#17
by Looser-1c
Я не хочу в пятницу работать. Поэтому - стотыщьмильонов (с гарантией, чтобы не хватило ))
#19
by LYuri
2 этап - вызываю процедуру, которая перебирает строки экселя и вызывает рекурсивно сама себя.
#21
by dk
самый простой вариант - запись в 2 цикла 1. первый цикл пробегаешься эксель и дорисовываешь недостающих родителей 2. все родители уже есть - просто присваиваешь родителей элементам -------- или проблема в поиске родителя? у тебя группы по наименованию или коду дублируются?
#22
by LYuri
да именно проблема в поиске родителя. кодов нет. есть только наименования. могут дублироваться
#23
by Fish
А в чём проблема? Ищешь по наименованию только внутри определённого родителя. Или у тебя внутри одного родителя могут быть одинаковые элементы/папки?
#25
by dk
я обычно из Экселя гружу в ТЗ и уже потом с ТЗ работаю прочитал в тз добавил колонку родитель с ссылкой на группу в 1с заполнил родителя записал элементы
#26
by Maniac
Короче не трахай мозг. Заведи в 1С все папки. С иерархией. Не думаю что там у тебя их миллионы. Ну 50 штук. А потом грузи прайс ища только папку нижнего уровня, в которую непосредственно входит товар.
#27
by Maniac
Илои можно всю иерарзхию загрузить в корень, в нее номенгклатуру. Потом просто поперекидывать папки в папки и все. 5 минут дел. Ты программировать будешь в мллиярд раз долше.
#32
by Maniac
1) все загонял в ТЗ 2) В цикле бегу по ТЗ. Определяю если строка группа. Запихиваю в переменную (которая объявлена до цикла) Если определеил ее, то назначаю в продолжении цикла всем строкам товаров. Как только дошел до следующего определения группы. Опять в переменную и опять назначение всем слудующим строкам.
#33
by Maniac
Определить группу достаточно легко. У групп в прайсах всегда отсутствует одно из трех правил: если есть колонка артикул но пусто - группа. Если есть колонка цена - но пусто, тоже группа. Если есть единица и пуста - тоже группа. При выполнении хоть одного из этизх условий мы попадаем на группу в ТЗ, и ее с помощью запоминания в переменную распихиваем по строкам. Дальше простое дело техники. Итого всего навсего 1 пробежка чтобы по всем строкам группу определить и далее туда грузить.
#35
by Управление торговлей
заведи список значений, при увеличении OutlineLevel кидай туда группу, при уменьшении OutlineLevel получай группу из списка, используя OutlineLevel как индекс
#36
by МишельЛагранж
Выгружаем номенклатуру вместе с привязкой к папкам в виде "каталог/каталог1/каталог2/каталго3". При загрузке - парсим привязку, ищем цепочки (начиная сверху с корня), если нашли всех потомков - пишем туда, нет - создаем на нужном уровне потомков до конца и пишем туда. Это единственный верный путь - и автоматически, и все будет правильно. Остальное - рекурсии, "заведи папки", OutlineLevel - не дадут точности и глубины, а следовавтельно - неправильный результат получишь. Все это рассчитано на 1-2 уровня вложенности.
#37
by МишельЛагранж
>>Или у тебя внутри одного родителя могут быть одинаковые элементы/папки? - внутри разных родителей могут быть одинаковые наименования. Это как у вас - зовут Сергей, а рядом - еще целая лестничная клетка Сергеев. Но вы же все разные. Да еще и по поколениям.
#39
by Сияющий Асинхраль
Есть процедурка в 20 строчек на 7.7, которая расставляет предков и потпков в тз где указаны уровни. Если надо могу сбросить
#40
by Сияющий Асинхраль
+ Вот так разбирается ТЗ, которая имеет колонку "Уровень", заполненная как в и пару доп колонок "ЭлтТекУр" следующий в данной папке элемент текущего уровня (если они еще есть), "ЭлтВниз" - первый элемент входящий в текущую папку:
#41
by LYuri
Методом рекурсии получилось организовать загрузку с неограниченным уровнем вложенности. Воспользовался статьёй Правда пришлось кардинально переработать алгоритм. Теперь всё работает. Доделываю, навожу лоск. Позже выложу на инфостарте.
#43
by LYuri
Может есть у кого информация дайте ссылку на информацию подобной функции на OpenOffice. Хочу сделать возможность работать через свободный офис.
#45
by LYuri
Почти доделал обработку. получилась универсальная. Тестировал на основной прайсе от 1С. Загрузка всего прайса занимает не более 5 минут
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- При приеме данных с удаленной машины загрузка идет очень долго
- Загрузка данных из ЗиК в 1С Предприятие
- Excel и 1С - вопрос про Excel?
- Загрузка из Excel. Help me!!!
- Долгая загрузка при "Загрузка структуры данных программы..."
- Загрузка структуры данных программы / загрузка прикладной системы
- Можно ли отредактировать файл Excel из 1С без установленного Excel?
- 8.3.7 частичная загрузка из файлов /LoadConfigFromFiles
- Выгрузка в Excel по шаблону Active Document различия Excel 2010 Excel 2016
- Выгрузка в Excel по шаблону Active Document различия Excel 2010 Excel 2016 ч2
- Загрузка данных в excel Имя не может совпадать со встроенным именем
В этой группе 1С
- Искусственный срез последних
- Заработок за расчетные года в начислении по больничному, ЗУП 2.5
- Заказ покупателя в 1С Розница 8
- Диаграммы в управляемых формах.
- Превышен максимальный расход памяти за один вызов
- Как "ПовторятьПриПечатиСтроки" не на все страницы?
- Макет Подвала в СКД
- Обмен данными между УПП и КА по FTP, постоянно ошибка: Номер сообщения меньше ли
- Параметры в Конвертации Данных
- Отбор в динамическим списке УФ
- Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_LINENO'
- Поле объекта не обнаружено (СписокОрганизация)
- как переустановить RDP
- УТ 10.3 Прайс с картинками: как сохранять?
- v7: Отбор не нулевых остатков в справочнике номенклатура
- Превышен максимальный расход памяти за один вызов
- Замена двойных кавычек
- "Удалять автоматически" и "Удалять автоматически при отмене проведения"-отличия?
- Где тут в этом вашем 1С "перенос слов", как в Екселе
- Тупой вопрос по связке УТ + битрикс