Очередная обработка загрузки накладных из Excel. Не раз здесь выкладывались обработки, которые используют нечеткий поиск, а именно компоненту StrMatch. Но мне нужна была обработка, которая подключается как внешняя форма (т.е. вообще без вмешательства в базу) и чтобы для доступа к таблицам Excel использовался Open Office (у большинства клиентов — нет денег на MS Office).
По кратинкам должно быть понятно:
— подключается как внешнаяя обработка заполнения табличных частей
— смотрим структуру екселевского файла, запоминаем номера колонок данных и диапазон строк с данными
— прописываем настройки в обработке (можно сохранять эти профили для разных поставщиков)
— запускаем загрузку
а вот тут самое главное:
— — обработка в цикле перебирает каждую строчку таблицы с данными и показывает пользователю несколько найденных похожих вариантов из справочника номенклатуры
— — далее пользователь или выбирает что-то из найденных вариентов, или жмет Esc (Закрыть)
— — если нажат Esc (Закрыть), т.е. подходящего вариант найдено не было, то обработка предлагает выбрать группу где будет создана новое наименование.
— — на всякий случай есть еще кнопки «пропустить» и «прервать»
Небольшая особенность:
Функцию доступа к данным Excel с помощью Open Office я использую чужую, найденную тут же на infostart.ru (ссылка на автора не сохранилась, к сожалению). Иногда срабатывает некорректно, особено если длинный путь к файлу Excel. Бывает достаточно перезапустить обработку, иногда нужно кинуть файл в папку с простым коротким именем.










Неплохо бы для удобства работы пользователя сделать просмотр файла Open прямо из обработки (чтобы определиться с номерами ячеек и полей).
(1) gull22, Точно, как-то сразу не подумал
Вот для того и существует раздел «Комментарии». Рад помочь автору в совершенствовании его творения (для себя любимого :))
А каким механизмом реализуется нечеткий поиск ?
(4) розница.net, используется очень популярная здесь компонента StrMatch
Подскажите, как с этим быть?
Перед записью в элементе справочника «Номенклатура» необходимо заполнить «базовая единица»!
Перед записью в элементе справочника «Номенклатура» необходимо заполнить «вид номенклатуры»!
(6) dr_dom, Скорее всего не создан пользователь или ему не прописаны значения по умолчанию.
Можно было бы «Вид номенклатуры» и «Базовую единицу» вывести на форму обработки, но мне кажется это лишним, как правило, эти прописываются один раз в настройках пользователя.
(7)Спасибо.
Еще позволю себе посоветовать Вам реализовать возможность выбора между OpenOffice Calc и MS Office Excel для обработки файла. Уж очень не стабильно работает загрузка через OpenOffice Calc.
Поддерживаю.
(8) dr_dom, да меня самого подбешивает нестабильность с Open Office’ом
Надо сделать под ексель.
(10)FSerg, срочно нужна была Ваша обработка со стабильной загрузкой через Excel, так что . Спасибо за удобный инструмент.
(11) dr_dom, клево, спасибо, качну себе чтоб екселем тоже пользоваться, опен офис ну как-то совсем непредсказуемо себя ведет
Супер! спасибо! мне как раз сегодня такую задачу поставили — импортировать накладные поставщика в ексель-формате в УТ. А то велосипед как-то не очень хочется изобретать. Придется конечно от ОпенОфиса отказаться, раз уж она такая нестабильная.
Лучше взять вот эту: доработанную версию, там уже и ексель и другие плюшки 🙂
после Выполнить выдает Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту) {Форма.Форма.Форма(115)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту)
ЗагрузитьВнешнююКомпоненту(«StrMatch.dll»);
по причине:
Ошибка при загрузке внешней компоненты
как это победить?
(17) vstsoy, Я думаю, что нужно закинуть файлик «StrMatch.dll» в папку с соответствующей версией платформы 1С.
Хотя проблема может быть и из-за 64-битной версии ОС, под x64 не уверен, что компонента будет работать.