#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаРасшифровкаПоДокументамОткрыта;
&НаКлиенте
Перем ПараметрыОбработчикаОжидания;
&НаСервере
Перем ОрганизацияДоЗагрузкиНастроек;
&НаСервере
Перем ДатаОкончанияПериодаДоЗагрузкиНастроек;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("Организация") Тогда
Организация = Параметры.Организация;
КонецЕсли;
Если Параметры.Свойство("ДатаОкончанияПериода") Тогда
ДатаОкончанияПериода.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата;
ДатаОкончанияПериода.Дата = Параметры.ДатаОкончанияПериода;
КонецЕсли;
ДанныеФО = Новый Структура;
ДанныеФО.Вставить("ПроверкаДокументов", ПолучитьФункциональнуюОпцию("ИспользоватьПроверкуФинансовыхДокументов"));
ДанныеФО.Вставить("РучноеИзменениеПроводок", ПолучитьФункциональнуюОпцию("ИспользоватьРучнуюКорректировкуПроводокПоРеглУчету"));
ДанныеФО.Вставить("ОтражениеПроверенных", ПолучитьФункциональнуюОпцию("ОтражатьВРеглУчетеТолькоПроверенныеДокументы"));
Элементы.ГруппаСостояниеПроверкиДокументовКПовторнойПроверке.Видимость = ДанныеФО.ПроверкаДокументов;
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО));
ДополнительныеПараметры = Новый Структура;
ИнтеграцияССППР.ДобавитьРазмещениеКомандСППРВДополнительныеПараметры(Элементы.ГруппаСППР, ДополнительныеПараметры);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка, ДополнительныеПараметры);
ОрганизацияДоЗагрузкиНастроек = Организация;
ДатаОкончанияПериодаДоЗагрузкиНастроек = ДатаОкончанияПериода.Дата;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ФормаРасшифровкаПоДокументамОткрыта = Ложь;
ПодключитьПроверкуВыполненияФоновыхЗаданий();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
ВнешниеСобытия = Новый Массив;
ВнешниеСобытия.Добавить("Запись_ОтражениеДокументовВРегламентированномУчете");
ВнешниеСобытия.Добавить("Запись_СтатусПроверкиДокумента");
ВнешниеСобытия.Добавить("ИзмененыНастройкиОтраженияВУчете");
ВнешниеСобытия.Добавить("ЗакрытаФормаСпискаДокументов");
СтрокаЗаданий = "";
Если ВнешниеСобытия.Найти(ИмяСобытия) <> Неопределено Тогда
СтрокаЗаданий = "СостояниеОтраженияДокументов";
КонецЕсли;
Если ИмяСобытия = "ИзмененыНастройкиОтраженияВУчете" Тогда
СтрокаЗаданий = СтрокаЗаданий + ",СостояниеНастроекСчетовУчета";
КонецЕсли;
Если ИмяСобытия = "Запись_ОтражениеДокументовВРегламентированномУчете" И Источник = ЭтотОбъект Тогда
СтрокаЗаданий = СтрокаЗаданий + ",СостояниеНастроекСчетовУчета,СостояниеОффлайновыхРасчетов";
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаЗаданий) Тогда
ЗаданияПоОбновлению = ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО, СтрокаЗаданий);
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ЗаданияПоОбновлению);
ПодключитьПроверкуВыполненияФоновыхЗаданий();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
Организация = Настройки.Получить("Организация");
ДатаОкончанияПериода.Вариант = Настройки.Получить("ДатаОкончанияПериода.Вариант");
Если ДатаОкончанияПериода.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата Тогда
ДатаОкончанияПериода.Дата = Настройки.Получить("ДатаОкончанияПериода.Дата");
КонецЕсли;
Если Параметры.Свойство("Организация") Тогда
Организация = Параметры.Организация;
КонецЕсли;
Если Параметры.Свойство("ДатаОкончанияПериода") Тогда
ДатаОкончанияПериода.Вариант = ВариантСтандартнойДатыНачала.ПроизвольнаяДата;
ДатаОкончанияПериода.Дата = Параметры.ДатаОкончанияПериода;
КонецЕсли;
Если ОрганизацияДоЗагрузкиНастроек <> Организация Или ДатаОкончанияПериодаДоЗагрузкиНастроек <> ДатаОкончанияПериода.Дата Тогда
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО));
ПодключитьПроверкуВыполненияФоновыхЗаданий();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПериодаПриИзменении(Элемент)
Если ЗначениеЗаполнено(ДатаОкончанияПериода.Дата) Тогда
ДатаОкончанияПериода.Дата = КонецДня(ДатаОкончанияПериода);
КонецЕсли;
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО));
ПодключитьПроверкуВыполненияФоновыхЗаданий();
КонецПроцедуры
&НаКлиенте
Процедура СтатусКОтражениюВУчетеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
Если ДанныеФО.ОтражениеПроверенных Тогда
СтатусыПроверки = Новый Массив;
СтатусыПроверки.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.Проверен"));
СтатусыПроверки.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.ПустаяСсылка"));
ПараметрыФормы.Отбор.Вставить("СтатусПроверки", СтатусыПроверки);
КонецЕсли;
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Ложь);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусОтсутствуютПравилаОтраженияВУчетеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Ложь);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусОтраженоВУчетеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.ОтраженоВРеглУчете");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Ложь);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусКОтражениюВУчетеВручнуюНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВУчетеВручную");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Ложь);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусОтраженоВУчетеВручнуюНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.ОтраженоВУчетеВручную");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Ложь);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусДополнительныеОперацииКОтражениюВУчетеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВУчетеВручную");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Истина);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СтатусДополнительныеОперацииОтраженоВУчетеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.ОтраженоВУчетеВручную");
ПараметрыФормы.Отбор.Вставить("СтатусОтражения", Статус);
ПараметрыФормы.Вставить("ЭтоДокументКорректировки", Истина);
ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьАвтоматическоеОтражениеВУчетеПриИзменении(Элемент)
СохранитьРеквизитыРегламентногоЗадания();
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеРасписанияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
РедактированиеРасписанияРегламентногоЗадания();
КонецПроцедуры
&НаКлиенте
Процедура СтатусПроверенныхДокументовНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
СтатусПроверки = ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.Проверен");
ПараметрыФормы.Отбор.Вставить("СтатусПроверки", СтатусПроверки);
ОткрытьФорму("РегистрСведений.СтатусыПроверкиДокументов.Форма.ЖурналДокументов", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СтатусНеПроверенныхДокументовНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
СтатусПроверки = ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.НеПроверен");
ПараметрыФормы.Отбор.Вставить("СтатусПроверки", СтатусПроверки);
ОткрытьФорму("РегистрСведений.СтатусыПроверкиДокументов.Форма.ЖурналДокументов", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СтатусДокументовКПроверкеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ИнициализироватьПараметрыФормыСпискаДокументов(Элемент.Имя);
СтатусПроверки = ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.КПовторнойПроверке");
ПараметрыФормы.Отбор.Вставить("СтатусПроверки", СтатусПроверки);
ОткрытьФорму("РегистрСведений.СтатусыПроверкиДокументов.Форма.ЖурналДокументов", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеОффлайновыхОперацийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыЗакрытияМесяца = Новый Структура("ПериодРегистрации, Организация", НачалоМесяца(ДатаОкончанияПериода), Организация);
ОткрытьФорму("Обработка.ОперацииЗакрытияМесяца.Форма", ПараметрыЗакрытияМесяца, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОбновитьСостояние(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.НастройкаОтраженияДокументовВРеглУчете.ФормаНастройкиОтраженияДокументовВРеглУчете.Команда.ОбновитьСостояние");
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО));
ПодключитьПроверкуВыполненияФоновыхЗаданий();
КонецПроцедуры
&НаКлиенте
Процедура ОтразитьДокументыВРегламентированномУчете(Команда)
Результат = ОтразитьДокументыВРегламентированномУчетеСервер();
Если Результат.Статус = "Выполняется" Тогда
ОповещениеФормаДлительнойОперацииЗакрыта = Новый ОписаниеОповещения("ВыполнениеФоновогоЗаданияЗавершено", ЭтотОбъект);
ПараметрыФормы = ИнициализироватьПараметрыФормыДлительнойОперации(Результат);
ОткрытьФорму("ОбщаяФорма.ДлительнаяОперация", ПараметрыФормы, ЭтотОбъект, , , , ОповещениеФормаДлительнойОперацииЗакрыта, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли Результат.Статус = "Выполнено" Тогда
ОповеститьОбОтраженииДокументовВРеглУчете(Результат.Результат);
ИначеЕсли Результат.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'При отражении документов в регл. учете возникли ошибки. Подробнее см. в журнале регистрации.'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНастройкиСчетов(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.НастройкаОтраженияДокументовВРеглУчете.ФормаНастройкиОтраженияДокументовВРеглУчете.Элемент.НастройкаСчетовУчета.Нажатие");
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Организация", Организация);
ПараметрыФормы.Вставить("ДатаОкончанияПериода", ДатаОкончанияПериода);
ОткрытьФорму("Обработка.НастройкаОтраженияДокументовВРеглУчете.Форма.ФормаНастройки", ПараметрыФормы, ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Общие
&НаСервере
Функция ОтразитьДокументыВРегламентированномУчетеСервер()
ВыполняемыйМетод = "РеглУчетПроведениеСервер.ОтразитьВсеВФоне";
ПараметрыОтражения = РеглУчетПроведениеСервер.ПараметрыОтраженияВРеглУчете();
ПараметрыОтражения.Организации = Организация;
ПараметрыОтражения.ПериодРасчета = ?(
ЗначениеЗаполнено(ДатаОкончанияПериода.Дата),
КонецДня(ДатаОкончанияПериода.Дата),
'20991231235959');
РезультатФоновогоЗадания = ЗапуститьВыполнениеВФоне(ВыполняемыйМетод, ПараметрыОтражения);
Если РезультатФоновогоЗадания.Статус = "Выполнено" Тогда
РезультатФоновогоЗадания.Вставить("Результат", ПолучитьИзВременногоХранилища(РезультатФоновогоЗадания.АдресРезультата));
ОбновитьДанные(ВыполняемыйМетод, РезультатФоновогоЗадания.АдресРезультата)
КонецЕсли;
Возврат РезультатФоновогоЗадания;
КонецФункции
&НаКлиенте
Функция ИнициализироватьПараметрыФормыСпискаДокументов(ИмяЭлемента)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДатаОкончанияПериода", ?(ЗначениеЗаполнено(ДатаОкончанияПериода), ДатаОкончанияПериода.Дата, '39991231'));
ПараметрыФормы.Вставить("Заголовок", ЭтотОбъект[ИмяЭлемента]);
ПараметрыФормы.Вставить("Отбор", Новый Структура);
Если ЗначениеЗаполнено(Организация) Тогда
ПараметрыФормы.Отбор.Вставить("Организация", Организация);
КонецЕсли;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ИнициализироватьПараметрыФормыДлительнойОперации(РезультатЗапускаФоновогоЗадания)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ИдентификаторЗадания", РезультатЗапускаФоновогоЗадания.ИдентификаторЗадания);
ПараметрыФормы.Вставить("ВыводитьОкноОжидания", Истина);
ПараметрыФормы.Вставить("ПолучатьРезультат", Истина);
ПараметрыФормы.Вставить("АдресРезультата", РезультатЗапускаФоновогоЗадания.АдресРезультата);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура ОповеститьОбОтраженииДокументовВРеглУчете(ДанныеПоОтражениюВУчете)
Оповестить("Запись_ОтражениеДокументовВРегламентированномУчете", Неопределено, ЭтотОбъект);
МассивСообщений = Новый Массив;
ТекстЗаголовок = СтрШаблон(НСтр("ru = 'Обработано %1'"), ЧислоДокументовПрописью(ДанныеПоОтражениюВУчете.Отражено + ДанныеПоОтражениюВУчете.НеУказаныСчетаУчета ));
Если ДанныеПоОтражениюВУчете.Отражено > 0 Тогда
МассивСообщений.Добавить(СтрШаблон(НСтр("ru = 'Отражено в регл. учете %1'"), ЧислоДокументовПрописью(ДанныеПоОтражениюВУчете.Отражено)));
КонецЕсли;
Если ДанныеПоОтражениюВУчете.НеУказаныСчетаУчета > 0 Тогда
МассивСообщений.Добавить(СтрШаблон(НСтр("ru = 'Не отражены из-за ненастроенных счетов учета %1'"), ЧислоДокументовПрописью(ДанныеПоОтражениюВУчете.НеУказаныСчетаУчета)));
КонецЕсли;
ТекстСообщение = СтрСоединить(МассивСообщений, Символы.ПС);
ПоказатьОповещениеПользователя(ТекстЗаголовок, , ТекстСообщение, БиблиотекаКартинок.Информация32);
Если ДанныеПоОтражениюВУчете.ОшибкиПриОтражении > 0 Тогда
ВызватьИсключение НСтр("ru = 'При отражении документов в регл. учете возники ошибки (подробности см. в журнале регистрации).'");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция МассивДоступныхОрганизаций(Организация)
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеСправочника.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК ДанныеСправочника
|ГДЕ
| ДанныеСправочника.Ссылка = &Организация
| ИЛИ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
| И НЕ ДанныеСправочника.Предопределенный");
Запрос.УстановитьПараметр("Организация", Организация);
МассивОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
Возврат МассивОрганизаций;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЧислоДокументовПрописью(КоличествоДокументов)
КоличествоПрописью = ЧислоПрописью(
КоличествоДокументов,
"Л = ru_RU; НП = Истина; НД = Ложь; ДП = Ложь;",
НСтр("ru = 'документ,документа,документов,м,,,,,0'"));
Поз = СтрНайти(КоличествоПрописью, "документ");
Если Поз <> 0 Тогда
КоличествоПрописью = Сред(КоличествоПрописью, Поз);
КонецЕсли;
КоличествоПрописью = Строка(КоличествоДокументов) + " " + НРег(КоличествоПрописью);
Возврат КоличествоПрописью;
КонецФункции
&НаКлиенте
Процедура ВыполнениеФоновогоЗаданияЗавершено(РезультатЗакрытияФормыДлительнойОперации, ДополнительныеПараметры = Неопределено) Экспорт
Если РезультатЗакрытияФормыДлительнойОперации = Неопределено Тогда
ИначеЕсли РезультатЗакрытияФормыДлительнойОперации.Статус = "Выполнено" Тогда
СтрокаЗаданий = "СостояниеНастроекСчетовУчета,СостояниеОффлайновыхРасчетов,СостояниеОтраженияДокументов";
ЗаданияПоОбновлению = ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФО, СтрокаЗаданий);
ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ЗаданияПоОбновлению);
ПодключитьПроверкуВыполненияФоновыхЗаданий();
ОповеститьОбОтраженииДокументовВРеглУчете(РезультатЗакрытияФормыДлительнойОперации.Результат);
ИначеЕсли РезультатЗакрытияФормыДлительнойОперации.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'При отражении документов в регл. учете возникли ошибки. Подробнее см. в журнале регистрации.'"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область АвтоматическоеОтражениеВУчете
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеРасписанияРегламентногоЗадания(Расписание)
Возврат ?(Расписание = Новый РасписаниеРегламентногоЗадания, НСтр("ru = 'Расписание не задано'"), Строка(Расписание));
КонецФункции
&НаКлиенте
Процедура РедактированиеРасписанияРегламентногоЗадания()
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания;
КонецЕсли;
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания);
ОписаниеОповещения = Новый ОписаниеОповещения("УстановитьРасписаниеРегламентногоЗадания", ЭтотОбъект);
Диалог.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьРасписаниеРегламентногоЗадания(Расписание, ДополнительныеПараметры) Экспорт
Если Расписание <> Неопределено Тогда
РасписаниеРегламентногоЗадания = Расписание;
СохранитьРеквизитыРегламентногоЗадания();
ПредставлениеРасписания = ПредставлениеРасписанияРегламентногоЗадания(Расписание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьРеквизитыРегламентногоЗадания()
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ОтражениеДокументовВРеглУчете);
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Использование", ИспользоватьАвтоматическоеОтражениеВУчете);
ПараметрыЗадания.Вставить("Расписание", РасписаниеРегламентногоЗадания);
РегламентныеЗаданияСервер.ИзменитьЗадание(Задание, ПараметрыЗадания);
УстановитьСвойстваЭлементовОтраженияПоРасписанию(ОбщегоНазначения.РазделениеВключено());
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
#КонецОбласти
#Область УправлениеЭлементамиФормы
&НаКлиенте
Процедура ПоказатьУниверсальнуюФормуРасшифровкиПоДокументам(ПараметрыФормыРасшифровки)
Если ФормаРасшифровкаПоДокументамОткрыта Тогда
Оповестить("РасшифровкаПоДокументам_ИзмененийУсловийОтбора", ПараметрыФормыРасшифровки, ЭтотОбъект);
Иначе
ОповещениеОЗакрытииФормы = Новый ОписаниеОповещения("ПриЗакрытииФормыРасшифровкаПоДокументам", ЭтотОбъект);
ОткрытьФорму("Обработка.НастройкаОтраженияДокументовВРеглУчете.Форма.РасшифровкаПоДокументам", ПараметрыФормыРасшифровки, ЭтотОбъект,,,, ОповещениеОЗакрытииФормы);
ФормаРасшифровкаПоДокументамОткрыта = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытииФормыРасшифровкаПоДокументам(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
ФормаРасшифровкаПоДокументамОткрыта = Ложь;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементовОтраженияПоРасписанию(РазделениеВключено)
ЧастиЗаголовка = Новый Массив;
ЧастиЗаголовка.Добавить(НСтр("ru = 'Автоматическое отражение по расписанию'"));
Если ИспользоватьАвтоматическоеОтражениеВУчете Тогда
ЧастиЗаголовка.Добавить(СостояниеАвтоматическогоОтраженияВУчете);
КонецЕсли;
Элементы.ИспользоватьАвтоматическоеОтражениеВУчете.Заголовок = СтрСоединить(ЧастиЗаголовка, " ");
Элементы.ПредставлениеРасписания.Доступность = ИспользоватьАвтоматическоеОтражениеВУчете И НЕ РазделениеВключено;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанные(ИмяОперации, РезультатВыполнения)
Если ИмяОперации = "СостояниеРегламентногоЗадания" Тогда
ОбновитьДанныеПоАвтоматическомуОтражениюВУчете(РезультатВыполнения);
ИначеЕсли ИмяОперации = "СостояниеОффлайновыхРасчетов" Тогда
ОбновитьДанныеПоОффлайновымРасчетам(РезультатВыполнения);
ИначеЕсли СтрНачинаетсяС(ИмяОперации, "СостояниеОтраженияДокументов") Тогда
ОбновитьДанныеПоОтражениюИПроверкеДокументовВРеглУчете(РезультатВыполнения, СтрЗаменить(ИмяОперации, "СостояниеОтраженияДокументов_", ""));
ИначеЕсли СтрНачинаетсяС(ИмяОперации, "СостояниеПроверкиДокументов") Тогда
ОбновитьДанныеПоОтражениюИПроверкеДокументовВРеглУчете(РезультатВыполнения, СтрЗаменить(ИмяОперации, "СостояниеПроверкиДокументов_", ""));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеПоАвтоматическомуОтражениюВУчете(РезультатВыполненияФоновогоЗадания)
Если РезультатВыполненияФоновогоЗадания.Статус = "Выполнено" Тогда
ДанныеАвтоматическогоОтраженияВУчете = ПолучитьИзВременногоХранилища(РезультатВыполненияФоновогоЗадания.АдресРезультата);
РасписаниеРегламентногоЗадания = ДанныеАвтоматическогоОтраженияВУчете.РасписаниеРегламентногоЗадания;
ИспользоватьАвтоматическоеОтражениеВУчете = ДанныеАвтоматическогоОтраженияВУчете.ИспользоватьАвтоматическоеОтражениеВУчете;
Если ДанныеАвтоматическогоОтраженияВУчете.СвойстваПоследнегоФоновогоЗадания = Неопределено
Или ДанныеАвтоматическогоОтраженияВУчете.СвойстваПоследнегоФоновогоЗадания.Состояние = Неопределено Тогда
СостояниеАвтоматическогоОтраженияВУчете = НСтр("ru = '(Не выполнялось)'");
Иначе
СтрокиСостояния = Новый Массив;
СтрокиСостояния.Добавить("(");
СтрокиСостояния.Добавить(Строка(ДанныеАвтоматическогоОтраженияВУчете.СвойстваПоследнегоФоновогоЗадания.Состояние));
Если ЗначениеЗаполнено(ДанныеАвтоматическогоОтраженияВУчете.СвойстваПоследнегоФоновогоЗадания.ДатаЗавершения) Тогда
СтрокиСостояния.Добавить(" ");
СтрокиСостояния.Добавить(Строка(ДанныеАвтоматическогоОтраженияВУчете.СвойстваПоследнегоФоновогоЗадания.ДатаЗавершения));
КонецЕсли;
СтрокиСостояния.Добавить(")");
СостояниеАвтоматическогоОтраженияВУчете = СтрСоединить(СтрокиСостояния);
КонецЕсли;
УстановитьСвойстваЭлементовОтраженияПоРасписанию(ДанныеАвтоматическогоОтраженияВУчете.РазделениеВключено);
ПредставлениеРасписания = ПредставлениеРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания);
ИначеЕсли РезультатВыполненияФоновогоЗадания.Статус = "Ошибка" Тогда
ПредставлениеРасписания = НСтр("ru = 'Получение данных по регламентному заданию завершилось с ошибкой. Подробнее см. в журнале регистрации.'");
Иначе
ПредставлениеРасписания = НСтр("ru = 'Выполняется получение данных по регламентному заданию...'");
КонецЕсли;
Элементы.КартинкаОбновлениеСостояниеРегламентногоЗадания.Видимость = Не РезультатВыполненияФоновогоЗадания.ЗаданиеЗавершено;
Элементы.КартинкаСостояниеРегламентногоЗадания.Видимость = РезультатВыполненияФоновогоЗадания.ЗаданиеЗавершено;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеПоОффлайновымРасчетам(РезультатВыполненияФоновогоЗадания)
Если РезультатВыполненияФоновогоЗадания.Статус = "Выполнено" Тогда
НеВыполненныеОперации = ПолучитьИзВременногоХранилища(РезультатВыполненияФоновогоЗадания.АдресРезультата);
Если НеВыполненныеОперации.Количество() Тогда
ТекстПредупреждения = НСтр("ru = 'До закрытия месяца отражение документов в бухгалтерском учете носит предварительный характер и может измениться
|по результатам %1.'") + Символы.ПС;
ТекстНеВыполненныеОперации = СтрСоединить(НеВыполненныеОперации, " "+НСтр("ru = 'и'")+" ");
ТекстПредупреждения = СтрШаблон(ТекстПредупреждения, ТекстНеВыполненныеОперации);
СостояниеОффлайновыхОпераций = Новый ФорматированнаяСтрока(
Новый ФорматированнаяСтрока(ТекстПредупреждения,, ЦветаСтиля.РезультатПроблемаЦвет),
Новый ФорматированнаяСтрока(НСтр("ru = 'Регламентные операции по закрытию месяца'"),,,, "ОткрытьФормуЗакрытияМесяца"));
КонецЕсли;
Элементы.ГруппаПредупреждение.Видимость = НеВыполненныеОперации.Количество();
ИначеЕсли РезультатВыполненияФоновогоЗадания.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'При получении данных по оффлайн расчетам возникли ошибки. Подробнее см. в журнале регистрации.'"));
Элементы.ГруппаПредупреждение.Видимость = Ложь;
Иначе
СостояниеОффлайновыхОпераций = Новый ФорматированнаяСтрока(НСтр("ru = 'Выполняется получение данных по необходимым оффлайн расчетам...'"));
Элементы.ГруппаПредупреждение.Видимость = Истина;
КонецЕсли;
Элементы.КартинкаОбновлениеСостояниеОффлайновыхРасчетов.Видимость = Не РезультатВыполненияФоновогоЗадания.ЗаданиеЗавершено;
Элементы.КартинкаПредупреждение.Видимость = РезультатВыполненияФоновогоЗадания.ЗаданиеЗавершено;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеПоОтражениюИПроверкеДокументовВРеглУчете(РезультатВыполненияФоновогоЗадания, ВидОперации)
#Область УстановкаТекстаСообщенийОНаличииДокументов
СоответствиеСообщенияНаличияДокументовВидуОперации = Новый Соответствие;
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("ОтраженныеВручную",
НСтр("ru = 'Документы, скорректированные вручную (%Количество%), по %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеОтраженныеВручную",
НСтр("ru = 'Документы, требующие ручной корректировки и подтверждения (%Количество%), с %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("Отраженные",
НСтр("ru = 'Отраженные документы (%Количество%), по %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Документы, ожидающие автоматического отражения (%Количество%), с %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("ОтраженныеОперациейБух",
НСтр("ru = 'Ручные операции регл. учета (%Количество%), по %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеОтраженныеОперациейБух",
НСтр("ru = 'Ручные операции регл. учета, требующие корректировки и подтверждения (%Количество%), с %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеУказаныСчетаУчета",
НСтр("ru = 'Документы, не отраженные в учете из-за ненастроенных счетов учета (%Количество%), с %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("Проверенные",
НСтр("ru = 'Проверенные документы (%Количество%), по %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеПроверенные",
НСтр("ru = 'Документы, требующие проверки (%Количество%), с %Дата%'"));
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("КПовторнойПроверке",
НСтр("ru = 'Документы, требующие повторной проверки (%Количество%), с %Дата%'"));
#КонецОбласти
#Область УстановкаТекстаСообщенийОбОтсутствииДокументов
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации = Новый Соответствие;
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("ОтраженныеВручную",
НСтр("ru = 'Нет скорректированных вручную документов.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеОтраженныеВручную",
НСтр("ru = 'Нет документов, требующих ручной корректировки и подтверждения.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("Отраженные",
НСтр("ru = 'Нет отраженных документов.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Нет документов, ожидающих автоматического отражения.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("ОтраженныеОперациейБух",
НСтр("ru = 'Нет ручных операций регл. учета.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеОтраженныеОперациейБух",
НСтр("ru = 'Нет ручных операций регл. учета, требующих корректировки и подтверждения.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеУказаныСчетаУчета",
НСтр("ru = 'Нет документов, не отраженных из-за ненастроенных счетов учета.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("Проверенные",
НСтр("ru = 'Нет проверенных документов.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеПроверенные",
НСтр("ru = 'Нет документов, требующих проверки.'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("КПовторнойПроверке",
НСтр("ru = 'Нет документов, требующих повторной проверки.'"));
#КонецОбласти
#Область УстановкаТекстаСообщенийОбОшибкеПриВыполнении
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации = Новый Соответствие;
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("ОтраженныеВручную",
НСтр("ru = 'Получение данных о скорректированных вручную документах завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеОтраженныеВручную",
НСтр("ru = 'Получение данных о документах, требующих ручной корректировки и подтверждения, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("Отраженные",
НСтр("ru = 'Получение данных о неотраженных документах завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Получение данных о документах, ожидающих автоматического отражения, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("ОтраженныеОперациейБух",
НСтр("ru = 'Получение данных о ручных операциях регл. учета завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеОтраженныеОперациейБух",
НСтр("ru = 'Получение данных о ручных операциях регл. учета, требующих корректировки и подтверждения, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеУказаныСчетаУчета",
НСтр("ru = 'Получение данных о документах, не отраженных в учете, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("Проверенные",
НСтр("ru = 'Получение данных о непроверенных документах завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеПроверенные",
НСтр("ru = 'Получение данных о документах, требующих проверки, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("КПовторнойПроверке",
НСтр("ru = 'Получение данных о документах, требующих повторной проверки, завершилось с ошибкой.'"));
#КонецОбласти
#Область УстановкаТекстаСообщенийОбОбновленииДанных
СоответствиеСообщенияОбОбновленииДанныхВидуОперации = Новый Соответствие;
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("ОтраженныеВручную",
НСтр("ru = 'Получение скорректированных вручную документов...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеОтраженныеВручную",
НСтр("ru = 'Получение документов, требующих ручной корректировки и подтверждения...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("Отраженные",
НСтр("ru = 'Получение отраженных документов...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Получение документов, ожидающих автоматического отражения...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("ОтраженныеОперациейБух",
НСтр("ru = 'Получение ручных операций регл. учета...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеОтраженныеОперациейБух",
НСтр("ru = 'Получение ручных операций регл. учета, требующих корректировки и подтверждения...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеУказаныСчетаУчета",
НСтр("ru = 'Получение документов, не отраженных в учете...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("Проверенные",
НСтр("ru = 'Получение проверенных документов...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеПроверенные",
НСтр("ru = 'Получение документов, требующих проверки...'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("КПовторнойПроверке",
НСтр("ru = 'Получение документов, требующих повторной проверки...'"));
#КонецОбласти
#Область УстановкаИменРеквизитов
СоответствиеИменРеквизитовВидуОперации = Новый Соответствие;
СоответствиеИменРеквизитовВидуОперации.Вставить("ОтраженныеВручную", "СтатусОтраженоВУчетеВручную");
СоответствиеИменРеквизитовВидуОперации.Вставить("НеОтраженныеВручную", "СтатусКОтражениюВУчетеВручную");
СоответствиеИменРеквизитовВидуОперации.Вставить("Отраженные", "СтатусОтраженоВУчете");
СоответствиеИменРеквизитовВидуОперации.Вставить("НеОтраженные", "СтатусКОтражениюВУчете");
СоответствиеИменРеквизитовВидуОперации.Вставить("ОтраженныеОперациейБух", "СтатусДополнительныеОперацииОтраженоВУчете");
СоответствиеИменРеквизитовВидуОперации.Вставить("НеОтраженныеОперациейБух", "СтатусДополнительныеОперацииКОтражениюВУчете");
СоответствиеИменРеквизитовВидуОперации.Вставить("НеУказаныСчетаУчета", "СтатусОтсутствуютПравилаОтраженияВУчете");
СоответствиеИменРеквизитовВидуОперации.Вставить("Проверенные", "СтатусПроверенныхДокументов");
СоответствиеИменРеквизитовВидуОперации.Вставить("НеПроверенные", "СтатусНеПроверенныхДокументов");
СоответствиеИменРеквизитовВидуОперации.Вставить("КПовторнойПроверке", "СтатусДокументовКПроверке");
#КонецОбласти
#Область ПереопределениеЗаголовковДляОжидающихОтражения
Если ВидОперации = "НеОтраженные" И ДанныеФО.ОтражениеПроверенных Тогда
СоответствиеСообщенияНаличияДокументовВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Проверенные документы, ожидающие автоматического отражения (%Количество%), с %Дата%'"));
СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Нет проверенных документов, ожидающих автоматического отражения.'"));
СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Получение данных о проверенных документах, ожидающих автоматического отражения, завершилось с ошибкой.'"));
СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Вставить("НеОтраженные",
НСтр("ru = 'Получение проверенных документов, ожидающих автоматического отражения...'"));
КонецЕсли;
#КонецОбласти
ИмяРеквизита = СоответствиеИменРеквизитовВидуОперации.Получить(ВидОперации);
Если РезультатВыполненияФоновогоЗадания.Статус = "Выполнено" Тогда
Результат = ПолучитьИзВременногоХранилища(РезультатВыполненияФоновогоЗадания.АдресРезультата);
Выборка = Результат.Выбрать();
Если Выборка.Следующий() И Выборка.Количество <> 0 Тогда
ТекстСтатуса = СоответствиеСообщенияНаличияДокументовВидуОперации.Получить(ВидОперации);
ТекстСтатуса = СтрЗаменить(ТекстСтатуса, "%Количество%", Выборка.Количество);
ЭтотОбъект[ИмяРеквизита] = СтрЗаменить(ТекстСтатуса, "%Дата%", Формат(Выборка.ДатаНачала, "ДЛФ=Д"));
Элементы[ИмяРеквизита].ЦветТекста = ?(ВидОперации = "НеУказаныСчетаУчета", ЦветаСтиля.ПросроченныеДанныеЦвет, ЦветаСтиля.ГиперссылкаЦвет);
Элементы[ИмяРеквизита].Гиперссылка = Истина;
Иначе
ЭтотОбъект[ИмяРеквизита] = СоответствиеСообщенияОбОтсутствииДокументовВидуОперации.Получить(ВидОперации);
Элементы[ИмяРеквизита].ЦветТекста = ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента;
Элементы[ИмяРеквизита].Гиперссылка = Ложь;
КонецЕсли;
ИначеЕсли РезультатВыполненияФоновогоЗадания.Статус = "Ошибка" Тогда
ЭтотОбъект[ИмяРеквизита] = СоответствиеСообщенияОбОшибкеПриВыполненииВидуОперации.Получить(ВидОперации) +
" " + НСтр("ru = 'Подробнее см. в журнале регистрации.'");
Элементы[ИмяРеквизита].ЦветТекста = ЦветаСтиля.ОтметкаОтрицательногоВыполненияЗадачи;
Элементы[ИмяРеквизита].Гиперссылка = Ложь;
Иначе
ЭтотОбъект[ИмяРеквизита] = СоответствиеСообщенияОбОбновленииДанныхВидуОперации.Получить(ВидОперации);
Элементы[ИмяРеквизита].ЦветТекста = ЦветаСтиля.ТекстСправочнойНадписи;
Элементы[ИмяРеквизита].Гиперссылка = Ложь;
КонецЕсли;
Элементы["КартинкаОбновлениеСостояние"+ВидОперации].Видимость = Не РезультатВыполненияФоновогоЗадания.ЗаданиеЗавершено;
Если ВидОперации = "СтатусДокументовКПроверке" Тогда
Элементы.ГруппаСостояниеПроверкиДокументовКПовторнойПроверке.Видимость = ДанныеФО.ПроверкаДокументов;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область НастройкаСчетовУчета
&НаСервере
Процедура УстановитьСостояниеСчетовУчета(МассивОрганизаций)
КоличествоНеобходимыхНастроек = ТребуетсяНастройкаСчетов(МассивОрганизаций);
Если КоличествоНеобходимыхНастроек > 0 Тогда
СостояниеСчетовУчета = НСтр("ru = 'Настроить счета учета (%1)'");
СостояниеСчетовУчета = СтрШаблон(СостояниеСчетовУчета, КоличествоНеобходимыхНастроек);
Элементы.ОткрытьФормуНастройкиСчетов.Заголовок = СостояниеСчетовУчета;
Элементы.ОткрытьФормуНастройкиСчетов.ЦветТекста = ЦветаСтиля.ПросроченныеДанныеЦвет;
Иначе
СостояниеСчетовУчета = НСтр("ru = 'Счета учета не требуют настройки'");
Элементы.ОткрытьФормуНастройкиСчетов.Заголовок = СостояниеСчетовУчета;
Элементы.ОткрытьФормуНастройкиСчетов.ЦветТекста = ЦветаСтиля.ГиперссылкаЦвет;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ТребуетсяНастройкаСчетов(МассивОрганизаций)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА НеобходимыеНастройки.ВидСчета = ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство)
| ТОГДА НеобходимыеНастройки.Организация
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Организация,
| ВЫБОР
| КОГДА НеобходимыеНастройки.ВидСчета = ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство)
| ТОГДА НеобходимыеНастройки.МестоУчета
| ИНАЧЕ НеобходимыеНастройки.АналитикаУчета
| КОНЕЦ КАК ОбъектНастройки,
| НеобходимыеНастройки.ВидСчета КАК ВидСчета
|ИЗ
| РегистрСведений.СчетаРеглУчетаТребующиеНастройки КАК НеобходимыеНастройки
|ГДЕ
| НеобходимыеНастройки.Организация В(&Организации)
| И НеобходимыеНастройки.ВидСчета В (&АнализируемыеВидыСчетов)
|";
Запрос.УстановитьПараметр("Организации", МассивОрганизаций);
МассивВидовСчетов = РеглУчетВыборкиСерверПовтИсп.НастраиваемыеВидыСчетов();
Запрос.УстановитьПараметр("АнализируемыеВидыСчетов", МассивВидовСчетов);
Выборка = Запрос.Выполнить().Выбрать();
ТребуютНастройки = Выборка.Количество();
#Область ДополнительныеСчета
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА НеобходимыеНастройки.ВидСчета = ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство)
| ТОГДА НеобходимыеНастройки.Организация
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Организация,
| ВЫБОР
| КОГДА НеобходимыеНастройки.ВидСчета = ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство)
| ТОГДА НеобходимыеНастройки.МестоУчета
| ИНАЧЕ НеобходимыеНастройки.АналитикаУчета
| КОНЕЦ КАК ОбъектНастройки,
| НеобходимыеНастройки.ВидСчета КАК ВидСчета
|ИЗ
| РегистрСведений.СчетаРеглУчетаТребующиеНастройки КАК НеобходимыеНастройки
|ГДЕ
| НеобходимыеНастройки.Организация В(&Организации)
| И НеобходимыеНастройки.АналитикаУчета = ЗНАЧЕНИЕ(Справочник.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка)
| И НеобходимыеНастройки.ВидСчета В (&АнализируемыеВидыСчетов)
|";
Запрос.УстановитьПараметр("Организации", МассивОрганизаций);
Запрос.УстановитьПараметр("АнализируемыеВидыСчетов", РеглУчетВыборкиСерверПовтИсп.НастраиваемыеВидыСчетов("РасчетыСКомиссионерами"));
Выборка = Запрос.Выполнить().Выбрать();
ТребуютНастройки = ТребуютНастройки
+ ?(ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах"), Выборка.Количество(), 0)
+ ?(ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриЗакупках"), Выборка.Количество(), 0);
#КонецОбласти
Возврат ТребуютНастройки;
КонецФункции
#КонецОбласти
#Область ФоновыеЗаданияПоОбновлениюДанных
&НаСервере
Процедура ЗапуститьЗаданияПоОбновлениюДанныхСостоянияРеглУчета(ЗаданияКЗапуску)
ПараметрыФоновогоЗадания = Новый Структура;
ПараметрыФоновогоЗадания.Вставить("МассивОрганизаций", МассивДоступныхОрганизаций(Организация));
ПараметрыФоновогоЗадания.Вставить("ДатаОкончанияПериода", ДатаОкончанияПериода);
ПараметрыФоновогоЗадания.Вставить("ВидЗадания", "");
ВыполненныеЗадания = Новый Массив;
Для каждого Задание Из ЗаданияКЗапуску Цикл
Если Задание.Ключ = "СостояниеНастроекСчетовУчета" Тогда
УстановитьСостояниеСчетовУчета(ПараметрыФоновогоЗадания.МассивОрганизаций);
ВыполненныеЗадания.Добавить(Задание.Ключ);
Продолжить;
КонецЕсли;
Если СтрНайти(Задание.Ключ, "_") = 0 Тогда
ИмяМетода = Задание.Ключ;
ПараметрыФоновогоЗадания.ВидЗадания = "";
Иначе
МассивСтрокЗадания = СтрРазделить(Задание.Ключ, "_");
ИмяМетода = МассивСтрокЗадания.Получить(0);
ПараметрыФоновогоЗадания.ВидЗадания = МассивСтрокЗадания.Получить(1);
КонецЕсли;
Если НЕ СтруктураОбновленияСостоянийОтражения = НЕОПРЕДЕЛЕНО И СтруктураОбновленияСостоянийОтражения.Свойство(Задание.Ключ)
И НЕ СтруктураОбновленияСостоянийОтражения[Задание.Ключ] = НЕОПРЕДЕЛЕНО Тогда
РезультатВыполнения = ДлительныеОперации.ОперацияВыполнена(СтруктураОбновленияСостоянийОтражения[Задание.Ключ].ИдентификаторЗадания);
РезультатВыполнения.Вставить("АдресРезультата",СтруктураОбновленияСостоянийОтражения[Задание.Ключ].АдресРезультата);
РезультатВыполнения.Вставить("ИдентификаторЗадания",СтруктураОбновленияСостоянийОтражения[Задание.Ключ].ИдентификаторЗадания);
Иначе
РезультатВыполнения = ЗапуститьВыполнениеВФоне("Обработки.НастройкаОтраженияДокументовВРеглУчете." + ИмяМетода, ПараметрыФоновогоЗадания);
КонецЕсли;
РезультатВыполнения.Вставить("ЗаданиеЗавершено", РезультатВыполнения.Статус = "Выполнено" ИЛИ РезультатВыполнения.Статус = "Ошибка");
ОбновитьДанные(Задание.Ключ, РезультатВыполнения);
Если РезультатВыполнения.ЗаданиеЗавершено Тогда
ВыполненныеЗадания.Добавить(Задание.Ключ);
Иначе
ЗаданияКЗапуску.Вставить(Задание.Ключ, РезультатВыполнения);
КонецЕсли;
КонецЦикла;
Для каждого ВыполненноеЗадание Из ВыполненныеЗадания Цикл
ЗаданияКЗапуску.Удалить(ВыполненноеЗадание);
КонецЦикла;
СтруктураОбновленияСостоянийОтражения = ЗаданияКЗапуску;
КонецПроцедуры
&НаСервере
Функция ЗапуститьВыполнениеВФоне(ВыполняемыйМетод, ПараметрыОбработки)
СоответствиеНаименованийЗаданийВыполняемымМетодам = Новый Соответствие;
СоответствиеНаименованийЗаданийВыполняемымМетодам.Вставить("РеглУчетПроведениеСервер.ОтразитьВсеВФоне",
НСтр("ru = 'Отражение документов в регламентированном учете'"));
СоответствиеНаименованийЗаданийВыполняемымМетодам.Вставить("Обработки.НастройкаОтраженияДокументовВРеглУчете.СостояниеОффлайновыхРасчетов",
НСтр("ru = 'Рабочее место отражения документов в регл. учете: Обновление состояния оффлайновых расчетов'"));
СоответствиеНаименованийЗаданийВыполняемымМетодам.Вставить("Обработки.НастройкаОтраженияДокументовВРеглУчете.СостояниеОтраженияДокументов",
НСтр("ru = 'Рабочее место отражения документов в регл. учете: Обновление состояния отражения документов'"));
СоответствиеНаименованийЗаданийВыполняемымМетодам.Вставить("Обработки.НастройкаОтраженияДокументовВРеглУчете.СостояниеНастроекСчетовУчета",
НСтр("ru = 'Рабочее место отражения документов в регл. учете: Обновление состояния настройки счетов учета'"));
СоответствиеНаименованийЗаданийВыполняемымМетодам.Вставить("Обработки.НастройкаОтраженияДокументовВРеглУчете.СостояниеРегламентногоЗадания",
НСтр("ru = 'Рабочее место отражения документов в регл. учете: Обновление состояния регламентного задания'"));
ПараметрыФоновогоЗадания = ДлительныеОперации.ПараметрыВыполненияВФоне(ЭтотОбъект.УникальныйИдентификатор);
ПараметрыФоновогоЗадания.КлючФоновогоЗадания = Новый УникальныйИдентификатор;
ПараметрыФоновогоЗадания.ОжидатьЗавершение = 0;
ПараметрыФоновогоЗадания.НаименованиеФоновогоЗадания = СоответствиеНаименованийЗаданийВыполняемымМетодам.Получить(ВыполняемыйМетод);
РезультатФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыОбработки, ПараметрыФоновогоЗадания);
Возврат РезультатФоновогоЗадания;
КонецФункции
&НаКлиенте
Процедура ПроверитьВыполнениеФоновыхЗаданийОбновленияСостоянийКлиент()
Если СтруктураОбновленияСостоянийОтражения = Неопределено ИЛИ СтруктураОбновленияСостоянийОтражения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПроверитьВыполнениеФоновыхЗаданийОбновленияСостоянийСервер();
Если СтруктураОбновленияСостоянийОтражения.Количество() Тогда
ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
ПодключитьОбработчикОжидания("ПроверитьВыполнениеФоновыхЗаданийОбновленияСостоянийКлиент", ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВыполнениеФоновыхЗаданийОбновленияСостоянийСервер()
ВыполненныеЗадания = Новый Массив;
Для каждого ПроверяемоеЗадание Из СтруктураОбновленияСостоянийОтражения Цикл
Если ВыполненныеЗадания.Найти(ПроверяемоеЗадание.Ключ) <> Неопределено Или ПроверяемоеЗадание.Значение = Неопределено Тогда
Продолжить;
КонецЕсли;
ПроверитьВыполнениеФоновогоЗадания(ПроверяемоеЗадание.Ключ, ПроверяемоеЗадание.Значение, ВыполненныеЗадания);
КонецЦикла;
Для каждого ВыполненноеЗадание Из ВыполненныеЗадания Цикл
СтруктураОбновленияСостоянийОтражения.Удалить(ВыполненноеЗадание);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВыполнениеФоновогоЗадания(ИмяЗадания, Задание, ВыполненныеЗадания)
Если Задание.Статус = "Выполняется" И Задание.Свойство("ИдентификаторЗадания") Тогда
РезультатВыполнения = ДлительныеОперации.ОперацияВыполнена(Задание.ИдентификаторЗадания);
РезультатВыполнения.Вставить("ЗаданиеЗавершено", РезультатВыполнения.Статус = "Выполнено" ИЛИ РезультатВыполнения.Статус = "Ошибка");
РезультатВыполнения.Вставить("АдресРезультата", Задание.АдресРезультата);
Иначе
РезультатВыполнения = Задание;
КонецЕсли;
ОбновитьДанные(ИмяЗадания, РезультатВыполнения);
Если РезультатВыполнения.ЗаданиеЗавершено Тогда
ВыполненныеЗадания.Добавить(ИмяЗадания);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИнициализироватьСтруктуруЗаданийОбновления(ДанныеФункциональныхОпций, ПеречисленныеЗаданияСтрокой = Неопределено)
Если ПеречисленныеЗаданияСтрокой = Неопределено Тогда
ПеречисленныеЗаданияСтрокой = "СостояниеРегламентногоЗадания,СостояниеОтраженияДокументов,СостояниеОффлайновыхРасчетов,"+
"СостояниеПроверкиДокументов,СостояниеНастроекСчетовУчета";
КонецЕсли;
СтруктураВозврата = Новый Структура;
МассивЗаданий = СтрРазделить(ПеречисленныеЗаданияСтрокой, ",");
Для каждого Задание Из МассивЗаданий Цикл
Если Задание = "СостояниеОтраженияДокументов" Тогда
Если ДанныеФункциональныхОпций.РучноеИзменениеПроводок Тогда
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_ОтраженныеВручную");
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_НеОтраженныеВручную");
КонецЕсли;
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_Отраженные");
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_НеОтраженные");
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_ОтраженныеОперациейБух");
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_НеОтраженныеОперациейБух");
СтруктураВозврата.Вставить("СостояниеОтраженияДокументов_НеУказаныСчетаУчета");
ИначеЕсли Задание = "СостояниеПроверкиДокументов" Тогда
Если ДанныеФункциональныхОпций.ПроверкаДокументов Тогда
СтруктураВозврата.Вставить("СостояниеПроверкиДокументов_Проверенные");
СтруктураВозврата.Вставить("СостояниеПроверкиДокументов_НеПроверенные");
СтруктураВозврата.Вставить("СостояниеПроверкиДокументов_КПовторнойПроверке");
КонецЕсли;
Иначе
СтруктураВозврата.Вставить(Задание);
КонецЕсли;
КонецЦикла;
Возврат СтруктураВозврата;
КонецФункции
&НаКлиенте
Процедура ПодключитьПроверкуВыполненияФоновыхЗаданий()
Если СтруктураОбновленияСостоянийОтражения <> Неопределено И СтруктураОбновленияСостоянийОтражения.Количество() Тогда
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
ПодключитьОбработчикОжидания("ПроверитьВыполнениеФоновыхЗаданийОбновленияСостоянийКлиент", ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти