Диплом: Автоматизация документооборота для решения задач организационного управления в ООО "Башкирская концессионная компания"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
113
СписокЗапрещенныхРасширений =
ФайловыеФункции.ПолучитьСписокЗапрещенныхРасширений();
Для Каждого ВыбранныйФайл Из ФайлыАргумент Цикл
Попытка
Если ВыбранныйФайл.Существует() Тогда
Если ВыбранныйФайл.Расширение = ".lnk" Тогда
ВыбранныйФайл =
РазыменоватьLnkФайл(ВыбранныйФайл);
КонецЕсли;
Если ВыбранныйФайл.ЭтоКаталог() Тогда
Если Рекурсивно = Истина Тогда
НовыйПуть =
Строка(ВыбранныйФайл.Путь);
НовыйПуть =
ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
НовыйПуть,
ОбщегоНазначенияДокументооборотПовтИсп.ТипПлатформыСервера());
НовыйПуть = НовыйПуть +
Строка(ВыбранныйФайл.Имя);
МассивФайлов =
ФайловыеФункцииКлиентСервер.НайтиФайлыПсевдо(ПсевдоФайловаяСистема,
НовыйПуть);
// Создаем группу в справочнике -
эквивалент папки на диске
Если МассивФайлов.Количество() <> 0
Тогда
ИмяФайла = ВыбранныйФайл.Имя;
114
Если
РаботаСФайламиВызовСервера.ЕстьПапкаСТакимИменем(ИмяФайла, Владелец,
ПерваяПапкаСТакимЖеИменем) Тогда
ДокГруппаСсылка =
ПерваяПапкаСТакимЖеИменем;
Иначе
ДокГруппаСсылка =
РаботаСФайламиВызовСервера.СправочникиПапкиСоздатьЭлемент(ИмяФайла,
Владелец, Пользователь);
КонецЕсли;
ИмпортФайлов(
ДокГруппаСсылка,
НовыйПуть,
МассивФайлов,
Индикатор,
МассивИменФайловСОшибками,
МассивСтруктурВсехФайлов,
Комментарий,
ХранитьВерсии,
Рекурсивно,
КоличествоСуммарное,
Счетчик,
ИдентификаторФормы,
ПсевдоФайловаяСистема,
ДобавленныеФайлы,
МассивВсехПапок,
РежимЗагрузки,
Пользователь,
ПараметрыРаспознавания,
Категории);
115
МассивВсехПапок.Добавить(НовыйПуть);
КонецЕсли;
КонецЕсли;
Продолжить;
КонецЕсли;
Если Не
ФайловыеФункцииКлиентСервер.ФайлМожноЗагружать(ВыбранныйФайл,
МаксРазмерФайла, ЗапретЗагрузкиФайловПоРасширению,
СписокЗапрещенныхРасширений, МассивИменФайловСОшибками) Тогда
Продолжить;
КонецЕсли;
// Создаем Элемент справочника Файлы
ИмяБезРасширения =
ВыбранныйФайл.ИмяБезРасширения;
Расширение = ВыбранныйФайл.Расширение;
Если РежимЗагрузки Тогда
Если
РаботаСФайламиВызовСервера.ЕстьФайлСТакимИменем(ИмяБезРасширения,
Владелец) Тогда
Запись = Новый Структура;
Запись.Вставить("ИмяФайла",
ВыбранныйФайл.ПолноеИмя);
ТекстОшибки =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файл с таким именем
уже есть в информационной базе в папке ""%1""'"),
116
Строка(Владелец));
Запись.Вставить("Ошибка", ТекстОшибки);
МассивИменФайловСОшибками.Добавить(Запись);
Продолжить;
КонецЕсли;
КонецЕсли;
АдресВременногоХранилищаФайла =
ВыбранныйФайл.ПолноеИмя;
АдресВременногоХранилищаТекста =
ИзвлечьТекстВХранилищеЗначения(
ВыбранныйФайл.ПолноеИмя);
// Создаем элемент справочника Файлы
РаботаСФайламиКлиентСервер.СоздатьЭлементСправочникаФайлы(Выбр
анныйФайл, МассивСтруктурВсехФайлов,
Владелец, ИдентификаторФормы, Комментарий,
ХранитьВерсии, ДобавленныеФайлы,
АдресВременногоХранилищаФайла,
АдресВременногоХранилищаТекста, Пользователь,
ПараметрыРаспознавания, Категории);
Иначе
Запись = Новый Структура;
Запись.Вставить("ИмяФайла",
ВыбранныйФайл.ПолноеИмя);
Запись.Вставить("Ошибка", НСтр("ru = 'Файл
отсутствует на диске'"));
МассивИменФайловСОшибками.Добавить(Запись);
КонецЕсли;
Исключение
ОшибкаИнфо = ИнформацияОбОшибке();
СообщениеОбОшибке = "";
117
Если ОшибкаИнфо.Причина = Неопределено Тогда
СообщениеОбОшибке =ОшибкаИнфо.Описание;
Иначе
СообщениеОбОшибке =
ОшибкаИнфо.Причина.Описание;
КонецЕсли;
Запись = Новый Структура;
Запись.Вставить("ИмяФайла", ВыбранныйФайл.ПолноеИмя);
Запись.Вставить("Ошибка", СообщениеОбОшибке);
МассивИменФайловСОшибками.Добавить(Запись);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
// Импорт - с вспомогательными операциями типа проверки предельного
размера и впоследствии удаления файлов и показа ошибок
// при импорте только одной папки - вернет на нее ссылку.
Функция ИмпортФайловВыполнить(
ПапкаДляДобавления,
ВыбранныеФайлы,
Комментарий,
ХранитьВерсии,
УдалятьФайлыПослеДобавления,
Рекурсивно,
ИдентификаторФормы,
Знач ПсевдоФайловаяСистема,
ДобавленныеФайлы,
РежимЗагрузки,
Пользователь,
МассивИменФайловСОшибками,
СтратегияРаспознавания,
ЯзыкРаспознавания,
118
Категории) Экспорт
Перем ПерваяПапкаСТакимЖеИменем;
Перем ПапкаДляДобавленияТекущая;
ВыбранКаталог = Ложь;
Путь = "";
КоличествоСуммарное = 0;
МассивФайлов = Новый Массив;
Счетчик = 0;
Индикатор = 0;
МассивСтруктурВсехФайлов = Новый Массив;
МассивВсехПапок = Новый Массив;
ПапкаДляДобавленияТекущая = Неопределено;
// параметры распознавания по умолчанию
РаспознатьПослеДобавления = Истина;
Если СтратегияРаспознавания =
Перечисления.СтратегииРаспознаванияТекста.НеРаспознавать Тогда
РаспознатьПослеДобавления = Ложь;
КонецЕсли;
ИспользоватьРаспознавание =
РаботаСФайламиВызовСервера.ПолучитьИспользоватьРаспознавание();
Если ИспользоватьРаспознавание = Ложь Тогда
РаспознатьПослеДобавления = Ложь;
КонецЕсли;
ПараметрыРаспознавания = Новый Структура("СтратегияРаспознавания,
ЯзыкРаспознавания, РаспознатьПослеДобавления",
СтратегияРаспознавания, ЯзыкРаспознавания,
РаспознатьПослеДобавления);
Для Каждого ИмяФайла Из ВыбранныеФайлы Цикл
Попытка
ВыбранныйФайл = Новый Файл(ИмяФайла.Значение);
ВыбранКаталог = Ложь;
Если ВыбранныйФайл.Существует() Тогда
119
ВыбранКаталог = ВыбранныйФайл.ЭтоКаталог();
КонецЕсли;
Если ВыбранКаталог Тогда
Путь = ИмяФайла.Значение;
МассивФайловЭтогоКаталога =
ФайловыеФункцииКлиентСервер.НайтиФайлыПсевдо(ПсевдоФайловаяСистема,
Путь);
ИмяПапки = ВыбранныйФайл.Имя;
Если
РаботаСФайламиВызовСервера.ЕстьПапкаСТакимИменем(ИмяПапки,
ПапкаДляДобавления, ПерваяПапкаСТакимЖеИменем) Тогда
ПапкаДляДобавленияТекущая =
ПерваяПапкаСТакимЖеИменем;
Иначе
ПапкаДляДобавленияТекущая =
РаботаСФайламиВызовСервера.СправочникиПапкиСоздатьЭлемент(ИмяПапки,
ПапкаДляДобавления, Пользователь);
КонецЕсли;
// Собственно импорт
ИмпортФайлов(
ПапкаДляДобавленияТекущая,
Путь,
МассивФайловЭтогоКаталога,
Индикатор,
МассивИменФайловСОшибками,
МассивСтруктурВсехФайлов,
Комментарий,
ХранитьВерсии,
Рекурсивно,
КоличествоСуммарное,
Счетчик,
ИдентификаторФормы,
120
ПсевдоФайловаяСистема,
ДобавленныеФайлы,
МассивВсехПапок,
РежимЗагрузки,
Пользователь,
ПараметрыРаспознавания,
Категории);
МассивВсехПапок.Добавить(Путь);
Иначе
МассивФайлов.Добавить(ВыбранныйФайл);
КонецЕсли;
Исключение
// запись в журнал регистрации
ОписаниеОшибки =
КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ТекстСообщения =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка автоматической загрузки
файлов: ""%1""'"),
ОписаниеОшибки);
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Автоматическая загрузка файлов'",
Метаданные.ОсновнойЯзык.КодЯзыка),
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения);
КонецПопытки;
КонецЦикла;
Если МассивФайлов.Количество() <> 0 Тогда
// Собственно импорт
ИмпортФайлов(
ПапкаДляДобавления,
Путь,
121
МассивФайлов,
КоличествоСуммарное,
Счетчик,
ИдентификаторФормы,
ПсевдоФайловаяСистема,
ДобавленныеФайлы,
МассивВсехПапок,
РежимЗагрузки,
Пользователь,
ПараметрыРаспознавания,
Категории);
КонецЕсли;
Если УдалятьФайлыПослеДобавления = Истина Тогда
ФайловыеФункцииКлиентСервер.УдалитьФайлыПослеДобавления(Масси
вСтруктурВсехФайлов, МассивВсехПапок, РежимЗагрузки);
КонецЕсли;
// Вывод сообщений об ошибках
Для Каждого Выборка Из МассивИменФайловСОшибками Цикл
ТекстСообщения =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка автоматической загрузки файла
""%1"": ""%2""'"),
Выборка.ИмяФайла, Выборка.Ошибка);
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Автоматическая загрузка файлов'",
Метаданные.ОсновнойЯзык.КодЯзыка),
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения);
КонецЦикла;
Если ВыбранныеФайлы.Количество() <> 1 Тогда
ПапкаДляДобавленияТекущая = Неопределено;
КонецЕсли;
122
Возврат ПапкаДляДобавленияТекущая;
КонецФункции
Функция ЕстьПравоДоступа(Пользователь, Папка)
// Если не включена функциональная опция "использовать права доступа" -
то не делаем проверки.
Если Не УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей()
Тогда
Возврат Истина;
КонецЕсли;
Возврат
ДокументооборотПраваДоступа.ПолучитьПраваПоОбъекту(Папка,
Пользователь).Добавление;
КонецФункции
// Выполняет загрузку файлов с диска
Процедура ЗагрузкаФайлов(МассивНастроек) Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если ТипЗнч(МассивНастроек) <> Тип("Массив") Тогда
Возврат;
КонецЕсли;
Для Каждого Настройка Из МассивНастроек Цикл
КаталогНаДиске = "";
ТипПлатформыСервера =
ОбщегоНазначенияДокументооборотПовтИсп.ТипПлатформыСервера();
Если ТипПлатформыСервера = ТипПлатформы.Windows_x86 ИЛИ
ТипПлатформыСервера = ТипПлатформы.Windows_x86_64 Тогда
КаталогНаДиске = Настройка.КаталогWindows;
Иначе
КаталогНаДиске = Настройка.КаталогLinux;
КонецЕсли;
Категории = Неопределено;
Если ТипЗнч(Настройка) = Тип("Структура") Тогда
Настройка.Свойство("Категории", Категории);

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")