#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область УстаревшиеПроцедурыИФункции
Процедура ЗаписатьСостоянияОригиналовДокументаПослеПечатиФормы(ОбъектыПечати, ПечатныеФормы, Записано = Ложь) Экспорт
ИнтеграцияПодсистемБСП.ПередЗаписьюСостоянийОригиналовПослеПечати(ОбъектыПечати, ПечатныеФормы);
УчетОригиналовПервичныхДокументовПереопределяемый.ПередЗаписьюСостоянийОригиналовПослеПечати(ОбъектыПечати, ПечатныеФормы);
Состояние = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана");
Если Не ЗначениеЗаполнено(ОбъектыПечати) Тогда
Возврат;
КонецЕсли;
Блокировка = Новый БлокировкаДанных();
НачатьТранзакцию();
Попытка
Для Каждого Документ Из ОбъектыПечати Цикл
Если УчетОригиналовПервичныхДокументов.ЭтоОбъектУчета(Документ.Значение) Тогда
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СостоянияОригиналовПервичныхДокументов");
ЭлементБлокировки.УстановитьЗначение("Владелец", Документ.Значение);
КонецЕсли;
КонецЦикла;
Блокировка.Заблокировать();
Для Каждого Документ Из ОбъектыПечати Цикл
Если УчетОригиналовПервичныхДокументов.ЭтоОбъектУчета(Документ.Значение) Тогда
ТЧ = УчетОригиналовПервичныхДокументов.ТабличнаяЧастьССотрудниками(Документ.Значение);
Если ТЧ <> "" Тогда
Для Каждого Сотрудник Из Документ.Значение[ТЧ] Цикл
Для Каждого Форма Из ПечатныеФормы Цикл
УчетОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ.Значение,
Форма.Значение, Форма.Представление, Состояние, Ложь, Сотрудник.Сотрудник);
КонецЦикла;
КонецЦикла;
Иначе
Для Каждого Форма Из ПечатныеФормы Цикл
УчетОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ.Значение,
Форма.Значение, Форма.Представление, Состояние, Ложь);
КонецЦикла;
КонецЕсли;
УчетОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Документ.Значение, Состояние);
Записано = Истина;
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ, ПечатнаяФорма, Представление, Состояние,
Извне, Сотрудник = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьМенеджерЗаписи();
ЗаписьСостоянияОригинала.Владелец = Документ;
ЗаписьСостоянияОригинала.ПервичныйДокумент = ПечатнаяФорма;
Если ЗначениеЗаполнено(Сотрудник) Тогда
ФИО = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Наименование);
Значения = Новый Структура("Представление, ФИО", Представление, ФИО);
ПредставлениеСотрудник = СтрНайти(Представление, ФИО);
Если ПредставлениеСотрудник = 0 Тогда
ЗаписьСостоянияОригинала.ПервичныйДокументПредставление = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(
НСтр("ru='[Представление] [ФИО]'"), Значения);
Иначе
ЗаписьСостоянияОригинала.ПервичныйДокументПредставление = Представление;
КонецЕсли;
Иначе
ЗаписьСостоянияОригинала.ПервичныйДокументПредставление = Представление;
КонецЕсли;
Если ТипЗнч(Состояние) = Тип("Строка") Тогда
ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(Состояние);
Иначе
ЗаписьСостоянияОригинала.Состояние = Состояние;
КонецЕсли;
ЗаписьСостоянияОригинала.АвторИзменения = Пользователи.ТекущийПользователь();
ЗаписьСостоянияОригинала.ОбщееСостояние = Ложь;
ЗаписьСостоянияОригинала.ФормаИзвне = Извне;
ЗаписьСостоянияОригинала.ДатаПоследнегоИзменения = ТекущаяДатаСеанса();
ЗаписьСостоянияОригинала.Сотрудник = Сотрудник;
ЗаписьСостоянияОригинала.Записать();
КонецПроцедуры
Процедура ЗаписатьОбщееСостояниеОригиналаДокумента(Документ, Состояние) Экспорт
Если ТипЗнч(Состояние) = Тип("Строка") Тогда
СостояниеОригинала = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(Состояние);
Иначе
СостояниеОригинала = Состояние;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьМенеджерЗаписи();
ЗаписьСостоянияОригинала.Владелец = Документ;
ЗаписьСостоянияОригинала.ПервичныйДокумент = "";
ПроверкаЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьНаборЗаписей();
ПроверкаЗаписьСостоянияОригинала.Отбор.Владелец.Установить(Документ);
ПроверкаЗаписьСостоянияОригинала.Отбор.ОбщееСостояние.Установить(Ложь);
ПроверкаЗаписьСостоянияОригинала.Прочитать();
Если ПроверкаЗаписьСостоянияОригинала.Количество() Тогда
Для Каждого Запись Из ПроверкаЗаписьСостоянияОригинала Цикл
Если Запись.АвторИзменения <> Пользователи.ТекущийПользователь() Тогда
ЗаписьСостоянияОригинала.АвторИзменения = Неопределено;
Иначе
ЗаписьСостоянияОригинала.АвторИзменения = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецЦикла;
Если УчетОригиналовПервичныхДокументов.СостояниеПечатныхФормОдинаково(Документ, СостояниеОригинала) Тогда
ЗаписьСостоянияОригинала.Состояние = СостояниеОригинала;
Иначе
ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе;
КонецЕсли;
Иначе
ЗаписьСостоянияОригинала.Состояние = СостояниеОригинала;
КонецЕсли;
ЗаписьСостоянияОригинала.ОбщееСостояние = Истина;
ЗаписьСостоянияОригинала.ДатаПоследнегоИзменения = ТекущаяДатаСеанса();
ЗаписьСостоянияОригинала.Записать();
ИнтеграцияПодсистемБСП.ПриИзмененииОбщегоСостоянияОригинала(Документ, Состояние);
УчетОригиналовПервичныхДокументовПереопределяемый.ПриИзмененииОбщегоСостоянияОригинала(Документ, Состояние);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли