Универсальная загрузка любых документов из Excel с использованием нечеткого сравнения по реквизиту типа "Справочник"


В помощь антиглобалистам!
Для мелких и очень мелких 1С - это дорого (ноутбук стоит дешевле). Поэтому практикуется такой порядок работы: в центральном офисе выгружают в Excel из 1С "Продажный лист"; торгуют и отмечают продажи в файле; приносят в офис вечером файл результата и загружают отчет о продажах за день.
Грузить можно и заявки, и перемещения, и поступления, и списания, и счета, и все для  ОС, НМА, МБП... была бы табличная часть!

По мотивам УПБ01.ert - Удар По Бездуховности, версия 1.0д
Автор: Che Burashka
E-mail: e.meil@mail.ru 
За что ему огромное спасибо!
Все его секретные кнопки тут рассекречены. Надеюсь за свои секреты он уже все деньги получил.

Особая благодарность автору внешней компоненты strmatch.dll
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=2485
  Автор: Ракунов Александр.
  E-mail: Skorp@newmail.ru
  ICQ#: 63919227
Немного невнятно в описании компоненты сказано по поводу нескольких "Кэшей":
возможны два и более Кэш по разным справочникам одновременно?
Если да, то теорию можно развить до бесконечности.

Также благодарность автору библиотеки V7XLSD7.dll .

Недавно появилась и очень интересная штучка - использована способность открывать XLS файлы и не заботиться о их закрытии даже в случае аварийной ситуации.

Порядок работы:

  1. Выбрали XLS файл (пункт 1) и он тут же загрузился в таблицу значений (окно 1). Ход загрузки отображается в строке состояния. Предполагается, что Excel файл имеет заголовки столбцов (строка 1 пункт 5а).
  2. В таблице (окно 2), отображается номер или название столбца входного Excel файла.
    Рядом с названием "Столбец" еще один столбец "Значение" - для сопоставления реквизитов документа и загружаемого файла, а фактически уже таблицы значений.
  3. Выбираем из окна "Документ" тот вид документа, который должен быть создан или догружен в результате выполнения обработки.(пункт 2)
  4. В окно списка реквизитов документа выводятся общие реквизиты, реквизиты шапки документа и реквизиты табличной части документа. Основная потребность, конечно же грузить в табличную часть, но и шапка может быть автоматически загружена. (Правда существует необходимость повторять реквизиты шапки в каждой строке Excel файла (таблицы значений)).
    Отмечаем (окно 3 пункт 3) все реквизиты, которые собираемся грузить.
  5. Выбираем реквизит по которому будем проводить нечеткое сравнение (окно 4 пункт 4).
  6. Если количество элементов для нечеткого сравнения в исходном файле с одинаковым названием велико, пытаемся построить комплексный ключ ("Наименование") для качественного поиска. В окно объединяемых столбцов, через запятую вписываем номера столбцов, которые хотим объединить.(пункт 5б) Последним записываем номер столбца с наименованием по которому будем осуществлять нечеткий поиск. (Помните! Это сработает, если в справочнике (например: "Номенклатура"), для  нечеткого сравнения, наименование элемента уже содержит объединяемые Вами (например: "Артикул" И "Наименование") ячейки). Вам заранее следует думать о названии элементов справочника, если собираетесь использовать нечеткое сравнение.(Пункт 5в)
    Можно дорисовать еще одно окно, в котором информация по справочнику будет подготовлена с формированием комплексного ключа по любой комбинации атрибутов справочника  ("Артикул"+"Наименование"+"Партия"+"ДатаПоступления" и т.д.), Кэш "заглотит" это как источник поиска, а ссылка на объект в таблице значений останется примитивной. Но мне влом! Может когда ...
  7. Проводим сопоставление реквизитов Excel файла (таблицы значений) и выбранных для загрузки реквизитов, двойным щелчком мыши по полю "Значение" напротив названия нужного реквизита таблицы значений.(окно 2 пункт 6)
  8. Выбираем, при необходимости, документ, в который собираемся загрузить информацию. (не обязательно, документ будет создан автоматически, если окно останется пустым).(пункт 7)
  9. Нажимаем на кнопку "Загрузить документ".(пункт 8)

Контролируем окно сообщений... После подготовки информации откроется окно сравнения.

Интерфейс окна интуитивно понятен за исключением 2-х нюансов.
Если в справочнике нет загружаемой позиции (нет в режиме автоматического поиска; нет в режиме ручного выбора), вы можете создать необходимый элемент справочника на основе наиболее подобного ему. Для этого:

  1. Становитесь на строку "наиболее подобного" из 20 строк и выставляете флажок "хочу новый".
    В таблице значений под окном сравнения появится список реквизитов элемента справочника и значения реквизитов взятые от "наиболее подобного". Наименование элемента будет заполнено значением несуществующего элемента. Реквизиты доступны для редактирования по двойному щелчку мыши.
  2. Нажимаете кнопку "В справочник" и созданный таким образом новый элемент справочника будет записан, и автоматически выбран в документ.

Желаю приятной работы.

Файлы обработки:

-