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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
108
" ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК
СвязиДокументов
| ПО СвязиДокументов.Документ = Справочник.Ссылка И
СвязиДокументов.ТипСвязи = &ТипСвязи ";
Запрос.УстановитьПараметр("ТипСвязи", Нумератор.ТипСвязи);
КонецЕсли;
Запрос.Текст = Запрос.Текст +
" ГДЕ
| РегистрационныйНомер = &РегистрационныйНомер
| И ДатаРегистрации МЕЖДУ &НачалоПериодаНумерации И
&КонецПериодаНумерации
| И Ссылка <> &Ссылка ";
Если ЗначениеЗаполнено(Нумератор) Тогда
НезависимаяНумерацияПоОрганизациям =
Нумератор.НезависимаяНумерацияПоОрганизациям;
Иначе // ручная нумерация
НезависимаяНумерацияПоОрганизациям = Истина;
КонецЕсли;
Если
ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоОрганизациям") И
НезависимаяНумерацияПоОрганизациям Тогда
Запрос.Текст = Запрос.Текст + " И (Организация = &Организация) ";
Запрос.УстановитьПараметр("Организация", Объект.Организация);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВестиУчетПоПроектам") И
Нумератор.НезависимаяНумерацияПоПроекту Тогда
Запрос.Текст = Запрос.Текст + " И (Проект = &Проект) ";
Запрос.УстановитьПараметр("Проект", Объект.Проект);
КонецЕсли;
109
Если
ПолучитьФункциональнуюОпцию("ИспользоватьВопросыДеятельности") И
Нумератор.НезависимаяНумерацияПоВопросуДеятельности Тогда
Запрос.Текст = Запрос.Текст + " И (ВопросДеятельности =
&ВопросДеятельности) ";
Запрос.УстановитьПараметр("ВопросДеятельности",
Объект.ВопросДеятельности);
КонецЕсли;
Если Нумератор.НезависимаяНумерацияПоПодразделению Тогда
Запрос.Текст = Запрос.Текст + " И (Подразделение =
&Подразделение) ";
Запрос.УстановитьПараметр("Подразделение",
Объект.Подразделение);
КонецЕсли;
Если Нумератор.НезависимаяНумерацияПоСвязанномуДокументу Тогда
СвязанныйДокумент =
СвязиДокументов.ПолучитьСвязанныйДокумент(Объект.Ссылка,
Нумератор.ТипСвязи);
Если ЗначениеЗаполнено(СвязанныйДокумент) Тогда
Запрос.Текст = Запрос.Текст + " И (СвязанныйДокумент =
&СвязанныйДокумент) ";
Запрос.УстановитьПараметр("СвязанныйДокумент",
СвязанныйДокумент);
КонецЕсли;
КонецЕсли;
Если ИспользоватьВидыДокументов(Объект.ВидДокумента) Тогда
Запрос.Текст = Запрос.Текст + " И (ВидДокумента =
&ВидДокумента) ";
Запрос.УстановитьПараметр("ВидДокумента",
Объект.ВидДокумента);
КонецЕсли;
Если Не ЗначениеЗаполнено(Нумератор) Тогда // ручная нумерация
110
Если
ДелопроизводствоКлиентСервер.ЭтоВнутреннийДокумент(Объект.Ссылка)
Тогда
ВестиУчетПоКонтрагентам =
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидДокумента,
"ВестиУчетПоКонтрагентам");
Если ВестиУчетПоКонтрагентам Тогда
Запрос.Текст = Запрос.Текст + " И (Контрагент =
&Контрагент) ";
Запрос.УстановитьПараметр("Контрагент",
Объект.Контрагент);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("РегистрационныйНомер",
Объект.РегистрационныйНомер);
Запрос.УстановитьПараметр("НачалоПериодаНумерации",
Нумерация.НачалоПериодаНумерации(Периодичность,
Объект.ДатаРегистрации));
Запрос.УстановитьПараметр("КонецПериодаНумерации",
Нумерация.КонецПериодаНумерации(Периодичность,
Объект.ДатаРегистрации));
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Возврат Запрос.Выполнить().Пустой();
КонецФункции
//Модуль работы с файлами.
// Извлечь текст из файла и поместить в ХранилищеЗначения
Функция ИзвлечьТекстВХранилищеЗначения(ПолноеИмяФайла) Экспорт
Текст = "";
111
ИзвлекатьТекстыФайловНаСервере =
Константы.ИзвлекатьТекстыФайловНаСервере.Получить();
Если Не ИзвлекатьТекстыФайловНаСервере Тогда
ТипПлатформыСервера =
ОбщегоНазначенияДокументооборотПовтИсп.ТипПлатформыСервера();
Если ТипПлатформыСервера = ТипПлатформы.Windows_x86 ИЛИ
ТипПлатформыСервера = ТипПлатформы.Windows_x86_64 Тогда
Текст =
ФайловыеФункцииСлужебныйКлиентСервер.ИзвлечьТекст(ПолноеИмяФайла);
КонецЕсли;
КонецЕсли;
Если ПустаяСтрока(Текст) Тогда
Возврат Новый ХранилищеЗначения("");
КонецЕсли;
ХранилищеЗначения = Новый ХранилищеЗначения(Текст);
Возврат ХранилищеЗначения;
КонецФункции
// Разыменовать lnk файл
Функция РазыменоватьLnkФайл(ВыбранныйФайл) Экспорт
ТипПлатформыСервера =
ОбщегоНазначенияДокументооборотПовтИсп.ТипПлатформыСервера();
Если ТипПлатформыСервера = ТипПлатформы.Windows_x86 ИЛИ
ТипПлатформыСервера = ТипПлатформы.Windows_x86_64 Тогда
ShellApp = Новый COMОбъект("shell.application");
FolderObj = ShellApp.NameSpace(ВыбранныйФайл.Путь);
// полный (только) путь на lnk-файл
FolderObjItem = FolderObj.items().item(ВыбранныйФайл.Имя); //
только имя lnk-файла
Link = FolderObjItem.GetLink();
Возврат Новый Файл(Link.path);
КонецЕсли;
112
Возврат ВыбранныйФайл;
КонецФункции
// Рекурсивная функция импорта файлов с диска - принимает массив файлов
(или каталогов)
// - если файл, просто добавляет его, если каталог - создает группу и
рекурсивно вызывает саму себя
Процедура ИмпортФайлов(
Владелец,
Путь,
ФайлыАргумент,
Индикатор,
МассивИменФайловСОшибками,
МассивСтруктурВсехФайлов,
Комментарий,
ХранитьВерсии,
Рекурсивно,
КоличествоСуммарное,
Счетчик,
ИдентификаторФормы,
Знач ПсевдоФайловаяСистема,
ДобавленныеФайлы,
МассивВсехПапок,
РежимЗагрузки,
Пользователь,
ПараметрыРаспознавания,
Категории = Неопределено) Экспорт
Перем ПерваяПапкаСТакимЖеИменем;
Перем ДокГруппаСсылка;
МаксРазмерФайла =
ФайловыеФункции.ПолучитьМаксимальныйРазмерФайла();
ЗапретЗагрузкиФайловПоРасширению =
ФайловыеФункции.ПолучитьЗапретЗагрузкиФайловПоРасширению();
Источник: https://baza.diplomsite.ru/previewfile/1504