#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаДлительнойОперации;
&НаКлиенте
Перем ПараметрыОжидания;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("Отбор") И ТипЗнч(Параметры.Отбор) = Тип("Структура")
И Параметры.Отбор.Свойство("Регистратор") И ЗначениеЗаполнено(Параметры.Отбор.Регистратор) Тогда
Документ = Параметры.Отбор.Регистратор;
ПрочитатьНаборЗаписей();
ОбновитьДанныеРеквизитовДокумента();
УстановитьНастройкиСумм_НУ_ПР_ВР();
Иначе
ТекстСообщения = НСтр("ru='Непосредственное открытие этой формы не предусмотрено!'");
ВызватьИсключение ТекстСообщения;
КонецЕсли;
ОписаниеТиповВалюта = Новый ОписаниеТипов("СправочникСсылка.Валюты");
ОписаниеТиповКоличество = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,3));
ОписаниеТиповПодразделение = БухгалтерскийУчетКлиентСерверПереопределяемый.ОписаниеТиповПодразделения();
ОписаниеТиповСумма = ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля();
УведомлятьОПустомКомментарии = Истина;
ВалютаРУ = Константы.ВалютаРегламентированногоУчета.Получить();
ВалютаУУ = Константы.ВалютаУправленческогоУчета.Получить();
ВалютаФО = Константы.ВалютаФинОтчетности.Получить();
ИсточникСуммыДляПересчетаВВалютуФинОтчетности = Константы.ИсточникСуммыДляПересчетаВВалютуФинОтчетности.Получить();
ПравоИзмененияПроводок = ПравоДоступа("Изменение", Метаданные.РегистрыБухгалтерии.Хозрасчетный);
ДокументПроводится = (Документ.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Запретить);
ОбновитьДанныеОВведенныхКорректировках();
УстановитьДоступностьСубконто();
НастроитьОтображениеТаблицыПроводок();
СтатусПроверкиДокумента = СтатусПроверкиДокумента(Документ);
ПолучитьСостояниеОтраженияДокумента();
ПредставлениеДокумента = Строка(Документ) + ПолучитьСостояниеПроверкиДокумента(СтатусПроверкиДокумента);
УстановитьДоступностьЭлементовФормы();
КонецПроцедуры
&НаКлиенте
Процедура ПриПовторномОткрытии()
ПовторноеОткрытиеСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.АктуализацияПроводок.Пометка = АктуализацияПроводок;
Если АктуализацияПроводок
И (СтатусОтраженияДокумента = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете")
ИЛИ СтатусОтраженияДокумента = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета"))
И РезультатФоновогоЗаданияОтраженияПроводок.Статус = "Выполняется" Тогда
ОтражениеПроводокПроверитьНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_СтатусПроверкиДокумента"
ИЛИ ИмяСобытия = "Запись_ОтражениеДокументовВРегламентированномУчете"
И ((ТипЗнч(Параметр) = Тип("Массив") И Не Параметр.Найти(Документ) = Неопределено)
ИЛИ ТипЗнч(Параметр) = Тип("ДокументСсылка.ОперацияБух")) Тогда
ПовторноеОткрытиеСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
Если АктуализацияПроводок И ПравоИзмененияПроводок
И (СтатусОтраженияДокумента = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете")
ИЛИ СтатусОтраженияДокумента = ПредопределенноеЗначение("Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета")) Тогда
РезультатФоновогоЗаданияОтраженияПроводок = ОтразитьДокументВРеглУчетеСервер();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПредставлениеДокументаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(Неопределено, Документ);
КонецПроцедуры
&НаКлиенте
Процедура ТекстКорректировкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если СписокКорректировок.Количество() = 1 Тогда
ПоказатьЗначение(, СписокКорректировок.Получить(0).Значение);
Иначе
ЗаголовокФормы = НСтр("ru = 'Выберите документ корректировки для просмотра'");
ПараметрыФормы = Новый Структура("СписокДокументов, Заголовок", СписокКорректировок, ЗаголовокФормы);
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,
,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СостояниеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "РасшифровкаСтатуса" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьРасшифровкуСтатуса();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбраннаяОрганизацияПриИзменении(Элемент)
УстановитьОтборПоОрганизации();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийТаблицыФормыНаборЗаписей
&НаКлиенте
Процедура НаборЗаписейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Значение = Элемент.ТекущиеДанные[Поле.Имя];
Если ЗначениеЗаполнено(Значение)
И ТипЗнч(Значение) <> Тип("Число")
И ТипЗнч(Значение) <> Тип("Дата")
И ТипЗнч(Значение) <> Тип("Булево") Тогда
ПоказатьЗначение(, Значение);
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаборЗаписейПередНачаломИзменения(Элемент, Отказ)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
ПоляФормы = Новый Структура("Субконто1, Субконто2, Субконто3",
"СубконтоДт1", "СубконтоДт2", "СубконтоДт3");
БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(ТекущиеДанные.СчетДт, ЭтотОбъект, ПоляФормы, Неопределено, Истина);
ПоляФормы = Новый Структура("Субконто1, Субконто2, Субконто3",
"СубконтоКт1", "СубконтоКт2", "СубконтоКт3");
БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(ТекущиеДанные.СчетКт, ЭтотОбъект, ПоляФормы, Неопределено, Истина);
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НаборЗаписейПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока И НЕ Копирование Тогда
Если Элемент.ТекущиеДанные.Свойство("Период") И ЗначениеЗаполнено(ДатаОтражения) Тогда
Элемент.ТекущиеДанные.Период = ДатаОтражения;
КонецЕсли;
Если Элемент.ТекущиеДанные.Свойство("Организация") И ЗначениеЗаполнено(Организация) Тогда
Элемент.ТекущиеДанные.Организация = Организация;
КонецЕсли;
Если Элемент.ТекущиеДанные.Свойство("Регистратор") И ЗначениеЗаполнено(Документ) Тогда
Элемент.ТекущиеДанные.Регистратор = Документ;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНаборЗаписей
&НаКлиенте
Процедура СчетДтПриИзменении(Элемент)
ОбработатьИзменениеСчета("Дт");
КонецПроцедуры
&НаКлиенте
Процедура СчетКтПриИзменении(Элемент)
ОбработатьИзменениеСчета("Кт");
КонецПроцедуры
&НаКлиенте
Процедура ВалютаДтПриИзменении(Элемент)
РасчетСуммы("ВалютнаяСуммаДт");
КонецПроцедуры
&НаКлиенте
Процедура ВалютаКтПриИзменении(Элемент)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.СчетДт) Тогда
СвойстваСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(ТекущиеДанные.СчетДт);
Если СвойстваСчета.Валютный Тогда
Возврат;
КонецЕсли;
КонецЕсли;
РасчетСуммы("ВалютнаяСуммаКт");
КонецПроцедуры
&НаКлиенте
Процедура ВалютнаяСуммаДтПриИзменении(Элемент)
РасчетСуммы("ВалютнаяСуммаДт");
КонецПроцедуры
&НаКлиенте
Процедура ВалютнаяСуммаКтПриИзменении(Элемент)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.СчетДт) Тогда
СвойстваСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(ТекущиеДанные.СчетДт);
Если СвойстваСчета.Валютный Тогда
Возврат;
КонецЕсли;
КонецЕсли;
РасчетСуммы("ВалютнаяСуммаКт");
КонецПроцедуры
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
РасчетСуммы("Сумма");
КонецПроцедуры
#Область ОбработчикиСобытийСубконто
&НаКлиенте
Процедура СубконтоДт1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Дт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт1ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Дт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Дт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт2ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Дт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт2ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт3НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Дт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт3ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Дт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоДт3ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Кт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт1ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Кт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Кт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт2ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Кт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт2ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт3НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработатьНачалоВыбораСубконто("Кт", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт3ПриИзменении(Элемент)
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, "Кт");
КонецПроцедуры
&НаКлиенте
Процедура СубконтоКт3ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьПараметрыВыбора(Элемент);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КорректировкаПроводок(Команда)
ПараметрыОперации = Новый Структура("Основание", Документ);
ОткрытьФорму("Документ.ОперацияБух.ФормаОбъекта", ПараметрыОперации);
КонецПроцедуры
&НаКлиенте
Процедура ОтразитьДокументВРеглУчете(Команда)
Если ТипЗнч(Документ) = Тип("ДокументСсылка.АмортизацияНМА") ИЛИ ТипЗнч(Документ) = Тип("ДокументСсылка.АмортизацияОС") Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработчикОповещенияВопросПередПроведениемАмортизации", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Данное действие приведет к перепроведению документа, перепровести документ амортизации?'");
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Перепровести'"));
СписокВыбора.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Не перепроводить'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокВыбора);
Возврат;
КонецЕсли;
ОчиститьСообщения();
РезультатФоновогоЗаданияОтраженияПроводок = ОтразитьДокументВРеглУчетеСервер();
Если РезультатФоновогоЗаданияОтраженияПроводок.Статус = "Выполняется" Тогда
ОтражениеПроводокПроверитьНаКлиенте();
ИначеЕсли РезультатФоновогоЗаданияОтраженияПроводок.Статус = "Ошибка" Тогда
ВызватьИсключение(НСтр("ru = 'При отражении документа в регламентированном учете произошла ошибка.
|Подробности см. в Журнале регистрации.'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
ПовторноеОткрытиеСервер();
КонецПроцедуры
&НаКлиенте
Процедура НастроитьСчетаУчета(Команда)
ОрганизацииДляНастройки = ОбщегоНазначенияКлиентСервер.ОтмеченныеЭлементы(СписокОрганизаций);
Если ОрганизацииДляНастройки.Количество() = 1 Тогда
ОткрытьФормуНастройкиСчетовУчета(Организация);
Иначе
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаВыбораОрганизацииДляНастройкиСчетов", ЭтотОбъект);
СписокВыбораОрганизации = Новый СписокЗначений;
СписокВыбораОрганизации.ЗагрузитьЗначения(ОрганизацииДляНастройки);
СписокВыбораОрганизации.ПоказатьВыборЭлемента(ОписаниеОповещения, НСтр("ru = 'Выберите организацию для настройки'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АктуализацияПроводок(Команда)
АктуализацияПроводок = Не АктуализацияПроводок;
Элементы.АктуализацияПроводок.Пометка = АктуализацияПроводок;
КонецПроцедуры
&НаКлиенте
Процедура СнятьОтражениеВУчете(Команда)
ОтменитьОтражениеДокументовВУчетеНаСервере(Документ);
Оповестить("Запись_ОтражениеДокументовВРегламентированномУчете", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Документ), ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОбработкаИзмененияРеквизитов
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьПараметрыВыбораПолейСубконто(Форма, ДтКт = "")
ИдСтроки = Форма.Элементы.НаборЗаписей.ТекущаяСтрока;
Если ИдСтроки <> Неопределено Тогда
СтрокаТаблицы = Форма.НаборЗаписей.НайтиПоИдентификатору(ИдСтроки);
Если ДтКт <> "Кт" Тогда
ПараметрыДокумента = НастройкаСчетовУчетаКлиентСервер.ПараметрыВыбораСубконто(СтрокаТаблицы.Организация, СтрокаТаблицы, "СубконтоДт%Индекс%", "СчетДт");
НастройкаСчетовУчетаКлиентСервер.ИзменитьПараметрыВыбораПолейСубконто(
Форма, СтрокаТаблицы, "СубконтоДт%Индекс%", "СубконтоДт%Индекс%", ПараметрыДокумента);
КонецЕсли;
Если ДтКт <> "Дт" Тогда
ПараметрыДокумента = НастройкаСчетовУчетаКлиентСервер.ПараметрыВыбораСубконто(СтрокаТаблицы.Организация, СтрокаТаблицы, "СубконтоКт%Индекс%", "СчетКт");
НастройкаСчетовУчетаКлиентСервер.ИзменитьПараметрыВыбораПолейСубконто(
Форма, СтрокаТаблицы, "СубконтоКт%Индекс%", "СубконтоКт%Индекс%", ПараметрыДокумента);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеСчета(ДтКт)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ПредставлениеВидовСубконто(ТекущиеДанные["Счет"+ДтКт], ДтКт));
ПоляФормы = Новый Структура("Субконто1, Субконто2, Субконто3",
"Субконто"+ДтКт+"1", "Субконто"+ДтКт+"2", "Субконто"+ДтКт+"3");
БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(ТекущиеДанные["Счет"+ДтКт], ЭтотОбъект, ПоляФормы, Неопределено, Истина);
ПоляОбъекта = Новый Структура("Субконто1, Субконто2, Субконто3",
"Субконто"+ДтКт+"1", "Субконто"+ДтКт+"2", "Субконто"+ДтКт+"3");
ПоляОбъекта.Вставить("Подразделение", "Подразделение"+ДтКт);
ПоляОбъекта.Вставить("Организация" , Организация);
БухгалтерскийУчетКлиентСервер.ПриИзмененииСчета(ТекущиеДанные["Счет"+ДтКт], ТекущиеДанные, ПоляОбъекта, Истина);
СвойстваСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(ТекущиеДанные["Счет"+ДтКт]);
Если СвойстваСчета.Валютный Тогда
ТекущиеДанные["Валюта" + ДтКт] = ОписаниеТиповВалюта.ПривестиЗначение(ТекущиеДанные["Валюта" + ДтКт]);
ТекущиеДанные["ВалютнаяСумма" + ДтКт] = ОписаниеТиповСумма.ПривестиЗначение(ТекущиеДанные["ВалютнаяСумма" + ДтКт]);
Иначе
ТекущиеДанные["Валюта"+ДтКт] = NULL;
ТекущиеДанные["ВалютнаяСумма"+ДтКт] = NULL;
КонецЕсли;
Если СвойстваСчета.УчетПоПодразделениям Тогда
ТекущиеДанные["Подразделение" + ДтКт] = ОписаниеТиповПодразделение.ПривестиЗначение(ТекущиеДанные["Подразделение" + ДтКт]);
Иначе
ТекущиеДанные["Подразделение" + ДтКт] = NULL;
КонецЕсли;
Если СвойстваСчета.НалоговыйУчет Тогда
ТекущиеДанные["СуммаНУ" + ДтКт] = ОписаниеТиповСумма.ПривестиЗначение(ТекущиеДанные["СуммаНУ" + ДтКт]);
ТекущиеДанные["СуммаПР" + ДтКт] = ОписаниеТиповСумма.ПривестиЗначение(ТекущиеДанные["СуммаПР" + ДтКт]);
ТекущиеДанные["СуммаВР" + ДтКт] = ОписаниеТиповСумма.ПривестиЗначение(ТекущиеДанные["СуммаВР" + ДтКт]);
Иначе
ТекущиеДанные["СуммаНУ" + ДтКт] = NULL;
ТекущиеДанные["СуммаПР" + ДтКт] = NULL;
ТекущиеДанные["СуммаВР" + ДтКт] = NULL;
КонецЕсли;
Если СвойстваСчета.Количественный Тогда
ТекущиеДанные["Количество" + ДтКт] = ОписаниеТиповКоличество.ПривестиЗначение(ТекущиеДанные["Количество" + ДтКт]);
Иначе
ТекущиеДанные["Количество" + ДтКт] = NULL;
КонецЕсли;
ИзменитьПараметрыВыбораПолейСубконто(ЭтотОбъект, ДтКт);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьНачалоВыбораСубконто(ДтКт, Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
ПараметрыДокумента = НастройкаСчетовУчетаКлиентСервер.ПараметрыВыбораСубконто(ТекущиеДанные.Организация, ТекущиеДанные, "Субконто" + ДтКт + "%Индекс%", "Счет" + ДтКт);
ОбщегоНазначенияБПКлиент.НачалоВыбораЗначенияСубконто(ЭтотОбъект, Элемент, СтандартнаяОбработка, ПараметрыДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьПараметрыВыбора(Элемент)
Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПредставлениеВидовСубконто()
Для каждого Запись Из НаборЗаписей Цикл
ЗаполнитьЗначенияСвойств(Запись, ПредставлениеВидовСубконто(Запись.СчетДт, "Дт"));
ЗаполнитьЗначенияСвойств(Запись, ПредставлениеВидовСубконто(Запись.СчетКт, "Кт"));
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПредставлениеВидовСубконто(Счет, ВидДвижения)
ПредставлениеВидовСубконто = Новый Структура;
МаксКоличествоСубконто = Метаданные.ПланыСчетов.Хозрасчетный.МаксКоличествоСубконто;
КоличествоВидовСубконто = Счет.ВидыСубконто.Количество();
Для НомерСубконто = 1 По МаксКоличествоСубконто Цикл
ПредставлениеВидаСубконто = ?(КоличествоВидовСубконто >= НомерСубконто, "<" + Счет.ВидыСубконто[НомерСубконто - 1].ВидСубконто + ">", Неопределено);
ПредставлениеВидовСубконто.Вставить("ПредставлениеВидСубконто" + ВидДвижения + НомерСубконто, ПредставлениеВидаСубконто);
КонецЦикла;
Возврат ПредставлениеВидовСубконто;
КонецФункции
&НаСервере
Процедура УстановитьДоступностьСубконто()
Для каждого Проводка Из НаборЗаписей Цикл
ПоляОбъекта = Новый Структура("Субконто1, Субконто2, Субконто3", "СубконтоДт1", "СубконтоДт2", "СубконтоДт3");
БухгалтерскийУчетКлиентСервер.УстановитьДоступностьСубконто(Проводка.СчетДт, Проводка, ПоляОбъекта);
ПоляОбъекта = Новый Структура("Субконто1, Субконто2, Субконто3", "СубконтоКт1", "СубконтоКт2", "СубконтоКт3");
БухгалтерскийУчетКлиентСервер.УстановитьДоступностьСубконто(Проводка.СчетКт, Проводка, ПоляОбъекта);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоОрганизации()
ОтборСтрок = Неопределено;
Если ЗначениеЗаполнено(Организация) И СписокОрганизаций.Количество() > 1 Тогда
ОтборСтрок = Новый ФиксированнаяСтруктура("Организация", Организация);
КонецЕсли;
ПолучитьСостояниеОтраженияДокумента();
Элементы.НаборЗаписей.ОтборСтрок = ОтборСтрок;
УстановитьНастройкиСумм_НУ_ПР_ВР();
КонецПроцедуры
#КонецОбласти
#Область ОбработкаИзмененияСуммовыхРеквизитов
&НаКлиенте
Процедура РасчетСуммы(Источник)
ТекущиеДанные = Элементы.НаборЗаписей.ТекущиеДанные;
СтруктураПроводки = ПреобразоватьДанныеЭлементаФормыВСтруктуру(ТекущиеДанные);
ПересчитатьСуммыПоСтрокеНаСервере(СтруктураПроводки, Источник);
ЗаполнитьЗначенияСвойств(Элементы.НаборЗаписей.ТекущиеДанные, СтруктураПроводки);
КонецПроцедуры
&НаКлиенте
Функция ПреобразоватьДанныеЭлементаФормыВСтруктуру(ТекущиеДанные)
СтруктураПроводки = Новый Структура("НомерСтроки,Период,
|СчетДт,ПодразделениеДт,СубконтоДт1,СубконтоДт2,СубконтоДт3,
|КоличествоДт,ВалютаДт,ВалютнаяСуммаДт,
|СчетКт,ПодразделениеКт,СубконтоКт1,СубконтоКт2,СубконтоКт3,
|КоличествоКт,ВалютаКт,ВалютнаяСуммаКт,
|Сумма,СуммаУУ,СуммаФО,Содержание,СуммаНУДт,СуммаПРДт,СуммаВРДт,СуммаНУКт,СуммаПРКт,СуммаВРКт");
ЗаполнитьЗначенияСвойств(СтруктураПроводки, ТекущиеДанные);
Возврат СтруктураПроводки;
КонецФункции
&НаСервере
Процедура ПересчитатьСуммыПоСтрокеНаСервере(Проводка, Знач Источник)
Дата = ?(ЗначениеЗаполнено(Проводка.Период), Проводка.Период, ДатаОтражения);
ПересчитатьНУ = Ложь;
ПересчитатьФО = Ложь;
Если Источник = "ВалютнаяСуммаДт" Тогда
Проводка.Сумма = ПересчетСуммыПоКурсу(Проводка.ВалютнаяСуммаДт, Проводка.ВалютаДт, ВалютаРУ, Дата, ВалютаРУ);
Проводка.СуммаУУ = ПересчетСуммыПоКурсу(Проводка.ВалютнаяСуммаДт, Проводка.ВалютаДт, ВалютаУУ, Дата, ВалютаРУ);
ПересчитатьНУ = Истина;
Если Проводка.ВалютаДт = ВалютаФО Тогда
Проводка.СуммаФО = Проводка.ВалютнаяСуммаДт;
Иначе
ПересчитатьФО = Истина;
КонецЕсли;
КонецЕсли;
Если Источник = "ВалютнаяСуммаКт" Тогда
Проводка.Сумма = ПересчетСуммыПоКурсу(Проводка.ВалютнаяСуммаКт, Проводка.ВалютаКт, ВалютаРУ, Дата, ВалютаРУ);
Проводка.СуммаУУ = ПересчетСуммыПоКурсу(Проводка.ВалютнаяСуммаКт, Проводка.ВалютаКт, ВалютаУУ, Дата, ВалютаРУ);
ПересчитатьНУ = Истина;
Если Проводка.ВалютаКт = ВалютаФО Тогда
Проводка.СуммаФО = Проводка.ВалютнаяСуммаКт;
Иначе
ПересчитатьФО = Истина;
КонецЕсли;
КонецЕсли;
Если Источник = "Сумма" Тогда
Проводка.СуммаУУ = ПересчетСуммыПоКурсу(Проводка.Сумма, ВалютаРУ, ВалютаУУ, Дата, ВалютаРУ);
ПересчитатьНУ = Истина;
ПересчитатьФО = Истина;
КонецЕсли;
Если Источник = "СуммаУУ"
И ИсточникСуммыДляПересчетаВВалютуФинОтчетности = Перечисления.ИсточникиСуммыДляПересчетаВВалютуФинОтчетности.УУ Тогда
ПересчитатьФО = Истина;
КонецЕсли;
Если ПересчитатьНУ Тогда
ОтразитьНепринимаемыеДоходыИРасходы(Проводка);
Если БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Проводка.СчетДт).НалоговыйУчет Тогда
Проводка.СуммаНУДт = Проводка.Сумма
- ?(Проводка.СуммаПРДт = Неопределено, 0, Проводка.СуммаПРДт)
- ?(Проводка.СуммаВРДт = Неопределено, 0, Проводка.СуммаВРДт);
КонецЕсли;
Если БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Проводка.СчетКт).НалоговыйУчет Тогда
Проводка.СуммаНУКт = Проводка.Сумма
- ?(Проводка.СуммаПРКт = Неопределено, 0, Проводка.СуммаПРКт)
- ?(Проводка.СуммаВРКт = Неопределено, 0, Проводка.СуммаВРКт);
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВестиУчетНаПланеСчетовХозрасчетныйВВалютеФинОтчетности")
И ПересчитатьФО Тогда
Если ИсточникСуммыДляПересчетаВВалютуФинОтчетности = Перечисления.ИсточникиСуммыДляПересчетаВВалютуФинОтчетности.УУ Тогда
Проводка.СуммаФО = ПересчетСуммыПоКурсу(Проводка.СуммаУУ, ВалютаУУ, ВалютаФО, Дата, ВалютаРУ);
Иначе
Проводка.СуммаФО = ПересчетСуммыПоКурсу(Проводка.Сумма, ВалютаРУ, ВалютаФО, Дата, ВалютаРУ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПересчетСуммыПоКурсу(Знач Сумма, Знач Валюта, Знач НоваяВалюта, Знач Дата, Знач ВалютаРУ)
Возврат РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(Сумма, ВалютаРУ, Валюта, НоваяВалюта, Дата);
КонецФункции
&НаСервере
Процедура ОтразитьНепринимаемыеДоходыИРасходы(СтруктураПроводки)
ОтразитьНеПринимаемыеДоходы = ОпределитьНеПринимаемыеДоходы(СтруктураПроводки);
Если ОтразитьНеПринимаемыеДоходы Тогда
СтруктураПроводки.СуммаПРКт = СтруктураПроводки.Сумма;
КонецЕсли;
ОтразитьНеПринимаемыеРасходы = ОпределитьНеПринимаемыеРасходы(СтруктураПроводки);
Если ОтразитьНеПринимаемыеРасходы Тогда
СтруктураПроводки.СуммаПРДт = СтруктураПроводки.Сумма;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОпределитьНеПринимаемыеДоходы(СтруктураПроводки)
Если Не ЗначениеЗаполнено(СтруктураПроводки.СчетКт) Тогда
Возврат Ложь;
КонецЕсли;
Если СтруктураПроводки.СчетКт <> ПланыСчетов.Хозрасчетный.ПустаяСсылка()
И БухгалтерскийУчетПовтИсп.СчетВИерархии(СтруктураПроводки.СчетКт, ПланыСчетов.Хозрасчетный.ПрочиеДоходы) Тогда
Для НомерСубконто = 1 По 3 Цикл
Субконто = СтруктураПроводки["СубконтоКт" + НомерСубконто];
Если Не ЗначениеЗаполнено(Субконто) Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(Субконто) = Тип("ПланВидовХарактеристикСсылка.СтатьиДоходов") Тогда
РеквизитыСубконто = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Субконто, "ЭтоГруппа,ПринятиеКналоговомуУчету");
Если РеквизитыСубконто.ПринятиеКналоговомуУчету = Неопределено Тогда
Продолжить;
КонецЕсли;
Если НЕ РеквизитыСубконто.ЭтоГруппа
И Субконто <> ПланыВидовХарактеристик.СтатьиДоходов.ПустаяСсылка() И
НЕ РеквизитыСубконто.ПринятиеКналоговомуУчету Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ОпределитьНеПринимаемыеРасходы(СтруктураПроводки)
Если Не ЗначениеЗаполнено(СтруктураПроводки.СчетДт) Тогда
Возврат Ложь;
КонецЕсли;
Для НомерСубконто = 1 По 3 Цикл
Субконто = СтруктураПроводки["СубконтоДт" + НомерСубконто];
Если Не ЗначениеЗаполнено(Субконто) Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(Субконто) = Тип("ПланВидовХарактеристикСсылка.СтатьиРасходов") Тогда
РеквизитыСубконто = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Субконто,
"ЭтоГруппа, ВидРасходов, Представление");
Если РеквизитыСубконто.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Если РеквизитыСубконто.ВидРасходов = Перечисления.ВидыРасходовНУ.НеУчитываемыеВЦеляхНалогообложения Тогда
Если БухгалтерскийУчетПовтИсп.СчетВИерархии(СтруктураПроводки.СчетДт, ПланыСчетов.Хозрасчетный.СтроительствоОбъектовОсновныхСредств) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецЕсли;
ИначеЕсли ТипЗнч(Субконто) = Тип("ПланВидовХарактеристикСсылка.СтатьиДоходов") Тогда
РеквизитыСубконто = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Субконто,
"ЭтоГруппа, ПринятиеКналоговомуУчету, Представление");
Если РеквизитыСубконто.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Если Субконто <> ПланыВидовХарактеристик.СтатьиДоходов.ПустаяСсылка()
И НЕ РеквизитыСубконто.ПринятиеКналоговомуУчету Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
#КонецОбласти
#Область РаботаСФормой
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область ОтображениеВидаСубконтоДт1
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт1");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетДт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт1");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт1");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт1");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеВидаСубконтоДт2
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт2");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетДт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт2");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт2");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт2");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеВидаСубконтоДт3
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт3");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетДт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт3");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоДт3");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоДт3");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеВидаСубконтоКт1
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт1");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетКт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт1");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт1");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт1");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеВидаСубконтоКт2
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт2");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетКт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт2");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт2");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт2");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеВидаСубконтоКт3
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт3");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СчетКт");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт3");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаПодсказкиВвода);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПредставлениеВидСубконтоКт3");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборЗаписей.СубконтоКт3");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
#КонецОбласти
#Область ОтображениеСумм_НУ_ПР_ВР
мИменНУ = Новый Массив;
мИменНУ.Добавить("СуммаНУДт");
мИменНУ.Добавить("СуммаНУКт");
Элемент = УсловноеОформление.Элементы.Добавить();
Для каждого имяПоляНУ Из мИменНУ Цикл
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(имяПоляНУ);
КонецЦикла;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПлательщикНалогаНаПрибыль");
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
мИменПРВР = Новый Массив;
мИменПРВР.Добавить("СуммаВРДт");
мИменПРВР.Добавить("СуммаВРКт");
мИменПРВР.Добавить("СуммаПРДт");
мИменПРВР.Добавить("СуммаПРКт");
Элемент = УсловноеОформление.Элементы.Добавить();
Для каждого имяПоляПРВР Из мИменПРВР Цикл
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(имяПоляПРВР);
КонецЦикла;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВедетсяУчетПостоянныхИВременныхРазниц");
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ПовторноеОткрытиеСервер()
Если Документ = Неопределено Тогда
Возврат;
КонецЕсли;
ДокументПроводится = (Документ.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Запретить);
ДокументПроведен = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ, "Проведен");
ОбновитьДанныеРеквизитовДокумента();
СтатусПроверкиДокумента = СтатусПроверкиДокумента(Документ);
ПолучитьСостояниеОтраженияДокумента();
УстановитьДоступностьЭлементовФормы();
ПрочитатьНаборЗаписей();
ПредставлениеДокумента = Строка(Документ) + ПолучитьСостояниеПроверкиДокумента(СтатусПроверкиДокумента);
ЗаполнитьПредставлениеВидовСубконто();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовФормы(ИдентификаторСобытия = Неопределено)
Если ИдентификаторСобытия = "РучнаяКорректировкаПроводок" ИЛИ ИдентификаторСобытия = Неопределено Тогда
УстановитьОтборПоОрганизации();
УстановитьДоступностьПриИзмененииРучнаяКорректировкаПроводок();
КонецЕсли;
Если ИдентификаторСобытия = Неопределено Тогда
УстановитьДоступностьПриОткрытииФормы();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьПриИзмененииРучнаяКорректировкаПроводок()
Элементы.ГруппаПроводкиРегламентированногоУчета.ТолькоПросмотр = Истина;
Элементы.КомментарийРучногоОтражения.Видимость = ЗначениеЗаполнено(Комментарий) ИЛИ Объект.РучнаяКорректировкаПроводок;
Элементы.КомментарийРучногоОтражения.ЦветТекста = ЦветаСтиля.ГиперссылкаЦвет;
ВидимостьКомментарияАвтоматическогоОтражения =
СтатусОтраженияДокумента = Перечисления.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета
И (Не ЗначениеЗаполнено(Организация) Или СписокОрганизаций.НайтиПоЗначению(Организация).Пометка);
Элементы.ГруппаКомментарийАвтоматическогоОтраженияВУчете.Видимость = ВидимостьКомментарияАвтоматическогоОтражения;
Элементы.ГруппаКомментарийРучногоОтраженияВУчете.Видимость = ЗначениеЗаполнено(Комментарий) И НЕ ВидимостьКомментарияАвтоматическогоОтражения;
УстановитьДоступностьАвтоматическогоОтраженияВРегламентированномУчете();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьАвтоматическогоОтраженияВРегламентированномУчете()
СтатусыОтражения = Перечисления.СтатусыОтраженияДокументовВРеглУчете;
Элементы.ФормаГруппаКомандыАвтоматическогоОтражения.Видимость = Истина;
Элементы.ФормаОтразитьДокументВРеглУчете.Доступность = (СтатусОтраженияДокумента <> СтатусыОтражения.ОтраженоВРеглУчете)
И (Не СтатусОтраженияДокумента.Пустая());
Элементы.ГруппаАктуальность.Видимость = НЕ Объект.РучнаяКорректировкаПроводок
ИЛИ СтатусОтраженияДокумента = СтатусыОтражения.ОтраженоВУчетеВручную
ИЛИ СтатусОтраженияДокумента = СтатусыОтражения.КОтражениюВУчетеВручную;
Элементы.ФормаОтразитьДокументВРеглУчете.КнопкаПоУмолчанию = Не Объект.РучнаяКорректировкаПроводок;
Элементы.КоманднаяПанельНабораЗаписей.Видимость = Объект.РучнаяКорректировкаПроводок;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьПриОткрытииФормы()
Элементы.СоздатьНаОсновании.Доступность = ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ОперацияБух) И (ДокументПроводится ИЛИ ДокументПроведен);
ТолькоПросмотр = Истина;
Элементы.ФормаГруппаСтандартныеКоманды.Доступность = (ДокументПроводится ИЛИ ДокументПроведен) И ПравоИзмененияПроводок;
Элементы.АктуализацияПроводок.Видимость = ПравоИзмененияПроводок;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеОВведенныхКорректировках()
Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ОперацияБух) Тогда
СписокКорректировок.ЗагрузитьЗначения(ВернутьСписокКорректировок(Документ));
Элементы.ГруппаКорректировкиДокументамиРеглУчета.Видимость = СписокКорректировок.Количество();
Если СписокКорректировок.Количество() = 1 Тогда
ТекстКорректировки = СписокКорректировок.Получить(0).Значение;
Иначе
ТекстКорректировки = НСтр("ru = 'Открыть список введенных корректировок (%Количество%)'");
ТекстКорректировки = СтрЗаменить(ТекстКорректировки, "%Количество%", СписокКорректировок.Количество());
КонецЕсли;
Иначе
Элементы.ГруппаКорректировкиДокументамиРеглУчета.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьОтображениеТаблицыПроводок()
ИспользуетсяУчетПоНаправлениям = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиРаздельно")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиПоКорреспонденции")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетВнеоборотныхАктивовПоНаправлениямДеятельности");
ВалютаРУ = Константы.ВалютаРегламентированногоУчета.Получить();
ВалютаУУ = Константы.ВалютаУправленческогоУчета.Получить();
ВалютаФО = Константы.ВалютаФинОтчетности.Получить();
ВестиУУНаПланеСчетовХозрасчетный = ПолучитьФункциональнуюОпцию("ВестиУУНаПланеСчетовХозрасчетный");
ВестиУчетНаПланеСчетовХозрасчетныйВВалютеФинОтчетности = ПолучитьФункциональнуюОпцию("ВестиУчетНаПланеСчетовХозрасчетныйВВалютеФинОтчетности");
ИсточникСуммыДляПересчетаВВалютуФинОтчетности = Константы.ИсточникСуммыДляПересчетаВВалютуФинОтчетности.Получить();
Шапка3Эатажа = ВестиУУНаПланеСчетовХозрасчетный И ВестиУчетНаПланеСчетовХозрасчетныйВВалютеФинОтчетности;
ШаблонЗаголовка = НСтр("ru = 'Подразделение %1'");
Если ИспользуетсяУчетПоНаправлениям И НЕ Шапка3Эатажа Тогда
ШаблонЗаголовка = ШаблонЗаголовка + ", " + НСтр("ru = 'Направление %1'")
КонецЕсли;
Элементы.ПодразделениеДт.Заголовок = СтрШаблон(ШаблонЗаголовка, НСтр("ru = 'Дт'"));
Элементы.ПодразделениеКт.Заголовок = СтрШаблон(ШаблонЗаголовка, НСтр("ru = 'Кт'"));
Элементы.НаправлениеДеятельностиДт.Доступность = ИспользуетсяУчетПоНаправлениям;
Элементы.НаправлениеДеятельностиДт.ОтображатьВШапке = Шапка3Эатажа;
Элементы.НаправлениеДеятельностиКт.Доступность = ИспользуетсяУчетПоНаправлениям;
Элементы.НаправлениеДеятельностиКт.ОтображатьВШапке = Шапка3Эатажа;
Элементы.Сумма.Заголовок = СтрШаблон(НСтр("ru = 'Сумма БУ (%1)'"), ВалютаРУ);
Элементы.СуммаУУ.Заголовок = СтрШаблон(НСтр("ru = 'Сумма УУ (%1)'"), ВалютаУУ);
Элементы.СуммаФО.Заголовок = СтрШаблон(НСтр("ru = 'Сумма ФО (%1)'"), ВалютаФО);
КонецПроцедуры
&НаСервере
Процедура УстановитьНастройкиСумм_НУ_ПР_ВР()
ВедетсяУчетПостоянныхИВременныхРазниц = Ложь;
ПлательщикНалогаНаПрибыль = Ложь;
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Если УчетнаяПолитика.ВедетсяУчетПостоянныхИВременныхРазниц(СписокГоловныхОрганизаций, Дата) Тогда
ВедетсяУчетПостоянныхИВременныхРазниц = Истина;
ПлательщикНалогаНаПрибыль = Истина;
КонецЕсли;
Если НЕ ПлательщикНалогаНаПрибыль
И УчетнаяПолитика.ПлательщикНалогаНаПрибыль(СписокГоловныхОрганизаций, Дата) Тогда
ПлательщикНалогаНаПрибыль = Истина;
КонецЕсли;
Иначе
ВедетсяУчетПостоянныхИВременныхРазниц = УчетнаяПолитика.ВедетсяУчетПостоянныхИВременныхРазниц(Организация, Дата);
ПлательщикНалогаНаПрибыль = УчетнаяПолитика.ПлательщикНалогаНаПрибыль(Организация, Дата)
КонецЕсли;
Если Не ВедетсяУчетПостоянныхИВременныхРазниц Тогда
Элементы.СуммаНУДт.Заголовок = СтрШаблон(НСтр("ru = 'Сумма НУ Дт (%1)'"), ВалютаРУ);
Элементы.СуммаНУКт.Заголовок = СтрШаблон(НСтр("ru = 'Сумма НУ Кт (%1)'"), ВалютаРУ);
Иначе
Элементы.СуммаНУДт.Заголовок = СтрШаблон(НСтр("ru = 'Сумма Дт (%1)'"), ВалютаРУ);
Элементы.СуммаНУКт.Заголовок = СтрШаблон(НСтр("ru = 'Сумма Кт (%1)'"), ВалютаРУ);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция РазделУчетаДляНастройки(Статус, Комментарий)
РазделУчетаДляНастройки = "";
Если Статус <> Перечисления.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета Тогда
Возврат РазделУчетаДляНастройки;
КонецЕсли;
Для каждого РазделУчета Из РегистрыСведений.ПорядокОтраженияНаСчетахУчета.СписокРазделовСчетовУчета() Цикл
ПредставлениеРаздела = СтрЗаменить(РазделУчета.Представление, "расчетов ", "");
Если СтрНайти(Комментарий, ПредставлениеРаздела) > 0 Тогда
РазделУчетаДляНастройки = РазделУчета.Значение;
Если РазделУчета.Значение <> "НоменклатураСобственная" Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат РазделУчетаДляНастройки;
КонецФункции
&НаСервереБезКонтекста
Функция ПредставлениеОтраженияДокумента(Документ, ДатаДокумента, ЕстьПроводки, ДокументПроведен, Организация)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтражениеДокументовВРеглУчете.Регистратор КАК Документ,
| МАКСИМУМ(ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК НеУказаныСчетаУчета,
| МАКСИМУМ(ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК КОтражениюВРеглУчете,
| МАКСИМУМ(ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.ОтраженоВРеглУчете)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ОтраженоВРеглУчете,
| МАКСИМУМ(ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВУчетеВручную)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК КОтражениюВУчетеВручную,
| МАКСИМУМ(ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.ОтраженоВУчетеВручную)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ОтраженоВУчетеВручную
|ИЗ
| РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
|ГДЕ
| ОтражениеДокументовВРеглУчете.Регистратор = &Документ
| И (&НеОтбиратьПоОрганизациям ИЛИ ОтражениеДокументовВРеглУчете.Организация В (&Организация))
|
|СГРУППИРОВАТЬ ПО
| ОтражениеДокументовВРеглУчете.Регистратор
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтражениеДокументовВРеглУчете.Организация КАК Организация,
| ОтражениеДокументовВРеглУчете.ДатаОтражения КАК ДатаОтражения
|ПОМЕСТИТЬ ДанныеДляПроверкиРасчетовПоСебестоимости
|ИЗ
| РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
| ПО ОтражениеДокументовВРеглУчете.Организация = СебестоимостьТоваров.Организация
| И ОтражениеДокументовВРеглУчете.Регистратор = СебестоимостьТоваров.Регистратор
| И (СебестоимостьТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход))
| И (ОтражениеДокументовВРеглУчете.Регистратор = &Документ)
|ГДЕ
| ОтражениеДокументовВРеглУчете.Регистратор = &Документ
| И (&НеОтбиратьПоОрганизациям ИЛИ ОтражениеДокументовВРеглУчете.Организация В (&Организация))
|
|ИНДЕКСИРОВАТЬ ПО
| Организация,
| ДатаОтражения
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаданияКРасчетуСебестоимости.Организация,
| НАЧАЛОПЕРИОДА(ЗаданияКРасчетуСебестоимости.Месяц, МЕСЯЦ) КАК Месяц
|ИЗ
| ДанныеДляПроверкиРасчетовПоСебестоимости КАК ДанныеДляПроверкиРасчетаСебестоимости
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРасчетуСебестоимости КАК ЗаданияКРасчетуСебестоимости
| ПО ДанныеДляПроверкиРасчетаСебестоимости.Организация = ЗаданияКРасчетуСебестоимости.Организация
| И ДанныеДляПроверкиРасчетаСебестоимости.ДатаОтражения >= НАЧАЛОПЕРИОДА(ЗаданияКРасчетуСебестоимости.Месяц, МЕСЯЦ)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасчетыСПоставщиками.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ЗаданияКРаспределениюРасчетовСПоставщиками.Месяц,
| ОтражениеДокументовВРеглУчете.Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщиками КАК РасчетыСПоставщиками
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРаспределениюРасчетовСПоставщиками КАК ЗаданияКРаспределениюРасчетовСПоставщиками
| ПО РасчетыСПоставщиками.АналитикаУчетаПоПартнерам = ЗаданияКРаспределениюРасчетовСПоставщиками.АналитикаУчетаПоПартнерам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
| ПО ОтражениеДокументовВРеглУчете.Регистратор = РасчетыСПоставщиками.Регистратор
| И ОтражениеДокументовВРеглУчете.Организация = РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Организация
|ГДЕ
| РасчетыСПоставщиками.Регистратор = &Документ
| И РасчетыСПоставщиками.Активность
| И НЕ &НовыеВзаиморасчеты
| И (&НеОтбиратьПоОрганизациям ИЛИ ОтражениеДокументовВРеглУчете.Организация В (&Организация))
|
|СГРУППИРОВАТЬ ПО
| РасчетыСПоставщиками.АналитикаУчетаПоПартнерам,
| ЗаданияКРаспределениюРасчетовСПоставщиками.Месяц,
| ОтражениеДокументовВРеглУчете.Организация
|
|ИМЕЮЩИЕ
| ЗаданияКРаспределениюРасчетовСПоставщиками.Месяц <= МИНИМУМ(ОтражениеДокументовВРеглУчете.ДатаОтражения)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасчетыСКлиентами.АналитикаУчетаПоПартнерам,
| ЗаданияКРаспределениюРасчетовСКлиентами.Месяц,
| ОтражениеДокументовВРеглУчете.Организация
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРаспределениюРасчетовСКлиентами КАК ЗаданияКРаспределениюРасчетовСКлиентами
| ПО РасчетыСКлиентами.АналитикаУчетаПоПартнерам = ЗаданияКРаспределениюРасчетовСКлиентами.АналитикаУчетаПоПартнерам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
| ПО ОтражениеДокументовВРеглУчете.Регистратор = РасчетыСКлиентами.Регистратор
| И ОтражениеДокументовВРеглУчете.Организация = РасчетыСКлиентами.АналитикаУчетаПоПартнерам.Организация
|ГДЕ
| РасчетыСКлиентами.Регистратор = &Документ
| И РасчетыСКлиентами.Активность
| И НЕ &НовыеВзаиморасчеты
| И (&НеОтбиратьПоОрганизациям ИЛИ ОтражениеДокументовВРеглУчете.Организация В (&Организация))
|
|СГРУППИРОВАТЬ ПО
| РасчетыСКлиентами.АналитикаУчетаПоПартнерам,
| ЗаданияКРаспределениюРасчетовСКлиентами.Месяц,
| ОтражениеДокументовВРеглУчете.Организация
|
|ИМЕЮЩИЕ
| ЗаданияКРаспределениюРасчетовСКлиентами.Месяц <= МИНИМУМ(ОтражениеДокументовВРеглУчете.ДатаОтражения)
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.СтоимостьОС КАК СтоимостьОС
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРасчетуСтоимостиВНА КАК Задания
| ПО (Задания.Организация = СтоимостьОС.Организация)
| И (Задания.ОбъектУчета = СтоимостьОС.АналитикаКапитализацииРасходов)
| И (Задания.Месяц <= СтоимостьОС.Период)
|ГДЕ
| СтоимостьОС.Регистратор = &Документ
| И (&НеОтбиратьПоОрганизациям ИЛИ СтоимостьОС.Организация В (&Организация))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.СтоимостьНМА КАК СтоимостьНМА
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРасчетуСтоимостиВНА КАК Задания
| ПО (Задания.Организация = СтоимостьНМА.Организация)
| И (Задания.ОбъектУчета = СтоимостьНМА.НематериальныйАктив)
| И (Задания.Месяц <= СтоимостьНМА.Период)
|ГДЕ
| СтоимостьНМА.Регистратор = &Документ
| И (&НеОтбиратьПоОрганизациям ИЛИ СтоимостьНМА.Организация В (&Организация))
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрСведений.ДокументыПоОС КАК ДокументыПоОС
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКФормированиюДвиженийПоВНА КАК Задания
| ПО (Задания.Организация = ДокументыПоОС.Организация)
| И (Задания.ОбъектУчета = ДокументыПоОС.ОсновноеСредство)
| И (Задания.Месяц <= ДокументыПоОС.Дата)
|ГДЕ
| ДокументыПоОС.Ссылка = &Документ
| И ДокументыПоОС.Проведен
| И ДокументыПоОС.ТипСсылки В(&ТипыДокументов)
| И (&НеОтбиратьПоОрганизациям ИЛИ ДокументыПоОС.Организация В (&Организация))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрСведений.ДокументыПоНМА КАК ДокументыПоНМА
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКФормированиюДвиженийПоВНА КАК Задания
| ПО (Задания.Организация = ДокументыПоНМА.Организация)
| И (Задания.ОбъектУчета = ДокументыПоНМА.НематериальныйАктив)
| И (Задания.Месяц <= ДокументыПоНМА.Дата)
|ГДЕ
| ДокументыПоНМА.Ссылка = &Документ
| И ДокументыПоНМА.Проведен
| И ДокументыПоНМА.ТипСсылки В(&ТипыДокументов)
| И (&НеОтбиратьПоОрганизациям ИЛИ ДокументыПоНМА.Организация В (&Организация))";
Запрос.УстановитьПараметр("Документ", Документ);
Запрос.УстановитьПараметр("НовыеВзаиморасчеты", ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов"));
Запрос.УстановитьПараметр("ТипыДокументов", ВнеоборотныеАктивыПовтИсп.ИдентификаторыДокументовПоКоторымФормируютсяОтложенныеДвижения());
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("НеОтбиратьПоОрганизациям", НЕ ЗначениеЗаполнено(Организация));
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаСостоянияОтражения = Результат.Получить(0).Выбрать();
Если ВыборкаСостоянияОтражения.Следующий() Тогда
Если ВыборкаСостоянияОтражения.КОтражениюВУчетеВручную Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Документ был изменен. Скорректируйте проводки или подтвердите актуальность текущих.'"),,
ЦветаСтиля.ИзмененноеЗначениеРеквизитаЦвет);
ИначеЕсли ВыборкаСостоянияОтражения.ОтраженоВУчетеВручную Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Отражен в учете вручную'"),,
ЦветаСтиля.ТекстИнформационнойНадписи);
ИначеЕсли ВыборкаСостоянияОтражения.НеУказаныСчетаУчета Тогда
Состояние =
?(ВыборкаСостоянияОтражения.ОтраженоВРеглУчете,
Новый ФорматированнаяСтрока(
НСтр("ru = 'Частично отражен в учете'"),,
ЦветаСтиля.ПросроченныеДанныеЦвет, , "РасшифровкаСтатуса"),
Новый ФорматированнаяСтрока(
НСтр("ru = 'Не удалось отразить в учете'"),,
ЦветаСтиля.ПоясняющийОшибкуТекст));
ИначеЕсли ВыборкаСостоянияОтражения.КОтражениюВРеглУчете И ВыборкаСостоянияОтражения.ОтраженоВРеглУчете Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Частично отражен в учете'"),,
ЦветаСтиля.ТекстИнформационнойНадписи, , "РасшифровкаСтатуса");
ИначеЕсли ВыборкаСостоянияОтражения.КОтражениюВРеглУчете Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Ожидает отражения в учете'"),,
ЦветаСтиля.ТекстИнформационнойНадписи);
Иначе
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Отражен в учете'"),,
ЦветаСтиля.ТекстИнформационнойНадписи);
КонецЕсли;
ИначеЕсли ЕстьПроводки Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Отражен в учете'"),,
ЦветаСтиля.ТекстИнформационнойНадписи);
ИначеЕсли НЕ ДокументПроведен Тогда
Состояние = Новый ФорматированнаяСтрока(
НСтр("ru = 'Документ не проведен'"),,
ЦветаСтиля.ТекстИнформационнойНадписи);
Иначе
ДатаНачалаОтраженияВРеглУчете = Константы.ДатаНачалаВеденияРеглУчета.Получить();
Состояние = ?(ДатаДокумента < ДатаНачалаОтраженияВРеглУчете,
Новый ФорматированнаяСтрока(
СтрШаблон(НСтр("ru = 'Регламентированный учет ведется с %1, отражение документа в учете не требуется'"),
Формат(ДатаНачалаОтраженияВРеглУчете, "ДЛФ=D")),,
ЦветаСтиля.ТекстИнформационнойНадписи),
Новый ФорматированнаяСтрока(
НСтр("ru = 'Не требует отражения в учете'"),,
ЦветаСтиля.ТекстИнформационнойНадписи));
КонецЕсли;
ВзаиморасчетыАкуальны = Истина;
СебестоимостьАкуальна = Истина;
СтоимостьВНААктуальна = Истина;
МассивУточнениеСостояния = Новый Массив;
Если Не Результат.Получить(2).Пустой() Тогда
УточнениеСостояния = Новый ФорматированнаяСтрока(
НСтр("ru = 'Расчет себестоимости не выполнен.'")+" ",,
ЦветаСтиля.ПоясняющийТекст);
МассивУточнениеСостояния.Добавить(УточнениеСостояния);
СебестоимостьАкуальна = Ложь;
КонецЕсли;
Если Не Результат.Получить(3).Пустой() ИЛИ Не Результат.Получить(4).Пустой() Тогда
УточнениеСостояния = Новый ФорматированнаяСтрока(
НСтр("ru = 'Распределение расчетов не выполнено.'")+" ",,
ЦветаСтиля.ПоясняющийТекст);
МассивУточнениеСостояния.Добавить(УточнениеСостояния);
ВзаиморасчетыАкуальны = Ложь;
КонецЕсли;
Если Не Результат.Получить(5).Пустой() Тогда
УточнениеСостояния = Новый ФорматированнаяСтрока(
НСтр("ru = 'Расчет стоимости ОС и НМА не выполнен.'")+" ",,
ЦветаСтиля.ПоясняющийТекст);
МассивУточнениеСостояния.Добавить(УточнениеСостояния);
СтоимостьВНААктуальна = Ложь;
КонецЕсли;
Если Не Результат.Получить(6).Пустой() Тогда
УточнениеСостояния = Новый ФорматированнаяСтрока(
НСтр("ru = 'Формирование движений по учету ОС и НМА не выполнено.'")+" ",,
ЦветаСтиля.ПоясняющийТекст);
МассивУточнениеСостояния.Добавить(УточнениеСостояния);
СтоимостьВНААктуальна = Ложь;
КонецЕсли;
Если НЕ (СебестоимостьАкуальна И ВзаиморасчетыАкуальны И СтоимостьВНААктуальна)
И ВыборкаСостоянияОтражения.ОтраженоВРеглУчете Тогда
УточнениеСостояния = Новый ФорматированнаяСтрока(
НСтр("ru = 'Проводки по документу могут измениться.'"),,
ЦветаСтиля.ПоясняющийТекст);
МассивУточнениеСостояния.Добавить(УточнениеСостояния);
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("Состояние", Состояние);
Результат.Вставить("УточнениеСостояния", Новый ФорматированнаяСтрока(МассивУточнениеСостояния));
Результат.Вставить("ВзаиморасчетыАктуальны", ВзаиморасчетыАкуальны);
Результат.Вставить("СебестоимостьАкуальна", СебестоимостьАкуальна);
Комментарий = РеглУчетПроведениеСервер.СводныйКомментарийПоДокументу(Документ, Организация);
Результат.Вставить("Комментарий", Комментарий);
Возврат Результат;
КонецФункции
&НаСервере
Процедура ПрочитатьНаборЗаписей()
РазрешенныеОрганизации = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| *
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| ,
| ,
| Регистратор = &Регистратор И Организация В (&РазрешенныеОрганизации)
| ) КАК Т
|";
Запрос.УстановитьПараметр("Регистратор", Документ);
Запрос.УстановитьПараметр("РазрешенныеОрганизации", РазрешенныеОрганизации);
УстановитьПривилегированныйРежим(Истина);
НаборЗаписей.Загрузить(Запрос.Выполнить().Выгрузить());
УстановитьПривилегированныйРежим(Ложь);
ЗаполнитьПредставлениеВидовСубконто();
КонецПроцедуры
#КонецОбласти
#Область ОтражениеДокументов
&НаСервере
Функция ОтразитьДокументВРеглУчетеСервер()
СтруктураРеквизиты = Новый Структура("Ссылка, Дата, Организация", Документ, ДатаОтражения, Организация);
ВыполняемыйМетод = "РеглУчетПроведениеСервер.ОтразитьДокументВФоне";
НаименованиеЗадания = СтрШаблон(НСтр("ru = 'Актуализация проводок документа ""%1""'"), Документ);
НаименованиеЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеЗадания, ПредставлениеДокумента);
ПараметрыФоновогоЗадания = ДлительныеОперации.ПараметрыВыполненияВФоне(ЭтотОбъект.УникальныйИдентификатор);
ПараметрыФоновогоЗадания.НаименованиеФоновогоЗадания = НаименованиеЗадания;
ПараметрыФоновогоЗадания.КлючФоновогоЗадания = Документ.УникальныйИдентификатор();
ПараметрыФоновогоЗадания.ЗапуститьВФоне = Истина;
ПараметрыФоновогоЗадания.ОжидатьЗавершение = 1;
ПараметрыОбработки = Новый Структура("РеквизитыДокумента, ВыполнитьПересчеты, ОтборПоОрганизациям",
СтруктураРеквизиты, Истина, ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь));
РезультатФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыОбработки, ПараметрыФоновогоЗадания);
РезультатФоновогоЗадания.Вставить("ВыводитьПрогрессВыполнения", Ложь);
РезультатФоновогоЗадания.Вставить("ВыводитьСообщения", Ложь);
Если РезультатФоновогоЗадания.Статус = "Выполнено" Тогда
ПовторноеОткрытиеСервер();
КонецЕсли;
Возврат РезультатФоновогоЗадания;
КонецФункции
&НаСервере
Процедура ПолучитьСостояниеОтраженияДокумента()
ЕстьПроводки = НаборЗаписей.Количество() > 0;
ОтборПоОрганизациям = ?(ЗначениеЗаполнено(Организация), Организация,
ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь));
ДанныеОтражения = РеглУчетПроведениеСервер.ПолучитьДанныеОтраженияДокумента(Документ, ОтборПоОрганизациям);
СтатусОтраженияДокумента = ДанныеОтражения.Статус;
Объект.РучнаяКорректировкаПроводок = Ложь;
ПредставлениеОтражения = ПредставлениеОтраженияДокумента(Документ, ДатаОтражения, ЕстьПроводки, ДокументПроведен, ОтборПоОрганизациям);
Состояние = ПредставлениеОтражения.Состояние;
УточнениеСостояния = ПредставлениеОтражения.УточнениеСостояния;
Комментарий = ?(ДанныеОтражения.РучноеОтражение, ДанныеОтражения.Комментарий, ПредставлениеОтражения.Комментарий);
ВзаиморасчетыСПартнерамиАктуальны = ПредставлениеОтражения.ВзаиморасчетыАктуальны;
СостояниеОтображенияКомментария = ПолучитьСостояниеОтображенияКомментария(Комментарий);
Элементы.НастроитьСчетаУчета.Видимость = Ложь;
Элементы.ГруппаДопУточнениеСостояния.Видимость = ЗначениеЗаполнено(УточнениеСостояния);
Если Не СтатусОтраженияДокумента.Пустая() Тогда
РазделУчетаДляНастройки = РазделУчетаДляНастройки(СтатусОтраженияДокумента, Комментарий);
Элементы.НастроитьСчетаУчета.Видимость = ЗначениеЗаполнено(РазделУчетаДляНастройки);
КонецЕсли;
ВидимостьКомментарияАвтоматическогоОтражения = Не Объект.РучнаяКорректировкаПроводок И
СтатусОтраженияДокумента = Перечисления.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета
И (Не ЗначениеЗаполнено(Организация) Или СписокОрганизаций.НайтиПоЗначению(Организация).Пометка);
Элементы.ГруппаКомментарийАвтоматическогоОтраженияВУчете.Видимость = ВидимостьКомментарияАвтоматическогоОтражения;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СтатусПроверкиДокумента(Документ)
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроверкуФинансовыхДокументов")
И ПроверкаДокументовСервер.ЭтотТипДокументаДолженПроверяться(ТипЗнч(Документ)) Тогда
ДанныеПроверки = РегистрыСведений.СтатусыПроверкиДокументов.ПолучитьДанныеПроверкиДокумента(Документ);
Возврат ?(ДанныеПроверки.СтатусПроверки.Пустая(), Перечисления.СтатусыПроверкиФинансовыхДокументов.НеПроверен, ДанныеПроверки.СтатусПроверки);
Иначе
Возврат Перечисления.СтатусыПроверкиФинансовыхДокументов.ПустаяСсылка();
КонецЕсли;
КонецФункции
&НаСервере
Процедура ОбновитьДанныеРеквизитовДокумента()
Если Не Документ.Пустая() Тогда
РазрешенныеОрганизации = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(Ложь);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтражениеДокументовВРеглУчете.Организация,
| ОтражениеДокументовВРеглУчете.ТребуетсяУказаниеСчетовУчета,
| ВЫБОР
| КОГДА ОтражениеДокументовВРеглУчете.Организация.ОбособленноеПодразделение
| ТОГДА ОтражениеДокументовВРеглУчете.Организация.ГоловнаяОрганизация
| ИНАЧЕ ОтражениеДокументовВРеглУчете.Организация
| КОНЕЦ КАК ГоловнаяОрганизация
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтражениеДокументовВРеглУчете.Организация,
| ОтражениеДокументовВРеглУчете.Статус = &Статус КАК ТребуетсяУказаниеСчетовУчета
| ИЗ
| РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
| ГДЕ
| ОтражениеДокументовВРеглУчете.Регистратор = &Документ
| И ОтражениеДокументовВРеглУчете.Организация В (&РазрешенныеОрганизации)
| ) КАК ОтражениеДокументовВРеглУчете
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ОтражениеДокументовВРеглУчете.ДатаОтражения) КАК ДатаОтражения,
| МАКСИМУМ(ВЫБОР КОГДА ОтражениеДокументовВРеглУчете.Статус = &Статус ТОГДА ОтражениеДокументовВРеглУчете.ДатаОтражения ИНАЧЕ ДАТАВРЕМЯ(1,1,1) КОНЕЦ) КАК ДатаОтраженияНастройки,
| МАКСИМУМ(ОтражениеДокументовВРеглУчете.Период) КАК Дата
|ИЗ
| РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчете
|ГДЕ
| ОтражениеДокументовВРеглУчете.Регистратор = &Документ
| И ОтражениеДокументовВРеглУчете.Организация В (&РазрешенныеОрганизации)
|";
Запрос.УстановитьПараметр("Документ", Документ);
Запрос.УстановитьПараметр("РазрешенныеОрганизации", РазрешенныеОрганизации);
Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
РезультатЗапросаОрганизации = РезультатЗапроса[0];
Если НЕ РезультатЗапросаОрганизации.Пустой() Тогда
ТаблицаОрганизации = РезультатЗапросаОрганизации.Выгрузить();
ВыборкаДатаОтражения = РезультатЗапроса[1].Выбрать();
ДокументПроведен = ВыборкаДатаОтражения.Следующий();
Если ДокументПроведен Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаДатаОтражения);
КонецЕсли;
СписокОрганизаций.Очистить();
Элементы.ВыбраннаяОрганизация.Видимость = ТаблицаОрганизации.Количество() > 1;
Если ТаблицаОрганизации.Количество() = 1 Тогда
СтрокаТаблицы = ТаблицаОрганизации.Получить(0);
Организация = СтрокаТаблицы.Организация;
СписокОрганизаций.Добавить(СтрокаТаблицы.Организация, , СтрокаТаблицы.ТребуетсяУказаниеСчетовУчета);
СписокГоловныхОрганизаций.Добавить(
ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(СтрокаТаблицы.Организация));
Иначе
СписокВыбора = Элементы.ВыбраннаяОрганизация.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(Неопределено, НСтр("ru = '<По всем организациям>'"));
Для каждого СтрокаТаблицы Из ТаблицаОрганизации Цикл
СписокВыбора.Добавить(СтрокаТаблицы.Организация);
СписокОрганизаций.Добавить(СтрокаТаблицы.Организация, , СтрокаТаблицы.ТребуетсяУказаниеСчетовУчета);
КонецЦикла;
СписокГоловныхОрганизаций.ЗагрузитьЗначения(
ОбщегоНазначенияКлиентСервер.СвернутьМассив(
ТаблицаОрганизации.ВыгрузитьКолонку("ГоловнаяОрганизация")));
КонецЕсли
Иначе
РеквизитыДляПоиска = "Дата, Проведен"
+ ?(ОбщегоНазначения.ЕстьРеквизитОбъекта("Организация", Документ.Метаданные()),
", Организация, Организация.ГоловнаяОрганизация", "")
+ ?(ОбщегоНазначения.ЕстьРеквизитОбъекта("ОрганизацияПолучатель", Документ.Метаданные()),
", ОрганизацияПолучатель, ОрганизацияПолучатель.ГоловнаяОрганизация", "")
+ ?(ОбщегоНазначения.ЕстьРеквизитОбъекта("ДатаПроведенияБанком", Документ.Метаданные()),
", ДатаПроведенияБанком", "");
УстановитьПривилегированныйРежим(Истина);
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, РеквизитыДляПоиска);
УстановитьПривилегированныйРежим(Ложь);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ЗначенияРеквизитов);
ДокументПроведен = ЗначенияРеквизитов.Проведен;
Если ДокументПроведен Тогда
ДатаОтражения = ?(ЗначенияРеквизитов.Свойство("ДатаПроведенияБанком"),
ЗначенияРеквизитов.ДатаПроведенияБанком, Дата);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Организация = Неопределено;
КонецЕсли;
СписокОрганизаций.Очистить();
ОрганизацияПолучатель = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ЗначенияРеквизитов, "ОрганизацияПолучатель");
ОрганизацияДоступна = РазрешенныеОрганизации.Найти(Организация) <> Неопределено;
ОрганизацияПолучательДоступна = РазрешенныеОрганизации.Найти(ОрганизацияПолучатель) <> Неопределено;
Если ОрганизацияДоступна И ОрганизацияПолучательДоступна И Организация <> ОрганизацияПолучатель Тогда
СписокОрганизаций.Добавить(Организация);
СписокОрганизаций.Добавить(ОрганизацияПолучатель);
СписокГоловныхОрганизаций.Добавить(
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ЗначенияРеквизитов, "ОрганизацияГоловнаяОрганизация"));
СписокГоловныхОрганизаций.Добавить(
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ЗначенияРеквизитов, "ОрганизацияПолучательГоловнаяОрганизация"));
СписокВыбора = Элементы.ВыбраннаяОрганизация.СписокВыбора;
СписокВыбора.Добавить(Неопределено, НСтр("ru = '<По всем организациям>'"));
Для каждого текОрг Из СписокОрганизаций Цикл
СписокВыбора.Добавить(текОрг.Значение);
КонецЦикла;
Иначе
Элементы.ВыбраннаяОрганизация.Видимость = Ложь;
Если НЕ ОрганизацияДоступна И ОрганизацияПолучательДоступна Тогда
ВыбраннаяОрганизация = ОрганизацияПолучатель;
ВыбраннаяОрганизацияГоловнаяИмяСвойства = "ОрганизацияПолучательГоловнаяОрганизация";
Иначе
ВыбраннаяОрганизация = Организация;
ВыбраннаяОрганизацияГоловнаяИмяСвойства = "ОрганизацияГоловнаяОрганизация";
КонецЕсли;
СписокОрганизаций.Добавить(ВыбраннаяОрганизация);
СписокГоловныхОрганизаций.Добавить(
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ЗначенияРеквизитов, ВыбраннаяОрганизацияГоловнаяИмяСвойства));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОповещенияВопросПередПроведениемАмортизации(РезультатВопроса, ДополнительныеПараметры = Неопределено) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
МассивДокументовДляПроведения = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Документ);
ОбщегоНазначенияВызовСервера.ПровестиДокументы(МассивДокументовДляПроведения);
ПрочитатьНаборЗаписей();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеПроводокПроверитьНаКлиенте()
Если РезультатФоновогоЗаданияОтраженияПроводок.Статус = "Выполнено" Тогда
ПовторноеОткрытиеСервер();
Иначе
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения("ОтражениеПроводокПроверитьНаКлиентеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатФоновогоЗаданияОтраженияПроводок, ОписаниеОповещения, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеПроводокПроверитьНаКлиентеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Или Результат.Статус = "Ошибка" Тогда
ТекстОшибки = ?(Объект.РучнаяКорректировкаПроводок,
НСтр("ru = 'При автоматическом заполнении проводок документа произошла ошибка.'"),
НСтр("ru = 'При отражении документа в регламентированном учете произошла ошибка.'"));
ДополнительныйТекст = ?(Результат = Неопределено,
НСтр("ru = 'Не найдено выполняемое задание.'"),
НСтр("ru = 'Подробности см. в Журнале регистрации.'"));
ТекстОшибки = ТекстОшибки + Символы.ПС + ДополнительныйТекст;
ВызватьИсключение(ТекстОшибки);
КонецЕсли;
ПовторноеОткрытиеСервер();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОтменитьОтражениеДокументовВУчетеНаСервере(Знач Документ)
РеглУчетПроведениеСервер.ОтменитьОтражениеДокументовВУчете(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Документ));
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервереБезКонтекста
Функция ВернутьСписокКорректировок(Документ)
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОперацияБухЗаполнениеДвижений.Ссылка
|ИЗ
| Документ.ОперацияБух.ЗаполнениеДвижений КАК ОперацияБухЗаполнениеДвижений
|ГДЕ
| ОперацияБухЗаполнениеДвижений.Документ = &Документ
| И НЕ ОперацияБухЗаполнениеДвижений.Ссылка.ПометкаУдаления");
Запрос.УстановитьПараметр("Документ", Документ);
МассивКорректировок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивКорректировок;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьСостояниеОтображенияКомментария(Комментарий)
Если ЗначениеЗаполнено(Комментарий) Тогда
Возврат СтрПолучитьСтроку(Комментарий, 1);
Иначе
Возврат "добавить";
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьСостояниеПроверкиДокумента(СтатусПроверки)
Если СтатусПроверки = ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.Проверен") Тогда
СтрокаВозврата = НСтр("ru = '(проверен)'");
ИначеЕсли СтатусПроверки = ПредопределенноеЗначение("Перечисление.СтатусыПроверкиФинансовыхДокументов.ПустаяСсылка") Тогда
СтрокаВозврата = "";
Иначе
СтрокаВозврата = НСтр("ru = '(не проверен)'");
КонецЕсли;
Возврат ?(ЗначениеЗаполнено(СтрокаВозврата), " " + СтрокаВозврата, "");
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораОрганизацииДляНастройкиСчетов(Результат, ДопПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ОткрытьФормуНастройкиСчетовУчета(Результат.Значение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНастройкиСчетовУчета(Организация)
ОрганизацииДляНастройки = ОбщегоНазначенияКлиентСервер.ОтмеченныеЭлементы(СписокОрганизаций);
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("Организация", Организация);
СтруктураПараметры.Вставить("ОрганизацииДляНастройки", ОрганизацииДляНастройки);
СтруктураПараметры.Вставить("ДатаОкончанияПериода", Новый СтандартнаяДатаНачала(ДатаОтраженияНастройки));
Если ЗначениеЗаполнено(РазделУчетаДляНастройки) Тогда
СтруктураПараметры.Вставить("ТекущаяСтраница", РазделУчетаДляНастройки);
КонецЕсли;
СтруктураПараметры.Вставить("ПоказыватьТолькоТребующиеНастройки", Истина);
ОткрытьФорму("Обработка.НастройкаОтраженияДокументовВРеглУчете.Форма.ФормаНастройки", СтруктураПараметры, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьРасшифровкуСтатуса()
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Документ);
ОткрытьФорму("Обработка.ОтражениеДокументовВРеглУчете.Форма.ФормаРасшифровкиСтатуса", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#КонецОбласти