[System] Ты анализируешь код 1С и подбираешь точные имена для процедур и функций.

[User]
Восстанови осмысленное имя процедуры или функции на 1С по её телу. Верни только полную сигнатуру первой строки.

Процедура ИмяФункции(ТаблицаИсточника, ПользовательскиеПоля, МенеджерВременныхТаблиц)

	// получаем таблицы:
	//
	// ТаблицаИсточника
	// ТаблицаНеутвержденныхСвязей
	// ТаблицаРегистраСоответствияОбъектовИнформационныхБаз.
	//
	// ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
	// ТаблицаСопоставленныхОбъектовПриемникаПоРегистру
	// ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям.
	//
	// ТаблицаСопоставленныхОбъектов.
	//
	// ТаблицаНеСопоставленныхОбъектовИсточника
	// ТаблицаНеСопоставленныхОбъектовПриемника.
	//
	//

	// В текст запроса вместо служебных конструкций #any_text#
	// добавим параметры, поддержим работу конструктора, потом вернем #any_text#.

	ТекстЗапроса = "
	|//////////////////////////////////////////////////////////////////////////////// {ТаблицаИсточника}
	|ВЫБРАТЬ
	|
	|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаИсточника,
	|
	|	ТаблицаИсточникаПараметр.Ссылка                  КАК Ссылка,
	|	ТаблицаИсточникаПараметр.УникальныйИдентификатор КАК УникальныйИдентификатор,
	|	&ТипИсточника                                    КАК ТипОбъекта
	|ПОМЕСТИТЬ ТаблицаИсточника
	|ИЗ
	|	&ТаблицаИсточникаПараметр КАК ТаблицаИсточникаПараметр
	|ГДЕ
	|	ТаблицаИсточникаПараметр.УникальныйИдентификатор <> """"
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка,
	|	УникальныйИдентификатор
	|;
	|";

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаИсточника,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаИсточника#");

	Если ОбменДаннымиСервер.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда

		ТекстЗапроса = ТекстЗапроса + "
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаРегистраСоответствияОбъектовИнформационныхБаз}
			|ВЫБРАТЬ
			|	Ссылка        КАК УникальныйИдентификаторИсточника,
			|	Идентификатор КАК УникальныйИдентификаторПриемника,
			|	""#ТипИсточника#"" КАК ТипПриемника,
			|	""#ТипПриемника#"" КАК ТипИсточника
			|ПОМЕСТИТЬ ТаблицаРегистраСоответствияОбъектовИнформационныхБаз
			|ИЗ
			|	РегистрСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов КАК СоответствияОбъектовИнформационныхБаз
			|ГДЕ
			|	  СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы
			|	И СоответствияОбъектовИнформационныхБаз.Ссылка = &ЭмуляцияСтрокиЗамены
			|
			|ИНДЕКСИРОВАТЬ ПО
			|	УникальныйИдентификаторПриемника
			|;
			|";

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"СоответствияОбъектовИнформационныхБаз.Ссылка = &ЭмуляцияСтрокиЗамены",
				"ТИПЗНАЧЕНИЯ(СоответствияОбъектовИнформационныхБаз.Ссылка) = ТИП(#ТаблицаПриемника#)");

	Иначе

		ТекстЗапроса = ТекстЗапроса + "
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаРегистраСоответствияОбъектовИнформационныхБаз}
			|ВЫБРАТЬ
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипПриемника,
			|	ТипИсточника
			|ПОМЕСТИТЬ ТаблицаРегистраСоответствияОбъектовИнформационныхБаз
			|ИЗ
			|	РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
			|ГДЕ
			|	  СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы
			|	И СоответствияОбъектовИнформационныхБаз.ТипПриемника = &ТипИсточника
			|	И СоответствияОбъектовИнформационныхБаз.ТипИсточника = &ТипПриемника
			|ИНДЕКСИРОВАТЬ ПО
			|	УникальныйИдентификаторПриемника,
			|	ТипПриемника,
			|	ТипИсточника
			|;
			|";

	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
		|//////////////////////////////////////////////////////////////////////////////// {ТаблицаНеутвержденныхСвязей}
		|ВЫБРАТЬ
		|
		|	УникальныйИдентификаторИсточника,
		|	УникальныйИдентификаторПриемника,
		|	ТипПриемника,
		|	ТипИсточника
		|
		|ПОМЕСТИТЬ ТаблицаНеутвержденныхСвязей
		|ИЗ
		|	&ТаблицаНеутвержденныхСвязей КАК ТаблицаНеутвержденныхСвязей
		|ИНДЕКСИРОВАТЬ ПО
		|	УникальныйИдентификаторПриемника,
		|	ТипПриемника
		|;
		|";

	Если ОбменДаннымиСервер.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда

		ТекстЗапроса = ТекстЗапроса + "
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовИсточникаПоРегистру}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	0 КАК СтатусСопоставления,               // сопоставленные объекты (0)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос,
			|
			|		ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника, ТаблицаПриемника.Ссылка) КАК Ссылка,
			|
			|		&ТаблицаИсточникаЭтоГруппа                      КАК ЭтоГруппаИсточник,
			|		&СоответствияОбъектовИнформационныхБазЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника, ТаблицаПриемника.Ссылка)                  КАК УникальныйИдентификаторПриемника,
			|		ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника, ТаблицаИсточника.УникальныйИдентификатор) КАК УникальныйИдентификаторИсточника,
			|		ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.ТипПриемника, ""#ТипИсточника#"")                                           КАК ТипИсточника,
			|		ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.ТипИсточника, ""#ТипПриемника#"")                                           КАК ТипПриемника
			|	ИЗ
			|		ТаблицаИсточника КАК ТаблицаИсточника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаРегистраСоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
			|	ПО
			|		  СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = ТаблицаИсточника.УникальныйИдентификатор
			|		И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &СоответствияОбъектовИнформационныхБаз
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		Справочник.СценарииОбменовДанными КАК ТаблицаПриемника
			|	ПО
			|		  ТаблицаИсточника.Ссылка = ТаблицаПриемника.Ссылка
			|	ГДЕ
			|		НЕ СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|		ИЛИ НЕ ТаблицаПриемника.Ссылка ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовПриемникаПоРегистру}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	0 КАК СтатусСопоставления,               // сопоставленные объекты (0)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовПриемникаПоРегистру
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос,
			|
			|		ТаблицаПриемника.Ссылка КАК Ссылка,
			|
			|		&ТаблицаПриемникаЭтоГруппа КАК ЭтоГруппаИсточник,
			|		&ТаблицаПриемникаЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипПриемника                     КАК ТипИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипИсточника                     КАК ТипПриемника
			|	ИЗ
			|		Справочник.СценарииОбменовДанными КАК ТаблицаПриемника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаРегистраСоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
			|	ПО
			|		  СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = ТаблицаПриемника.Ссылка
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаСопоставленныхОбъектовИсточникаПоРегистру КАК ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
			|	ПО
			|		ТаблицаСопоставленныхОбъектовИсточникаПоРегистру.Ссылка = ТаблицаПриемника.Ссылка
			|
			|	ГДЕ
			|		НЕ СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|		И ТаблицаСопоставленныхОбъектовИсточникаПоРегистру.Ссылка ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	3 КАК СтатусСопоставления,               // неутвержденные связи (3)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос,
			|
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК Ссылка,
			|
			|		&ТаблицаИсточникаЭтоГруппа            КАК ЭтоГруппаИсточник,
			|		&ТаблицаНеутвержденныхСвязейЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
			|		ТаблицаНеутвержденныхСвязей.ТипПриемника КАК ТипИсточника,
			|		ТаблицаНеутвержденныхСвязей.ТипИсточника КАК ТипПриемника
			|	ИЗ
			|		ТаблицаИсточника КАК ТаблицаИсточника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаНеутвержденныхСвязей КАК ТаблицаНеутвержденныхСвязей
			|	ПО
			|		  ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторПриемника = ТаблицаИсточника.УникальныйИдентификатор
			|		И ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника = &ТаблицаПриемника
			|
			|	ГДЕ
			|		НЕ ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|";

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,",
			"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЕ_СОРТИРОВКИ_Приемник,",
			"#ПОЛЕ_СОРТИРОВКИ_Приемник#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос,",
			"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ТаблицаИсточникаЭтоГруппа",
			"#ТаблицаИсточникаЭтоГруппа#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&СоответствияОбъектовИнформационныхБазЭтоГруппа",
			"#СоответствияОбъектовИнформационныхБазЭтоГруппа#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &СоответствияОбъектовИнформационныхБаз",
			"И ТИПЗНАЧЕНИЯ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника) = ТИП(#ТаблицаПриемника#)");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"Справочник.СценарииОбменовДанными КАК ТаблицаПриемника",
			"#ТаблицаПриемника# КАК ТаблицаПриемника");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос,",
			"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос,",
			"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ТаблицаПриемникаЭтоГруппа",
			"#ТаблицаПриемникаЭтоГруппа#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос,",
			"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"&ТаблицаНеутвержденныхСвязейЭтоГруппа",
			"#ТаблицаНеутвержденныхСвязейЭтоГруппа#");

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
			"ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника = &ТаблицаПриемника",
			"ТИПЗНАЧЕНИЯ(ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника) = ТИП(#ТаблицаПриемника#)");

	Иначе

		ТекстЗапроса = ТекстЗапроса + "
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовИсточникаПоРегистру}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	0 КАК СтатусСопоставления,               // сопоставленные объекты (0)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос,
			|
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК Ссылка,
			|
			|		&ТаблицаИсточникаЭтоГруппа                      КАК ЭтоГруппаИсточник,
			|		&СоответствияОбъектовИнформационныхБазЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипПриемника                     КАК ТипИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипИсточника                     КАК ТипПриемника
			|	ИЗ
			|		ТаблицаИсточника КАК ТаблицаИсточника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаРегистраСоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
			|	ПО
			|		  СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = ТаблицаИсточника.УникальныйИдентификатор
			|		И СоответствияОбъектовИнформационныхБаз.ТипПриемника                     = ТаблицаИсточника.ТипОбъекта
			|	ГДЕ
			|		НЕ СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовПриемникаПоРегистру}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	0 КАК СтатусСопоставления,               // сопоставленные объекты (0)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовПриемникаПоРегистру
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос,
			|
			|		ТаблицаПриемника.Ссылка КАК Ссылка,
			|
			|		&ТаблицаПриемникаЭтоГруппа КАК ЭтоГруппаИсточник,
			|		&ТаблицаПриемникаЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
			|		СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипПриемника                     КАК ТипИсточника,
			|		СоответствияОбъектовИнформационныхБаз.ТипИсточника                     КАК ТипПриемника
			|	ИЗ
			|		Справочник.СценарииОбменовДанными КАК ТаблицаПриемника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаРегистраСоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
			|	ПО
			|		  СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = ТаблицаПриемника.Ссылка
			|		И СоответствияОбъектовИнформационныхБаз.ТипИсточника                     = &ТипПриемника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаСопоставленныхОбъектовИсточникаПоРегистру КАК ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
			|	ПО
			|		ТаблицаСопоставленныхОбъектовИсточникаПоРегистру.Ссылка = ТаблицаПриемника.Ссылка
			|
			|	ГДЕ
			|		НЕ СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|		И ТаблицаСопоставленныхОбъектовИсточникаПоРегистру.Ссылка ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|
			|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям}
			|ВЫБРАТЬ
			|
			|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
			|
			|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
			|
			|	Ссылка,
			|	3 КАК СтатусСопоставления,               // неутвержденные связи (3)
			|	0 КАК СтатусСопоставленияДополнительный, // сопоставленные объекты (0)
			|
			|	ЭтоГруппаИсточник,
			|	ЭтоГруппаПриемник,
			|
			|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|	УникальныйИдентификаторИсточника,
			|	УникальныйИдентификаторПриемника,
			|	ТипИсточника,
			|	ТипПриемника
			|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям
			|ИЗ
			|	(ВЫБРАТЬ
			|
			|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос,
			|
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК Ссылка,
			|
			|		&ТаблицаИсточникаЭтоГруппа            КАК ЭтоГруппаИсточник,
			|		&ТаблицаНеутвержденныхСвязейЭтоГруппа КАК ЭтоГруппаПриемник,
			|
			|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
			|		ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
			|		ТаблицаНеутвержденныхСвязей.ТипПриемника КАК ТипИсточника,
			|		ТаблицаНеутвержденныхСвязей.ТипИсточника КАК ТипПриемника
			|	ИЗ
			|		ТаблицаИсточника КАК ТаблицаИсточника
			|	ЛЕВОЕ СОЕДИНЕНИЕ
			|		ТаблицаНеутвержденныхСвязей КАК ТаблицаНеутвержденныхСвязей
			|	ПО
			|		  ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторПриемника = ТаблицаИсточника.УникальныйИдентификатор
			|		И ТаблицаНеутвержденныхСвязей.ТипПриемника                     = ТаблицаИсточника.ТипОбъекта
			|
			|	ГДЕ
			|		НЕ ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника ЕСТЬ NULL
			|	) КАК ВложенныйЗапрос
			|;
			|";

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,",
				"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ПОЛЕ_СОРТИРОВКИ_Приемник,",
				"#ПОЛЕ_СОРТИРОВКИ_Приемник#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос,",
				"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ТаблицаИсточникаЭтоГруппа",
				"#ТаблицаИсточникаЭтоГруппа#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&СоответствияОбъектовИнформационныхБазЭтоГруппа",
				"#СоответствияОбъектовИнформационныхБазЭтоГруппа#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос,",
				"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ТаблицаПриемникаЭтоГруппа",
				"#ТаблицаПриемникаЭтоГруппа#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"Справочник.СценарииОбменовДанными КАК ТаблицаПриемника",
				"#ТаблицаПриемника# КАК ТаблицаПриемника");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос,",
				"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос#");

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
				"&ТаблицаНеутвержденныхСвязейЭтоГруппа",
				"#ТаблицаНеутвержденныхСвязейЭтоГруппа#");

	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
		|//////////////////////////////////////////////////////////////////////////////// {ТаблицаСопоставленныхОбъектов}
		|ВЫБРАТЬ
		|
		|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|	&ПОЛЯ_СОРТИРОВКИ,
		|
		|	Ссылка,
		|	СтатусСопоставления,
		|	СтатусСопоставленияДополнительный,
		|
		|	// {ИНДЕКС КАРТИНКИ}
		|	ВЫБОР КОГДА ЭтоГруппаИсточник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаИсточник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ИсточникИндексКартинки,
		|
		|	ВЫБОР КОГДА ЭтоГруппаПриемник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаПриемник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ПриемникИндексКартинки,
		|
		|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|	УникальныйИдентификаторИсточника,
		|	УникальныйИдентификаторПриемника,
		|	ТипИсточника,
		|	ТипПриемника
		|ПОМЕСТИТЬ ТаблицаСопоставленныхОбъектов
		|ИЗ
		|	(
		|	ВЫБРАТЬ
		|
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|		&ПОЛЯ_СОРТИРОВКИ,
		|
		|		Ссылка,
		|		СтатусСопоставления,
		|		СтатусСопоставленияДополнительный,
		|
		|		ЭтоГруппаИсточник,
		|		ЭтоГруппаПриемник,
		|
		|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|		УникальныйИдентификаторИсточника,
		|		УникальныйИдентификаторПриемника,
		|		ТипИсточника,
		|		ТипПриемника
		|	ИЗ
		|		ТаблицаСопоставленныхОбъектовИсточникаПоРегистру
		|
		|	ОБЪЕДИНИТЬ ВСЕ
		|
		|	ВЫБРАТЬ
		|
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|		&ПОЛЯ_СОРТИРОВКИ,
		|
		|		Ссылка,
		|		СтатусСопоставления,
		|		СтатусСопоставленияДополнительный,
		|
		|		ЭтоГруппаИсточник,
		|		ЭтоГруппаПриемник,
		|
		|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|		УникальныйИдентификаторИсточника,
		|		УникальныйИдентификаторПриемника,
		|		ТипИсточника,
		|		ТипПриемника
		|	ИЗ
		|		ТаблицаСопоставленныхОбъектовПриемникаПоРегистру
		|
		|	ОБЪЕДИНИТЬ ВСЕ
		|
		|	ВЫБРАТЬ
		|
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|		&ПОЛЯ_СОРТИРОВКИ,
		|
		|		Ссылка,
		|		СтатусСопоставления,
		|		СтатусСопоставленияДополнительный,
		|
		|		ЭтоГруппаИсточник,
		|		ЭтоГруппаПриемник,
		|
		|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|		УникальныйИдентификаторИсточника,
		|		УникальныйИдентификаторПриемника,
		|		ТипИсточника,
		|		ТипПриемника
		|	ИЗ
		|		ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям
		|
		|	) КАК ВложенныйЗапрос
		|
		|ИНДЕКСИРОВАТЬ ПО
		|	Ссылка
		|;
		|
		|//////////////////////////////////////////////////////////////////////////////// {ТаблицаНеСопоставленныхОбъектовИсточника}
		|ВЫБРАТЬ
		|
		|	Ссылка,
		|
		|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|	&ПОЛЕ_СОРТИРОВКИ_Источник,
		|
		|	-1 КАК СтатусСопоставления,               // несопоставленные объекты источника (-1)
		|	 1 КАК СтатусСопоставленияДополнительный, // несопоставленные объекты (1)
		|
		|	// {ИНДЕКС КАРТИНКИ}
		|	ВЫБОР КОГДА ЭтоГруппаИсточник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаИсточник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ИсточникИндексКартинки,
		|
		|	ВЫБОР КОГДА ЭтоГруппаПриемник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаПриемник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ПриемникИндексКартинки,
		|
		|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|	УникальныйИдентификаторИсточника,
		|	УникальныйИдентификаторПриемника,
		|	ТипИсточника,
		|	ТипПриемника
		|ПОМЕСТИТЬ ТаблицаНеСопоставленныхОбъектовИсточника
		|ИЗ
		|	(ВЫБРАТЬ
		|		Количество(*),
		|		ЭтоГруппаИсточник,
		|		ЭтоГруппаПриемник,
		|		Ссылка,
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|		УникальныйИдентификаторПриемника,
		|		УникальныйИдентификаторИсточника,
		|		ТипИсточника,
		|		ТипПриемника
		|	ИЗ
		|		(ВЫБРАТЬ
		|
		|			&ТаблицаИсточникаЭтоГруппа КАК ЭтоГруппаИсточник,
		|			NULL                        КАК ЭтоГруппаПриемник,
		|
		|			ТаблицаИсточника.Ссылка КАК Ссылка,
		|
		|			&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос,
		|
		|			// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|			NULL                                     КАК УникальныйИдентификаторПриемника,
		|			ТаблицаИсточника.УникальныйИдентификатор КАК УникальныйИдентификаторИсточника,
		|			&ТипИсточника                            КАК ТипИсточника,
		|			&ТипПриемника                            КАК ТипПриемника
		|		ИЗ
		|			ТаблицаИсточника КАК ТаблицаИсточника
		|		ЛЕВОЕ СОЕДИНЕНИЕ
		|			ТаблицаСопоставленныхОбъектов КАК ТаблицаСопоставленныхОбъектов
		|		ПО
		|			ТаблицаИсточника.Ссылка = ТаблицаСопоставленныхОбъектов.Ссылка
		|		ГДЕ
		|			ТаблицаСопоставленныхОбъектов.УникальныйИдентификаторИсточника ЕСТЬ NULL
		|
		|		ОБЪЕДИНИТЬ ВСЕ
		|
		|		ВЫБРАТЬ
		|			&ТаблицаИсточникаЭтоГруппа,
		|			NULL,
		|
		|			ТаблицаИсточника.Ссылка,
		|
		|			&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос1,
		|
		|			// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|			NULL,
		|			ТаблицаИсточника.УникальныйИдентификатор,
		|			&ТипИсточника,
		|			&ТипПриемника
		|		ИЗ
		|			ТаблицаИсточника КАК ТаблицаИсточника
		|		ЛЕВОЕ СОЕДИНЕНИЕ
		|			ТаблицаСопоставленныхОбъектов КАК ТаблицаСопоставленныхОбъектов
		|		ПО
		|			ТаблицаИсточника.УникальныйИдентификатор = ТаблицаСопоставленныхОбъектов.УникальныйИдентификаторИсточника
		|		ГДЕ
		|			ТаблицаСопоставленныхОбъектов.Ссылка ЕСТЬ NULL
		|		) КАК ВложенныйЗапросПредварительный
		|	СГРУППИРОВАТЬ ПО
		|		ЭтоГруппаИсточник,
		|		ЭтоГруппаПриемник,
		|		Ссылка,
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|		УникальныйИдентификаторПриемника,
		|		УникальныйИдентификаторИсточника,
		|		ТипИсточника,
		|		ТипПриемника
		|	ИМЕЮЩИЕ Количество(*) > 1) КАК ВложенныйЗапрос
		|;
		|
		|//////////////////////////////////////////////////////////////////////////////// {ТаблицаНеСопоставленныхОбъектовПриемника}
		|ВЫБРАТЬ
		|
		|	Ссылка,
		|
		|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
		|
		|	&ПОЛЕ_СОРТИРОВКИ_Приемник,
		|
		|	1 КАК СтатусСопоставления,               // несопоставленные объекты приемника (1)
		|	1 КАК СтатусСопоставленияДополнительный, // несопоставленные объекты (1)
		|
		|	// {ИНДЕКС КАРТИНКИ}
		|	ВЫБОР КОГДА ЭтоГруппаИсточник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаИсточник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ИсточникИндексКартинки,
		|
		|	ВЫБОР КОГДА ЭтоГруппаПриемник ЕСТЬ NULL
		|	ТОГДА 0
		|	ИНАЧЕ
		|		ВЫБОР КОГДА ЭтоГруппаПриемник = ИСТИНА
		|		ТОГДА 1
		|		ИНАЧЕ 2
		|		КОНЕЦ
		|	КОНЕЦ КАК ПриемникИндексКартинки,
		|
		|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|	УникальныйИдентификаторИсточника,
		|	УникальныйИдентификаторПриемника,
		|	ТипИсточника,
		|	ТипПриемника
		|ПОМЕСТИТЬ ТаблицаНеСопоставленныхОбъектовПриемника
		|ИЗ
		|	(ВЫБРАТЬ
		|
		|		ТаблицаПриемника.Ссылка КАК Ссылка,
		|
		|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовПриемника_ВложенныйЗапрос,
		|
		|		NULL                        КАК ЭтоГруппаИсточник,
		|		&ТаблицаПриемникаЭтоГруппа КАК ЭтоГруппаПриемник,
		|
		|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
		|		ТаблицаПриемника.Ссылка       КАК УникальныйИдентификаторПриемника,
		|		Неопределено                  КАК УникальныйИдентификаторИсточника,
		|		Неопределено                  КАК ТипИсточника,
		|		&ТипПриемника                 КАК ТипПриемника
		|	ИЗ
		|		Справочник.СценарииОбменовДанными КАК ТаблицаПриемника
		|	ЛЕВОЕ СОЕДИНЕНИЕ
		|		ТаблицаСопоставленныхОбъектов КАК ТаблицаСопоставленныхОбъектов
		|	ПО
		|		ТаблицаПриемника.Ссылка = ТаблицаСопоставленныхОбъектов.Ссылка
		|	ГДЕ
		|		ТаблицаСопоставленныхОбъектов.УникальныйИдентификаторПриемника ЕСТЬ NULL
		|	) КАК ВложенныйЗапрос
		|;
		|
		|";

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЯ_СОРТИРОВКИ,",
		"#ПОЛЯ_СОРТИРОВКИ#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЕ_СОРТИРОВКИ_Источник,",
		"#ПОЛЕ_СОРТИРОВКИ_Источник#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ТаблицаИсточникаЭтоГруппа",
		"#ТаблицаИсточникаЭтоГруппа#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос1,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос1#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЕ_СОРТИРОВКИ_Приемник,",
		"#ПОЛЕ_СОРТИРОВКИ_Приемник#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовПриемника_ВложенныйЗапрос,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовПриемника_ВложенныйЗапрос#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ТаблицаПриемникаЭтоГруппа",
		"#ТаблицаПриемникаЭтоГруппа#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"Справочник.СценарииОбменовДанными КАК ТаблицаПриемника",
		"#ТаблицаПриемника# КАК ТаблицаПриемника");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаИсточника#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаИсточникаПараметр.# КАК #,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ИсточникПолеNN, ПриемникПолеNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоСсылке_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаПриемника.# КАК ПриемникПолеNN, ТаблицаИсточника.# КАК ИсточникПолеNN,"));

	Если ОбменДаннымиСервер.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ВЫРАЗИТЬ(ЕСТЬNULL(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника, ТаблицаПриемника.Ссылка) КАК [ИмяТаблицыПриемника]).# КАК ПриемникПолеNN, ТаблицаИсточника.# КАК ИсточникПолеNN,"));
	Иначе
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовИсточникаПоРегистру_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК [ИмяТаблицыПриемника]).# КАК ПриемникПолеNN, ТаблицаИсточника.# КАК ИсточникПолеNN,"));
	КонецЕсли;

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПриемникаПоРегистру_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаПриемника.# КАК ПриемникПолеNN, NULL КАК ИсточникПолеNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставленныхОбъектовПоНеутвержденнымСвязям_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ВЫРАЗИТЬ(ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК [ИмяТаблицыПриемника]).# КАК ПриемникПолеNN, ТаблицаИсточника.# КАК ИсточникПолеNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаИсточника.# КАК ИсточникПолеNN, NULL КАК ПриемникПолеNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовИсточника_ВложенныйЗапрос1#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаИсточника.#, NULL,"));

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаНеСопоставленныхОбъектовПриемника_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "NULL КАК ИсточникПолеNN, ТаблицаПриемника.Ссылка.# КАК ПриемникПолеNN,"));

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЕ_СОРТИРОВКИ_Источник#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ИсточникПолеNN КАК ПолеСортировкиNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЕ_СОРТИРОВКИ_Приемник#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ПриемникПолеNN КАК ПолеСортировкиNN,"));

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЯ_СОРТИРОВКИ#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ПолеСортировкиNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаПриемника#", ИмяТаблицыПриемника);

	Если ПользовательскиеПоля.Найти("ЭтоГруппа") <> Неопределено Тогда

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаИсточникаЭтоГруппа#",            "ТаблицаИсточника.ЭтоГруппа");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаПриемникаЭтоГруппа#",            "ТаблицаПриемника.ЭтоГруппа");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаНеутвержденныхСвязейЭтоГруппа#", "ВЫРАЗИТЬ(ТаблицаНеутвержденныхСвязей.УникальныйИдентификаторИсточника КАК [ИмяТаблицыПриемника]).ЭтоГруппа");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#СоответствияОбъектовИнформационныхБазЭтоГруппа#", "ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК [ИмяТаблицыПриемника]).ЭтоГруппа");

	Иначе

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаИсточникаЭтоГруппа#",            "NULL");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаПриемникаЭтоГруппа#",            "NULL");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаНеутвержденныхСвязейЭтоГруппа#", "NULL");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#СоответствияОбъектовИнформационныхБазЭтоГруппа#", "NULL");

	КонецЕсли;

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицыПриемника]", ИмяТаблицыПриемника);

	Запрос = Новый Запрос;

	Запрос.Текст = ТекстЗапроса;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

	Запрос.УстановитьПараметр("ТаблицаИсточникаПараметр",    ТаблицаИсточника);
	Запрос.УстановитьПараметр("ТаблицаНеутвержденныхСвязей", ТаблицаНеутвержденныхСвязей.Выгрузить());
	Запрос.УстановитьПараметр("ТипИсточника",                ТипИсточникаСтрокой);
	Запрос.УстановитьПараметр("ТипПриемника",                ТипПриемникаСтрокой);
	Запрос.УстановитьПараметр("УзелИнформационнойБазы",      УзелИнформационнойБазы);

	Запрос.Выполнить();

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

[Assistant] Процедура ДанныеСопоставленияОбъектов(ТаблицаИсточника, ПользовательскиеПоля, МенеджерВременныхТаблиц)


[System] Ты анализируешь код 1С и подбираешь точные имена для процедур и функций.

[User]
Восстанови осмысленное имя процедуры или функции на 1С по её телу. Верни только полную сигнатуру первой строки.

Процедура ИмяФункции(ТаблицаИсточника, СписокПолейСопоставления, ПользовательскиеПоля, МенеджерВременныхТаблиц)

	МассивОтмеченныхЭлементовСписка = ОбщегоНазначенияКлиентСервер.ОтмеченныеЭлементы(СписокПолейСопоставления);

	Если МассивОтмеченныхЭлементовСписка.Количество() = 0 Тогда

		ДанныеАвтоматическогоСопоставленияПоGUID(ПользовательскиеПоля, МенеджерВременныхТаблиц);

	Иначе

		ДанныеАвтоматическогоСопоставленияПоGUIDПлюсПоПолямПоиска(ТаблицаИсточника, СписокПолейСопоставления, ПользовательскиеПоля, МенеджерВременныхТаблиц);

	КонецЕсли;

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

Процедура ДанныеАвтоматическогоСопоставленияПоGUID(ПользовательскиеПоля, МенеджерВременныхТаблиц)

	// получаем таблицы:
	//
	// ТаблицаАвтоматическиСопоставленныхОбъектов

	ТекстЗапроса = "
	|//////////////////////////////////////////////////////////////////////////////// {ТаблицаАвтоматическиСопоставленныхОбъектов}
	|ВЫБРАТЬ
	|
	|	Ссылка,
	|
	|	&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,
	|
	|	ПриемникИндексКартинки,
	|	ИсточникИндексКартинки,
	|
	|	// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
	|	УникальныйИдентификаторИсточника,
	|	УникальныйИдентификаторПриемника,
	|	ТипИсточника,
	|	ТипПриемника
	|ПОМЕСТИТЬ ТаблицаАвтоматическиСопоставленныхОбъектов
	|ИЗ
	|	(ВЫБРАТЬ
	|
	|		ТаблицаНеСопоставленныхОбъектовПриемника.Ссылка КАК Ссылка,
	|
	|		ТаблицаНеСопоставленныхОбъектовПриемника.ПриемникИндексКартинки,
	|		ТаблицаНеСопоставленныхОбъектовИсточника.ИсточникИндексКартинки,
	|
	|		&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаАвтоматическиСопоставленныхОбъектовПоGUID_ВложенныйЗапрос,
	|
	|		// {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
	|		ТаблицаНеСопоставленныхОбъектовИсточника.УникальныйИдентификаторИсточника КАК УникальныйИдентификаторИсточника,
	|		ТаблицаНеСопоставленныхОбъектовИсточника.ТипИсточника                     КАК ТипИсточника,
	|		ТаблицаНеСопоставленныхОбъектовПриемника.УникальныйИдентификаторПриемника КАК УникальныйИдентификаторПриемника,
	|		ТаблицаНеСопоставленныхОбъектовПриемника.ТипПриемника                     КАК ТипПриемника
	|	ИЗ
	|		ТаблицаНеСопоставленныхОбъектовПриемника КАК ТаблицаНеСопоставленныхОбъектовПриемника
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		ТаблицаНеСопоставленныхОбъектовИсточника КАК ТаблицаНеСопоставленныхОбъектовИсточника
	|	ПО
	|		ТаблицаНеСопоставленныхОбъектовПриемника.Ссылка = ТаблицаНеСопоставленныхОбъектовИсточника.Ссылка
	|
	|	ГДЕ
	|		НЕ ТаблицаНеСопоставленныхОбъектовИсточника.Ссылка ЕСТЬ NULL
	|
	|	) КАК ВложенныйЗапрос
	|;
	|";

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаАвтоматическиСопоставленныхОбъектовПоGUID_ВложенныйЗапрос,",
		"#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаАвтоматическиСопоставленныхОбъектовПоGUID_ВложенныйЗапрос#");

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаСопоставления#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ИсточникПолеNN, ПриемникПолеNN,"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПОЛЬЗОВАТЕЛЬСКИЕ_ПОЛЯ_ТаблицаАвтоматическиСопоставленныхОбъектовПоGUID_ВложенныйЗапрос#", ПолучитьПользовательскиеПоля(ПользовательскиеПоля, "ТаблицаНеСопоставленныхОбъектовИсточника.ИсточникПолеNN КАК ИсточникПолеNN, ТаблицаНеСопоставленныхОбъектовПриемника.ПриемникПолеNN КАК ПриемникПолеNN,"));

	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

	Запрос.Выполнить();

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

[Assistant] Процедура ДанныеАвтоматическогоСопоставления(ТаблицаИсточника, СписокПолейСопоставления, ПользовательскиеПоля, МенеджерВременныхТаблиц)


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало процедура `УстановитьУсловноеОформление`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаСопоставленияПриемникПоле1.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставления.СтатусСопоставления");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = -1;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Нет соответствия, объект будет скопирован'"));

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаСопоставленияИсточникПоле1.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставления.СтатусСопоставления");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    // TODO: допиши оставшуюся часть

[Assistant]
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаСопоставленияПриемникПоле1.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставления.СтатусСопоставления");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = -1;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Нет соответствия, объект будет скопирован'"));

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаСопоставленияИсточникПоле1.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставления.СтатусСопоставления");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = 1;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Нет соответствия'"));

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаСопоставленияСопоставлениеПоСсылкеКартинка.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставления.СопоставлениеПоСсылке");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;

	Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);

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

&НаКлиенте

Процедура ВыполнитьЗагрузкуДанныхПослеВопросаОПодтвержденииПолученияДанных(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
	Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;

	Если Объект.ДанныеУспешноЗагружены Тогда
		НСтрока = НСтр("ru = 'Данные уже были получены. Выполнить получение данных повторно?'");
		Оповещение = Новый ОписаниеОповещения("ВыполнитьЗагрузкуДанныхПослеВопросаОПовторномПолученииДанных", ЭтотОбъект);

		ПоказатьВопрос(Оповещение, НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет);
		Возврат;
	КонецЕсли;

	ВыполнитьЗагрузкуДанныхПослеПодтвержденияПолученияДанных();
КонецПроцедуры

&НаКлиенте

Процедура ВыполнитьЗагрузкуДанныхПослеВопросаОПовторномПолученииДанных(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
	Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;

	ВыполнитьЗагрузкуДанныхПослеПодтвержденияПолученияДанных();
КонецПроцедуры

&НаКлиенте

Процедура ВыполнитьЗагрузкуДанныхПослеПодтвержденияПолученияДанных()

	// Выполняем загрузку данных на сервере.
	Отказ = Ложь;
	ВыполнитьЗагрузкуДанныхНаСервере(Отказ);

	Если Отказ Тогда
		НСтрока = НСтр("ru = 'При получении данных возникли ошибки.
		                     |Перейти в журнал регистрации?'");

		Оповещение = Новый ОписаниеОповещения("ВыполнитьЗагрузкуДанныхПослеВопросаОПереходеВЖурналРегистрации", ЭтотОбъект);
		ПоказатьВопрос(Оповещение, НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет);

		Возврат;
	КонецЕсли;

	// Обновляем данные в таблице сопоставления.
	ОбновитьТаблицуСопоставления();
КонецПроцедуры

&НаКлиенте

Процедура ВыполнитьЗагрузкуДанныхПослеВопросаОПереходеВЖурналРегистрации(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
	Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;

	ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанныхМодально(Объект.УзелИнформационнойБазы, ЭтотОбъект, "ЗагрузкаДанных");
КонецПроцедуры

&НаКлиенте

Процедура ПерейтиДалее()

	ИзменитьПорядковыйНомерПерехода(+1);

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

&НаКлиенте

Процедура ПерейтиНазад()

	ИзменитьПорядковыйНомерПерехода(-1);

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

&НаСервере

Процедура ОтменитьСопоставлениеНаСервере(ВыделенныеСтроки)

	Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл

		ТекущиеДанные = ТаблицаСопоставления.НайтиПоИдентификатору(ИдентификаторСтроки);

		Если ТекущиеДанные.СтатусСопоставления = 0 Тогда // Сопоставленные через РС (не жестко).

			ОтменитьСопоставлениеДанных(ТекущиеДанные, Ложь);

		ИначеЕсли ТекущиеДанные.СтатусСопоставления = 3 Тогда // Неутвержденное сопоставление.

			ОтменитьСопоставлениеДанных(ТекущиеДанные, Истина);

		КонецЕсли;

	КонецЦикла;

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

&НаСервере

Процедура ОтменитьСопоставлениеДанных(ТекущиеДанные, ЭтоНеутверженнаяСвязь)

	Отбор = Новый Структура;
	Отбор.Вставить("УникальныйИдентификаторИсточника", ТекущиеДанные.УникальныйИдентификаторПриемника);
	Отбор.Вставить("УникальныйИдентификаторПриемника", ТекущиеДанные.УникальныйИдентификаторИсточника);
	Отбор.Вставить("ТипИсточника",                     ТекущиеДанные.ТипПриемника);
	Отбор.Вставить("ТипПриемника",                     ТекущиеДанные.ТипИсточника);

	Если ЭтоНеутверженнаяСвязь Тогда
		Для Каждого НайденнаяСтроки Из Объект.ТаблицаНеутвержденныхСвязей.НайтиСтроки(Отбор) Цикл
			// Удаляем неутвержденную связь в таблице неутвержденных связей.
			Объект.ТаблицаНеутвержденныхСвязей.Удалить(НайденнаяСтроки);
		КонецЦикла;

	Иначе
		ОтменитьУтвержденноеСопоставлениеНаСервере(Отбор);

	КонецЕсли;

	// Добавляем в таблицу сопоставления две строки: источника и приемника.
	НоваяСтрокаИсточника = ТаблицаСопоставления.Добавить();
	НоваяСтрокаПриемника = ТаблицаСопоставления.Добавить();

	ЗаполнитьЗначенияСвойств(НоваяСтрокаИсточника, ТекущиеДанные, "ИсточникПоле1, ИсточникПоле2, ИсточникПоле3, ИсточникПоле4, ИсточникПоле5, УникальныйИдентификаторИсточника, ТипИсточника, ИсточникИндексКартинки");
	ЗаполнитьЗначенияСвойств(НоваяСтрокаПриемника, ТекущиеДанные, "ПриемникПоле1, ПриемникПоле2, ПриемникПоле3, ПриемникПоле4, ПриемникПоле5, УникальныйИдентификаторПриемника, ТипПриемника, ПриемникИндексКартинки");

	// Устанавливаем значения полей для сортировки строки источника.
	НоваяСтрокаИсточника.ПолеСортировки1 = ТекущиеДанные.ИсточникПоле1;
	НоваяСтрокаИсточника.ПолеСортировки2 = ТекущиеДанные.ИсточникПоле2;
	НоваяСтрокаИсточника.ПолеСортировки3 = ТекущиеДанные.ИсточникПоле3;
	НоваяСтрокаИсточника.ПолеСортировки4 = ТекущиеДанные.ИсточникПоле4;
	НоваяСтрокаИсточника.ПолеСортировки5 = ТекущиеДанные.ИсточникПоле5;
	НоваяСтрокаИсточника.ИндексКартинки  = ТекущиеДанные.ИсточникИндексКартинки;

	// Устанавливаем значения полей для сортировки строки приемника.
	НоваяСтрокаПриемника.ПолеСортировки1 = ТекущиеДанные.ПриемникПоле1;
	НоваяСтрокаПриемника.ПолеСортировки2 = ТекущиеДанные.ПриемникПоле2;
	НоваяСтрокаПриемника.ПолеСортировки3 = ТекущиеДанные.ПриемникПоле3;
	НоваяСтрокаПриемника.ПолеСортировки4 = ТекущиеДанные.ПриемникПоле4;
	НоваяСтрокаПриемника.ПолеСортировки5 = ТекущиеДанные.ПриемникПоле5;
	НоваяСтрокаПриемника.ИндексКартинки  = ТекущиеДанные.ПриемникИндексКартинки;

	НоваяСтрокаИсточника.СтатусСопоставления = -1;
	НоваяСтрокаИсточника.СтатусСопоставленияДополнительный = 1; // несопоставленные объекты

	НоваяСтрокаПриемника.СтатусСопоставления = 1;
	НоваяСтрокаПриемника.СтатусСопоставленияДополнительный = 1; // несопоставленные объекты

	// Удаляем текущую строку таблицы сопоставления.
	ТаблицаСопоставления.Удалить(ТекущиеДанные);

	// И обновляем номера
	НоваяСтрокаИсточника.НомерПоПорядку = СледующийНомерПоПорядкуСопоставления();
	НоваяСтрокаПриемника.НомерПоПорядку = СледующийНомерПоПорядкуСопоставления();

	НоваяСтрокаИсточника.СопоставлениеПоСсылке = Ложь;
	НоваяСтрокаПриемника.СопоставлениеПоСсылке = Ложь;

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

&НаСервере


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало функция `СоздатьНовыйОбъект`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Функция СоздатьНовыйОбъект(Тип, СвойстваПоиска, Объект = Неопределено,
	ЗаписыватьОбъектСразуПослеСоздания = Истина, НаборЗаписейРегистра = Неопределено,
	НоваяСсылка = Неопределено, НПП = 0, ГНПП = 0, ПараметрыОбъекта = Неопределено,
	УстанавливатьУОбъектаВсеСвойстваПоиска = Истина)
СвойстваМД      = Менеджеры[Тип];
	ИмяТипа         = СвойстваМД.ИмяТипа;
	Менеджер        = СвойстваМД.Менеджер; // СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, ПланСчетовМенеджер, ПланВидовРасчетаМенеджер, ПланОбменаМенеджер

	Если ИмяТипа = "Справочник"
		ИЛИ ИмяТипа = "ПланВидовХарактеристик" Тогда

		ЭтоГруппа = СвойстваПоиска["ЭтоГруппа"];

		Если ЭтоГруппа = Истина Тогда

			Объект = Менеджер.СоздатьГруппу();

		Иначе

			Объект = Менеджер.СоздатьЭлемент();

		КонецЕсли;

	ИначеЕсли ИмяТипа = "Документ" Тогда

		Объект = Менеджер.СоздатьДокумент();

	ИначеЕсли ИмяТипа = "ПланСчетов" Тогда

		Объект = Менеджер.СоздатьСчет();

	ИначеЕсли ИмяТипа = "ПланВидовРасчета" Тогда

		Объект = Менеджер.СоздатьВидРасчета();

	ИначеЕсли ИмяТипа = "РегистрСведений" Тогда

		Если ЗаписыватьРегистрыНаборамиЗаписей Тогда

			НаборЗаписейРегистра = Менеджер.СоздатьНаборЗаписей();
			Объект = НаборЗаписейРегистра.Добавить();

		Иначе

			Объект = Менеджер.СоздатьМенеджерЗаписи();

		КонецЕсли;

		Возврат Объект;

	ИначеЕсли ИмяТипа = "ПланОбмена" Тогда

		Объект = Менеджер.СоздатьУзел();

	ИначеЕсли ИмяТипа = "Задача" Тогда

		Объект = Менеджер.СоздатьЗадачу();

	ИначеЕсли ИмяТипа = "БизнесПроцесс" Тогда

		Объект = Менеджер.СоздатьБизнесПроцесс();

	ИначеЕсли ИмяТипа = "Перечисление" Тогда

		Объект = СвойстваМД.ПустаяСсылка;
		Возврат Объект;

	ИначеЕсли ИмяТипа = "ТочкаМаршрутаБизнесПроцесса" Тогда

		Возврат Неопределено;

	КонецЕсли;

	НоваяСсылка = УстановитьСсылкуНового(Объект, Менеджер, СвойстваПоиска);

	Если УстанавливатьУОбъектаВсеСвойстваПоиска Тогда
		УстановитьРеквизитыПоискаУОбъекта(Объект, СвойстваПоиска, Неопределено, Ложь, Ложь);
	КонецЕсли;

	// Проверки
	Если ИмяТипа = "Документ"
    // TODO: допиши оставшуюся часть

[Assistant]
Функция СоздатьНовыйОбъект(Тип, СвойстваПоиска, Объект = Неопределено,
	ЗаписыватьОбъектСразуПослеСоздания = Истина, НаборЗаписейРегистра = Неопределено,
	НоваяСсылка = Неопределено, НПП = 0, ГНПП = 0, ПараметрыОбъекта = Неопределено,
	УстанавливатьУОбъектаВсеСвойстваПоиска = Истина)

	СвойстваМД      = Менеджеры[Тип];
	ИмяТипа         = СвойстваМД.ИмяТипа;
	Менеджер        = СвойстваМД.Менеджер; // СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, ПланСчетовМенеджер, ПланВидовРасчетаМенеджер, ПланОбменаМенеджер

	Если ИмяТипа = "Справочник"
		ИЛИ ИмяТипа = "ПланВидовХарактеристик" Тогда

		ЭтоГруппа = СвойстваПоиска["ЭтоГруппа"];

		Если ЭтоГруппа = Истина Тогда

			Объект = Менеджер.СоздатьГруппу();

		Иначе

			Объект = Менеджер.СоздатьЭлемент();

		КонецЕсли;

	ИначеЕсли ИмяТипа = "Документ" Тогда

		Объект = Менеджер.СоздатьДокумент();

	ИначеЕсли ИмяТипа = "ПланСчетов" Тогда

		Объект = Менеджер.СоздатьСчет();

	ИначеЕсли ИмяТипа = "ПланВидовРасчета" Тогда

		Объект = Менеджер.СоздатьВидРасчета();

	ИначеЕсли ИмяТипа = "РегистрСведений" Тогда

		Если ЗаписыватьРегистрыНаборамиЗаписей Тогда

			НаборЗаписейРегистра = Менеджер.СоздатьНаборЗаписей();
			Объект = НаборЗаписейРегистра.Добавить();

		Иначе

			Объект = Менеджер.СоздатьМенеджерЗаписи();

		КонецЕсли;

		Возврат Объект;

	ИначеЕсли ИмяТипа = "ПланОбмена" Тогда

		Объект = Менеджер.СоздатьУзел();

	ИначеЕсли ИмяТипа = "Задача" Тогда

		Объект = Менеджер.СоздатьЗадачу();

	ИначеЕсли ИмяТипа = "БизнесПроцесс" Тогда

		Объект = Менеджер.СоздатьБизнесПроцесс();

	ИначеЕсли ИмяТипа = "Перечисление" Тогда

		Объект = СвойстваМД.ПустаяСсылка;
		Возврат Объект;

	ИначеЕсли ИмяТипа = "ТочкаМаршрутаБизнесПроцесса" Тогда

		Возврат Неопределено;

	КонецЕсли;

	НоваяСсылка = УстановитьСсылкуНового(Объект, Менеджер, СвойстваПоиска);

	Если УстанавливатьУОбъектаВсеСвойстваПоиска Тогда
		УстановитьРеквизитыПоискаУОбъекта(Объект, СвойстваПоиска, Неопределено, Ложь, Ложь);
	КонецЕсли;

	// Проверки
	Если ИмяТипа = "Документ"
		ИЛИ ИмяТипа = "Задача"
		ИЛИ ИмяТипа = "БизнесПроцесс" Тогда

		Если НЕ ЗначениеЗаполнено(Объект.Дата) Тогда

			Объект.Дата = ТекущаяДатаСеанса();

		КонецЕсли;

	КонецЕсли;

	// Если Владелец не установлен, то нужно поле добавить
	// в возможные поля поиска, а в событии ПОЛЯПОИСКА указать поля без Владельца, если по нему поиск реально не нужен.

	Если ЗаписыватьОбъектСразуПослеСоздания Тогда

		Если НЕ ОбъектыПоСсылкеЗагружатьБезПометкиУдаления Тогда
			Объект.ПометкаУдаления = Истина;
		КонецЕсли;

		Если ГНПП <> 0
			ИЛИ Не ОптимизированнаяЗаписьОбъектов Тогда

			ЗаписатьОбъектВИБ(Объект, Тип);

		Иначе

			// Записывать объект сразу не будем, а только запомним что нужно записать
			// сохраним эту информацию в специальном стеке объектов для записи
			// вернем и новую ссылку и сам объект, хотя он еще не записан.
			Если НоваяСсылка = Неопределено Тогда

				// Самостоятельно генерируем новую ссылку.
				НовыйУникальныйИдентификатор = Новый УникальныйИдентификатор;
				НоваяСсылка = Менеджер.ПолучитьСсылку(НовыйУникальныйИдентификатор);
				Объект.УстановитьСсылкуНового(НоваяСсылка);

			КонецЕсли;

			ДополнитьСтекНеЗаписанныхОбъектов(НПП, ГНПП, Объект, НоваяСсылка, Тип, ПараметрыОбъекта);

			Возврат НоваяСсылка;

		КонецЕсли;

	Иначе

		Возврат Неопределено;

	КонецЕсли;

	Возврат Объект.Ссылка;

КонецФункции

// Читает из файла узел свойства объекта, устанавливает значение свойства.
//
// Параметры:
//  Тип - Тип - тип значения свойства.
//  ОбъектНайден - Булево - если после выполнения функции - Ложь, то значит
//                 объект свойства не найден в информационной базе и создан новый.
//
// Возвращаемое значение:
//   Произвольный - значение свойства.
//

Функция ПрочитатьСвойство(Тип, ИмяПКО = "")

	Значение = Неопределено;
	НаличиеСвойств = Ложь;

	Пока ФайлОбмена.Прочитать() Цикл

		ИмяУзла = ФайлОбмена.ЛокальноеИмя;

		Если ИмяУзла = "Значение" Тогда

			ИскатьПоСвойству = одАтрибут(ФайлОбмена, одТипСтрока, "Свойство");
			Значение         = одЗначениеЭлемента(ФайлОбмена, Тип, ИскатьПоСвойству, ОбрезатьСтрокиСправа);
			НаличиеСвойств = Истина;

		ИначеЕсли ИмяУзла = "Ссылка" Тогда

			Значение       = НайтиОбъектПоСсылке(Тип, ИмяПКО);
			НаличиеСвойств = Истина;

		ИначеЕсли ИмяУзла = "Нпп" Тогда

			одПропустить(ФайлОбмена);

		ИначеЕсли ИмяУзла = "ГНпп" Тогда

			ФайлОбмена.Прочитать();
			ГНПП = Число(ФайлОбмена.Значение);
			Если ГНПП <> 0 Тогда
				Значение  = НайтиОбъектПоГлобальномуНомеру(ГНПП);
				НаличиеСвойств = Истина;
			КонецЕсли;

			ФайлОбмена.Прочитать();

		ИначеЕсли (ИмяУзла = "Свойство" ИЛИ ИмяУзла = "ЗначениеПараметра") И (ФайлОбмена.ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда

			Если Не НаличиеСвойств
				И ЗначениеЗаполнено(Тип) Тогда

				// Если вообще ничего нет - значит пустое значение.
				Значение = одПолучитьПустоеЗначение(Тип);

			КонецЕсли;

			Прервать;

		ИначеЕсли ИмяУзла = "Выражение" Тогда

			Выражение = одЗначениеЭлемента(ФайлОбмена, одТипСтрока, , Ложь);
			Значение  = ВычислитьВыражение(Выражение);

			НаличиеСвойств = Истина;

		ИначеЕсли ИмяУзла = "Пусто" Тогда

			Значение = одПолучитьПустоеЗначение(Тип);
			НаличиеСвойств = Истина;

		Иначе

			ЗаписатьВПротоколВыполнения(9);
			Прервать;

		КонецЕсли;

	КонецЦикла;

	Возврат Значение;

КонецФункции

Функция УстановитьРеквизитыПоискаУОбъекта(НайденныйОбъект, СвойстваПоиска, СвойстваПоискаНеЗамещать,
	НужноСравниватьСТекущимиРеквизитами = Истина, НЕЗаменятьСвойстваНеПодлежащиеИзменению = Истина)

	ИзмененыРеквизитыОбъекта = Ложь;

	Для каждого Свойство Из СвойстваПоиска Цикл

		Имя      = Свойство.Ключ;
		Значение = Свойство.Значение;

		Если НЕЗаменятьСвойстваНеПодлежащиеИзменению
			И СвойстваПоискаНеЗамещать[Имя] <> Неопределено Тогда

			Продолжить;

		КонецЕсли;

		Если Имя = "ЭтоГруппа"
			ИЛИ Имя = "{УникальныйИдентификатор}"
			ИЛИ Имя = "{ИмяПредопределенногоЭлемента}" Тогда

			Продолжить;

		ИначеЕсли Имя = "ПометкаУдаления" Тогда

			Если НЕ НужноСравниватьСТекущимиРеквизитами
				ИЛИ НайденныйОбъект.ПометкаУдаления <> Значение Тогда

				НайденныйОбъект.ПометкаУдаления = Значение;
				ИзмененыРеквизитыОбъекта = Истина;

			КонецЕсли;

		Иначе

			// Отличные реквизиты устанавливаем.
			Если НайденныйОбъект[Имя] <> NULL Тогда

				Если НЕ НужноСравниватьСТекущимиРеквизитами
					ИЛИ НайденныйОбъект[Имя] <> Значение Тогда

					НайденныйОбъект[Имя] = Значение;
					ИзмененыРеквизитыОбъекта = Истина;

				КонецЕсли;

			КонецЕсли;

		КонецЕсли;

	КонецЦикла;

	Возврат ИзмененыРеквизитыОбъекта;

КонецФункции


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало процедура `ВыгрузкаОбъектаВыборки`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Процедура ВыгрузкаОбъектаВыборки(Объект, Правило, Свойства=Неопределено, ВходящиеДанные=Неопределено, ВыборкаДляВыгрузкиДанных = Неопределено)
Если БезопасныйРежим Тогда
		УстановитьБезопасныйРежим(Истина);
		Для Каждого ИмяРазделителя Из РазделителиКонфигурации Цикл
			УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина);
		КонецЦикла;
	КонецЕсли;

	Если ФлагКомментироватьОбработкуОбъектов Тогда

		ОписаниеТипов = Новый ОписаниеТипов("Строка");
		ОбъектСтрока  = ОписаниеТипов.ПривестиЗначение(Объект);
		Если Не ПустаяСтрока(ОбъектСтрока) Тогда
			ПрОбъекта   = ОбъектСтрока + "  (" + ТипЗнч(Объект) + ")";
		Иначе
			ПрОбъекта   = ТипЗнч(Объект);
		КонецЕсли;

		СтрокаСообщения = ПодставитьПараметрыВСтроку(НСтр("ru = 'Выгрузка объекта: %1'"), ПрОбъекта);
		ЗаписатьВПротоколВыполнения(СтрокаСообщения, , Ложь, 1, 7);

	КонецЕсли;

	ИмяПКО			= Правило.ПравилоКонвертации;
	Отказ			= Ложь;
	ИсходящиеДанные	= Неопределено;

	// Глобальный обработчик ПередВыгрузкойОбъекта.
	Если ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Конвертация, "ПередВыгрузкойОбъекта"));

			Иначе

				Выполнить(Конвертация.ПередВыгрузкойОбъекта);

			КонецЕсли;

		Исключение

			ИмяОбработчика = НСтр("ru = '%1 (глобальный)'");
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя,
				ПодставитьПараметрыВСтроку(ИмяОбработчика, "ПередВыгрузкойОбъектаВыборки"),
				Объект);

		КонецПопытки;

		Если Отказ Тогда
			Возврат;
		КонецЕсли;

	КонецЕсли;

	// Обработчик ПередВыгрузкой
	Если Не ПустаяСтрока(Правило.ПередВыгрузкой) Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Правило, "ПередВыгрузкой"));

			Иначе

				Выполнить(Правило.ПередВыгрузкой);

			КонецЕсли;

		Исключение
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(33, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя, "ПередВыгрузкойОбъектаВыборки", Объект);
		КонецПопытки;

		Если Отказ Тогда
			Возврат;
		КонецЕсли;
    // TODO: допиши оставшуюся часть

[Assistant]
Процедура ВыгрузкаОбъектаВыборки(Объект, Правило, Свойства=Неопределено, ВходящиеДанные=Неопределено, ВыборкаДляВыгрузкиДанных = Неопределено)

	Если БезопасныйРежим Тогда
		УстановитьБезопасныйРежим(Истина);
		Для Каждого ИмяРазделителя Из РазделителиКонфигурации Цикл
			УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина);
		КонецЦикла;
	КонецЕсли;

	Если ФлагКомментироватьОбработкуОбъектов Тогда

		ОписаниеТипов = Новый ОписаниеТипов("Строка");
		ОбъектСтрока  = ОписаниеТипов.ПривестиЗначение(Объект);
		Если Не ПустаяСтрока(ОбъектСтрока) Тогда
			ПрОбъекта   = ОбъектСтрока + "  (" + ТипЗнч(Объект) + ")";
		Иначе
			ПрОбъекта   = ТипЗнч(Объект);
		КонецЕсли;

		СтрокаСообщения = ПодставитьПараметрыВСтроку(НСтр("ru = 'Выгрузка объекта: %1'"), ПрОбъекта);
		ЗаписатьВПротоколВыполнения(СтрокаСообщения, , Ложь, 1, 7);

	КонецЕсли;

	ИмяПКО			= Правило.ПравилоКонвертации;
	Отказ			= Ложь;
	ИсходящиеДанные	= Неопределено;

	// Глобальный обработчик ПередВыгрузкойОбъекта.
	Если ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Конвертация, "ПередВыгрузкойОбъекта"));

			Иначе

				Выполнить(Конвертация.ПередВыгрузкойОбъекта);

			КонецЕсли;

		Исключение

			ИмяОбработчика = НСтр("ru = '%1 (глобальный)'");
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя,
				ПодставитьПараметрыВСтроку(ИмяОбработчика, "ПередВыгрузкойОбъектаВыборки"),
				Объект);

		КонецПопытки;

		Если Отказ Тогда
			Возврат;
		КонецЕсли;

	КонецЕсли;

	// Обработчик ПередВыгрузкой
	Если Не ПустаяСтрока(Правило.ПередВыгрузкой) Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Правило, "ПередВыгрузкой"));

			Иначе

				Выполнить(Правило.ПередВыгрузкой);

			КонецЕсли;

		Исключение
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(33, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя, "ПередВыгрузкойОбъектаВыборки", Объект);
		КонецПопытки;

		Если Отказ Тогда
			Возврат;
		КонецЕсли;

	КонецЕсли;

	УзелСсылки = Неопределено;

	ВыгрузитьПоПравилу(Объект, , ИсходящиеДанные, , ИмяПКО, УзелСсылки, , , , ВыборкаДляВыгрузкиДанных);

	// Глобальный обработчик ПослеВыгрузкиОбъекта.
	Если ЕстьГлобальныйОбработчикПослеВыгрузкиОбъекта Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Конвертация, "ПослеВыгрузкиОбъекта"));

			Иначе

				Выполнить(Конвертация.ПослеВыгрузкиОбъекта);

			КонецЕсли;

		Исключение

			ИмяОбработчика = НСтр("ru = '%1 (глобальный)'");
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(69, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя,
				ПодставитьПараметрыВСтроку(ИмяОбработчика, "ПослеВыгрузкиОбъектаВыборки"),
				Объект);

		КонецПопытки;

	КонецЕсли;

	// Обработчик ПослеВыгрузки
	Если Не ПустаяСтрока(Правило.ПослеВыгрузки) Тогда

		Попытка

			Если ФлагРежимОтладкиОбработчиков Тогда

				Выполнить(ПолучитьСтрокуВызоваОбработчика(Правило, "ПослеВыгрузки"));

			Иначе

				Выполнить(Правило.ПослеВыгрузки);

			КонецЕсли;

		Исключение
			ЗаписатьИнформациюОбОшибкеОбработчикиПВД(34, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
				Правило.Имя, "ПослеВыгрузкиОбъектаВыборки", Объект);
		КонецПопытки;

	КонецЕсли;

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

// Параметры:
//   МетаданныеОбъекта - ОбъектМетаданных
//

Функция ПолучитьИмяПервогоРеквизитаМетаданных(МетаданныеОбъекта)

	НаборРеквизитов = МетаданныеОбъекта.Реквизиты; // КоллекцияОбъектовМетаданных

	Если НаборРеквизитов.Количество() = 0 Тогда
		Возврат "";
	КонецЕсли;

	Возврат НаборРеквизитов.Получить(0).Имя;

КонецФункции

Функция ПолучитьВыборкуДляВыгрузкиСОграничениями(Правило, ВыборкаДляПодстановкиВПКО = Неопределено, Свойства = Неопределено)

	ИмяМетаданных           = Правило.ИмяОбъектаДляЗапроса;

	СтрокаРазрешения = ?(ВыгружатьТолькоРазрешенные, " РАЗРЕШЕННЫЕ ", ""); // @Query-part-1

	ЭтоВыгрузкаРегистра = (Правило.ИмяОбъектаДляЗапроса = Неопределено);

	Если ЭтоВыгрузкаРегистра Тогда

		ИтоговоеОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(Свойства, Свойства.ИмяТипа, Правило.ИмяОбъектаДляЗапросаРегистра, Ложь);

		ТекстЗапроса =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		| *
		|
		| ,NULL КАК Активность
		| ,NULL КАК Регистратор
		| ,NULL КАК НомерСтроки
		| ,NULL КАК Период
		|
		|ИЗ &ИмяТаблицыМетаданных КАК ОбъектДляВыгрузки";

		Если Свойства.ПодчиненныйРегистратору Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",NULL КАК Активность", "");
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",NULL КАК Регистратор", "");
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",NULL КАК НомерСтроки", "");

		КонецЕсли;

		Если Свойства.Периодический Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",NULL КАК Период", "");

		КонецЕсли;

		Если ПустаяСтрока(СтрокаРазрешения) Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВЫБРАТЬ РАЗРЕШЕННЫЕ", "ВЫБРАТЬ");

		КонецЕсли;

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяТаблицыМетаданных", Правило.ИмяОбъектаДляЗапросаРегистра);
		ТекстЗапроса = ТекстЗапроса + Символы.ПС + ИтоговоеОграничениеПоДате;

		ПостроительОтчета.Текст = ТекстЗапроса;
		ПостроительОтчета.ЗаполнитьНастройки();

	Иначе

		ИтоговоеОграничениеПоДате = ПолучитьСтрокуОграниченияПоДатеДляЗапроса(Свойства, Свойства.ИмяТипа,, Ложь);

		ТекстЗапроса =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		| *
		|
		| ИЗ &ИмяТаблицыМетаданных КАК ОбъектДляВыгрузки";

		Если ПустаяСтрока(СтрокаРазрешения) Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВЫБРАТЬ РАЗРЕШЕННЫЕ", "ВЫБРАТЬ");

		КонецЕсли;

		Если Правило.ВыбиратьДанныеДляВыгрузкиОднимЗапросом <> Истина Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "*", "ОбъектДляВыгрузки.Ссылка КАК Ссылка");

		КонецЕсли;

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяТаблицыМетаданных", ИмяМетаданных);
		ТекстЗапроса = ТекстЗапроса + Символы.ПС + ИтоговоеОграничениеПоДате;

		ПсевдонимКомпоновщикаОтчета = СтрЗаменить(ИмяМетаданных, ".", "_");
		СтрокаУсловияКомпоновщика = "{ГДЕ Ссылка.* КАК ПсевдонимКомпоновщикаОтчета}";
		СтрокаУсловияКомпоновщика = СтрЗаменить(СтрокаУсловияКомпоновщика, "ПсевдонимКомпоновщикаОтчета", ПсевдонимКомпоновщикаОтчета);
		ТекстЗапроса = ТекстЗапроса + Символы.ПС + СтрокаУсловияКомпоновщика;

		ПостроительОтчета.Текст = ТекстЗапроса;

	КонецЕсли;

	ПостроительОтчета.Отбор.Сбросить();
	Если Правило.НастройкиПостроителя <> Неопределено Тогда
		ПостроительОтчета.УстановитьНастройки(Правило.НастройкиПостроителя);
	КонецЕсли;

	ПостроительОтчета.Параметры.Вставить("ДатаНачала", ДатаНачала);
	ПостроительОтчета.Параметры.Вставить("ДатаОкончания", ДатаОкончания);

	ПостроительОтчета.Выполнить();
	Выборка = ПостроительОтчета.Результат.Выбрать();

	Если Правило.ВыбиратьДанныеДляВыгрузкиОднимЗапросом Тогда
		ВыборкаДляПодстановкиВПКО = Выборка;
	КонецЕсли;

	Возврат Выборка;

КонецФункции

Функция ПолучитьВыборкуДляВыгрузкиПоПроизвольномуАлгоритму(ВыборкаДанных)

	Выборка = Неопределено;

	Если ТипЗнч(ВыборкаДанных) = Тип("ВыборкаИзРезультатаЗапроса") Тогда

		Выборка = ВыборкаДанных;

	ИначеЕсли ТипЗнч(ВыборкаДанных) = Тип("РезультатЗапроса") Тогда

		Выборка = ВыборкаДанных.Выбрать();

	ИначеЕсли ТипЗнч(ВыборкаДанных) = Тип("Запрос") Тогда

		РезультатЗапроса = ВыборкаДанных.Выполнить();
		Выборка          = РезультатЗапроса.Выбрать();

	КонецЕсли;

	Возврат Выборка;

КонецФункции

Функция ПолучитьСтрокуНабораКонстантДляВыгрузки(ТаблицаДанныхКонстантДляВыгрузки)

	СтрокаНабораКонстант = "";

	Для Каждого СтрокаТаблицы Из ТаблицаДанныхКонстантДляВыгрузки Цикл

		Если Не ПустаяСтрока(СтрокаТаблицы.Источник) Тогда

			СтрокаНабораКонстант = СтрокаНабораКонстант + ", " + СтрокаТаблицы.Источник;

		КонецЕсли;

	КонецЦикла;

	Если Не ПустаяСтрока(СтрокаНабораКонстант) Тогда

		СтрокаНабораКонстант = Сред(СтрокаНабораКонстант, 3);

	КонецЕсли;

	Возврат СтрокаНабораКонстант;

КонецФункции


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало процедура `ИнициализироватьМенеджерыИСообщения`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Процедура ИнициализироватьМенеджерыИСообщения()
Экспорт

	Если Менеджеры = Неопределено Тогда
		ИнициализацияМенеджеров();
	КонецЕсли;
    // TODO: допиши оставшуюся часть

[Assistant]
Процедура ИнициализироватьМенеджерыИСообщения() Экспорт

	Если Менеджеры = Неопределено Тогда
		ИнициализацияМенеджеров();
	КонецЕсли;

	Если одСообщения = Неопределено Тогда
		ИнициализацияСообщений();
	КонецЕсли;

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

// Возвращаемое значение:
//   Структура:
//     * ВерсияФормата - Строка
//     * Ид - Строка
//     * Наименование - Строка
//     * ДатаВремяСоздания - Дата
//     * ВерсияПлатформыИсточника - Строка
//     * СинонимКонфигурацииИсточника - Строка
//     * ВерсияКонфигурацииИсточника - Строка
//     * Источник - Строка
//     * ВерсияПлатформыПриемника - Строка
//     * СинонимКонфигурацииПриемника - Строка
//     * ВерсияКонфигурацииПриемника - Строка
//     * Приемник - Строка
//     * ПослеЗагрузкиПравилОбмена - Строка
//     * ПередВыгрузкойДанных - Строка
//     * ПередПолучениемИзмененныхОбъектов - Строка
//     * ПослеПолученияИнформацииОбУзлахОбмена - Строка
//     * ПослеВыгрузкиДанных - Строка
//     * ПередОтправкойИнформацииОбУдалении - Строка
//     * ПередВыгрузкойОбъекта - Строка
//     * ПослеВыгрузкиОбъекта - Строка
//     * ПередЗагрузкойОбъекта - Строка
//     * ПослеЗагрузкиОбъекта - Строка
//     * ПередКонвертациейОбъекта - Строка
//     * ПередЗагрузкойДанных - Строка
//     * ПослеЗагрузкиДанных - Строка
//     * ПослеЗагрузкиПараметров - Строка
//     * ПриПолученииИнформацииОбУдалении - Строка
//

Функция Конвертация()
	Возврат Конвертация;
КонецФункции

// Возвращаемое значение:
//   Структура:
//     * Имя - Строка
//     * ИмяТипа - Строка
//     * ТипСсылкиСтрокой - Строка
//     * Менеджер - СправочникМенеджер
//                - ДокументМенеджер
//                - РегистрСведенийМенеджер
//                - и т.п.
//     * ОбъектМД - ОбъектМетаданныхСправочник
//                - ОбъектМетаданныхДокумент
//                - ОбъектМетаданныхРегистрСведений
//                - и т.п.
//     * ПКО - см. НайтиПравило
//

Функция Менеджеры(Тип)
	Возврат Менеджеры[Тип];
КонецФункции

Процедура СоздатьСтруктуруКонвертации()

	Конвертация  = Новый Структура("ПередВыгрузкойДанных, ПослеВыгрузкиДанных, ПередВыгрузкойОбъекта, ПослеВыгрузкиОбъекта, ПередКонвертациейОбъекта, ПередЗагрузкойОбъекта, ПослеЗагрузкиОбъекта, ПередЗагрузкойДанных, ПослеЗагрузкиДанных");

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

// Инициализирует реквизиты обработки и модульные переменные.
//
// Параметры:
//  Нет.
//

Процедура ИнициализацияРеквизитовИМодульныхПеременных()

	КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 100;

	ЗапоминатьЗагруженныеОбъекты     = Истина;
	ЧислоХранимыхЗагруженныхОбъектов = 5000;

	ПараметрыИнициализированы        = Ложь;

	ВестиДополнительныйКонтрольЗаписиВXML = Ложь;
	НепосредственноеЧтениеВИБПриемнике = Ложь;
	НеВыводитьНикакихИнформационныхСообщенийПользователю = Ложь;

	Менеджеры    = Неопределено;
	одСообщения  = Неопределено;

	ФлагОшибки   = Ложь;

	СоздатьСтруктуруКонвертации();

	Правила      = Новый Структура;
	Алгоритмы    = Новый Структура;
	ДопОбработки = Новый Структура;
	Запросы      = Новый Структура;

	Параметры    = Новый Структура;
	СобытияПослеЗагрузкиПараметров = Новый Структура;

	ПараметрыДопОбработок = Новый Структура;

	// Типы
	одТипСтрока                  = Тип("Строка");
	одТипБулево                  = Тип("Булево");
	одТипЧисло                   = Тип("Число");
	одТипДата                    = Тип("Дата");
	одТипХранилищеЗначения       = Тип("ХранилищеЗначения");
	одТипУникальныйИдентификатор = Тип("УникальныйИдентификатор");
	одТипДвоичныеДанные          = Тип("ДвоичныеДанные");
	одТипВидДвиженияНакопления   = Тип("ВидДвиженияНакопления");
	одТипУдалениеОбъекта         = Тип("УдалениеОбъекта");
	одТипВидСчета			     = Тип("ВидСчета");
	одТипТип                     = Тип("Тип");
	одТипСоответствие            = Тип("Соответствие");

	ЗначениеПустаяДата		   = Дата('00010101');

	мXMLПравила  = Неопределено;

	// Типы узлов xml

	одТипУзлаXML_КонецЭлемента  = ТипУзлаXML.КонецЭлемента;
	одТипУзлаXML_НачалоЭлемента = ТипУзлаXML.НачалоЭлемента;
	одТипУзлаXML_Текст          = ТипУзлаXML.Текст;

	мСписокМакетовПравилОбмена  = Новый СписокЗначений;

	Для каждого Макет Из Метаданные().Макеты Цикл
		мСписокМакетовПравилОбмена.Добавить(Макет.Синоним);
	КонецЦикла;

	мФайлПротоколаДанных = Неопределено;

	ТипИнформационнойБазыДляПодключения = Истина;
	АутентификацияWindowsИнформационнойБазыДляПодключения = Ложь;
	ВерсияПлатформыИнформационнойБазыДляПодключения = "V8";
	ОткрыватьПротоколыОбменаПослеВыполненияОпераций = Ложь;
	ЗагружатьДанныеВРежимеОбмена = Истина;
	ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;
	ЗаписыватьРегистрыНаборамиЗаписей = Истина;
	ОптимизированнаяЗаписьОбъектов = Истина;
	ВыгружатьТолькоРазрешенные = Истина;
	ОбъектыПоСсылкеЗагружатьБезПометкиУдаления = Истина;
	ИспользоватьОтборПоДатеДляВсехОбъектов = Истина;

	мСоответствиеПустыхЗначенийТипов = Новый Соответствие;
	мСоответствиеОписаниеТипов = Новый Соответствие;

	мБылиПрочитаныПравилаОбменаПриЗагрузке = Ложь;

	ОбработчикиСобытийЧитаемИзФайлаПравилОбмена = Истина;

	мРежимыОбработкиДанных = Новый Структура;
	мРежимыОбработкиДанных.Вставить("Выгрузка",                   0);
	мРежимыОбработкиДанных.Вставить("Загрузка",                   1);
	мРежимыОбработкиДанных.Вставить("ЗагрузкаПравилОбмена",       2);
	мРежимыОбработкиДанных.Вставить("ЭкспортОбработчиковСобытий", 3);

	РежимОбработкиДанных = мРежимыОбработкиДанных.Выгрузка;

	мРежимыОтладкиАлгоритмов = Новый Структура;
	мРежимыОтладкиАлгоритмов.Вставить("НеИспользовать",   0);
	мРежимыОтладкиАлгоритмов.Вставить("ПроцедурныйВызов", 1);
	мРежимыОтладкиАлгоритмов.Вставить("ИнтеграцияКода",   2);

	РежимОтладкиАлгоритмов = мРежимыОтладкиАлгоритмов.НеИспользовать;

	// Модули стандартных подсистем.
	Попытка
		// Вызов ВычислитьВБезопасномРежиме не требуется, т.к. для вычисления передается строковый литерал.
		МодульДатыЗапретаИзменения = Вычислить("ДатыЗапретаИзменения");
	Исключение
		МодульДатыЗапретаИзменения = Неопределено;
	КонецПопытки;

	РазделителиКонфигурации = Новый Массив;
	Для Каждого ОбщийРеквизит Из Метаданные.ОбщиеРеквизиты Цикл
		Если ОбщийРеквизит.РазделениеДанных = Метаданные.СвойстваОбъектов.РазделениеДанныхОбщегоРеквизита.Разделять Тогда
			РазделителиКонфигурации.Добавить(ОбщийРеквизит.Имя);
		КонецЕсли;
	КонецЦикла;
	РазделителиКонфигурации = Новый ФиксированныйМассив(РазделителиКонфигурации);

	ВременныйКаталогРаботыСФайлами = ПолучитьИмяВременногоФайла();
	УдалитьФайлы(ВременныйКаталогРаботыСФайлами);

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

Функция ОпределитьДостаточностьПараметровДляПодключенияКИнформационнойБазе(СтруктураПодключения, СтрокаПодключения = "", СтрокаСообщенияОбОшибке = "")

	НаличиеОшибок = Ложь;

	Если СтруктураПодключения.ФайловыйРежим  Тогда

		Если ПустаяСтрока(СтруктураПодключения.КаталогИБ) Тогда

			СтрокаСообщенияОбОшибке = НСтр("ru = 'Не задан каталог информационной базы-приемника'");

			СообщитьПользователю(СтрокаСообщенияОбОшибке);

			НаличиеОшибок = Истина;

		КонецЕсли;

		СтрокаПодключения = "File=""" + СтруктураПодключения.КаталогИБ + """";
	Иначе

		Если ПустаяСтрока(СтруктураПодключения.ИмяСервера) Тогда

			СтрокаСообщенияОбОшибке = НСтр("ru = 'Не задано имя сервера 1С:Предприятия информационной базы-приемника'");

			СообщитьПользователю(СтрокаСообщенияОбОшибке);

			НаличиеОшибок = Истина;

		КонецЕсли;

		Если ПустаяСтрока(СтруктураПодключения.ИмяИБНаСервере) Тогда

			СтрокаСообщенияОбОшибке = НСтр("ru = 'Не задано имя информационной базы-приемника на сервере 1С:Предприятия'");

			СообщитьПользователю(СтрокаСообщенияОбОшибке);

			НаличиеОшибок = Истина;

		КонецЕсли;

		СтрокаПодключения = "Srvr = """ + СтруктураПодключения.ИмяСервера + """; Ref = """ + СтруктураПодключения.ИмяИБНаСервере + """";

	КонецЕсли;

	Возврат НЕ НаличиеОшибок;

КонецФункции


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало процедура `ПриСозданииНаСервере`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(ОтветственныйЗаОбработкуПерсональныхДанных) Тогда
		ОтветственныйЗаОбработкуПерсональныхДанных = Пользователи.ТекущийПользователь();
	КонецЕсли;

	Элементы.ПричинаУничтожения.СписокВыбора.ЗагрузитьЗначения(
		ОбщегоНазначения.ВыгрузитьКолонку(Документы.АктОбУничтоженииПерсональныхДанных.ПричиныУничтожения(), "Значение"));
	Элементы.СпособУничтожения.СписокВыбора.ЗагрузитьЗначения(
		ОбщегоНазначения.ВыгрузитьКолонку(Документы.АктОбУничтоженииПерсональныхДанных.СпособыУничтожения(), "Значение"));
    // TODO: допиши оставшуюся часть

[Assistant]
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Не ЗначениеЗаполнено(ОтветственныйЗаОбработкуПерсональныхДанных) Тогда
		ОтветственныйЗаОбработкуПерсональныхДанных = Пользователи.ТекущийПользователь();
	КонецЕсли;

	Элементы.ПричинаУничтожения.СписокВыбора.ЗагрузитьЗначения(
		ОбщегоНазначения.ВыгрузитьКолонку(Документы.АктОбУничтоженииПерсональныхДанных.ПричиныУничтожения(), "Значение"));
	Элементы.СпособУничтожения.СписокВыбора.ЗагрузитьЗначения(
		ОбщегоНазначения.ВыгрузитьКолонку(Документы.АктОбУничтоженииПерсональныхДанных.СпособыУничтожения(), "Значение"));

	СубъектыИОрганизации = Параметры.СубъектыИОрганизации.ВыгрузитьЗначения();
	Субъекты = ОбщегоНазначения.ВыгрузитьКолонку(СубъектыИОрганизации, "Субъект") ;
	Организации = ОбщегоНазначения.ВыгрузитьКолонку(СубъектыИОрганизации, "Организация") ;
	ТекстПредупреждения = ТекстПредупреждения(Субъекты);

	УстановитьВидимостьОрганизации(Организации);

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

	Если ВсеОрганизацииЗаполнены Тогда
		ИндексОрганизации = ПроверяемыеРеквизиты.Найти("Организация");
		Если ИндексОрганизации <> Неопределено Тогда
			ПроверяемыеРеквизиты.Удалить(ИндексОрганизации);
		КонецЕсли;
	КонецЕсли;

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

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура СоздатьАкты(Команда)

	Если Не ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;

	Результат = Новый Структура;
	Результат.Вставить("Организация", Организация);
	Результат.Вставить("ПричинаУничтожения", ПричинаУничтожения);
	Результат.Вставить("СпособУничтожения", СпособУничтожения);
	Результат.Вставить("ОтветственныйЗаОбработкуПерсональныхДанных", ОтветственныйЗаОбработкуПерсональныхДанных);

	Закрыть(Результат);

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

&НаКлиенте
Процедура Отменить(Команда)

	Закрыть();

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

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

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

// Параметры:
//  Субъекты - Массив из ОпределяемыйТип.СубъектПерсональныхДанных
//
// Возвращаемое значение:
//  ФорматированнаяСтрока
//
&НаСервереБезКонтекста
Функция ТекстПредупреждения(Субъекты)

	ПредставлениеОдного = НСтр("ru = 'Для выбранного субъекта будет создан акт'");
	ПредставлениеНескольких = НСтр("ru = 'Для %1 выбранных субъектов будут созданы акты'");

	НачалоСтроки = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
		СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ';%1;;%2;%2;'"),
			ПредставлениеОдного, ПредставлениеНескольких),
		Субъекты.Количество());

	ШаблонСтроки = НСтр("ru = '%1, в результате чего персональные данные будут полностью уничтожены.
		|Обратите внимание, что это необратимая операция, и уничтоженные данные нельзя будет восстановить.'");

	ФорматированнаяСтрока = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, НачалоСтроки);

	Возврат ФорматированнаяСтрока;

КонецФункции

&НаСервере
Процедура УстановитьВидимостьОрганизации(Организации)

	ВсеОрганизацииЗаполнены = Истина;
	ВсеОрганизацииПустые = Истина;

	ЗаполненныеОрганизации = Новый Массив;

	Для Каждого Организация Из Организации Цикл
		Если ЗначениеЗаполнено(Организация) Тогда
			ВсеОрганизацииПустые = Ложь;
			ЗаполненныеОрганизации.Добавить(Организация);
		Иначе
			ВсеОрганизацииЗаполнены = Ложь;
		КонецЕсли;
	КонецЦикла;

	Если ВсеОрганизацииПустые Тогда
		ТекстОрганизации = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = 'Акты формируются от имени:'"));
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТекстОрганизации", "Высота", 1);
		Возврат;
	КонецЕсли;

	ОрганизацииСтрокой = СтрСоединить(ЗаполненныеОрганизации, ", ");

	Если ВсеОрганизацииЗаполнены Тогда
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Организация", "Видимость", Ложь);
		ТекстОрганизации = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = 'Акты формируются от имени: %1.'"),
			ОрганизацииСтрокой);
	Иначе
		ТекстОрганизации = СтроковыеФункции.ФорматированнаяСтрока(
			НСтр("ru = 'Акты формируются от имени: %1, а также организации:'"), ОрганизацииСтрокой);
	КонецЕсли;

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

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


[System] Ты пишешь корректный код на 1С:Enterprise Script и отвечаешь только кодом, если тебя просят дописать код.

[User]
Дополни код на 1С. Ниже начало процедура `ОчиститьАгрегатыПоРегистрамЗавершение`.
Сохрани стиль и синтаксис, верни только готовый код без пояснений.

Процедура ОчиститьАгрегатыПоРегистрамЗавершение(Ответ, ДополнительныеПараметры)
Экспорт

	Если Ответ = КодВозвратаДиалога.Да Тогда

		ПараметрыИтогов = Новый Структура;
		ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок",  НСтр("ru = 'Очистка агрегатов ...'"));
		ПараметрыИтогов.Вставить("ПослеПроцесса",          НСтр("ru = 'Очистка агрегатов завершена'"));
		ПараметрыИтогов.Вставить("Действие",               "ОчиститьАгрегаты");
		ПараметрыИтогов.Вставить("МассивСтрок",            Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки);
		ПараметрыИтогов.Вставить("Поле",                   "Наименование");
    // TODO: допиши оставшуюся часть

[Assistant]
Процедура ОчиститьАгрегатыПоРегистрамЗавершение(Ответ, ДополнительныеПараметры) Экспорт

	Если Ответ = КодВозвратаДиалога.Да Тогда

		ПараметрыИтогов = Новый Структура;
		ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок",  НСтр("ru = 'Очистка агрегатов ...'"));
		ПараметрыИтогов.Вставить("ПослеПроцесса",          НСтр("ru = 'Очистка агрегатов завершена'"));
		ПараметрыИтогов.Вставить("Действие",               "ОчиститьАгрегаты");
		ПараметрыИтогов.Вставить("МассивСтрок",            Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки);
		ПараметрыИтогов.Вставить("Поле",                   "Наименование");
		ПараметрыИтогов.Вставить("Значение1",              Неопределено);
		ПараметрыИтогов.Вставить("Значение2",              Неопределено);
		ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru = 'Не удалось очистить агрегаты.'"));

		ИзменитьАгрегатыКлиент(ПараметрыИтогов);

	КонецЕсли;

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

&НаКлиенте

Процедура ПересчитатьИтогиЗаПериодЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт

	Если ВыбранноеЗначение = Неопределено Тогда
		Возврат;
	КонецЕсли;

	ПериодПерерасчетаРегистров = ВыбранноеЗначение;

	ПараметрыИтогов = Новый Структура;
	ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок",  НСтр("ru = 'Пересчет итогов за период...'"));
	ПараметрыИтогов.Вставить("ПослеПроцесса",          НСтр("ru = 'Пересчет итогов за период завершен.'"));
	ПараметрыИтогов.Вставить("Действие",               "ПересчитатьИтогиЗаПериод");
	ПараметрыИтогов.Вставить("МассивСтрок",            Элементы.СписокИтогов.ВыделенныеСтроки);
	ПараметрыИтогов.Вставить("Поле",                   "Наименование");
	ПараметрыИтогов.Вставить("Значение1",              ПериодПерерасчетаРегистров.ДатаНачала);
	ПараметрыИтогов.Вставить("Значение2",              ПериодПерерасчетаРегистров.ДатаОкончания);
	ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru = 'Не удалось пересчитать итоги за период.'"));

	УправлениеИтогами(ПараметрыИтогов);

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

////////////////////////////////////////////////////////////////////////////////
// Клиент

&НаКлиенте

Процедура УстановитьФильтрСпискаАгрегатов()

	ТекущиеДанные = Элементы.АгрегатыПоРегистрам.ТекущиеДанные;

	Если ТекущиеДанные <> Неопределено Тогда
		Фильтр = Новый ФиксированнаяСтруктура("ИмяМетаданного", ТекущиеДанные.ИмяМетаданного);
		НовыйЗаголовок = Префикс() +  " " + ТекущиеДанные.Наименование;
	Иначе
		Фильтр = Новый ФиксированнаяСтруктура("ИмяМетаданного", "");
		НовыйЗаголовок = Префикс();
	КонецЕсли;

	Элементы.СписокАгрегатов.ОтборСтрок = Фильтр;

	Если Элементы.СписокАгрегатов.Заголовок <> НовыйЗаголовок Тогда
		Элементы.СписокАгрегатов.Заголовок = НовыйЗаголовок;
	КонецЕсли;

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

&НаКлиенте

Процедура ИзменитьАгрегатыКлиент(Знач ПараметрыИтогов, Знач ОчищатьСообщения = Истина)

	Результат = Истина;
	Если ОчищатьСообщения Тогда
		ОчиститьСообщения();
	КонецЕсли;
	Выбранные = ПараметрыИтогов.МассивСтрок;

	Если Выбранные.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;

	ШагПроцесса = 100/Выбранные.Количество();

	Если ПараметрыИтогов.Свойство("ГрупповаяОбработка") Тогда
		ТребуетсяПрерватьПослеОшибки = ?(ПараметрыИтогов.ГрупповаяОбработка, Ложь, ПрерыватьПриОшибке);
	Иначе
		ТребуетсяПрерватьПослеОшибки = ПрерыватьПриОшибке;
	КонецЕсли;

	Для Счетчик = 1 По Выбранные.Количество() Цикл
		Если ТипЗнч(Выбранные[Счетчик - 1]) = Тип("Число") Тогда
			ВыбраннаяСтрока = АгрегатыПоРегистрам.НайтиПоИдентификатору(Выбранные[Счетчик-1]);
		Иначе
			ВыбраннаяСтрока = Выбранные[Счетчик-1];
		КонецЕсли;

		ПолеСообщенияОбОшибке = "";
		Если Не ПустаяСтрока(ПараметрыИтогов.Поле) Тогда
			ПолеСообщенияОбОшибке = "АгрегатыПоРегистрам[" + Формат(Выбранные[Счетчик-1], "ЧГ=0") + "]." + ПараметрыИтогов.Поле;
		КонецЕсли;

		Если Не ВыбраннаяСтрока.РежимАгрегатов
			И ВРег(ПараметрыИтогов.Действие) <> ВРег("УстановитьРежимАгрегатов") Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(
				НСтр("ru = 'Операция невозможна в режиме итогов'"),
				,
				ПолеСообщенияОбОшибке);
			Продолжить;
		КонецЕсли;

		Состояние(ПараметрыИтогов.ОбрабатыватьЗаголовок, Счетчик * ШагПроцесса, ВыбраннаяСтрока.Наименование);

		ПараметрыСервера = Новый Структура;
		ПараметрыСервера.Вставить("ИмяРегистра",        ВыбраннаяСтрока.ИмяМетаданного);
		ПараметрыСервера.Вставить("Действие",           ПараметрыИтогов.Действие);
		ПараметрыСервера.Вставить("ЗначениеДействия1",  ПараметрыИтогов.Значение1);
		ПараметрыСервера.Вставить("ЗначениеДействия2",  ПараметрыИтогов.Значение2);
		ПараметрыСервера.Вставить("СообщениеОбОшибке",  ПараметрыИтогов.ТекстСообщенияОбОшибке);
		ПараметрыСервера.Вставить("ПолеФормы",          ПолеСообщенияОбОшибке);
		ПараметрыСервера.Вставить("ИдентификаторФормы", УникальныйИдентификатор);
		Результат = ИзменитьАгрегатыСервер(ПараметрыСервера);

		ОбработкаПрерыванияПользователя();

		Если Не Результат.Успешно И ТребуетсяПрерватьПослеОшибки Тогда
			Прервать;
		КонецЕсли;

	КонецЦикла;

	Если ВРег(ПараметрыИтогов.Действие) = ВРег("УстановитьРежимАгрегатов")
		Или ВРег(ПараметрыИтогов.Действие) = ВРег("УстановитьИспользованиеАгрегатов") Тогда
		ОбновитьСписокИтоговНаСервере();
	КонецЕсли;

	ОбновитьАгрегатыПоРегистрамНаСервере();

	Состояние(ПараметрыИтогов.ПослеПроцесса);
	УстановитьФильтрСпискаАгрегатов();

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

&НаКлиенте


[System] Ты анализируешь код 1С и подбираешь точные имена для процедур и функций.

[User]
Восстанови осмысленное имя процедуры или функции на 1С по её телу. Верни только полную сигнатуру первой строки.

Процедура ИмяФункции(Отказ, СтандартнаяОбработка)

	// предусмотрено два режима: ПинКод и ПарольПользователя
	РежимВвода = Параметры.РежимВвода;
	МобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент();
	НастройкиПользователя = Параметры.НастройкиПользователя;
	ВозможноСохранять = Параметры.ВозможноСохранять;
	Логин = Параметры.Логин;
	СкрыватьПароль = Истина;

	НастроитьУсловноеОформление();
	ПодготовитьФорму(Параметры);
	УправлениеФормой(ЭтотОбъект);

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

&НаКлиенте

Процедура ПриОткрытии(Отказ)

	СервисКриптографииDSSСлужебныйКлиент.ПриОткрытииФормы(ЭтотОбъект, ПрограммноеЗакрытие);
	ПодключитьОбработчикОжидания("ОбновитьРазмерыФормы", 0.2, Истина);

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

&НаКлиенте

Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

	Если СервисКриптографииDSSСлужебныйКлиент.ПередЗакрытиемФормы(
			ЭтотОбъект,
			Отказ,
			ПрограммноеЗакрытие,
			ЗавершениеРаботы) Тогда
		ЗакрытьФорму(РезультатРаботы(Ложь));
	КонецЕсли;

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте

Процедура ПарольНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	ОткрытьВидимостьЭлемента("Пароль");

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

&НаКлиенте

Процедура СертификатНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	ОписаниеСледующее 	= Новый ОписаниеОповещения("ВыбратьСертификатПослеПолучения", ЭтотОбъект);
	ПараметрыОперации	= СервисКриптографииDSSСлужебныйКлиент.ПодготовитьПараметрыОперации();
	СервисКриптографииDSSКлиент.ЗагрузитьДанныеИзФайла(ОписаниеСледующее, ".pfx", , Истина, ПараметрыОперации);

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

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

#Область ОбработчикиКомандФормы

&НаКлиенте

Процедура Отмена(Команда)

	ЗакрытьФорму(РезультатРаботы(Ложь));

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

&НаКлиенте

Процедура ОК(Команда)

	ПодтвердитьПароль();

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

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

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

&НаКлиенте

Процедура ОбновитьРазмерыФормы()

	Элементы.ЗаголовокФормы.Видимость = НЕ Элементы.ЗаголовокФормы.Видимость;
	Элементы.ЗаголовокФормы.Видимость = НЕ Элементы.ЗаголовокФормы.Видимость;

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

&НаКлиенте

Функция РезультатРаботы(Подтвержден = Истина)

	ОбъекПароля = ЗакрытьДанныеПользователя(Пароль, Подтвержден);

	Результат = СервисКриптографииDSSКлиент.ОтветСервисаПоУмолчанию(Подтвержден);
	Результат.Вставить("Результат", ОбъекПароля);
	Результат.Вставить("Сохранить", Сохранить);
	Если ДанныеСертификата <> Неопределено Тогда
		Результат.Вставить("СертификатАвторизации", ДанныеСертификата);
	КонецЕсли;

	Если НЕ Подтвержден Тогда
		СервисКриптографииDSSСлужебныйКлиент.ПолучитьОписаниеОшибки(Результат, "ОтказПользователя");
	КонецЕсли;

	Возврат Результат;

КонецФункции

&НаКлиенте

Функция ЗакрытьДанныеПользователя(ВведенноеЗначение, Подтвержден)

	Если Подтвержден Тогда
		Результат = СервисКриптографииDSSКлиент.ПодготовитьОбъектПароля(ВведенноеЗначение);
	Иначе
		Результат = СервисКриптографииDSSКлиент.ПодготовитьОбъектПароля(Неопределено);
	КонецЕсли;

	Возврат Результат;

КонецФункции

&НаКлиенте

Процедура ЗакрытьФорму(РезультатЗакрытия)

	ПрограммноеЗакрытие = Истина;
	Закрыть(РезультатЗакрытия);

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

&НаКлиенте

Процедура ПодтвердитьПароль()

	Если РежимВвода = "ПинКод" И НЕ ЗначениеЗаполнено(Пароль) Тогда
		ТекущийЭлемент = Элементы.Пароль;
		Ошибка = Истина;
		ПодключитьОбработчикОжидания("ОтключитьОшибку", 2, Истина);

	Иначе
		ЗакрытьФорму(РезультатРаботы(Истина));

	КонецЕсли;

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

&НаКлиенте

Процедура ОтключитьОшибку()

	Ошибка = Ложь;

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

&НаКлиенте

Процедура ОткрытьВидимостьЭлемента(ИмяЭлемента)

	ЭлементПароля = Элементы[ИмяЭлемента];
	Если ЭлементПароля.РежимПароля Тогда
		Элементы[ИмяЭлемента].КартинкаКнопкиВыбора = КартинкаОткрыть;
		ЭтотОбъект[ИмяЭлемента] = Элементы[ИмяЭлемента].ТекстРедактирования;
		ЭлементПароля.РежимПароля = Ложь;
		Если СкрыватьПароль Тогда
			ПодключитьОбработчикОжидания("ПодключаемыйОтключитьВидимостьПароля", 2, Истина);
		КонецЕсли;
	ИначеЕсли СкрыватьПароль Тогда
		ЭлементПароля.РежимПароля = Истина;
		Элементы[ИмяЭлемента].КартинкаКнопкиВыбора = КартинкаЗакрыть;
	КонецЕсли;

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

&НаКлиенте

Процедура ПодключаемыйОтключитьВидимостьПароля()

	ЭлементФормы = Элементы["Пароль"];
	Если НЕ ЭлементФормы.РежимПароля Тогда
		ЭлементФормы.КартинкаКнопкиВыбора = КартинкаЗакрыть;
		ЭлементФормы.РежимПароля = Истина;
	КонецЕсли;

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

&НаКлиенте

Процедура ВыбратьСертификатПослеПолучения(РезультатВызова, ДополнительныеПараметры) Экспорт

	Если РезультатВызова.Выполнено Тогда
		ДанныеСертификата = РезультатВызова.Результат.ДанныеФайла;
		УправлениеФормой(ЭтотОбъект);
		ТекущийЭлемент = Элементы.Пароль;
	КонецЕсли;

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

&НаСервере

Процедура ПодготовитьФорму(ПараметрыФормы)

	КодЯзыка = СервисКриптографииDSSСлужебный.КодЯзыка();

	Заголовок = НСтр("ru = 'Введите пароль'", КодЯзыка);
	Элементы.Пароль.Заголовок = НСтр("ru = 'Пароль'", КодЯзыка);

	Если РежимВвода = "ПинКод" Тогда
		ЗаголовокФормы = НСтр("ru = 'Введите пароль для доступа к файлу сертификата авторизации'", КодЯзыка);
	Иначе
		ЗаголовокФормы = НСтр("ru = 'Введите пароль для авторизации на сервере DSS'", КодЯзыка);
		Элементы.ПредставлениеСертификата.Видимость = Ложь;
	КонецЕсли;

	Если ЗначениеЗаполнено(ПараметрыФормы.ПояснениеОперации) Тогда
		ЗаголовокФормы = ПараметрыФормы.ПояснениеОперации;
	КонецЕсли;

	Элементы.ЗаголовокФормы.Заголовок = ЗаголовокФормы;

	КартинкаОткрыть = СервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ВводимыеСимволыСкрыты");
	КартинкаЗакрыть = СервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ВводимыеСимволыВидны");

	Сохранить = ВозможноСохранять = "Обязательно";

	Элементы.Пароль.КартинкаКнопкиВыбора = КартинкаЗакрыть;

	Если НастройкиПользователя <> Неопределено Тогда
		Сервер = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(НастройкиПользователя.Подключение, "Сервер", "");
		Логин = НастройкиПользователя.Логин;
		КоличествоПопыток = НастройкиПользователя.НеудачныхПопыток;
	КонецЕсли;

	Если КоличествоПопыток > 0 Тогда
		ТекстЗаголовка = НСтр("ru = 'Количество неудачных попыток: %1'", КодЯзыка);
		Элементы.Пароль.РасширеннаяПодсказка.Заголовок =
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстЗаголовка, КоличествоПопыток);
	КонецЕсли;

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

&НаСервере

Процедура НастроитьУсловноеОформление()

	ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

	ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("BackColor");
	ЭлементЦветаОформления.Значение = ЦветаСтиля.ЦветФонаПредупреждения;
	ЭлементЦветаОформления.Использование = Истина;

	ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ОтметкаНезаполненного");
	ЭлементЦветаОформления.Значение = Истина;
	ЭлементЦветаОформления.Использование = Истина;

	ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбораДанных.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Ошибка");
	ЭлементОтбораДанных.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбораДанных.ПравоеЗначение = Истина;
	ЭлементОтбораДанных.Использование  = Истина;

	ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
	ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Пароль");
	ЭлементОформляемогоПоля.Использование = Истина;

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

&НаКлиентеНаСервереБезКонтекста

[Assistant] Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)