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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
103
Соответствие.Вставить(Перечисления.СостоянияДокументов.Исполнен,
"СостояниеИсполнение");
Возврат Соответствие;
КонецФункции
// Получает актуальные состояния документа
Функция ПолучитьВсеСостоянияДокумента(Документ) Экспорт
ТаблицаСостояний = Новый ТаблицаЗначений;
ТаблицаСостояний.Колонки.Добавить("Состояние");
ТаблицаСостояний.Колонки.Добавить("Установил");
ТаблицаСостояний.Колонки.Добавить("ДатаУстановки");
Если Не ЗначениеЗаполнено(Документ) Тогда
Возврат ТаблицаСостояний;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТекущиеСостоянияДокументов.Состояние КАК Состояние,
| ТекущиеСостоянияДокументов.Установил,
| ТекущиеСостоянияДокументов.ДатаУстановки
|ИЗ
| РегистрСведений.ТекущиеСостоянияДокументов КАК
ТекущиеСостоянияДокументов
|ГДЕ
| ТекущиеСостоянияДокументов.Документ = &Документ";
Запрос.УстановитьПараметр("Документ", Документ);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат ТаблицаСостояний;
КонецЕсли;
Возврат Результат.Выгрузить();
104
КонецФункции
Функция ПолучитьСтроковоеПредставлениеСостояний(Документ) Экспорт
СтроковоеПредставление = "";
МассивСостояний =
ПолучитьВсеСостоянияДокумента(Документ).ВыгрузитьКолонку("Состояние");
Типы = Новый Структура(
"СостояниеСогласование,
|СостояниеУтверждение,
|СостояниеПодписание,
|СостояниеРегистрация,
|СостояниеРассмотрение,
|СостояниеИсполнение");
СоответствиеСостояний = ПолучитьСоответствиеСостояний();
Если МассивСостояний.Количество() = 1 И МассивСостояний[0] =
Перечисления.СостоянияДокументов.Проект Тогда
Возврат Строка(МассивСостояний[0]);
КонецЕсли;
Для Каждого Тип Из Типы Цикл
Для Каждого Состояние Из МассивСостояний Цикл
Если Состояние =
Перечисления.СостоянияДокументов.Проект Тогда
Продолжить;
КонецЕсли;
Если СоответствиеСостояний.Получить(Состояние) =
Тип.Ключ Тогда
СтроковоеПредставление = СтроковоеПредставление +
", " + Строка(Состояние);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если Не ПустаяСтрока(СтроковоеПредставление) Тогда
105
СтроковоеПредставление = Сред(СтроковоеПредставление, 3);
КонецЕсли;
Возврат СтроковоеПредставление;
КонецФункции
// Получает актуальное состояние документа
Функция ПолучитьСтруктуруСостоянияДокумента(Документ, Тип) Экспорт
СтруктураСостояния = Новый Структура;
СтруктураСостояния.Вставить("Состояние",
Перечисления.СостоянияМероприятий.ПустаяСсылка());
СтруктураСостояния.Вставить("ДатаУстановки", '00010101');
СтруктураСостояния.Вставить("Установил", Неопределено);
Если Не
ПолучитьФункциональнуюОпцию("ИспользоватьСостоянияДокументов") Тогда
Возврат СтруктураСостояния;
КонецЕсли;
Если Не ЗначениеЗаполнено(Документ) Тогда
Возврат СтруктураСостояния;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СоответствиеСостояний = ПолучитьСоответствиеСостояний();
ТаблицаСостояний = ПолучитьВсеСостоянияДокумента(Документ);
Для Каждого Строка Из ТаблицаСостояний Цикл
Если СоответствиеСостояний.Получить(Строка.Состояние) = Тип
Тогда
ЗаполнитьЗначенияСвойств(СтруктураСостояния, Строка);
Возврат СтруктураСостояния;
КонецЕсли;
КонецЦикла;
Возврат СтруктураСостояния;
КонецФункции
// Возвращает признак использования видов внутренних документов
106
Функция ИспользоватьВидыВнутреннихДокументов() Экспорт
Возврат
ПолучитьФункциональнуюОпцию("ИспользоватьВидыВнутреннихДокументов"
);
КонецФункции
// Возвращает признак использования видов документов по объекту
Функция ИспользоватьВидыДокументов(ВидДокумента) Экспорт
ИспользоватьВидыДокументов = Ложь;
Если ТипЗнч(ВидДокумента) =
Тип("СправочникСсылка.ВидыВходящихДокументов") Тогда
ИспользоватьВидыДокументов =
ИспользоватьВидыВходящихДокументов();
ИначеЕсли ТипЗнч(ВидДокумента) =
Тип("СправочникСсылка.ВидыИсходящихДокументов") Тогда
ИспользоватьВидыДокументов =
ИспользоватьВидыИсходящихДокументов();
ИначеЕсли ТипЗнч(ВидДокумента) =
Тип("СправочникСсылка.ВидыВнутреннихДокументов") Тогда
ИспользоватьВидыДокументов =
ИспользоватьВидыВнутреннихДокументов();
КонецЕсли;
Возврат ИспользоватьВидыДокументов;
КонецФункции
// Возвращает признак использования номенклатуры дел
Функция ИспользоватьНоменклатуруДел() Экспорт
Возврат
ПолучитьФункциональнуюОпцию("ИспользоватьНоменклатуруДел");
КонецФункции
// Проверяет уникальность регистрационного номера
Функция РегистрационныйНомерУникален(Объект) Экспорт
УстановитьПривилегированныйРежим(Истина);
107
Нумератор = Нумерация.ПолучитьНумераторДокумента(Объект);
Если Не ЗначениеЗаполнено(Нумератор) Тогда // документ без номера
Если НРег(Объект.РегистрационныйНомер) = НСтр("ru = 'б\н'")
Или НРег(Объект.РегистрационныйНомер) = НСтр("ru = 'б/н'")
Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Нумератор) Тогда // автонумерация
Периодичность = Нумератор.Периодичность;
Иначе // ручная
нумерация
Периодичность = Перечисления.ПериодичностьНумераторов.Год;
КонецЕсли;
Если ТипЗнч(Объект.Ссылка) =
Тип("СправочникСсылка.ВходящиеДокументы") Тогда
ТекстЗапроса = "ВЫБРАТЬ Ссылка ИЗ
Справочник.ВходящиеДокументы КАК Справочник ";
ИначеЕсли ТипЗнч(Объект.Ссылка) =
Тип("СправочникСсылка.ИсходящиеДокументы") Тогда
ТекстЗапроса = "ВЫБРАТЬ Ссылка ИЗ
Справочник.ИсходящиеДокументы КАК Справочник ";
ИначеЕсли ТипЗнч(Объект.Ссылка) =
Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
ТекстЗапроса = "ВЫБРАТЬ Ссылка ИЗ
Справочник.ВнутренниеДокументы КАК Справочник ";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Если Нумератор.НезависимаяНумерацияПоСвязанномуДокументу Тогда
Запрос.Текст = Запрос.Текст +
Источник: https://baza.diplomsite.ru/previewfile/1504