Помощник исправления остатков товаров организаций / Основная форма / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ПроверитьРазрешениеДоступа(Отказ);
	ИнициализироватьПомощник();
	
КонецПроцедуры

&НаСервере
Процедура ИнициализироватьПомощник()
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ВариантИсправленияРазвернутогоСальдо = "СформироватьИсправленияРазвернутогоСальдо";
	ЭтоУправлениеТорговлейБазовая = ПолучитьФункциональнуюОпцию("БазоваяВерсия")
									И ПолучитьФункциональнуюОпцию("УправлениеТорговлей");
	ЭтоВнешняяОбработка = ТипЗнч(ОбработкаОбъект) <> Тип("ОбработкаОбъект.ПомощникИсправленияОстатковТоваровОрганизаций");
	АдресДополнительныхПараметровРезультатаКонтроляОформления = ПоместитьВоВременноеХранилище(Неопределено,
																								УникальныйИдентификатор);
	
	Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить() Тогда
		ПроводитьБезКонтроляИсходноеЗначение = ПараметрыСеанса.ПроводитьБезКонтроляОстатковТоваровОрганизаций;
	КонецЕсли;
	
	
	
	Если ЭтоУправлениеТорговлейБазовая Тогда
		ТекстОписанияПомощника = НСтр("ru = '1. Анализ и вывод подробной информации о проблемах
										|2. Оформление недостающих документов по данным складского учета
										|3. Переформирование резервов по отрицательным остаткам
										|4. Исправление развернутого сальдо
										|5. Оформление оприходований товаров'");
		ТекстЗаголовкаШага6 = НСтр("ru = 'Шаг 5. Оформление оприходований товаров'");
		
		Элементы.ДекорацияЗаголовокШаг6.Заголовок = ТекстЗаголовкаШага6;
		Элементы.ДекорацияШаг0Описание2.Заголовок = ТекстОписанияПомощника;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	НастроитьЭлементыФормы();
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если Не ЗавершениеРаботы Тогда
		УстановитьПроводитьБезКонтроляНаСервере(ПроводитьБезКонтроляИсходноеЗначение);
	КонецЕсли;
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура КоличествоПозицийОтрицательныйОстатокНажатие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьОтчетОтрицательныеОстаткиНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПозицийРазвернутоеСальдоНажатие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьОтчетРазвернутоеСальдоНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияДиагностикаОтрицательныхОстатковПрочиеРешения2ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	

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

&НаКлиенте
Процедура ДекорацияДиагностикаОтрицательныхОстатковПрочиеРешения3ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	

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

&НаКлиенте
Процедура Шаг2ОтчетПоНедостающимДокументамОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
	
	СтандартнаяОбработка = Ложь;
	
	Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
		ДоступныеДействия = Новый Массив;
		ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
		ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(
			АдресДанныхРасшифровкиРезультатаКонтроляОформления, 
			Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыРезультатаКонтроляОформления));
	    ОбработкаРасшифровки.ПоказатьВыборДействия(
		    Новый ОписаниеОповещения("ОбработкаВыбораДействияРасшифровки", ЭтаФорма),
		    Расшифровка,
			ДоступныеДействия,,
			Истина,
			Элемент);
	ИначеЕсли ТипЗнч(Расшифровка) = Тип("Строка") Тогда
		ОтчетыУТКлиентПереопределяемый.ОбработатьРасшифровкуКонтрольОформленияДокументовТовародвижения(
			ЭтаФорма, Расшифровка, "ОповещенияОЗакрытииРабочегоМестаОформленияДокументов",
			ТекущаяДатаСервера(), Объект.ОтборыДляФормированияОтчетаКонтроля);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПерейтиКНастройкамПередачиТоваровМеждуОрганизациямиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	ПроверитьРольНастройкаНСИДоступна(СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура КонтрольОформленияДетализацияПоПозициямПриИзменении(Элемент)
	ПараметрыМетодов = Новый Структура;
	ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
	ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
		АдресДополнительныхПараметровРезультатаКонтроляОформления);
	ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
		КонтрольОформленияДетализацияПоПозициям);
	ВыполнитьМетодыОбъекта(
		"ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
		ПараметрыМетодов,
		"ЗавершитьФормированиеРезультатаКонтроляОформления");
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияШаг6СмТакжеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура НавигацияНазад(Команда)
	ПереключитьСтраницу(-1);
