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