При внедрении системы DIRECTUM почти всегда требуется занести утвержденную номенклатуру дел заказчика в справочники модуля Канцелярия. Данный сценарий был разработан с целью облегчения жизни внедренцам, чтобы им не приходилось заполнять эти справочники в ручную.
Как правило утвержденная номенклатура дел организации на текущий год имеется в электронном виде в формате Word. Выглядит этот документ обычно так:
При запуске, сценарий запросит указать файл с номенклатурой дел и заполнить соответствие столбцов импортируемой номенклатуры и реквизитов справочника. Это сделано для случая, когда структура таблицы номенклатуры дел отличается от приведенной выше.
В ходе работы сценария, если необходимого подразделения не окажется в справочнике Подразделения, то пользователю будет предложено на выбор три варианта:
При работе сценария автоматически заполняются данными из таблицы номенклатуры дел справочники:
Ограничения работы сценария:
Перспективы развития сценария:
Готов выслушать любые пожелания по доработке сценария. Сам сценарий прилагаю.
ImportNomenklatury.zip (5,88 Кб)
*******************************08.04.2010**********************************
Добавлено:
1) Добавлена дополнительная кнопка при отсутствии необходимого подразделения "Выбрать". Теперь по этой кнопке можно вручную выбрать необходимое подразделение из списка подразделений. Если подразделение не выбрано, то импорт номенклатуры продолжится без заполнения
реквизита "Подразделение".
2) В заголовок окна выбора подразделения добавлено наименование выбираемого подразделения.
3) Добавлена установка флажка "ЭПК" при наличии в сроке хранения дела значения "ЭПК" (Например: 5 лет ЭПК).
4) В определение сроков хранения добавлено значение "До востребования".
Исправлено:
1) Изменен алгоритм поиска статьи хранения. Теперь для того, чтобы статья хранения перенеслась в справочник "Номенклатура дел", необходимо перед номером статьи наличие символов "ст." (Например: ст.44, ст.72а, ст.6б). Если кому-то необходимо изменить алгоритм
определения номеров статей хранения и сроков хранения, то они могут изменить регулярные выражения в строках сценария:
стр.227: ArtRegExpress = "(ст\.\d+[абвгдежзиклмнопрстуфхцчшщыэюя]?)"
стр.228: StorRegExpress = "(\d+\s*(лет|года?)|постоянно|Постоянно|ДЗН|ДМН|До востребования)"
2) Исправлена ошибка, возникающая при наличии в строке объединенных ячеек по вертикали.
3) Исправлена ошибка формирования списка имен столбцов, при наличии в заголовках столбцов символа ",".
РИТИмпортНоменклатурыИзWord2.zip (6,92 Кб)
*******************************12.09.2011**********************************
Исправлено:
1) Если найдено дело с таким же индексом, наименованием, датой начала и датой завершения, то оно будет изменено значениями из документа номенклатуры дел (раньше, если в справочнике номенклатуры дел уже было дело с таким индексом, то оно не импортировалось).
2) Исправлены мелкие ошибки, обнаруженные в ходе тестирования сценария.
РИТИмпортНоменклатурыИзWord3.zip (7,54 Кб)
Чего-то ссылка не работает...
Наверно из-за того, что имя файла русскими буквами написано. Сейчас переименую и перезалью.
Теперь работает
После очередного проекта немного модифицировал сценарий.
В регулярных выражениях почему то не работает метасимвол \w
А какому шаблону пытаетесь написать соответствие? \w - определяет соответствие любому знаку из диапозона "[A-Za-z0-9_]", т.е. кирилица не учитывается...
Тогда понятно почему не работает :)
Добрый день! Сценарий вышибает с ошибкой на 169 строке, мол, значение переменной не определено. Что делать?
На 169 строке он теоретически не может вываливаться с ошибкой, если вы конечно сами сценарий не правили. Можете привести полный текст ошибки?
А какую версию сценария вы используете?
Дико извиняюсь. Строка 195, "Значение переменной DivCode" не определено.
Версия от 08.04.2010.
В текст заглянул, не может подразделение инициализировать, так разумею. Изменений не вносил.
А сценарий выдавал сообщение:
// Если такого подразделения нет, то предложим его создать,
// выбрать в ручную или не импортировать эти дела
и что вы выбирали, если сообщение появлялось?
Нет, такого сообщения не было.
У вас похоже структура таблицы с номенклатурой отличается от той, что я приводил.
Сначала должна идти строка с кодом и наименованием подразделения, а у вас похоже сразу идут строки со списком дел, либо строка с подразделением разбита на несколько столбцов. В сценарии идет проверка, если в строке один столбец, то это подразделение, иначе это строки номенклатуры.
В строку 120 сценария добавьте код:
DivCode = Skeep
т.е. кусок кода будет выглядеть так:
120: DivCode = Skeep
121: // Если ячейка всего одна, то это подразделение
122: if TRowCellsCount = 1
123: DivStr = Trim(Table.Cell(TRow;1).Range.Text)
тогда реквизит Подразделение не будет заполняться
Добавил. Заработало! Подправил нашу таблицу, работает.
Благодарю за помощь!
Добрый день! При добавлении в текст сценария кода
DivCode = Skeep,
вылезает информационное окно с текстом:
Непонятно, почему в справочник номенклатуры дел ничего не пишется...
Не секрет. Строка 120. Следовал вашему указанию по обсуждаемой ранее проблеме:
А вордовский файл с номенклатурой дел у вас выглядит точно так же, как у меня в материале выше?
Можете мне выслать ваш файл с номенклатурой, я посмотрю в чем дело?
И еще вопрос, у вас появлялось информационное окно:
"Не найдено подразделение 'Имя_подразделения'. Нажмите кнопку 'Создать', чтобы создать это подразделение или кнопку 'Пропустить', чтобы не импортировать номенклатуру дел для этого подразделения или кнопку 'Без Подразделения', чтобы импортировать номенклатуру без заполнения реквизита 'Подразделение' или кнопку 'Выбрать', чтобы выбрать подразделение в ручную."? И если появлялось, то какую кнопку вы нажали?
Наша таблица изначально была без строки с наименованием подразделения. Вылезала ошибка со строкой 195 сценария. Вылечил добавлением в текст сценария "DivCode = Skeep". Появилось окно об успешности импорта, но справочник номенклатуры как был пустым, так и остался. Убрал "DivCode = Skeep" и добавил в таблицу строку с названием подразделения. Вылезло окно:
"Не найдено подразделение 'Имя_подразделения'. Нажмите кнопку 'Создать', чтобы создать это подразделение или кнопку 'Пропустить', чтобы не импортировать номенклатуру дел для этого подразделения или кнопку 'Без Подразделения', чтобы импортировать номенклатуру без заполнения реквизита 'Подразделение' или кнопку 'Выбрать', чтобы выбрать подразделение в ручную.".
Нажал "Создать". После этого появилось окно:
У вас в номенклатуре дел для индекса 66-07 указаны три разных дела. Это так и должно быть? А так вообще можно с точки зрения делопроизводства?
Это неправильно, но на этот год ничего меняться не будет. В следующем году будет исправлено.
Доработал сценарий, чтобы можно было создавать дела с одинаковым индексом, но при импорте номенклатуры теперь получаем вот такую ошибку:
[Window Title]
Информация
[Content]
Индекс дела должен быть уникальным в рамках периода дела, в разрезе нашей организации!
[ОK]
Так что предлагаю либо добавить к индексу таких дел какую-нибудь букву (а,б,в...) или объединить их наименования и статьи хранения в одну запись таблицы.
Исправленный сценарий приложил к материалу.
Точнее приложу минут через 15 под третьей версией. :)
Дмитрий, спасибо большое! Всё работает. Ваш сценарий - хорошее подспорье в работе!
Авторизуйтесь, чтобы написать комментарий