КонецПроцедуры

&НаКлиенте
Процедура НавигацияДалее(Команда)
	ПереключитьСтраницу(1);
КонецПроцедуры

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

&НаКлиенте
Процедура НавигацияЗакрыть(Команда)
	Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанные(Команда)
	
	НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
	Если НомерСтраницы = 2 Тогда
		ПараметрыМетодов = Новый Структура;
		ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
		ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
			АдресДополнительныхПараметровРезультатаКонтроляОформления);
		ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
			КонтрольОформленияДетализацияПоПозициям);
		ВыполнитьМетодыОбъекта(
			"ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
			ПараметрыМетодов,
			"ЗавершитьФормированиеРезультатаКонтроляОформления");
	ИначеЕсли НомерСтраницы = 3 Тогда
		ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьТребуетсяПереформированиеРезервов");
	ИначеЕсли НомерСтраницы = 4 Тогда
		ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо");
	ИначеЕсли НомерСтраницы = 6 Тогда
		ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьРаспоряженияНаОформлениеОприходований");
	Иначе
		ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗапуститьПереформированиеРезервов(Команда)
	ВыполнитьМетодыОбъекта(
		"СформироватьНовыеРезервы, 
		|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, 
		|ЗаполнитьТребуетсяПереформированиеРезервов");
КонецПроцедуры

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

&НаКлиенте
Процедура ОткрытьОтчетОтрицательныеОстаткиТоваровОрганизаций(Команда)
	ОткрытьОтчетОтрицательныеОстаткиНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьОтчетРазвернутоеСальдоПоВидамЗапасовИНомерамГТД(Команда)
	ОткрытьОтчетРазвернутоеСальдоНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура ЗапуститьИсправлениеРазвернутогоСальдо(Команда)
	ВыполнитьМетодыОбъекта(
		ВариантИсправленияРазвернутогоСальдо + ",
		|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо,
		|ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо");
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ЗапуститьФормированиеРезервовПоНовымНастройкам(Команда)
	Если Не ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	ВыполнитьМетодыОбъекта(
		"СформироватьНовыеРезервыПоНовымНастройкам,
		|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо,
		|ЗаполнитьНовыеНастройкиПередачи");
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОформитьПроизводствоБезЗаказа(Команда)
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СформироватьИсправительныеСчетаФактуры(Команда)
	ВыполнитьМетодыОбъекта("СформироватьИсправительныеСчетаФактуры");
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокСформированныхИсправительныхСчетовФактур(Команда)
	ПараметрыОткрытияФормы = Новый Структура;
	ПараметрыОткрытияФормы.Вставить("РежимВыбораСтроки", "ОткрытьФормуОбъекта");
	ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
	ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
	МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка; // Массив
	Для Каждого Стр Из Объект.ИсправительныеСчетаФактуры Цикл
		МассивОтбора.Добавить(Стр.Документ);
	КонецЦикла;
	ОткрытьФорму("РегистрСведений.РеестрДокументов.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура НавигацияПерейтиВКонец(Команда)
	НачатьПереключениеНаСтраницу(7);
КонецПроцедуры

&НаКлиенте
Процедура НапечататьИсправительныеСчетаФактуры(Команда)
	УчетНДСУПКлиент.ПечатьИсправительныхСчетовФактурПоИзмененнымДокументам(Объект.ИсправительныеСчетаФактуры, ЭтаФорма);
КонецПроцедуры

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

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

&НаСервере
Процедура ВыполнитьМетодыОбъектаНаСервере(ИменаМетодов, ПараметрыМетодов = Неопределено)
	
	Методы = СтрРазделить(ИменаМетодов, ",");
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	
	Если Не ЭтоВнешняяОбработка Тогда
		
		ИменаДлительныхОпераций = ОбработкаОбъект.ИменаДлительныхОпераций();
		Для Каждого Метод Из Методы Цикл
			Метод = СокрЛП(Метод);
			Если ИменаДлительныхОпераций.Найти(Метод) <> Неопределено Тогда
				ВыполнениеВФоне = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Если ВыполнениеВФоне Тогда
			ДополнительныеПараметры = Новый Структура(
				"ИменаМетодов, ПараметрыМетодов, СтруктураОбъектаОбработки", 
				 ИменаМетодов, ПараметрыМетодов, ОбработкаОбъект.СтруктураДанных());
			ПараметрыВыполненияВФоне = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
			РезультатВыполненияВФоне = ДлительныеОперации.ВыполнитьВФоне(
				"Обработки.ПомощникИсправленияОстатковТоваровОрганизаций.ВыполнитьМетодыОбъекта",
				ДополнительныеПараметры,
				ПараметрыВыполненияВФоне);
		КонецЕсли;
		
	КонецЕсли;
	
	Если Не ВыполнениеВФоне Тогда
		ДополнительныеПараметры = Новый Структура("ИменаМетодов, ПараметрыМетодов", ИменаМетодов, ПараметрыМетодов);
		Обработки.ПомощникИсправленияОстатковТоваровОрганизаций.ВыполнитьМетодыОбъекта(
			ДополнительныеПараметры,,
			ОбработкаОбъект);
		ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
	КонецЕсли;

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

&НаСервере
Процедура ЗагрузитьРезультатВыполненияФоновогоЗаданияНаСервере();
	
	СтруктураОбъектаОбработки = ПолучитьИзВременногоХранилища(РезультатВыполненияВФоне.АдресРезультата);
	
	Если СтруктураОбъектаОбработки = Неопределено Тогда 
		Возврат;
	КонецЕсли;
	
	Для Каждого ПолеСтруктуры Из СтруктураОбъектаОбработки Цикл
		Если ТипЗнч(ПолеСтруктуры.Значение) = Тип("ТаблицаЗначений") Тогда
			Объект[ПолеСтруктуры.Ключ].Загрузить(ПолеСтруктуры.Значение);
		Иначе
			Объект[ПолеСтруктуры.Ключ] = ПолеСтруктуры.Значение;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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

&НаКлиенте
Процедура НастроитьЭлементыФормы()
	
	НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
	ЕстьПроблема = Объект.КоличествоПозицийОтрицательныйОстаток
		Или Объект.КоличествоПозицийРазвернутоеСальдо;
	
	// Значения по-умолчанию
	Элементы.НавигацияДалее.Видимость = ЕстьПроблема;
	Элементы.НавигацияДалее.КнопкаПоУмолчанию = ЕстьПроблема;
	Элементы.НавигацияПерейтиВКонец.Видимость = Не ЕстьПроблема;
	Элементы.НавигацияПерейтиВКонец.КнопкаПоУмолчанию = Не ЕстьПроблема;
	Элементы.НавигацияПерейтиВНачало.Видимость = Ложь;
	Элементы.НавигацияПерейтиВНачало.Заголовок = ?(ЕстьПроблема, НСтр("ru = 'Перейти в начало'"), НСтр("ru = 'Следующий месяц'"));
	Элементы.НавигацияЗакрыть.Видимость = Ложь;
	Элементы.НавигацияНазад.Видимость = Истина;
	Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Истина;
	Элементы.ГруппаОбновитьЗаголовок.Видимость = Истина;
	Элементы.ДекорацияГруппаНавигацияПредупреждениеТекст.Видимость = Ложь;
	
	// Шаг 0
	Если НомерСтраницы = 0 Тогда
		Элементы.НавигацияДалее.Видимость = Ложь;
		Элементы.НавигацияПерейтиВНачало.Видимость = Истина;
		Элементы.НавигацияПерейтиВНачало.Заголовок = НСтр("ru = 'Начать'");
		Элементы.НавигацияПерейтиВНачало.КнопкаПоУмолчанию = Истина;
		Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
		Элементы.ГруппаОбновитьЗаголовок.Видимость = Ложь;
		Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
		Элементы.НавигацияНазад.Видимость = Ложь;
	КонецЕсли;
	
	// Шаг 1
	Если НомерСтраницы = 1 Тогда
		ПредставлениеМесяцаИсправления =
			ОбщегоНазначенияУТКлиентСервер.ПолучитьПредставлениеПериодаРегистрации(Объект.МесяцИсправления);
		Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
		
		Элементы.ГруппаДиагностикаОтрицательныхОстатков.ТекущаяСтраница = 
			?(Объект.КоличествоПозицийОтрицательныйОстаток,
			Элементы.ГруппаДиагностикаОтрицательныхОстатковСостояниеПроблема,
			Элементы.ГруппаДиагностикаОтрицательныхОстатковСостояниеНетПроблем);
		Элементы.ГруппаДиагностикаОтрицательныхОстатковПрочиеРешения.Видимость = Объект.КоличествоПозицийОтрицательныйОстатокПрочее > 0;
		
		Элементы.ГруппаДиагностикаРазвернутогоСальдо.Видимость = Не (Объект.КоличествоПозицийРазвернутоеСальдо = 0
																	И Объект.КоличествоПозицийОтрицательныйОстаток > 0);
		Элементы.ГруппаДиагностикаРазвернутогоСальдо.ТекущаяСтраница = 
			?(Объект.КоличествоПозицийРазвернутоеСальдо,
			Элементы.ГруппаДиагностикаРазвернутогоСальдоСостояниеПроблема,
			Элементы.ГруппаДиагностикаРазвернутогоСальдоСостояниеНетПроблем);

		Элементы.ГруппаМесяцИсправления.Видимость = ЕстьПроблема;
		Элементы.ПредставлениеМесяцаИсправленияПодсказка.Видимость = ЕстьПроблема;
		Элементы.НавигацияЗакрыть.Видимость = Не ЕстьПроблема;
		Элементы.НавигацияЗакрыть.КнопкаПоУмолчанию = Не ЕстьПроблема;
		Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
	КонецЕсли;
	
	// Шаг 2
	Если НомерСтраницы = 2 Тогда
		РезультатКонтроляПустой = Объект.РезультатКонтроляОформления.ВысотаТаблицы = 0 
			И Объект.РезультатКонтроляОформления.ШиринаТаблицы = 0;
		Элементы.ГруппаШаг2СостояниеПроблема.Видимость = Не РезультатКонтроляПустой;
		Элементы.ГруппаШаг2СостояниеНетПроблемы.Видимость = РезультатКонтроляПустой;
	КонецЕсли;
	
	// Шаг 3
	Если НомерСтраницы = 3 Тогда
		КорректировкиРезервовКоличество = Объект.КорректировкиРезервов.Количество();
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных корректировок'"), 
			КорректировкиРезервовКоличество, 
			Элементы.ОткрытьСписокСформированныхКорректировок);
		Элементы.ДекорацияВыполнитьДорезервированиеПояснение2.Заголовок = СформироватьЗаголовокШаг3Пояснение2();
		Элементы.ГруппаШаг3СостояниеПроблема.Видимость = Объект.ТребуетсяПереформированиеРезервов;
		Элементы.ГруппаШаг3СостояниеНетПроблемы.Видимость = Не Объект.ТребуетсяПереформированиеРезервов;
	КонецЕсли;
	
	// Шаг 4
	Если НомерСтраницы = 4 Тогда
		
		ИзмененныеДокументыКоличество = Объект.ИзмененныеДокументы.Количество();
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список измененных документов'"), 
			ИзмененныеДокументыКоличество,
			Элементы.ОткрытьСписокИзмененныхДокументов);
		ЕстьИзмененияНомеровГТД = Ложь;
		Для Каждого Стр Из Объект.ИзмененныеДокументы Цикл
			Если Стр.ВыданСчетФактура И Стр.НомераГТДИзменились Тогда
				ЕстьИзмененияНомеровГТД = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Элементы.СформироватьИсправительныеСчетаФактуры.Доступность = ИзмененныеДокументыКоличество И ЕстьИзмененияНомеровГТД;
		
		ИсправительныеСчетаФактурыКоличество = Объект.ИсправительныеСчетаФактуры.Количество();
		Элементы.ПечатьИсправительныхСчетовФактур.Доступность = ИсправительныеСчетаФактурыКоличество;
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных исправительных счетов-фактур'"), 
			ИсправительныеСчетаФактурыКоличество,
			Элементы.ОткрытьСписокСформированныхИсправительныхСчетовФактур);
			
		ИсправленияОстатковТоваровОрганизацийКоличество = Объект.ИсправленияОстатковТоваровОрганизаций.Количество();
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных исправлений'"), 
			ИсправленияОстатковТоваровОрганизацийКоличество,
			Элементы.ОткрытьСписокСформированныхИсправленийОстатковТоваровОрганизаций);
			
		Элементы.ГруппаШаг4СостояниеПроблема.Видимость           = Объект.ТребуетсяИсправлениеРазвернутогоСальдо Или Объект.ТребуетсяПерезаполнитьВидыЗапасов;
		Элементы.ДекорацияШаг4Пояснение1.Видимость               = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
		Элементы.ДекорацияШаг4Пояснение2.Видимость               = Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
		Элементы.ДекорацияШаг4Пояснение3.Видимость               = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Объект.ТребуетсяПерезаполнитьВидыЗапасов;
		Элементы.ВариантИсправленияРазвернутогоСальдо1.Видимость = Объект.ТребуетсяИсправлениеРазвернутогоСальдо;
		Элементы.ГруппаШаг4ПояснениеВарианта1.Видимость          = Объект.ТребуетсяИсправлениеРазвернутогоСальдо;
		Элементы.ГруппаШаг4СостояниеНетПроблемы.Видимость        = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
		
		Если Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Объект.ТребуетсяПерезаполнитьВидыЗапасов Тогда
			ВариантИсправленияРазвернутогоСальдо = "ПерезаполнитьВидыЗапасов";
		КонецЕсли;
		
	КонецЕсли;
		
	// Шаг 5
	Если НомерСтраницы = 5 Тогда
		КорректировкиРезервовПоНовымНастройкамКоличество = Объект.КорректировкиРезервовПоНовымНастройкам.Количество();
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных корректировок по новым настройкам'"), 
			КорректировкиРезервовПоНовымНастройкамКоличество,
			Элементы.ОткрытьСписокСформированныхКорректировокПоНовымНастройкам);
		Элементы.ГруппаШаг5СостояниеПроблема.Видимость = Объект.ОрганизацииДляФормированияПередач.Количество();
		Элементы.ГруппаШаг5СостояниеНетПроблемы.Видимость = Не Объект.ОрганизацииДляФормированияПередач.Количество();
	КонецЕсли;
	
	// Шаг 6
	Если НомерСтраницы = 6 Тогда
		
		Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
		Элементы.НавигацияДалее.Видимость = Ложь;
		Элементы.НавигацияПерейтиВКонец.Видимость = Истина;
		Элементы.НавигацияПерейтиВКонец.КнопкаПоУмолчанию = Истина;
		Элементы.ГруппаШаг6СостояниеПроблема.Видимость = Объект.РаспоряженияНаОформлениеОприходований.Количество();
		Элементы.ГруппаШаг6СостояниеНетПроблемы.Видимость = Не Объект.РаспоряженияНаОформлениеОприходований.Количество();
		
		
		Элементы.РаспоряженияНаОформлениеОприходованийОформитьПроизводствоБезЗаказа.Видимость = ИспользуетсяПроизводство;
		Элементы.ДекорацияШаг6СмТакже.Видимость = ИспользуетсяПроизводство;
		
	КонецЕсли;
	
	// Шаг 7
	Если НомерСтраницы = 7 Тогда
		ЗаголовокОтчета = НСтр("ru = 'Отчет о проделанной работе за %МесяцИсправления%'");
		ЗаголовокОтчета = 
			СтрЗаменить(ЗаголовокОтчета, "%МесяцИсправления%" ,НРег(Формат(Объект.МесяцИсправления, Нстр("ru='ДФ=''MMMM yyyy'''"))));
		Элементы.ДекорацияЗаголовокШаг7.Заголовок = ЗаголовокОтчета;
		Элементы.ГруппаШаг7ДиагностикаОтрицательныхОстатков.Видимость = Объект.КоличествоПозицийОтрицательныйОстаток;
		Элементы.ГруппаШаг7ДиагностикаРазвернутогоСальдо.Видимость = Объект.КоличествоПозицийРазвернутоеСальдо;
		Элементы.НавигацияПерейтиВНачало.Видимость = Истина;
		Элементы.НавигацияПерейтиВНачало.КнопкаПоУмолчанию = Истина;
		Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
		Элементы.ГруппаОбновитьЗаголовок.Видимость = Ложь;
		Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
		Элементы.ДекорацияГруппаНавигацияПредупреждениеТекст.Видимость = Не ЕстьПроблема;
		Элементы.НавигацияДалее.Видимость = Ложь;
		Элементы.НавигацияЗакрыть.Видимость = Истина;
		ИзмененныеДокументыКоличество = Объект.ИзмененныеДокументы.Количество();
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список измененных документов'"), 
			ИзмененныеДокументыКоличество,
			Элементы.ОткрытьСписокИзмененныхДокументовШаг7);
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных корректировок резервов'"), 
			Объект.КорректировкиРезервов.Количество(),
			Элементы.ОткрытьСписокСформированныхКорректировокШаг7);
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных исправлений развернутого сальдо товаров организаций'"), 
			Объект.ИсправленияОстатковТоваровОрганизаций.Количество(),
			Элементы.ОткрытьСписокСформированныхКорректировокОстатковТоваровОрганизацийШаг7);
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных корректировок резервов по новым настройкам'"), 
			Объект.КорректировкиРезервовПоНовымНастройкам.Количество(),
			Элементы.ОткрытьСписокСформированныхКорректировокПоНовымНастройкамШаг7);
		НастроитьГиперссылкуСпискаДокументов(
			НСтр("ru = 'Открыть список сформированных исправительных счетов-фактур'"), 
			Объект.ИсправительныеСчетаФактуры.Количество(),
			Элементы.ОткрытьСписокСформированныхИсправительныхСчетовФактурШаг7);
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьСтраницу(Дельта)
	
	НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
	НомерСтраницы = НомерСтраницы + Дельта;
	
	Если НомерСтраницы = 5
		И ЭтоУправлениеТорговлейБазовая Тогда
		
		НомерСтраницы = НомерСтраницы + Дельта;
		
	КонецЕсли;
	
	НачатьПереключениеНаСтраницу(НомерСтраницы);
	
