Направления деятельности / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Возвращает имена блокируемых реквизитов для механизма блокирования реквизитов БСП.
//
// Возвращаемое значение:
//  Массив - имена блокируемых реквизитов.
//
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
	
	Результат = Новый Массив;
	Результат.Добавить("УчетДоходов");
	Результат.Добавить("УчетЗатрат");
	Результат.Добавить("ДопускаетсяОбособлениеСверхПотребности");
	Результат.Добавить("УчетРасчетовСПоставщиками");
	Результат.Добавить("УчетВнеоборотныхАктивов");
	Результат.Добавить("УчетДенежныхСредств;ГруппаУчетДС");
	Результат.Добавить("НалогообложениеНДС;НалогообложениеНДС");
	Результат.Добавить("НалогообложениеНДСОпределяетсяВДокументе;РежимНалогообложенияОпределяетсяЗначением,РежимНалогообложенияОпределяетсяВДокументе");
	Результат.Добавить("ИсполнениеГосударственныхКонтрактов");
	
	НаправленияДеятельностиЛокализация.ДополнитьБлокируемыеРеквизитыОбъекта(Результат);
	
	Возврат Результат;
	
КонецФункции

// Возвращеат признак ведения учета по направлениям деятельности
//
// 
// Возвращаемое значение:
//  Булево - Используется учет по направлениям
//
Функция ИспользуетсяУчетПоНаправлениям() Экспорт
	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
			//++ НЕ УТ
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетВнеоборотныхАктивовПоНаправлениямДеятельности")
			//-- НЕ УТ
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетРасчетовСПоставщикамиПоНаправлениямДеятельности")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиРаздельно")
			ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетДСпоНаправлениямДеятельностиПоКорреспонденции");
КонецФункции

// Возвращает параметры заполнения реквизита НалогообложениеНДСПродажи
//
// 
// Возвращаемое значение:
//  См. УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи
//
Функция ПараметрыЗаполненияНалогообложениеНДСПродажи() Экспорт
	
	ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
	
	ПараметрыЗаполнения.Дата = ТекущаяДатаСеанса();
	ПараметрыЗаполнения.РеализацияТоваров = Истина;
	ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
	ПараметрыЗаполнения.ЭтоЗаказ = Истина;
	
	Возврат ПараметрыЗаполнения;
	
КонецФункции

#КонецОбласти

#Область ОбработчикиСобытий

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

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
	
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Назначения

// Возвращает шаблон для генерации назначения товаров в документе.
//
// Параметры:
// 	Объект - СправочникОбъект.НаправленияДеятельности, ДанныеФормыСтруктура - направление деятельности, по которому необходимо получить шаблон назначения.
//
// Возвращаемое значение:
// 	См. Справочники.Назначения.ШаблонНового
//
Функция ШаблонНазначения(Объект) Экспорт
	
	ШаблонНазначения = Справочники.Назначения.ШаблонНового();
	
	Если Объект.УчетЗатрат Тогда
		
		ШаблонНазначения.НаправлениеДеятельности = Объект.Ссылка;
		
	КонецЕсли;
	
	Возврат ШаблонНазначения;
	
КонецФункции

#КонецОбласти

#Область ОбновлениеИнформационнойБазы

// см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Справочники.НаправленияДеятельности.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.24.25";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("7fde082f-8db7-487a-94ca-0f2f9de143a3");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.НаправленияДеятельности.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление справочника ""Направление деятельности"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- Заполнение мультиязычных реквизитов справочника';"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Справочники.НаправленияДеятельности.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Справочники.НаправленияДеятельности.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Справочники.НаправленияДеятельности.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

КонецПроцедуры

// Параметры:
// 	Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	ПараметрыВыборки = Параметры.ПараметрыВыборки;
	ПараметрыВыборки.ПолныеИменаОбъектов = ПустаяСсылка().Метаданные().ПолноеИмя();
	ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();
	
	ИспользуютсяДопЯзыки = Ложь;
	Для Каждого ИспользуетсяДопЯзык Из МультиязычностьСервер.СведенияОЯзыках().Используется Цикл
		
		Если ИспользуетсяДопЯзык.Значение = Истина Тогда
			
			ИспользуютсяДопЯзыки = Истина;
			Прервать;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Если Не ИспользуютсяДопЯзыки Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НаправленияДеятельности.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.НаправленияДеятельности КАК НаправленияДеятельности
	|ГДЕ
	|	НЕ НаправленияДеятельности.Наименование = """"
	|	И НаправленияДеятельности.НаименованиеЯзык1 = """"
	|
	|ОБЪЕДИНИТЬ
	|
	|ВЫБРАТЬ
	|	НаправленияДеятельности.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.НаправленияДеятельности КАК НаправленияДеятельности
	|ГДЕ
	|	НЕ НаправленияДеятельности.Наименование = """"
	|	И НаправленияДеятельности.НаименованиеЯзык2 = """"
	|
	|ОБЪЕДИНИТЬ
	|
	|ВЫБРАТЬ
	|	НаправленияДеятельности.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.НаправленияДеятельности КАК НаправленияДеятельности
	|ГДЕ
	|	НЕ ВЫРАЗИТЬ(НаправленияДеятельности.Комментарий КАК СТРОКА(150)) = """"
	|	И ВЫРАЗИТЬ(НаправленияДеятельности.КомментарийЯзык1 КАК СТРОКА(150)) = """"
	|
	|ОБЪЕДИНИТЬ
	|
	|ВЫБРАТЬ
	|	НаправленияДеятельности.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.НаправленияДеятельности КАК НаправленияДеятельности
	|ГДЕ
	|	НЕ ВЫРАЗИТЬ(НаправленияДеятельности.Комментарий КАК СТРОКА(150)) = """"
	|	И ВЫРАЗИТЬ(НаправленияДеятельности.КомментарийЯзык2 КАК СТРОКА(150)) = """"";
	
	ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
	
