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