КонецПроцедуры

&НаКлиенте
Процедура НачатьПереключениеНаСтраницу(НомерСтраницы)
	
	ОбработчикЗавершения = "ЗавершитьПереключениеНаСтраницу";
	ПараметрыОбработчикаЗавершения = Новый Структура;
	ПараметрыОбработчикаЗавершения.Вставить("НомерСтраницы", НомерСтраницы);
	
	Если НомерСтраницы = 2 Тогда
		Если ПроводитьБезКонтроляИсходноеЗначение = Ложь Тогда
			УстановитьПроводитьБезКонтроляНаСервере(Истина);
		КонецЕсли;
		ПараметрыМетодов = Новый Структура;
		ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
		ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
			АдресДополнительныхПараметровРезультатаКонтроляОформления);
		ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
			КонтрольОформленияДетализацияПоПозициям);
		ВыполнитьМетодыОбъекта(
			"СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
			ПараметрыМетодов,
			"ЗавершитьФормированиеРезультатаКонтроляОформления");
	ИначеЕсли НомерСтраницы = 3 Тогда
		ВыполнитьМетодыОбъекта("ЗаполнитьТребуетсяПереформированиеРезервов",,ОбработчикЗавершения, ПараметрыОбработчикаЗавершения)
	ИначеЕсли НомерСтраницы = 4 Тогда
		ВыполнитьМетодыОбъекта("ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
	ИначеЕсли НомерСтраницы = 5 Тогда
		ВыполнитьМетодыОбъекта("ЗаполнитьНовыеНастройкиПередачи",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
	ИначеЕсли НомерСтраницы = 6 Тогда
		ВыполнитьМетодыОбъекта("ЗаполнитьРаспоряженияНаОформлениеОприходований",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
	Иначе 
		ЗавершитьПереключениеНаСтраницу(НомерСтраницы);
		НастроитьЭлементыФормы();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьГиперссылкуСпискаДокументов(ЗаголовокКоманды, КоличествоДокументов, ЭлементКомандыНаФорме)
	
	Если КоличествоДокументов Тогда
		ЗаголовокКоманды = 
			ЗаголовокКоманды + " (" + Формат(КоличествоДокументов) + ")";
	КонецЕсли;
	ЭлементКомандыНаФорме.Заголовок = ЗаголовокКоманды;
	ЭлементКомандыНаФорме.Доступность = КоличествоДокументов > 0;

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

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

&НаКлиенте
Процедура ЗагрузитьРезультатВыполненияФоновогоЗадания(Результат, ДополнительныеПараметры) Экспорт
	ВыполнениеВФоне = Ложь;
	Если Результат <> Неопределено Тогда
		ЗагрузитьРезультатВыполненияФоновогоЗаданияНаСервере();
		Если Результат.Статус = "Ошибка" Тогда
			НастроитьЭлементыФормы();
			ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
		КонецЕсли;
		ЗавершитьВыполнениеОбработчика(ДополнительныеПараметры);
	КонецЕсли;
КонецПроцедуры

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

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

&НаКлиенте
Процедура ЗавершитьПереключениеНаСтраницу(НомерСтраницы)
	
	Элементы.ГруппаСтраницы.ТекущаяСтраница = 
	Элементы.Найти("ГруппаШаг" + Формат(НомерСтраницы, "ЧН=0; ЧГ="));

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

&НаКлиенте
Функция СформироватьЗаголовокШаг3Пояснение2()
	
	МесяцРодительныйПадеж = МесяцРодительныйПадеж(Объект.МесяцИсправления);
	Год = Формат(Объект.МесяцИсправления, "ДФ=yyyy");
	ТекстЗаголовка = НСтр("ru = 'При запуске переформирования резервов будут очищены движения регистра ""Резервы товаров организаций"" по проблемным позициям, начиная с %МесяцРодительныйПадеж% %Год% года, и сформированы новые резервы по отрицательным остаткам. Новые резервы будут записаны в документы корректировок регистров. Для каждой организации будет создан отдельный документ.'");
	ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%МесяцРодительныйПадеж%", НРег(МесяцРодительныйПадеж));
	ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Год%", Год);
	Возврат ТекстЗаголовка;
	
КонецФункции

&НаКлиенте
Функция МесяцРодительныйПадеж(Дата)
	
	Месяцы = Новый Соответствие;
	Месяцы.Вставить(1, "января");
	Месяцы.Вставить(2, "февраля");
	Месяцы.Вставить(3, "марта");
	Месяцы.Вставить(4, "апреля");
	Месяцы.Вставить(5, "мая");
	Месяцы.Вставить(6, "июня");
	Месяцы.Вставить(7, "июля");
	Месяцы.Вставить(8, "августа");
	Месяцы.Вставить(9, "сентября");
	Месяцы.Вставить(10, "октября");
	Месяцы.Вставить(11, "ноября");
	Месяцы.Вставить(12, "декабря");
	
	Возврат Месяцы.Получить(Месяц(Дата));
	
КонецФункции

&НаКлиенте
Процедура ОткрытьОтчетРазвернутоеСальдоНаКлиенте()
	
	ПараметрыОткрытияФормыОтчета = Новый Структура;
	ПараметрыОткрытияФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыОткрытияФормыОтчета.Вставить("Отбор", Новый Структура);
	ПараметрыОткрытияФормыОтчета.Отбор.Вставить("Месяц", Объект.МесяцИсправления);
	ПараметрыОткрытияФормыОтчета.Отбор.Вставить("МесяцПредставление", ПредставлениеМесяцаИсправления);
	ОткрытьФорму("Отчет.РазвернутоеСальдоПоВидамЗапасовИНомерамГТД.Форма", ПараметрыОткрытияФормыОтчета, ЭтаФорма, Истина);

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

&НаКлиенте
Процедура ОткрытьОтчетОтрицательныеОстаткиНаКлиенте()
	
	ПараметрыОткрытияФормыОтчета = Новый Структура;
	ПараметрыОткрытияФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыОткрытияФормыОтчета.Вставить("Отбор", Новый Структура);
	ПараметрыОткрытияФормыОтчета.Отбор.Вставить("Месяц", Объект.МесяцИсправления);
	ПараметрыОткрытияФормыОтчета.Отбор.Вставить("МесяцПредставление", ПредставлениеМесяцаИсправления);
	ОткрытьФорму("Отчет.ОтрицательныеОстаткиТоваровИРезервовОрганизаций.Форма", ПараметрыОткрытияФормыОтчета, ЭтаФорма, Истина);

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

&НаКлиенте
Процедура ОповещениеОЗакрытииПомощникаФормированияПередач(Результат, ДополнительныеПараметры) Экспорт
	ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьНовыеНастройкиПередачи");
КонецПроцедуры

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


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

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

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

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

&НаСервереБезКонтекста
Процедура ПроверитьРольНастройкаНСИДоступна(СтандартнаяОбработка)
	
	Если Не Пользователи.РолиДоступны(Метаданные.Роли.НастройкаНСИ.Имя) Тогда
		СтандартнаяОбработка = Ложь;
		ТекстСообщения = НСтр("ru = 'Для настройки передачи требуется роль ""%НастройкаНСИ%"". Обратитесь к администратору.'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НастройкаНСИ%", Метаданные.Роли.НастройкаНСИ.Синоним);
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;

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

&НаСервереБезКонтекста
Процедура УстановитьПроводитьБезКонтроляНаСервере(Значение)
	
	Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить() Тогда
		ПараметрыСеанса.ПроводитьБезКонтроляОстатковТоваровОрганизаций = Значение;
	КонецЕсли;

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

&НаСервереБезКонтекста
Функция ТекущаяДатаСервера()
	Возврат ТекущаяДатаСеанса();
КонецФункции

&НаСервере
Процедура ПроверитьРазрешениеДоступа(Отказ)
	
	Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить()
		И Не ПраваПользователяПовтИсп.РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса() Тогда
		Отказ = Истина;
		ТекстСообщения = 
		НСтр("ru = 'Для работы с помощником требуется роль ""%РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса%"" или отключение функциональной опции ""%КонтролироватьОстаткиТоваровОрганизаций%"". Обратитесь к администратору.'");
		ТекстСообщения = СтрЗаменить(
		ТекстСообщения, "%РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса%",
		Метаданные.Роли.РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса.Синоним);
		ТекстСообщения = СтрЗаменить(
		ТекстСообщения, "%КонтролироватьОстаткиТоваровОрганизаций%", 
		Метаданные.Константы.КонтролироватьОстаткиТоваровОрганизаций.Синоним);
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Организация ИЗ Справочник.ВидыЗапасов";
	Попытка 
		РезультатЗапроса = Запрос.Выполнить();
	Исключение
		Отказ = Истина;
		ТекстСообщения = 
		НСтр("ru = 'Для работы с помощником требуется доступ на чтение всех организаций в информационной базе. Обратитесь к администратору.'");	
		ВызватьИсключение ТекстСообщения;
	КонецПопытки;

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


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

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