КонецПроцедуры

// Обработчик обновления
// 
// Параметры:
// 	Параметры - См. ОбновлениеИнформационнойБазы.ДополнительныеПараметрыВыборкиДанныхДляМногопоточнойОбработки 
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	Параметры.ОбработкаЗавершена = Ложь;
	
	ПолноеИмяОбъекта = ПустаяСсылка().Метаданные().ПолноеИмя();
	
	ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
	
	Если ОбновляемыеДанные.Количество() = 0 Тогда
		
		Параметры.ОбработкаЗавершена =
			ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
		Возврат;
		
	КонецЕсли;
	
	ОбъектовОбработано = 0;
	ПроблемныхОбъектов = 0;
	ИсключенияПриОбновлении = Новый Массив;
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Не удалось обработать справочник ""Направление деятельности"" по обработчику:'"));
	СписокОписаний.Добавить(НСтр("ru = '- Заполнение мультиязычных реквизитов справочника';"));
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДанныеДляОбновления.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ ВТ
	|ИЗ
	|	&ДанныеДляОбновления КАК ДанныеДляОбновления
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ.Ссылка КАК Ссылка,
	|	НаправленияДеятельности.ВерсияДанных КАК ВерсияДанных
	|ИЗ
	|	ВТ КАК ВТ
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаправленияДеятельности КАК НаправленияДеятельности
	|		ПО ВТ.Ссылка = НаправленияДеятельности.Ссылка";
	
	Запрос.УстановитьПараметр("ДанныеДляОбновления", ОбновляемыеДанные);
	
	Справочник = Запрос.Выполнить().Выбрать();
	
	Пока Справочник.Следующий() Цикл
		
		ПричинаИсключения = 0;
		Рекомендация = "";
		
		НачатьТранзакцию();
		
		Попытка
			
			ПричинаИсключения = 1; // Блокировка
			
			Блокировка = Новый БлокировкаДанных;
			
			ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
			ЭлементБлокировки.УстановитьЗначение("Ссылка", Справочник.Ссылка);
			ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
			
			Блокировка.Заблокировать();
			
			СправочникОбъект = ОбновлениеИнформационнойБазыУТ.ПроверитьПолучитьОбъект(
				Справочник.Ссылка, Справочник.ВерсияДанных, Параметры.Очередь); // СправочникОбъект
			
			ПричинаИсключения = 2; // ПлохиеДанные
			Рекомендация = НСтр("ru = 'Проверьте данные справочника вручную.'");
			
			ОбъектИзменен = Ложь;
			
			Если СправочникОбъект <> Неопределено Тогда
				
				Если ЗначениеЗаполнено(СправочникОбъект.Наименование) Тогда
					
					Если Не ЗначениеЗаполнено(СправочникОбъект.НаименованиеЯзык1) Тогда
						
						СправочникОбъект.НаименованиеЯзык1 = СправочникОбъект.Наименование;
						
					КонецЕсли;
					
					Если Не ЗначениеЗаполнено(СправочникОбъект.НаименованиеЯзык2) Тогда
						
						СправочникОбъект.НаименованиеЯзык2 = СправочникОбъект.Наименование;
						
					КонецЕсли;
					
				КонецЕсли;
				
				Если ЗначениеЗаполнено(СправочникОбъект.Комментарий) Тогда
					
					Если Не ЗначениеЗаполнено(СправочникОбъект.КомментарийЯзык1) Тогда
						
						СправочникОбъект.КомментарийЯзык1 = СправочникОбъект.Комментарий;
						
					КонецЕсли;
					
					Если Не ЗначениеЗаполнено(СправочникОбъект.КомментарийЯзык2) Тогда
						
						СправочникОбъект.КомментарийЯзык2 = СправочникОбъект.Комментарий;
						
					КонецЕсли;
					
				КонецЕсли;
				
				ОбъектИзменен = Истина;
				
			КонецЕсли;
			
			ПричинаИсключения = 3; // Запись
			
			Если ОбъектИзменен Тогда
				ОбновлениеИнформационнойБазы.ЗаписатьДанные(СправочникОбъект);
			Иначе
				ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Справочник.Ссылка);
			КонецЕсли;
			
			ОбъектовОбработано = ОбъектовОбработано + 1;
			ЗафиксироватьТранзакцию();
			
		Исключение
			
			ОтменитьТранзакцию();
			
			ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
			ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), Справочник.Ссылка);
			
			Если ПричинаИсключения = 2 Тогда
				
				ОписаниеПроблемы = ОбновлениеИнформационнойБазыУТ.ПроблемаСДанными(
					Справочник.Ссылка, Рекомендация, ИнформацияОбОшибке());
				ИсключенияПриОбновлении.Добавить(ОписаниеПроблемы);
				
			ИначеЕсли ПричинаИсключения = 3 Тогда
				
				ОбновлениеИнформационнойБазыУТ.ЗаписатьПлохиеДанные(
					ИсключенияПриОбновлении, ОбъектовОбработано, Параметры);
				ВызватьИсключение СтрСоединить(СписокОписаний, Символы.ПС);
				
			КонецЕсли;
			
		КонецПопытки;
		
	КонецЦикла;
	
	Параметры.ОбработкаЗавершена =
		ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
	
КонецПроцедуры

#КонецОбласти


#КонецОбласти

#КонецЕсли

Связанные материалы