Установка цен номенклатуры / Модуль менеджера

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

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

#Область Проведение

// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
//  МеханизмыДокумента - Массив - список имен учетных механизмов, для которых будет выполнена
//              регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
	
	МеханизмыДокумента.Добавить("ЦеныИСкидки");
	
КонецПроцедуры

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет список команд создания на основании.
//
// Параметры:
//   КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//   Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры


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

		Возврат КомандаСоздатьНаОсновании;
	КонецЕсли;

	Возврат Неопределено;
КонецФункции

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	Отчеты.РезультатыСогласованияЦенНоменклатуры.ДобавитьКомандуОтчетаПоДокументу(КомандыОтчетов);
	
КонецПроцедуры

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

		ЗаписьЖурналаРегистрации(
			НСтр("ru = 'Ошибка выполнения'",
			ОбщегоНазначения.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,
			Метаданные.Обработки.ПрайсЛист,
			,
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

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

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

Функция ЗаполнитьДокументОкончанияАкции25(ДокументОбъект,Знач ДокументНачалаАкции, Знач ДатаВозвратаЦен)
	
	ТексЗапросаДанныхДокументаЗавершенияАкции = 
	"ВЫБРАТЬ
	|	&ДатаДокумента КАК Дата,
	|	УстановкаЦенНоменклатуры.Ответственный КАК Ответственный,
	|	УстановкаЦенНоменклатуры.Комментарий КАК Комментарий,
	|	УстановкаЦенНоменклатуры.Согласован КАК Согласован,
	|	УстановкаЦенНоменклатуры.Статус КАК Статус
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &ДокументНачалаАкции
	|;
	|
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыВидыЦен.ВидЦены КАК ВидЦены,
	|	УстановкаЦенНоменклатурыВидыЦен.НастройкиКомпоновкиДанных КАК НастройкиКомпоновкиДанных
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.ВидыЦен КАК УстановкаЦенНоменклатурыВидыЦен
	|ГДЕ
	|	УстановкаЦенНоменклатурыВидыЦен.Ссылка = &ДокументНачалаАкции
	|УПОРЯДОЧИТЬ ПО
	|	УстановкаЦенНоменклатурыВидыЦен.НомерСтроки
	|;
	|
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	УстановкаЦенНоменклатурыТовары.СерияЦО КАК СерияЦО,
	|	УстановкаЦенНоменклатурыТовары.УпаковкаЦО КАК УпаковкаЦО,
	|	УстановкаЦенНоменклатурыТовары.Упаковка КАК Упаковка,
	|	УстановкаЦенНоменклатурыТовары.ВидЦены КАК ВидЦены,
	|	УстановкаЦенНоменклатурыТовары.Цена КАК Цена,
	|	УстановкаЦенНоменклатурыТовары.Валюта КАК Валюта
	|ПОМЕСТИТЬ ТоварыАкции
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК УстановкаЦенНоменклатурыТовары
	|ГДЕ
	|	УстановкаЦенНоменклатурыТовары.Ссылка = &ДокументНачалаАкции
	|;
	|
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыАкции.Номенклатура КАК Номенклатура,
	|	ТоварыАкции.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	ТоварыАкции.СерияЦО КАК СерияЦО,
	|	ТоварыАкции.УпаковкаЦО КАК УпаковкаЦО,
	|	ТоварыАкции.Упаковка КАК Упаковка,
	|	ТоварыАкции.ВидЦены КАК ВидЦены,
	|	ТоварыАкции.Цена КАК ЦенаАкции,
	|	ЛОЖЬ КАК ЦенаИзмененаВручную,
	|	ТоварыАкции.Валюта КАК Валюта,
	|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	|	ЦеныНоменклатурыСрезПоследних.Формула КАК Формула
	|ИЗ
	|	ТоварыАкции КАК ТоварыАкции
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДоНачалаАкции, (Номенклатура, ХарактеристикаЦО,
	|			СерияЦО, УпаковкаЦО, ВидЦены) В
	|			(ВЫБРАТЬ
	|				ТоварыАкции.Номенклатура,
	|				ТоварыАкции.ХарактеристикаЦО,
	|				ТоварыАкции.СерияЦО,
	|				ТоварыАкции.УпаковкаЦО,
	|				ТоварыАкции.ВидЦены
	|			ИЗ
	|				ТоварыАкции КАК ТоварыАкции)) КАК ЦеныНоменклатурыСрезПоследних
	|		ПО ТоварыАкции.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|		И ТоварыАкции.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
	|		И ТоварыАкции.СерияЦО = ЦеныНоменклатурыСрезПоследних.СерияЦО
	|		И ТоварыАкции.УпаковкаЦО = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
	|		И ТоварыАкции.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
	|		И ТоварыАкции.Упаковка = ЦеныНоменклатурыСрезПоследних.Упаковка
	|		И ТоварыАкции.Валюта = ЦеныНоменклатурыСрезПоследних.Валюта
	|УПОРЯДОЧИТЬ ПО
	|	ТоварыАкции.НомерСтроки
	|;
	|
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ТоварыАкции";
	
	Запрос = Новый Запрос(ТексЗапросаДанныхДокументаЗавершенияАкции);
	Запрос.УстановитьПараметр("ДокументНачалаАкции",ДокументНачалаАкции);
	Запрос.УстановитьПараметр("ДатаДокумента",ДатаВозвратаЦен);
	Запрос.УстановитьПараметр("ДоНачалаАкции",
		НачалоДня(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументНачалаАкции,"Дата"))-1);
	Результаты = Запрос.ВыполнитьПакет();
	
	ДокументОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
	
	ВыборкаРеквизиты = Результаты[0].Выбрать();
	ВыборкаРеквизиты.Следующий();
	ЗаполнитьЗначенияСвойств(ДокументОбъект,ВыборкаРеквизиты);
	
	ДокументОбъект.ВидыЦен.Очистить();
	ВыборкаВидыЦен = Результаты[1].Выбрать();
	Пока ВыборкаВидыЦен.Следующий() Цикл
		СтрокаЦен = ДокументОбъект.ВидыЦен.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаЦен,ВыборкаВидыЦен);
	КонецЦикла; 
	
	ДокументОбъект.Товары2_5.Очистить();
	ВыборкаТовары = Результаты[3].Выбрать();
	Пока ВыборкаТовары.Следующий() Цикл
		СтрокаТовар = ДокументОбъект.Товары2_5.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаТовар,ВыборкаТовары);
	КонецЦикла; 
	
	Возврат ДокументОбъект;
	
КонецФункции

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ДляВсехСтрок(ЗначениеРазрешено(ВидыЦен.ВидЦены, Null КАК Истина))";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

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

#Область Проведение

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт

	ИсточникиДанных = Новый Соответствие;

	Возврат ИсточникиДанных; 

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

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


	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.Характеристика КАК Характеристика,
	|	ТаблицаТовары.Упаковка КАК Упаковка,
	|	ТаблицаТовары.ВидЦены КАК ВидЦены,
	|	ТаблицаТовары.Цена КАК Цена,
	|	ВЫБОР
	|		КОГДА ТаблицаТовары.Валюта = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
	|			ТОГДА ВидыЦенСпр.ВалютаЦены
	|		ИНАЧЕ ТаблицаТовары.Валюта
	|	КОНЕЦ КАК Валюта,
	|	ТаблицаТовары.Формула КАК Формула,
	|	УстановкаЦенНоменклатуры.МаркетинговоеМероприятие КАК МаркетинговоеМероприятие,
	|	УстановкаЦенНоменклатуры.Дата КАК ПЕРИОД
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры.Товары КАК ТаблицаТовары
	|		ПО УстановкаЦенНоменклатуры.Ссылка = ТаблицаТовары.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦенСпр
	|		ПО ТаблицаТовары.ВидЦены = ВидыЦенСпр.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|		ПО ТаблицаТовары.Номенклатура = НоменклатураСпр.Ссылка
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &Ссылка
	|	И УстановкаЦенНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыУстановокЦенНоменклатуры.Согласован)
	|	И
	|		(НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
	|	ИЛИ ТаблицаТовары.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))";

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

Функция ТекстЗапросаТаблицаЦеныНоменклатуры2_5(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "ЦеныНоменклатуры25";
	
	Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли; 

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	ВЫБОР
	|		КОГДА СерииНоменклатурыДляЦенообразования.Предопределенный
	|			ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		ИНАЧЕ ТаблицаТовары.СерияЦО
	|	КОНЕЦ КАК СерияЦО,
	|	ВЫБОР
	|		КОГДА ТаблицаТовары.УпаковкаЦО = НоменклатураСпр.ЕдиницаИзмерения
	|			ТОГДА ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
	|		ИНАЧЕ ТаблицаТовары.УпаковкаЦО
	|	КОНЕЦ КАК УпаковкаЦО,
	|	ТаблицаТовары.Упаковка КАК Упаковка,
	|	ТаблицаТовары.ВидЦены КАК ВидЦены,
	|	ТаблицаТовары.Цена КАК Цена,
	|	ВЫБОР
	|		КОГДА ТаблицаТовары.Валюта = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
	|			ТОГДА ВидыЦенСпр.ВалютаЦены
	|		ИНАЧЕ ТаблицаТовары.Валюта
	|	КОНЕЦ КАК Валюта,
	|	ТаблицаТовары.Формула КАК Формула,
	|	УстановкаЦенНоменклатуры.МаркетинговоеМероприятие КАК МаркетинговоеМероприятие,
	|	УстановкаЦенНоменклатуры.Дата КАК ПЕРИОД
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК ТаблицаТовары
	|		ПО (УстановкаЦенНоменклатуры.Ссылка = ТаблицаТовары.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦенСпр
	|		ПО (ТаблицаТовары.ВидЦены = ВидыЦенСпр.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
	|			ПО (НоменклатураСпр.ВидНоменклатуры = ВидыНоменклатуры.Ссылка)
	|		ПО (ТаблицаТовары.Номенклатура = НоменклатураСпр.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатурыДляЦенообразования КАК СерииНоменклатурыДляЦенообразования
	|		ПО (ТаблицаТовары.СерияЦО = СерииНоменклатурыДляЦенообразования.Ссылка)
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыУстановокЦенНоменклатуры.Согласован)
	|	И ТаблицаТовары.Ссылка = &Ссылка
	|	И
	|		(НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
	|	ИЛИ
	|		ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|	ИЛИ ТаблицаТовары.ХарактеристикаЦО <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка))";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

#Область Печать

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

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

	// Установка цен номенклатуры
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьУстановкаЦенНоменклатуры";
	КомандаПечати.МенеджерПечати = "";
	КомандаПечати.Идентификатор = "УстановкаЦенНоменклатуры";
	КомандаПечати.Представление = НСтр("ru = 'Установка цен номенклатуры'");

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

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

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

#Область ТекстыЗапроса

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

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

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

Функция ТекстЗапросаПереоценкиТоваровВРозницеВТ2_5()
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	Товары.НомерСтроки КАК НомерСтроки,
	|	ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
	|	ВЫРАЗИТЬ(Товары.ХарактеристикаЦО КАК Справочник.ХарактеристикиНоменклатурыДляЦенообразования) КАК ХарактеристикаЦО,
	|	ВЫРАЗИТЬ(Товары.СерияЦО КАК Справочник.СерииНоменклатурыДляЦенообразования) КАК СерияЦО,
	|	ВЫРАЗИТЬ(Товары.УпаковкаЦО КАК Справочник.УпаковкиЕдиницыИзмерения) КАК УпаковкаЦО,
	|	Товары.Упаковка КАК Упаковка,
	|	Товары.Цена КАК Цена,
	|	Товары.ВидЦены КАК ВидЦены
	|ПОМЕСТИТЬ ТаблицаДанных
	|ИЗ
	|	&Товары КАК Товары
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТаблицаДанных.Номенклатура КАК Номенклатура,
	|	ВЫБОР
	|		КОГДА
	|			ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоХарактеристике,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоСерии = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоСерии,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоУпаковке = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоУпаковке,
	|	ВЫБОР
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
	|			ТОГДА НоменклатураСпр.Ссылка
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВидНоменклатуры
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВладелецХарактеристик
	|		ИНАЧЕ НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК ВладелецХарактеристик
	|ПОМЕСТИТЬ ТаблицаНоменклатуры
	|ИЗ
	|	ТаблицаДанных КАК ТаблицаДанных
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
	|		ПО ТаблицаДанных.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|		ПО ТаблицаДанных.Номенклатура = НоменклатураСпр.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТаблицаДанных.НомерСтроки КАК НомерСтроки,
	|	ТаблицаДанных.Номенклатура КАК Номенклатура,
	|	ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЕСТЬNULL(ХарактеристикиНоменклатуры1.Ссылка,
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК Характеристика,
	|	ТаблицаДанных.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	ТаблицаДанных.СерияЦО КАК СерияЦО,
	|	ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
	|	ТаблицаДанных.УпаковкаЦО КАК УпаковкаЦО,
	|	ТаблицаДанных.Упаковка КАК Упаковка,
	|	ТаблицаДанных.Цена КАК Цена,
	|	ТаблицаДанных.ВидЦены КАК ВидЦены,
	|	ТаблицаНоменклатуры.ПоУпаковке КАК ПоУпаковке,
	|	ТаблицаНоменклатуры.ПоХарактеристике КАК ПоХарактеристике,
	|	ТаблицаНоменклатуры.ПоСерии КАК ПоСерии
	|ПОМЕСТИТЬ ТаблицаДанныхДополненная
	|ИЗ
	|	ТаблицаДанных КАК ТаблицаДанных
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
	|		ПО ТаблицаДанных.Номенклатура = ТаблицаНоменклатуры.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры1
	|		ПО ТаблицаДанных.ХарактеристикаЦО = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И ТаблицаНоменклатуры.ВладелецХарактеристик = ХарактеристикиНоменклатуры1.Владелец
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
	|		ПО ТаблицаДанных.ХарактеристикаЦО <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И ТаблицаДанных.ХарактеристикаЦО = ХарактеристикиНоменклатуры.ХарактеристикаНоменклатурыДляЦенообразования
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
	|		ПО ТаблицаНоменклатуры.ПоСерии
	|		И ТаблицаДанных.СерияЦО = СерииНоменклатуры.СерияНоменклатурыДляЦенообразования
	|		И ТаблицаДанных.СерияЦО <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	ВложенныйЗапрос.Номенклатура КАК Номенклатура,
	|	СправочникНоменклатура.Код КАК Код,
	|	СправочникНоменклатура.Артикул КАК Артикул,
	|	СправочникНоменклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
	|	ВЫБОР
	|		КОГДА ВложенныйЗапрос.ПоУпаковке
	|			ТОГДА ВложенныйЗапрос.УпаковкаЦО.Представление
	|		ИНАЧЕ СправочникНоменклатура.ЕдиницаИзмерения.Представление
	|	КОНЕЦ КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Серия КАК Серия,
	|	ВложенныйЗапрос.Характеристика КАК Характеристика,
	|	ВложенныйЗапрос.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	СправочникХарактеристикиНоменлатуры.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
	|	1 КАК Коэффициент,
	|	ВложенныйЗапрос.НоваяЦенаВРознице КАК ЦенаВРознице,
	|	ВЫБОР
	|		КОГДА ВложенныйЗапрос.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ВложенныйЗапрос.НоваяЦенаВРознице -
	|				ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0))
	|		ИНАЧЕ ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ВложенныйЗапрос.НоваяЦенаВРознице -
	|			ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1))
	|	КОНЕЦ КАК ОтклонениеСтоимости,
	|	ВЫБОР
	|		КОГДА ВложенныйЗапрос.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
	|		ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
	|	КОНЕЦ КАК ЦенаВРозницеСтарая,
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) КАК Количество,
	|	ВложенныйЗапрос.ПоХарактеристике КАК ПоХарактеристике,
	|	ВложенныйЗапрос.ПоСерии КАК ПоСерии,
	|	ВложенныйЗапрос.ПоУпаковке КАК ПоУпаковке
	|ИЗ
	|	(ВЫБРАТЬ
	|		УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|		УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|		УстановкаЦенНоменклатурыТовары.Характеристика КАК Характеристика,
	|		УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|		УстановкаЦенНоменклатурыТовары.СерияЦО КАК СерияЦО,
	|		УстановкаЦенНоменклатурыТовары.Серия КАК Серия,
	|		УстановкаЦенНоменклатурыТовары.УпаковкаЦО КАК УпаковкаЦО,
	|		ВЫБОР
	|			КОГДА УстановкаЦенНоменклатурыТовары.ПоУпаковке
	|				ТОГДА УстановкаЦенНоменклатурыТовары.Цена
	|			ИНАЧЕ УстановкаЦенНоменклатурыТовары.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1)
	|		КОНЕЦ КАК НоваяЦенаВРознице,
	|		УстановкаЦенНоменклатурыТовары.ПоХарактеристике КАК ПоХарактеристике,
	|		УстановкаЦенНоменклатурыТовары.ПоСерии КАК ПоСерии,
	|		УстановкаЦенНоменклатурыТовары.ПоУпаковке КАК ПоУпаковке
	|	ИЗ
	|		ТаблицаДанныхДополненная КАК УстановкаЦенНоменклатурыТовары
	|	ГДЕ
	|		УстановкаЦенНоменклатурыТовары.ВидЦены = &ВидЦены) КАК ВложенныйЗапрос
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(КОНЕЦПЕРИОДА(&КонецПредыдущегоДня, ДЕНЬ),
	|			(Номенклатура, ХарактеристикаЦО, СерияЦО, УпаковкаЦО, ВидЦены) В
	|			(ВЫБРАТЬ
	|				Т.Номенклатура,
	|				Т.ХарактеристикаЦО,
	|				Т.СерияЦО,
	|				Т.УпаковкаЦО,
	|				Т.ВидЦены
	|			ИЗ
	|				ТаблицаДанных КАК Т
	|			ГДЕ
	|				Т.ВидЦены = &ВидЦены)) КАК ЦеныНоменклатурыСрезПоследних
	|		ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|		И ВложенныйЗапрос.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
	|		И ВложенныйЗапрос.СерияЦО = ЦеныНоменклатурыСрезПоследних.СерияЦО
	|		И ВложенныйЗапрос.УпаковкаЦО = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
	|		ПО ВложенныйЗапрос.Номенклатура = Аналитика.Номенклатура
	|		И ВложенныйЗапрос.Характеристика = Аналитика.Характеристика
	|		И &РозничныйМагазин = Аналитика.МестоХранения
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецПредыдущегоДня, Организация = &Организация) КАК
	|			ТоварыОрганизацийОстатки
	|		ПО Аналитика.КлючАналитики = ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|		ПО СправочникНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СправочникХарактеристикиНоменлатуры
	|		ПО СправочникХарактеристикиНоменлатуры.Ссылка = ВложенныйЗапрос.Характеристика
	|ГДЕ
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) <> 0
	|	И ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ВложенныйЗапрос.НоваяЦенаВРознице -
	|		ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)) <> 0
	|
	|УПОРЯДОЧИТЬ ПО
	|	ВложенныйЗапрос.НомерСтроки";
	Возврат ТекстЗапроса
КонецФункции

Функция ТекстЗапросаПереоценкиТоваровВРозницеБД()
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	УстановкаЦенНоменклатуры.Номер         КАК Номер,
	|	УстановкаЦенНоменклатуры.Дата          КАК Дата,
	|	УстановкаЦенНоменклатуры.Ссылка        КАК Ссылка,
	|	УстановкаЦенНоменклатуры.Ответственный КАК ОтветственныйПредставление,
	|	&Организация                           КАК Организация,
	|	&Организация                           КАК Поставщик,
	|	&РозничныйМагазин                      КАК Получатель,
	|	&РозничныйМагазин                      КАК ПредставлениеПолучателя
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыТовары.Ссылка КАК Ссылка,
	|	УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.Характеристика КАК Характеристика,
	|	УстановкаЦенНоменклатурыТовары.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК НоваяЦенаВРознице
	|ПОМЕСТИТЬ ЦеныНоменклатурыТовары
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
	|ГДЕ
	|	УстановкаЦенНоменклатурыТовары.Ссылка = &УстановкаЦенНоменклатуры
	|	И УстановкаЦенНоменклатурыТовары.ВидЦены = &ВидЦены
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатурыТовары.НомерСтроки                     КАК НомерСтроки,
	|	ЦеныНоменклатурыТовары.Номенклатура                    КАК Номенклатура,
	|	СправочникНоменклатура.Код                             КАК Код,
	|	СправочникНоменклатура.Артикул                         КАК Артикул,
	|	СправочникНоменклатура.НаименованиеПолное              КАК ПолноеНаименованиеНоменклатуры,
	|	СправочникНоменклатура.ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмерения,
	|	ЦеныНоменклатурыТовары.Характеристика                  КАК Характеристика,
	|	СправочникХарактеристикиНоменлатуры.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
	|	1                                                      КАК Коэффициент,
	|	ЦеныНоменклатурыТовары.НоваяЦенаВРознице               КАК ЦенаВРознице,
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРознице - (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1))) КАК ОтклонениеСтоимости,
	|	ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) КАК ЦенаВРозницеСтарая,
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) КАК Количество
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|	
	|	ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыТовары
	|	ПО ЦеныНоменклатурыТовары.Ссылка = УстановкаЦенНоменклатуры.Ссылка
	|		
	|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПредыдущегоДня, (Номенклатура, Характеристика, ВидЦены) В (ВЫБРАТЬ Т.Номенклатура, Т.Характеристика, Т.ВидЦены ИЗ Документ.УстановкаЦенНоменклатуры.Товары КАК Т ГДЕ Т.Ссылка = &УстановкаЦенНоменклатуры И Т.ВидЦены = &ВидЦены)) КАК ЦеныНоменклатурыСрезПоследних
	|	ПО ЦеныНоменклатурыТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|		И ЦеныНоменклатурыТовары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
	|		
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|	РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
	|	ПО ЦеныНоменклатурыТовары.Номенклатура = Аналитика.Номенклатура
	|		И ЦеныНоменклатурыТовары.Характеристика = Аналитика.Характеристика
	|		И &РозничныйМагазин = Аналитика.МестоХранения
	|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецПредыдущегоДня, Организация = &Организация) КАК ТоварыОрганизацийОстатки
	|		ПО Аналитика.КлючАналитики = ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|		ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыТовары.Номенклатура
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СправочникХарактеристикиНоменлатуры
	|		ПО СправочникХарактеристикиНоменлатуры.Ссылка = ЦеныНоменклатурыТовары.Характеристика
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|	И ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) <> 0
	|	И ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРознице - (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1))) <> 0
	|	
	|УПОРЯДОЧИТЬ ПО
	|	ЦеныНоменклатурыТовары.НомерСтроки
	|
	|";
	Возврат ТекстЗапроса
КонецФункции

Функция ТекстЗапросаПереоценкиТоваровВРозницеБД2_5()
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	УстановкаЦенНоменклатуры.Номер КАК Номер,
	|	УстановкаЦенНоменклатуры.Дата КАК Дата,
	|	УстановкаЦенНоменклатуры.Ссылка КАК Ссылка,
	|	УстановкаЦенНоменклатуры.Ответственный КАК ОтветственныйПредставление,
	|	&Организация КАК Организация,
	|	&Организация КАК Поставщик,
	|	&РозничныйМагазин КАК Получатель,
	|	&РозничныйМагазин КАК ПредставлениеПолучателя
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыТовары.Ссылка КАК Ссылка,
	|	УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	УстановкаЦенНоменклатурыТовары.СерияЦО КАК СерияЦО,
	|	УстановкаЦенНоменклатурыТовары.УпаковкаЦО КАК УпаковкаЦО,
	|	УстановкаЦенНоменклатурыТовары.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК НоваяЦенаВРознице,
	|	УстановкаЦенНоменклатурыТовары.Цена КАК НоваяЦенаВРозницеПоУпаковке
	|ПОМЕСТИТЬ ЦеныНоменклатурыТовары
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК УстановкаЦенНоменклатурыТовары
	|ГДЕ
	|	УстановкаЦенНоменклатурыТовары.Ссылка = &УстановкаЦенНоменклатуры
	|	И УстановкаЦенНоменклатурыТовары.ВидЦены = &ВидЦены
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЦеныНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	ВЫБОР
	|		КОГДА
	|			ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоХарактеристике,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоСерии = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоСерии,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоУпаковке = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоУпаковке,
	|	ВЫБОР
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
	|			ТОГДА НоменклатураСпр.Ссылка
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВидНоменклатуры
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВладелецХарактеристик
	|		ИНАЧЕ НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК ВладелецХарактеристик
	|ПОМЕСТИТЬ ТаблицаНоменклатуры
	|ИЗ
	|	ЦеныНоменклатурыТовары КАК ЦеныНоменклатурыТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
	|		ПО ЦеныНоменклатурыТовары.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|		ПО ЦеныНоменклатурыТовары.Номенклатура = НоменклатураСпр.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатурыТовары.Ссылка КАК Ссылка,
	|	ЦеныНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	ЦеныНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЕСТЬNULL(ХарактеристикиНоменклатуры1.Ссылка,
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК Характеристика,
	|	ЦеныНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	ЦеныНоменклатурыТовары.СерияЦО КАК СерияЦО,
	|	ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
	|	ЦеныНоменклатурыТовары.УпаковкаЦО КАК УпаковкаЦО,
	|	ЦеныНоменклатурыТовары.НоваяЦенаВРознице КАК НоваяЦенаВРознице,
	|	ЦеныНоменклатурыТовары.НоваяЦенаВРозницеПоУпаковке КАК НоваяЦенаВРозницеПоУпаковке,
	|	ТаблицаНоменклатуры.ПоУпаковке КАК ПоУпаковке,
	|	ТаблицаНоменклатуры.ПоХарактеристике КАК ПоХарактеристике,
	|	ТаблицаНоменклатуры.ПоСерии КАК ПоСерии
	|ПОМЕСТИТЬ ЦеныНоменклатурыТоварыДополненная
	|ИЗ
	|	ЦеныНоменклатурыТовары КАК ЦеныНоменклатурыТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
	|		ПО ЦеныНоменклатурыТовары.Номенклатура = ТаблицаНоменклатуры.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры1
	|		ПО ЦеныНоменклатурыТовары.ХарактеристикаЦО = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И ТаблицаНоменклатуры.ВладелецХарактеристик = ХарактеристикиНоменклатуры1.Владелец
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
	|		ПО ЦеныНоменклатурыТовары.ХарактеристикаЦО <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И ЦеныНоменклатурыТовары.ХарактеристикаЦО = ХарактеристикиНоменклатуры.ХарактеристикаНоменклатурыДляЦенообразования
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
	|		ПО ТаблицаНоменклатуры.ПоСерии
	|		И ЦеныНоменклатурыТовары.СерияЦО = СерииНоменклатуры.СерияНоменклатурыДляЦенообразования
	|		И ЦеныНоменклатурыТовары.СерияЦО <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	ЦеныНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	СправочникНоменклатура.Код КАК Код,
	|	СправочникНоменклатура.Артикул КАК Артикул,
	|	СправочникНоменклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
	|	ВЫБОР
	|		КОГДА ЦеныНоменклатурыТовары.ПоУпаковке
	|			ТОГДА ЦеныНоменклатурыТовары.УпаковкаЦО.Представление
	|		ИНАЧЕ СправочникНоменклатура.ЕдиницаИзмерения.Представление
	|	КОНЕЦ КАК ЕдиницаИзмерения,
	|	ЦеныНоменклатурыТовары.Серия КАК Серия,
	|	ЦеныНоменклатурыТовары.Характеристика КАК Характеристика,
	|	ЦеныНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	СправочникХарактеристикиНоменлатуры.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
	|	1 КАК Коэффициент,
	|	ВЫБОР
	|		КОГДА ЦеныНоменклатурыТовары.ПоУпаковке
	|			ТОГДА ЦеныНоменклатурыТовары.НоваяЦенаВРозницеПоУпаковке
	|		ИНАЧЕ ЦеныНоменклатурыТовары.НоваяЦенаВРознице
	|	КОНЕЦ КАК ЦенаВРознице,
	|	ВЫБОР
	|		КОГДА ЦеныНоменклатурыТовары.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРозницеПоУпаковке
	|				- ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0))
	|		ИНАЧЕ ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРознице -
	|			ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1))
	|	КОНЕЦ КАК ОтклонениеСтоимости,
	|	ВЫБОР
	|		КОГДА ЦеныНоменклатурыТовары.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
	|		ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
	|	КОНЕЦ КАК ЦенаВРозницеСтарая,
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) КАК Количество,
	|	ЦеныНоменклатурыТовары.ПоУпаковке,
	|	ЦеныНоменклатурыТовары.ПоХарактеристике,
	|	ЦеныНоменклатурыТовары.ПоСерии
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыТоварыДополненная КАК ЦеныНоменклатурыТовары
	|		ПО ЦеныНоменклатурыТовары.Ссылка = УстановкаЦенНоменклатуры.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&КонецПредыдущегоДня, (Номенклатура,
	|			ХарактеристикаЦО, СерияЦО, УпаковкаЦО, ВидЦены) В
	|			(ВЫБРАТЬ
	|				Т.Номенклатура,
	|				Т.ХарактеристикаЦО,
	|				Т.СерияЦО,
	|				Т.УпаковкаЦО,
	|				Т.ВидЦены
	|			ИЗ
	|				Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК Т
	|			ГДЕ
	|				Т.Ссылка = &УстановкаЦенНоменклатуры
	|				И Т.ВидЦены = &ВидЦены)) КАК ЦеныНоменклатурыСрезПоследних
	|		ПО ЦеныНоменклатурыТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|		И ЦеныНоменклатурыТовары.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
	|		И ЦеныНоменклатурыТовары.СерияЦО = ЦеныНоменклатурыСрезПоследних.СерияЦО
	|		И ЦеныНоменклатурыТовары.УпаковкаЦО = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
	|		ПО ЦеныНоменклатурыТовары.Номенклатура = Аналитика.Номенклатура
	|		И ЦеныНоменклатурыТовары.Характеристика = Аналитика.Характеристика
	|		И &РозничныйМагазин = Аналитика.МестоХранения
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецПредыдущегоДня, Организация = &Организация) КАК
	|			ТоварыОрганизацийОстатки
	|		ПО Аналитика.КлючАналитики = ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|		ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыТовары.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СправочникХарактеристикиНоменлатуры
	|		ПО СправочникХарактеристикиНоменлатуры.Ссылка = ЦеныНоменклатурыТовары.Характеристика
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|	И ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) <> 0
	|	И ВЫБОР
	|		КОГДА ЦеныНоменклатурыТовары.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРозницеПоУпаковке
	|				- ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) <> 0
	|		ИНАЧЕ ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (ЦеныНоменклатурыТовары.НоваяЦенаВРознице -
	|			ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)) <> 0
	|	КОНЕЦ
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЦеныНоменклатурыТовары.НомерСтроки";
	Возврат ТекстЗапроса
КонецФункции

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

Функция ТекстЗапросаПереоценкиТоваровВРозницеБДПоАссортименту2_5()

	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	УстановкаЦенНоменклатуры.Номер КАК Номер,
	|	УстановкаЦенНоменклатуры.Дата КАК Дата,
	|	УстановкаЦенНоменклатуры.Ссылка КАК Ссылка,
	|	УстановкаЦенНоменклатуры.Ответственный КАК ОтветственныйПредставление,
	|	&Организация КАК Организация,
	|	&Организация КАК Поставщик,
	|	&РозничныйМагазин КАК Получатель,
	|	&РозничныйМагазин КАК ПредставлениеПолучателя
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Ассортимент.Номенклатура КАК Номенклатура,
	|	Ассортимент.ВидЦены КАК ВидЦены
	|ПОМЕСТИТЬ НоменклатураВидыЦен
	|ИЗ
	|	РегистрСведений.Ассортимент.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ),
	|		ОбъектПланирования = &ОбъектПланирования
	|	И Номенклатура В
	|		(ВЫБРАТЬ
	|			Т.Номенклатура
	|		ИЗ
	|			Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК Т
	|		ГДЕ
	|			Т.Ссылка = &УстановкаЦенНоменклатуры)) КАК Ассортимент
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыТовары.Ссылка КАК Ссылка,
	|	УстановкаЦенНоменклатурыТовары.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	УстановкаЦенНоменклатурыТовары.СерияЦО КАК СерияЦО,
	|	УстановкаЦенНоменклатурыТовары.УпаковкаЦО КАК УпаковкаЦО,
	|	УстановкаЦенНоменклатурыТовары.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК НоваяЦенаВРознице,
	|	УстановкаЦенНоменклатурыТовары.Цена КАК НоваяЦенаВРозницеПоУпаковке,
	|	УстановкаЦенНоменклатурыТовары.ВидЦены КАК ВидЦены
	|ПОМЕСТИТЬ УстановкаЦенТоварыАссортимент
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК УстановкаЦенНоменклатурыТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураВидыЦен КАК НоменклатураВидыЦен
	|		ПО НоменклатураВидыЦен.Номенклатура = УстановкаЦенНоменклатурыТовары.Номенклатура
	|		И НоменклатураВидыЦен.ВидЦены = УстановкаЦенНоменклатурыТовары.ВидЦены
	|ГДЕ
	|	УстановкаЦенНоменклатурыТовары.Ссылка = &УстановкаЦенНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	УстановкаЦенТоварыАссортимент.Номенклатура КАК Номенклатура,
	|	ВЫБОР
	|		КОГДА
	|			ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоХарактеристике,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоСерии = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоСерии,
	|	ВЫБОР
	|		КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоУпаковке = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ПоУпаковке,
	|	ВЫБОР
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
	|			ТОГДА НоменклатураСпр.Ссылка
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВидНоменклатуры
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВладелецХарактеристик
	|		ИНАЧЕ НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК ВладелецХарактеристик
	|ПОМЕСТИТЬ ТаблицаНоменклатуры
	|ИЗ
	|	УстановкаЦенТоварыАссортимент КАК УстановкаЦенТоварыАссортимент
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
	|		ПО УстановкаЦенТоварыАссортимент.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|		ПО УстановкаЦенТоварыАссортимент.Номенклатура = НоменклатураСпр.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенТоварыАссортимент.Ссылка КАК Ссылка,
	|	УстановкаЦенТоварыАссортимент.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенТоварыАссортимент.Номенклатура КАК Номенклатура,
	|	ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЕСТЬNULL(ХарактеристикиНоменклатуры1.Ссылка,
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК Характеристика,
	|	УстановкаЦенТоварыАссортимент.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	УстановкаЦенТоварыАссортимент.СерияЦО КАК СерияЦО,
	|	ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
	|	УстановкаЦенТоварыАссортимент.УпаковкаЦО КАК УпаковкаЦО,
	|	УстановкаЦенТоварыАссортимент.НоваяЦенаВРознице КАК НоваяЦенаВРознице,
	|	УстановкаЦенТоварыАссортимент.НоваяЦенаВРозницеПоУпаковке КАК НоваяЦенаВРозницеПоУпаковке,
	|	УстановкаЦенТоварыАссортимент.ВидЦены КАК ВидЦены,
	|	ТаблицаНоменклатуры.ПоУпаковке КАК ПоУпаковке,
	|	ТаблицаНоменклатуры.ПоХарактеристике КАК ПоХарактеристике,
	|	ТаблицаНоменклатуры.ПоСерии КАК ПоСерии
	|ПОМЕСТИТЬ УстановкаЦенТоварыАссортиментДополненная
	|ИЗ
	|	УстановкаЦенТоварыАссортимент КАК УстановкаЦенТоварыАссортимент
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
	|		ПО УстановкаЦенТоварыАссортимент.Номенклатура = ТаблицаНоменклатуры.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры1
	|		ПО УстановкаЦенТоварыАссортимент.ХарактеристикаЦО = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И ТаблицаНоменклатуры.ВладелецХарактеристик = ХарактеристикиНоменклатуры1.Владелец
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
	|		ПО УстановкаЦенТоварыАссортимент.ХарактеристикаЦО <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		И УстановкаЦенТоварыАссортимент.ХарактеристикаЦО = ХарактеристикиНоменклатуры.ХарактеристикаНоменклатурыДляЦенообразования
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
	|		ПО ТаблицаНоменклатуры.ПоСерии
	|		И УстановкаЦенТоварыАссортимент.СерияЦО = СерииНоменклатуры.СерияНоменклатурыДляЦенообразования
	|		И УстановкаЦенТоварыАссортимент.СерияЦО <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенТоварыАссортимент.НомерСтроки КАК НомерСтроки,
	|	УстановкаЦенТоварыАссортимент.Номенклатура КАК Номенклатура,
	|	СправочникНоменклатура.Код КАК Код,
	|	СправочникНоменклатура.Артикул КАК Артикул,
	|	СправочникНоменклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
	|	ВЫБОР
	|		КОГДА УстановкаЦенТоварыАссортимент.ПоУпаковке
	|			ТОГДА УстановкаЦенТоварыАссортимент.УпаковкаЦО.Представление
	|		ИНАЧЕ СправочникНоменклатура.ЕдиницаИзмерения.Представление
	|	КОНЕЦ КАК ЕдиницаИзмерения,
	|	УстановкаЦенТоварыАссортимент.Серия КАК Серия,
	|	УстановкаЦенТоварыАссортимент.Характеристика КАК Характеристика,
	|	УстановкаЦенТоварыАссортимент.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	СправочникХарактеристикиНоменлатуры.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
	|	1 КАК Коэффициент,
	|	ВЫБОР
	|		КОГДА УстановкаЦенТоварыАссортимент.ПоУпаковке
	|			ТОГДА УстановкаЦенТоварыАссортимент.НоваяЦенаВРозницеПоУпаковке
	|		ИНАЧЕ УстановкаЦенТоварыАссортимент.НоваяЦенаВРознице
	|	КОНЕЦ КАК ЦенаВРознице,
	|	ВЫБОР
	|		КОГДА УстановкаЦенТоварыАссортимент.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) *
	|				(УстановкаЦенТоварыАссортимент.НоваяЦенаВРозницеПоУпаковке - ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0))
	|		ИНАЧЕ ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (УстановкаЦенТоварыАссортимент.НоваяЦенаВРознице -
	|			ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1))
	|	КОНЕЦ КАК ОтклонениеСтоимости,
	|	ВЫБОР
	|		КОГДА УстановкаЦенТоварыАссортимент.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
	|		ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
	|	КОНЕЦ КАК ЦенаВРозницеСтарая,
	|	ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) КАК Количество,
	|	УстановкаЦенТоварыАссортимент.ПоУпаковке КАК ПоУпаковке,
	|	УстановкаЦенТоварыАссортимент.ПоХарактеристике КАК ПоХарактеристике,
	|	УстановкаЦенТоварыАссортимент.ПоСерии КАК ПоСерии
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ УстановкаЦенТоварыАссортиментДополненная КАК УстановкаЦенТоварыАссортимент
	|		ПО УстановкаЦенНоменклатуры.Ссылка = УстановкаЦенТоварыАссортимент.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&КонецПредыдущегоДня, (Номенклатура, ВидЦены) В
	|			(ВЫБРАТЬ
	|				Т.Номенклатура,
	|				Т.ВидЦены
	|			ИЗ
	|				НоменклатураВидыЦен КАК Т)) КАК ЦеныНоменклатурыСрезПоследних
	|		ПО УстановкаЦенТоварыАссортимент.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|		И УстановкаЦенТоварыАссортимент.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
	|		И УстановкаЦенТоварыАссортимент.СерияЦО = ЦеныНоменклатурыСрезПоследних.СерияЦО
	|		И УстановкаЦенТоварыАссортимент.УпаковкаЦО = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
	|		И УстановкаЦенТоварыАссортимент.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
	|		ПО УстановкаЦенТоварыАссортимент.Номенклатура = Аналитика.Номенклатура
	|		И УстановкаЦенТоварыАссортимент.Характеристика = Аналитика.Характеристика
	|		И &РозничныйМагазин = Аналитика.МестоХранения
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(&КонецПредыдущегоДня, Организация = &Организация) КАК
	|			ТоварыОрганизацийОстатки
	|		ПО Аналитика.КлючАналитики = ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|		ПО СправочникНоменклатура.Ссылка = УстановкаЦенТоварыАссортимент.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СправочникХарактеристикиНоменлатуры
	|		ПО СправочникХарактеристикиНоменлатуры.Ссылка = УстановкаЦенТоварыАссортимент.Характеристика
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
	|	И ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) <> 0
	|	И ВЫБОР
	|		КОГДА УстановкаЦенТоварыАссортимент.ПоУпаковке
	|			ТОГДА ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) *
	|				(УстановкаЦенТоварыАссортимент.НоваяЦенаВРозницеПоУпаковке - ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) <> 0
	|		ИНАЧЕ ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток, 0) * (УстановкаЦенТоварыАссортимент.НоваяЦенаВРознице -
	|			ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)) <> 0
	|	КОНЕЦ
	|
	|УПОРЯДОЧИТЬ ПО
	|	УстановкаЦенТоварыАссортимент.НомерСтроки";
	Возврат ТекстЗапроса
КонецФункции

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

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

			СерииДляПечати 		= Неопределено;
			
			Если ИспользуетсяЦенообразование25 Тогда
				Если ЗначениеЗаполнено(ВыборкаСтрокТовары.ПоСерии) И ВыборкаСтрокТовары.ПоСерии Тогда
					СерииДляПечати 		= ВыборкаСтрокТовары.Серия;
				КонецЕсли;
			КонецЕсли;
			
			ОбластьДанных.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
				ВыборкаСтрокТовары.ПолноеНаименованиеНоменклатуры,
				ВыборкаСтрокТовары.ПолноеНаименованиеХарактеристики,
				,
				СерииДляПечати,
				ДопПараметрыПредставлениеНоменклатуры);
			ТабДокумент.Присоединить(ОбластьДанных);
			
			ИтогОтклонениеСтоимости = ИтогОтклонениеСтоимости + ВыборкаСтрокТовары.ОтклонениеСтоимости;
			
		КонецЦикла;
		
		// Итог
		ОбластьНомера = Макет.ПолучитьОбласть("Итог|ОбластьНомера");
		ОбластьКодов  = Макет.ПолучитьОбласть("Итог|ОбластьКодов");
		ОбластьДанных = Макет.ПолучитьОбласть("Итог|ОбластьДанных");
		
		ТабДокумент.Вывести(ОбластьНомера);
		Если ВыводитьКоды Тогда
			ТабДокумент.Присоединить(ОбластьКодов);
		КонецЕсли;
		ОбластьДанных.Параметры.ИтогОтклонениеСтоимости = ФормированиеПечатныхФорм.ФорматСумм(ИтогОтклонениеСтоимости, ПараметрыПечати.РозничныйМагазин.РозничныйВидЦены.ВалютаЦены);
		ТабДокумент.Присоединить(ОбластьДанных);
		
		ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
		ОбластьМакета.Параметры.Заполнить(Шапка);
		ТабДокумент.Вывести(ОбластьМакета);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, УстановкаЦенНоменклатуры);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции

// Функция формирует табличный документ с печатной формой переоценки в рознице.
//
// Возвращаемое значение:
//  ТабличныйДокумент - .
//
Функция СформироватьПечатнуюФормуПереоценкиТоваровВРозницеВТ(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
	
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПереоценкаТоваровВРознице_ПереоценкаТоваровВРознице";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.УстановкаЦенНоменклатуры.ПФ_MXL_ПереоценкаТоваровВРознице");
	
	КонтролироватьАссортимент = АссортиментСерверПовтИсп.КонтролироватьАссортимент(ПараметрыПечати.РозничныйМагазин);
	
	ДанныеДляПечати = ПолучитьИзВременногоХранилища(ПараметрыПечати.АдресДанныеДляПечатиВоВременномХранилище);
	
	ИспользуетсяЦенообразование25 = Ложь;
	Если Не ДанныеДляПечати.Свойство("ИспользуетсяЦенообразование25", ИспользуетсяЦенообразование25) Тогда
		ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДанныеДляПечати.ДатаДействующихЦен + 1);
	КонецЕсли;
	
	ОбщегоНазначенияУТ.ПронумероватьТаблицуЗначений(ДанныеДляПечати.Товары, "НомерСтроки");
	
	НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Товары",                   ДанныеДляПечати.Товары);
	Запрос.УстановитьПараметр("РозничныйМагазин",         ПараметрыПечати.РозничныйМагазин);
	Запрос.УстановитьПараметр("Организация",              ПараметрыПечати.Организация);
	Запрос.УстановитьПараметр("КонецПредыдущегоДня",      ДанныеДляПечати.ДатаДействующихЦен);
	Если КонтролироватьАссортимент Тогда
		
		ОбъектПланирования = АссортиментСервер.ОбъектПланирования(ПараметрыПечати.РозничныйМагазин);
		Запрос.УстановитьПараметр("ОбъектПланирования", ОбъектПланирования);
		Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДатаСеанса());
		
		Если ИспользуетсяЦенообразование25 Тогда
			ТекстЗапроса = ТекстЗапросаПереоценкиТоваровВРозницеВТПоАссортименту2_5();
		Иначе
			ТекстЗапроса = ТекстЗапросаПереоценкиТоваровВРозницеВТПоАссортименту();
		КонецЕсли;
	Иначе
		Запрос.УстановитьПараметр("ВидЦены",                  ПараметрыПечати.РозничныйМагазин.РозничныйВидЦены);
		Если ИспользуетсяЦенообразование25 Тогда
			ТекстЗапроса = ТекстЗапросаПереоценкиТоваровВРозницеВТ2_5();
		Иначе
			ТекстЗапроса = ТекстЗапросаПереоценкиТоваровВРозницеВТ();
		КонецЕсли;
	КонецЕсли;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки1",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"ЦеныНоменклатурыСрезПоследних.Упаковка",
			"ЦеныНоменклатурыСрезПоследних.Номенклатура"));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки2",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"УстановкаЦенНоменклатурыТовары.Упаковка",
			"УстановкаЦенНоменклатурыТовары.Номенклатура"));
	Запрос.Текст = ТекстЗапроса;
	
	УстановитьПривилегированныйРежим(Истина);
	РезультатПакетаЗапросов = Запрос.ВыполнитьПакет();
	УстановитьПривилегированныйРежим(Ложь);
	
	ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = 'Переоценка товаров в рознице за %1'", ОбщегоНазначения.КодОсновногоЯзыка()),
		Формат(ДанныеДляПечати.ДатаДействующихЦен, "ДЛФ=D"));
	ТабДокумент.Вывести(ОбластьМакета);
	
	ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
	ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
	ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ПараметрыПечати.Организация, ТекущаяДатаСеанса()), "ПолноеНаименование,");
	ТабДокумент.Вывести(ОбластьМакета);
	
	ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
	ОбластьМакета.Параметры.ПредставлениеПолучателя = ПараметрыПечати.РозничныйМагазин;
	ТабДокумент.Вывести(ОбластьМакета);
	
	// Шапка таблицы
	КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
	ИмяДополнительнойКолонки = КолонкаКодов.ИмяКолонки;
	ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
	ВыводитьКоды = ?(ЗначениеЗаполнено(ИмяДополнительнойКолонки),Истина, Ложь);
	
	ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьНомера");
	ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьКодов");
	ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьДанных");
	
	ТабДокумент.Вывести(ОбластьНомера);
	Если ВыводитьКоды Тогда
		ОбластьКодов.Параметры.ИмяКолонкиКодов = ПредставлениеКолонкиКодов;
		ТабДокумент.Присоединить(ОбластьКодов);
	КонецЕсли;
	ТабДокумент.Присоединить(ОбластьДанных);
	
	// Строки таблицы
	ОбластьНомера = Макет.ПолучитьОбласть("Строка|ОбластьНомера");
	ОбластьКодов  = Макет.ПолучитьОбласть("Строка|ОбластьКодов");
	ОбластьДанных = Макет.ПолучитьОбласть("Строка|ОбластьДанных");
	
	ИтогОтклонениеСтоимости = 0;
	НомерСтроки = 0;
	РезультатТовары = РезультатПакетаЗапросов[РезультатПакетаЗапросов.Количество() - 1]; // РезультатЗапроса
	ВыборкаСтрокТовары = РезультатТовары.Выбрать();
	Пока ВыборкаСтрокТовары.Следующий() Цикл
		
		НомерСтроки = НомерСтроки + 1;
		
		ОбластьНомера.Параметры.НомерСтроки = НомерСтроки;
		ТабДокумент.Вывести(ОбластьНомера);
		Если ВыводитьКоды Тогда
			Если ИмяДополнительнойКолонки = "Артикул" Тогда
				ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
			Иначе
				ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
			КонецЕсли;
			ТабДокумент.Присоединить(ОбластьКодов);
		КонецЕсли;
		
		ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
		ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
	
		ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);

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

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

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

// Параметры:
// 	Параметры - см. НоваяСтруктураПараметровПечати
// 
Процедура ВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры)
	
	// Шапка таблицы
	КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
	ИмяДополнительнойКолонки = КолонкаКодов.ИмяКолонки;
	ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
	ВыводитьКоды = ?(ЗначениеЗаполнено(ИмяДополнительнойКолонки), Истина, Ложь);
	
	ШапкаНомера  = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьНомера");
	ШапкаКодов   = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьКодов");
	ШапкаТовар   = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|ОбластьТовар");
	ШапкаВидЦены = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
		?(Не Параметры.ПараметрыПечати.ВыводитьШапку,"ОбластьВидЦеныУникальныйИдентификатор","ОбластьВидЦены"));
	Если Параметры.ИспользуетсяЦенообразование25 Тогда
		ШапкаУникальныеИдентификаторы = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|УникальныеИдентификаторы25");
	Иначе
		ШапкаУникальныеИдентификаторы = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|УникальныеИдентификаторы");
	КонецЕсли;
	
	Параметры.ТабДокумент.Вывести(ШапкаНомера);
	Если ВыводитьКоды Тогда
		ШапкаКодов.Параметры.ИмяКолонкиКодов = ПредставлениеКолонкиКодов;
		Параметры.ТабДокумент.Присоединить(ШапкаКодов);
	КонецЕсли;
	Если Не Параметры.ПараметрыПечати.ВыводитьШапку Тогда
		Параметры.ТабДокумент.Присоединить(ШапкаУникальныеИдентификаторы);
	КонецЕсли;
	Параметры.ТабДокумент.Присоединить(ШапкаТовар);
	
	Табл = Новый ТаблицаЗначений;
	Табл.Колонки.Добавить("ВидЦены");
	Табл.Колонки.Добавить("МакетОбласти");
	Табл.Колонки.Добавить("ВыводитьСуммуИзменения");
	Табл.Колонки.Добавить("ВыводитьПроцентИзменения");
	Табл.Колонки.Добавить("ВыводитьСтаруюЦену");
	
	ВыборкаПоВидамЦен = Параметры.РезультатЗапроса.ВидыЦен.Выбрать();
	Пока ВыборкаПоВидамЦен.Следующий() Цикл
		
		Новая                          = Табл.Добавить();
		Новая.ВидЦены                  = ВыборкаПоВидамЦен.ВидЦены;
		Новая.ВыводитьПроцентИзменения = Ложь;
		Новая.ВыводитьСуммуИзменения   = Ложь;
		Новая.ВыводитьСтаруюЦену       = Ложь;
		
		НайденныеСтроки = Параметры.ДеревоНастроек.Строки.НайтиСтроки(Новый Структура("Параметр", ВыборкаПоВидамЦен.ВидЦены), Ложь);
		Для Каждого ВидЦены Из НайденныеСтроки Цикл
			
			Для Каждого Колонка Из ВидЦены.Строки Цикл
				
				Если Колонка.Параметр = "СтараяЦена" И Колонка.ВыводитьНаПечать Тогда
					Новая.ВыводитьСтаруюЦену = Истина;
				КонецЕсли;
				
				Если Колонка.Параметр = "СуммаИзменения" И Колонка.ВыводитьНаПечать Тогда
					Новая.ВыводитьСуммуИзменения = Истина;
				КонецЕсли;
				
				Если Колонка.Параметр = "ПроцентИзменения" И Колонка.ВыводитьНаПечать Тогда
					Новая.ВыводитьПроцентИзменения = Истина;
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЦикла;
		
		Если Новая.ВыводитьСуммуИзменения Тогда
			
			Если Новая.ВыводитьПроцентИзменения И Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияСуммаИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияСуммаИзменения"));
			ИначеЕсли Новая.ВыводитьПроцентИзменения И Не Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныПроцентИзмененияСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныПроцентИзмененияСуммаИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|ОбластьВидЦеныПроцентИзмененияСуммаИзменения");
			ИначеЕсли Не Новая.ВыводитьПроцентИзменения И Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаСуммаИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаСуммаИзменения"));
			ИначеЕсли Не Новая.ВыводитьПроцентИзменения И Не Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСуммаИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСуммаИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСуммаИзменения"));
			КонецЕсли;
			
		Иначе
			
			Если Новая.ВыводитьПроцентИзменения И Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаПроцентИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаПроцентИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦенаПроцентИзменения"));
			ИначеЕсли Новая.ВыводитьПроцентИзменения И Не Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныПроцентИзмененияУникальныйИдентификатор",
					"ОбластьВидЦеныПроцентИзменения"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|ОбластьВидЦеныПроцентИзменения");
			ИначеЕсли Не Новая.ВыводитьПроцентИзменения И Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦена"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныСтараяЦенаУникальныйИдентификатор",
					"ОбластьВидЦеныСтараяЦена"));
			ИначеЕсли Не Новая.ВыводитьПроцентИзменения И Не Новая.ВыводитьСтаруюЦену Тогда
				ШапкаВидЦены       = Параметры.Макет.ПолучитьОбласть("ШапкаТаблицы|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныУникальныйИдентификатор",
					"ОбластьВидЦены"));
				Новая.МакетОбласти = Параметры.Макет.ПолучитьОбласть("Строка|" + 
					?(Не Параметры.ПараметрыПечати.ВыводитьШапку,
					"ОбластьВидЦеныУникальныйИдентификатор",
					"ОбластьВидЦены"));
			КонецЕсли;
			
		КонецЕсли;
		
		ШапкаВидЦены.Параметры.ВидЦены = ВыборкаПоВидамЦен.ВидЦены;
		Параметры.ТабДокумент.Присоединить(ШапкаВидЦены);
		
	КонецЦикла;
	
	Области = Новый Структура();
	Области.Вставить("ОбластьНомера", Параметры.Макет.ПолучитьОбласть("Строка|ОбластьНомера"));
	Области.Вставить("ОбластьКодов", Параметры.Макет.ПолучитьОбласть("Строка|ОбластьКодов"));
	Области.Вставить("ОбластьТовар", Параметры.Макет.ПолучитьОбласть("Строка|ОбластьТовар"));
	Если Параметры.ИспользуетсяЦенообразование25 Тогда
		Области.Вставить("ОбластьУникальныеИдентификаторы", Параметры.Макет.ПолучитьОбласть("Строка|УникальныеИдентификаторы25"));
	Иначе
		Области.Вставить("ОбластьУникальныеИдентификаторы", Параметры.Макет.ПолучитьОбласть("Строка|УникальныеИдентификаторы"));
	КонецЕсли;
	
	НомерСтроки = 0;
	
	ВыборкаПоНоменклатуре = Параметры.РезультатЗапроса.Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаПоНоменклатуре.Следующий() Цикл
		
		Если Не ЗначениеЗаполнено(ВыборкаПоНоменклатуре.Номенклатура) Тогда
			Продолжить;
		КонецЕсли;
		
		ВыборкаПоХарактеристикам = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаПоХарактеристикам.Следующий() Цикл
		
			Если Параметры.ИспользуетсяЦенообразование25 Тогда
				
				ВыборкаПоСериям = ВыборкаПоХарактеристикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				Пока ВыборкаПоСериям.Следующий() Цикл
					ВыборкаПоУпаковкам = ВыборкаПоСериям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					Пока ВыборкаПоУпаковкам.Следующий() Цикл
						ФрагментВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры, ВыборкаПоУпаковкам, ВыводитьКоды, Табл, ИмяДополнительнойКолонки, Области, НомерСтроки);
					КонецЦикла;
				КонецЦикла;
				
			Иначе
				ФрагментВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры, ВыборкаПоХарактеристикам, ВыводитьКоды, Табл, ИмяДополнительнойКолонки, Области, НомерСтроки);
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры


Процедура ФрагментВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры, ВыборкаПоХарактеристикам, Знач ВыводитьКоды, Знач Табл, Знач ИмяДополнительнойКолонки, Области, НомерСтроки)

	НомерСтроки = НомерСтроки + 1;
	Области.ОбластьНомера.Параметры.НомерСтроки = НомерСтроки;
	Параметры.ТабДокумент.Вывести(Области.ОбластьНомера);

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


// Функция-конструктор параметров печати
// 
// Возвращаемое значение:
// 	Структура - Содержит:
// 		* НомерСтрокиНачало - Число - 
// 		* ТабДокумент - ТабличныйДокумент - 
// 		* Макет - ТабличныйДокумент - 
// 		* ДеревоНастроек - ДеревоЗначений - 
// 		* УстановкаЦенНоменклатуры - ДокументСсылка.УстановкаЦенНоменклатуры, Строка - 
// 		* ОбъектыПечати - СписокЗначений - 
// 		* ПараметрыПечати - Структура - 
// 		* РезультатЗапроса - Структура - содержит:
// 			** Номенклатура - РезультатЗапроса - 
// 			** ВидыЦен - РезультатЗапроса - 
// 			** Шапка - РезультатЗапроса - 
//  
Функция НоваяСтруктураПараметровПечати()

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

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

	ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
	
	Если ДанныеДляПечати = Неопределено Тогда

		ПервыйДокумент = Истина;
		Для Каждого УстановкаЦенНоменклатуры Из МассивОбъектов Цикл
			
			Если Не ПервыйДокумент Тогда
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			
			ИспользуетсяЦенообразование25 = (УстановкаЦенНоменклатуры.Товары.Количество() = 0);
			
			ПервыйДокумент = Ложь;
			
			НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
			Если ИспользуетсяЦенообразование25 Тогда
				Запрос = Новый Запрос(
				"ВЫБРАТЬ
				|	УстановкаЦенНоменклатуры.Ссылка       КАК Ссылка,
				|	УстановкаЦенНоменклатуры.Ссылка.Номер КАК Номер,
				|	УстановкаЦенНоменклатуры.Ссылка.Дата  КАК Дата,
				|	Представление(УстановкаЦенНоменклатуры.Ссылка.Ответственный) КАК ОтветственныйПредставление
				|ИЗ
				|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
				|ГДЕ
				|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
				|;
				|
				|////////////////////////////////////////////////////////////////////////////////
				|ВЫБРАТЬ
				|	Товары.НомерСтроки                       КАК НомерСтроки,
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.ХарактеристикаЦО                  КАК ХарактеристикаЦО,
				|	Товары.СерияЦО                           КАК СерияЦО,
				|	ВЫБОР
				|		КОГДА Товары.СерияЦО.Предопределенный
				|			ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
				|		ИНАЧЕ Товары.СерияЦО
				|	КОНЕЦ КАК СерияЦОДляСвязи,
				|	Товары.УпаковкаЦО                        КАК УпаковкаЦО,
				|	ВЫБОР
				|		КОГДА Товары.УпаковкаЦО = Товары.Номенклатура.ЕдиницаИзмерения
				|			ТОГДА ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
				|		ИНАЧЕ Товары.УпаковкаЦО
				|	КОНЕЦ КАК УпаковкаЦОДляСвязи,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены
				|ПОМЕСТИТЬ ТаблицаДанных
				|ИЗ
				|	Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК Товары
				|ГДЕ
				|	Товары.Ссылка = &УстановкаЦенНоменклатуры
				|	И Товары.ВидЦены В (&ВидыЦен)
				|;
				|
				|ВЫБРАТЬ
				|	Товары.НомерСтроки                       КАК НомерСтроки,
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.ХарактеристикаЦО                  КАК ХарактеристикаЦО,
				|	Товары.СерияЦО                           КАК СерияЦО,
				|	Товары.СерияЦОДляСвязи                   КАК СерияЦОДляСвязи,
				|	Товары.УпаковкаЦО                        КАК УпаковкаЦО,
				|	Товары.УпаковкаЦОДляСвязи                КАК УпаковкаЦОДляСвязи,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены,
				|	
				|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ КАК ДействующаяЦена,
				|	
				|	ВЫРАЗИТЬ(ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Цена <> 0 ТОГДА 100*(Товары.Цена - ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ)/ 
				|	
				|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ ИНАЧЕ 0.00 КОНЕЦ КАК Число(15,2)) КАК ПроцентИзменения
				|	
				|ПОМЕСТИТЬ Товары
				|ИЗ
				|	ТаблицаДанных КАК Товары
				|	
				|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаСреза, (Номенклатура, ХарактеристикаЦО, СерияЦО, УпаковкаЦО, ВидЦены) В 
				|			(ВЫБРАТЬ
				|				Т.Номенклатура,
				|				Т.ХарактеристикаЦО,
				|				Т.СерияЦОДляСвязи,
				|				Т.УпаковкаЦОДляСвязи,
				|				Т.ВидЦены
				|			ИЗ ТаблицаДанных КАК Т)) КАК ЦеныНоменклатурыСрезПоследних
				|		ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
				|		И Товары.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
				|		И Товары.СерияЦОДляСвязи = ЦеныНоменклатурыСрезПоследних.СерияЦО
				|		И Товары.УпаковкаЦОДляСвязи = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
				|		И Товары.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
				|
				|;
				|
				|ВЫБРАТЬ РАЗЛИЧНЫЕ
				|	Товары.ВидЦены КАК ВидЦены
				|ИЗ
				|	Товары КАК Товары
				|ГДЕ
				|	Товары.ВидЦены В (&ВидыЦен)
				|	И Товары.ПроцентИзменения <> 0 ИЛИ &Все
				|УПОРЯДОЧИТЬ ПО
				|	Товары.ВидЦены.РеквизитДопУпорядочивания
				|;
				|
				|ВЫБРАТЬ
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.ХарактеристикаЦО КАК ХарактеристикаЦО,
				|	Товары.СерияЦО КАК СерияЦО,
				|	Товары.УпаковкаЦО КАК УпаковкаЦО,
				|	Товары.Номенклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
				|	Представление(Товары.ХарактеристикаЦО) КАК ПолноеНаименованиеХарактеристики,
				|	Товары.Номенклатура.Код                  КАК Код,
				|	Товары.Номенклатура.Артикул              КАК Артикул,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Номенклатура.ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены,
				|	ЕСТЬNULL(Товары.ДействующаяЦена,0)       КАК СтараяЦена,
				|	Товары.ПроцентИзменения                  КАК ПроцентИзменения
				|	
				|ИЗ
				|	Товары КАК Товары
				|ГДЕ
				|	Товары.ПроцентИзменения <> 0 ИЛИ &Все
				|УПОРЯДОЧИТЬ ПО
				|	Товары.НомерСтроки
				|
				|ИТОГИ ПО
				|	Номенклатура, ХарактеристикаЦО, СерияЦО, УпаковкаЦО");
			
			Иначе
					
				Запрос = Новый Запрос(
				"ВЫБРАТЬ
				|	УстановкаЦенНоменклатуры.Ссылка       КАК Ссылка,
				|	УстановкаЦенНоменклатуры.Ссылка.Номер КАК Номер,
				|	УстановкаЦенНоменклатуры.Ссылка.Дата  КАК Дата,
				|	Представление(УстановкаЦенНоменклатуры.Ссылка.Ответственный) КАК ОтветственныйПредставление
				|ИЗ
				|	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
				|ГДЕ
				|	УстановкаЦенНоменклатуры.Ссылка = &УстановкаЦенНоменклатуры
				|;
				|
				|////////////////////////////////////////////////////////////////////////////////
				|ВЫБРАТЬ
				|	Товары.НомерСтроки                       КАК НомерСтроки,
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.Характеристика                    КАК Характеристика,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены
				|ПОМЕСТИТЬ ТаблицаДанных
				|ИЗ
				|	Документ.УстановкаЦенНоменклатуры.Товары КАК Товары
				|ГДЕ
				|	Товары.Ссылка = &УстановкаЦенНоменклатуры
				|	И Товары.ВидЦены В (&ВидыЦен)
				|;
				|
				|ВЫБРАТЬ
				|	Товары.НомерСтроки                       КАК НомерСтроки,
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.Характеристика                    КАК Характеристика,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены,
				|	
				|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ КАК ДействующаяЦена,
				|	
				|	ВЫРАЗИТЬ(ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Цена <> 0 ТОГДА 100*(Товары.Цена - ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ)/ 
				|	
				|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
				|		ЦеныНоменклатурыСрезПоследних.Цена
				|	ИНАЧЕ
				|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
				|	КОНЕЦ ИНАЧЕ 0.00 КОНЕЦ КАК Число(15,2)) КАК ПроцентИзменения
				|	
				|ПОМЕСТИТЬ Товары
				|ИЗ
				|	ТаблицаДанных КАК Товары
				|	
				|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, (Номенклатура, Характеристика, ВидЦены) В
				|			(ВЫБРАТЬ
				|				Т.Номенклатура,
				|				Т.Характеристика,
				|				Т.ВидЦены
				|			ИЗ ТаблицаДанных КАК Т)) КАК ЦеныНоменклатурыСрезПоследних
				|
				|		ПО Товары.Номенклатура      = ЦеныНоменклатурыСрезПоследних.Номенклатура
				|			И Товары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
				|			И Товары.ВидЦены        = ЦеныНоменклатурыСрезПоследних.ВидЦены
				|
				|ГДЕ
				|	(
				|		ВЫБОР
				|			КОГДА Товары.Номенклатура.ИспользованиеХарактеристик <> ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
				|				И Товары.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) ТОГДА ЛОЖЬ
				|			ИНАЧЕ ИСТИНА
				|		КОНЕЦ
				|	)
				|;
				|
				|ВЫБРАТЬ РАЗЛИЧНЫЕ
				|	Товары.ВидЦены КАК ВидЦены
				|ИЗ
				|	Товары КАК Товары
				|ГДЕ
				|	Товары.ПроцентИзменения <> 0 ИЛИ &Все
				|УПОРЯДОЧИТЬ ПО
				|	Товары.ВидЦены.РеквизитДопУпорядочивания
				|;
				|
				|ВЫБРАТЬ
				|	Товары.Номенклатура                      КАК Номенклатура,
				|	Товары.Характеристика                    КАК Характеристика,
				|	Товары.Номенклатура.НаименованиеПолное   КАК ПолноеНаименованиеНоменклатуры,
				|	Товары.Характеристика.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
				|	Товары.Номенклатура.Код                  КАК Код,
				|	Товары.Номенклатура.Артикул              КАК Артикул,
				|	Товары.Упаковка                          КАК Упаковка,
				|	Товары.Номенклатура.ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
				|	Товары.Цена                              КАК Цена,
				|	Товары.ВидЦены                           КАК ВидЦены,
				|	ЕСТЬNULL(Товары.ДействующаяЦена,0)       КАК СтараяЦена,
				|	Товары.ПроцентИзменения                  КАК ПроцентИзменения
				|	
				|ИЗ
				|	Товары КАК Товары
				|ГДЕ
				|	Товары.ПроцентИзменения <> 0 ИЛИ &Все
				|УПОРЯДОЧИТЬ ПО
				|	Товары.НомерСтроки
				|
				|ИТОГИ ПО
				|	Номенклатура, Характеристика");
					
			КонецЕсли;
			
			Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
				Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
					"ЦеныНоменклатурыСрезПоследних.Упаковка",
					"ЦеныНоменклатурыСрезПоследних.Номенклатура"));
			Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки3",
				Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
					"Товары.Упаковка",
					"Товары.Номенклатура"));
			Запрос.УстановитьПараметр("УстановкаЦенНоменклатуры", УстановкаЦенНоменклатуры);
			Запрос.УстановитьПараметр("ДатаСреза",                УстановкаЦенНоменклатуры.Дата - 1);
			Запрос.УстановитьПараметр("ВидыЦен",                  ВидыЦен);
			Запрос.УстановитьПараметр("Все",                      Не ПараметрыПечати.ПечататьТолькоИзмененныеЦены);
			РезультатЗапроса = Запрос.ВыполнитьПакет();
			
			Параметры = НоваяСтруктураПараметровПечати();
			
			Параметры.НомерСтрокиНачало             = НомерСтрокиНачало;
			Параметры.ТабДокумент                   = ТабДокумент;
			Параметры.Макет                         = Макет;
			Параметры.ДеревоНастроек                = ДеревоНастроек;
			Параметры.УстановкаЦенНоменклатуры      = УстановкаЦенНоменклатуры;
			Параметры.ОбъектыПечати                 = ОбъектыПечати;
			Параметры.ПараметрыПечати               = ПараметрыПечати;
			
			Параметры.РезультатЗапроса.Шапка        = РезультатЗапроса[0];
			Параметры.РезультатЗапроса.ВидыЦен      = РезультатЗапроса[3];
			Параметры.РезультатЗапроса.Номенклатура = РезультатЗапроса[4];
			Параметры.ИспользуетсяЦенообразование25 = ИспользуетсяЦенообразование25;
			
			Шапка = Параметры.РезультатЗапроса.Шапка.Выбрать();
			Шапка.Следующий();
			
			Если Параметры.ПараметрыПечати.ВыводитьШапку Тогда
				ОбластьМакета = Параметры.Макет.ПолучитьОбласть("Заголовок");
				ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(
					Параметры.ТабДокумент, Параметры.Макет, ОбластьМакета, Шапка.Ссылка);
				ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
					Шапка, НСтр("ru = 'Установка цен номенклатуры'", ОбщегоНазначения.КодОсновногоЯзыка()));
				Параметры.ТабДокумент.Вывести(ОбластьМакета);
			КонецЕсли;
			
			ВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры);
			
			Если Параметры.ПараметрыПечати.ВыводитьШапку Тогда
				ОбластьМакета = Параметры.Макет.ПолучитьОбласть("Подписи");
				ОбластьМакета.Параметры.Заполнить(Шапка);
				Параметры.ТабДокумент.Вывести(ОбластьМакета);
			КонецЕсли;
			
			УправлениеПечатью.ЗадатьОбластьПечатиДокумента(Параметры.ТабДокумент, Параметры.НомерСтрокиНачало, Параметры.ОбъектыПечати, Параметры.УстановкаЦенНоменклатуры);
			
		КонецЦикла;
	
	Иначе

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

			Запрос = Новый Запрос(
			"ВЫБРАТЬ
			|	НЕОПРЕДЕЛЕНО КАК Ссылка,
			|	НЕОПРЕДЕЛЕНО КАК Номер,
			|	НЕОПРЕДЕЛЕНО КАК Дата,
			|	НЕОПРЕДЕЛЕНО КАК ОтветственныйПредставление
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Товары.НомерСтроки КАК НомерСтроки,
			|	Товары.Номенклатура КАК Номенклатура,
			|	Товары.ХарактеристикаЦО КАК ХарактеристикаЦО,
			|	Товары.СерияЦО КАК СерияЦО,
			|	Товары.СерияЦОДляСвязи КАК СерияЦОДляСвязи,
			|	Товары.УпаковкаЦО КАК УпаковкаЦО,
			|	Товары.УпаковкаЦОДляСвязи КАК УпаковкаЦОДляСвязи,
			|	Товары.Упаковка КАК Упаковка,
			|	Товары.Цена КАК Цена,
			|	Товары.ВидЦены КАК ВидЦены
			|ПОМЕСТИТЬ ТаблицаДанных
			|ИЗ
			|	&Товары КАК Товары
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Товары.НомерСтроки КАК НомерСтроки,
			|	Товары.Номенклатура КАК Номенклатура,
			|	Товары.ХарактеристикаЦО КАК ХарактеристикаЦО,
			|	Товары.СерияЦО КАК СерияЦО,
			|	Товары.УпаковкаЦО КАК УпаковкаЦО,
			|	Товары.Упаковка КАК Упаковка,
			|	Товары.Цена КАК Цена,
			|	Товары.ВидЦены КАК ВидЦены,
			|	ВЫБОР
			|		КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка
			|			ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
			|		ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) *
			|			ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1)
			|	КОНЕЦ КАК ДействующаяЦена,
			|	ВЫРАЗИТЬ(ВЫБОР
			|		КОГДА ЦеныНоменклатурыСрезПоследних.Цена <> 0
			|			ТОГДА 100 * (Товары.Цена - ВЫБОР
			|				КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка
			|					ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
			|				ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) *
			|					ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1)
			|			КОНЕЦ) / ВЫБОР
			|				КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка
			|					ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
			|				ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) *
			|					ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1)
			|			КОНЕЦ
			|		ИНАЧЕ 0.00
			|	КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ПроцентИзменения
			|ПОМЕСТИТЬ Товары
			|ИЗ
			|	ТаблицаДанных КАК Товары
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаСреза, (Номенклатура, ХарактеристикаЦО,
			|			СерияЦО, УпаковкаЦО, ВидЦены) В
			|			(ВЫБРАТЬ
			|				Т.Номенклатура,
			|				Т.ХарактеристикаЦО,
			|				Т.СерияЦОДляСвязи,
			|				Т.УпаковкаЦОДляСвязи,
			|				Т.ВидЦены
			|			ИЗ
			|				ТаблицаДанных КАК Т
			|			ГДЕ
			|				Т.ВидЦены В (&ВидыЦен))) КАК ЦеныНоменклатурыСрезПоследних
			|		ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
			|		И Товары.ХарактеристикаЦО = ЦеныНоменклатурыСрезПоследних.ХарактеристикаЦО
			|		И Товары.СерияЦОДляСвязи = ЦеныНоменклатурыСрезПоследних.СерияЦО
			|		И Товары.УпаковкаЦОДляСвязи = ЦеныНоменклатурыСрезПоследних.УпаковкаЦО
			|		И Товары.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
			|ГДЕ
			|	Товары.ВидЦены В (&ВидыЦен)
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ РАЗЛИЧНЫЕ
			|	Товары.ВидЦены КАК ВидЦены
			|ИЗ
			|	Товары КАК Товары
			|ГДЕ
			|	Товары.ВидЦены В (&ВидыЦен)
			|	И Товары.ПроцентИзменения <> 0
			|	ИЛИ &Все
			|УПОРЯДОЧИТЬ ПО
			|	Товары.ВидЦены.РеквизитДопУпорядочивания
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Товары.Номенклатура КАК Номенклатура,
			|	Товары.ХарактеристикаЦО КАК ХарактеристикаЦО,
			|	Товары.СерияЦО КАК СерияЦО,
			|	Товары.УпаковкаЦО КАК УпаковкаЦО,
			|	Товары.Номенклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
			|	Представление(Товары.ХарактеристикаЦО) КАК ПолноеНаименованиеХарактеристики,
			|	Товары.Номенклатура.Код КАК Код,
			|	Товары.Номенклатура.Артикул КАК Артикул,
			|	Товары.Упаковка КАК Упаковка,
			|	Товары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
			|	Товары.Цена КАК Цена,
			|	Товары.ВидЦены КАК ВидЦены,
			|	ЕСТЬNULL(Товары.ДействующаяЦена, 0) КАК СтараяЦена,
			|	Товары.ПроцентИзменения КАК ПроцентИзменения
			|ИЗ
			|	Товары КАК Товары
			|ГДЕ
			|	Товары.ПроцентИзменения <> 0
			|	ИЛИ &Все
			|УПОРЯДОЧИТЬ ПО
			|	Товары.НомерСтроки
			|
			|ИТОГИ ПО
			|	Номенклатура, ХарактеристикаЦО, СерияЦО, УпаковкаЦО");
		
		Иначе
			
			Запрос = Новый Запрос(
			"ВЫБРАТЬ
			|	Неопределено КАК Ссылка,
			|	Неопределено КАК Номер,
			|	Неопределено КАК Дата,
			|	Неопределено КАК ОтветственныйПредставление
			|;
			|
			|ВЫБРАТЬ
			|	Товары.НомерСтроки    КАК НомерСтроки,
			|	Товары.Номенклатура   КАК Номенклатура,
			|	Товары.Характеристика КАК Характеристика,
			|	Товары.Упаковка       КАК Упаковка,
			|	Товары.Цена           КАК Цена,
			|	Товары.ВидЦены        КАК ВидЦены
			|ПОМЕСТИТЬ ТаблицаДанных
			|ИЗ
			|	&Товары КАК Товары
			|;
			|
			|ВЫБРАТЬ
			|	Товары.НомерСтроки                       КАК НомерСтроки,
			|	Товары.Номенклатура                      КАК Номенклатура,
			|	Товары.Характеристика                    КАК Характеристика,
			|	Товары.Упаковка                          КАК Упаковка,
			|	Товары.Цена                              КАК Цена,
			|	Товары.ВидЦены                           КАК ВидЦены,
			|	
			|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
			|		ЦеныНоменклатурыСрезПоследних.Цена
			|	ИНАЧЕ
			|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
			|	КОНЕЦ КАК ДействующаяЦена,
			|	
			|	ВЫРАЗИТЬ(ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Цена <> 0 ТОГДА 100*(Товары.Цена - ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
			|		ЦеныНоменклатурыСрезПоследних.Цена
			|	ИНАЧЕ
			|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
			|	КОНЕЦ)/ 
			|	
			|	ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = Товары.Упаковка ТОГДА
			|		ЦеныНоменклатурыСрезПоследних.Цена
			|	ИНАЧЕ
			|		ЦеныНоменклатурыСрезПоследних.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1)*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3,1)
			|	КОНЕЦ ИНАЧЕ 0.00 КОНЕЦ КАК Число(15,2)) КАК ПроцентИзменения
			|	
			|ПОМЕСТИТЬ Товары
			|ИЗ
			|	ТаблицаДанных КАК Товары
			|	
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, (Номенклатура, Характеристика, ВидЦены) В (ВЫБРАТЬ Т.Номенклатура, Т.Характеристика, Т.ВидЦены ИЗ ТаблицаДанных КАК Т ГДЕ Т.ВидЦены В (&ВидыЦен))) КАК ЦеныНоменклатурыСрезПоследних
			|
			|		ПО Товары.Номенклатура      = ЦеныНоменклатурыСрезПоследних.Номенклатура
			|			И Товары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
			|			И Товары.ВидЦены        = ЦеныНоменклатурыСрезПоследних.ВидЦены
			|
			|ГДЕ
			|	Товары.ВидЦены В (&ВидыЦен)
			|	И (
			|		ВЫБОР
			|			КОГДА Товары.Номенклатура.ИспользованиеХарактеристик <> ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
			|				И Товары.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) ТОГДА ЛОЖЬ
			|			ИНАЧЕ ИСТИНА
			|		КОНЕЦ
			|	)
			|;
			|
			|ВЫБРАТЬ РАЗЛИЧНЫЕ
			|	Товары.ВидЦены КАК ВидЦены
			|ИЗ
			|	Товары КАК Товары
			|ГДЕ
			|	Товары.ВидЦены В (&ВидыЦен)
			|	И Товары.ПроцентИзменения <> 0 ИЛИ &Все
			|УПОРЯДОЧИТЬ ПО
			|	Товары.ВидЦены.РеквизитДопУпорядочивания
			|;
			|
			|ВЫБРАТЬ
			|	Товары.Номенклатура                      КАК Номенклатура,
			|	Товары.Характеристика                    КАК Характеристика,
			|	Товары.Номенклатура.НаименованиеПолное   КАК ПолноеНаименованиеНоменклатуры,
			|	Товары.Характеристика.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
			|	Товары.Номенклатура.Код                  КАК Код,
			|	Товары.Номенклатура.Артикул              КАК Артикул,
			|	Товары.Упаковка                          КАК Упаковка,
			|	Товары.Номенклатура.ЕдиницаИзмерения     КАК ЕдиницаИзмерения,
			|	Товары.Цена                              КАК Цена,
			|	Товары.ВидЦены                           КАК ВидЦены,
			|	ЕСТЬNULL(Товары.ДействующаяЦена,0)       КАК СтараяЦена,
			|	Товары.ПроцентИзменения                  КАК ПроцентИзменения
			|	
			|ИЗ
			|	Товары КАК Товары
			|ГДЕ
			|	Товары.ПроцентИзменения <> 0 ИЛИ &Все
			|УПОРЯДОЧИТЬ ПО
			|	Товары.НомерСтроки
			|
			|ИТОГИ ПО
			|	Номенклатура, Характеристика");
		КонецЕсли;
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
			Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
				"ЦеныНоменклатурыСрезПоследних.Упаковка",
				"ЦеныНоменклатурыСрезПоследних.Номенклатура"));
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки3",
				Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
					"Товары.Упаковка",
					"Товары.Номенклатура"));
		Запрос.УстановитьПараметр("ДатаСреза",                ДанныеДляПечати.ДатаДействующихЦен);
		Запрос.УстановитьПараметр("ВидыЦен",                  ВидыЦен);
		Запрос.УстановитьПараметр("Товары",                   ДанныеДляПечати.Товары);
		Запрос.УстановитьПараметр("Все",                      Не ПараметрыПечати.ПечататьТолькоИзмененныеЦены);
		РезультатЗапроса = Запрос.ВыполнитьПакет();
		
		Параметры = НоваяСтруктураПараметровПечати();
		
		Параметры.НомерСтрокиНачало             = НомерСтрокиНачало;
		Параметры.ТабДокумент                   = ТабДокумент;
		Параметры.Макет                         = Макет;
		Параметры.ДеревоНастроек                = ДеревоНастроек;
		Параметры.УстановкаЦенНоменклатуры      = УстановкаЦенНоменклатуры;
		Параметры.ОбъектыПечати                 = ОбъектыПечати;
		Параметры.ПараметрыПечати               = ПараметрыПечати;
		Параметры.ИспользуетсяЦенообразование25 = ИспользуетсяЦенообразование25;
		
		Параметры.РезультатЗапроса.Шапка        = РезультатЗапроса[0];
		Параметры.РезультатЗапроса.ВидыЦен      = РезультатЗапроса[3];
		Параметры.РезультатЗапроса.Номенклатура = РезультатЗапроса[4];
		
		Если УстановкаЦенНоменклатуры = Неопределено Тогда
			Параметры.УстановкаЦенНоменклатуры = "ОбъектыПечатиНеЗаданы";
		КонецЕсли;
		
		Шапка = Параметры.РезультатЗапроса.Шапка.Выбрать();
		Шапка.Следующий();
		
		Если Параметры.ПараметрыПечати.ВыводитьШапку Тогда
			ОбластьМакета = Параметры.Макет.ПолучитьОбласть("Заголовок");
			ОбластьМакета.Параметры.ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Изменение цен номенклатуры за %1'", ОбщегоНазначения.КодОсновногоЯзыка()),
				Формат(ДанныеДляПечати.ДатаДействующихЦен, "ДЛФ=D"));
			Параметры.ТабДокумент.Вывести(ОбластьМакета);
		КонецЕсли;
		
		ВывестиТабличнуюЧастьВПечатнуюФормуУстановкаЦенНоменклатуры(Параметры);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(Параметры.ТабДокумент, Параметры.НомерСтрокиНачало, Параметры.ОбъектыПечати, Параметры.УстановкаЦенНоменклатуры);
		
	КонецЕсли;
	
	Возврат ТабДокумент;
	
КонецФункции

// Функция помещает необходимые данные в структуру. Структура помещается во временное хранилище.
// 
// Параметры:
//  МассивДокументов - Массив из ДокументСсылка.УстановкаЦенНоменклатуры - документов
// 
// Возвращаемое значение:
//  Строка - адрес структуры данных во временном хранилище.
Функция ДанныеДляПечатиЭтикеток(МассивДокументов) Экспорт

	ПараметрыПечати = Новый Структура();
	ПараметрыПечати.Вставить("ВариантПечати", "ПечатьЭтикеток");
	ПараметрыПечати.Вставить("ВариантЗаполнения", "ЗаполнитьКоличествоЭтикетокПоОстаткамНаСкладе");

	Возврат ДанныеДляПечатиЭтикетокИлиЦенников(МассивДокументов, ПараметрыПечати);
	
КонецФункции

// Функция помещает необходимые данные в структуру. Структура помещается во временное хранилище.
// 
// Параметры:
//  МассивДокументов - Массив из ДокументСсылка.УстановкаЦенНоменклатуры - документов
// 
// Возвращаемое значение:
//  Строка -адрес структуры данных во временном хранилище.
Функция ДанныеДляПечатиЦенников(МассивДокументов) Экспорт

	ПараметрыПечати = Новый Структура();
	ПараметрыПечати.Вставить("ВариантПечати", "ПечатьЦенников");
	ПараметрыПечати.Вставить("ВариантЗаполнения", "ЗаполнитьКоличествоЦенниковПоДокументу");

	Возврат ДанныеДляПечатиЭтикетокИлиЦенников(МассивДокументов, ПараметрыПечати);
	
КонецФункции

// Функция помещает необходимые данные в структуру. Структура помещается во временное хранилище.
// 
// Параметры:
//  МассивДокументов - Массив из ДокументСсылка.УстановкаЦенНоменклатуры - документов
//  ПараметрыПечати - Структура - Параметры печати:
// * ВариантПечати - Строка -
// * ВариантЗаполнения - Строка -
// 
// Возвращаемое значение:
//  Строка -- адрес структуры данных во временном хранилище.
Функция ДанныеДляПечатиЭтикетокИлиЦенников(МассивДокументов, ПараметрыПечати)
	
	Запрос = Новый Запрос;

	Запрос.Текст = 
	"ВЫБРАТЬ
	|	УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО КАК ХарактеристикаЦО,
	|	УстановкаЦенНоменклатурыТовары.УпаковкаЦО КАК Упаковка,
	|	ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
	|	МИНИМУМ(УстановкаЦенНоменклатурыТовары.НомерСтроки) КАК Порядок,
	|	ВЫБОР
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
	|			ТОГДА НоменклатураСпр.Ссылка
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВидНоменклатуры
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВладелецХарактеристик
	|		ИНАЧЕ НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК ВладелецХарактеристик
	|ПОМЕСТИТЬ ЦеныНоменклатурыПредв
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК УстановкаЦенНоменклатурыТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
	|		ПО УстановкаЦенНоменклатурыТовары.СерияЦО = СерииНоменклатуры.СерияНоменклатурыДляЦенообразования
	|		И УстановкаЦенНоменклатурыТовары.СерияЦО <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
	|		ПО УстановкаЦенНоменклатурыТовары.Номенклатура = НоменклатураСпр.Ссылка
	|ГДЕ
	|	УстановкаЦенНоменклатурыТовары.Ссылка В (&МассивДокументов)
	|	И ВЫБОР
	|		КОГДА УстановкаЦенНоменклатурыТовары.Номенклатура.ИспользованиеХарактеристик В
	|		(ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
	|			ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
	|			ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
	|		И УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ
	|СГРУППИРОВАТЬ ПО
	|	УстановкаЦенНоменклатурыТовары.Номенклатура,
	|	УстановкаЦенНоменклатурыТовары.УпаковкаЦО,
	|	ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)),
	|	УстановкаЦенНоменклатурыТовары.ХарактеристикаЦО,
	|	ВЫБОР
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
	|			ТОГДА НоменклатураСпр.Ссылка
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВидНоменклатуры
	|		КОГДА
	|			НоменклатураСпр.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
	|			ТОГДА НоменклатураСпр.ВладелецХарактеристик
	|		ИНАЧЕ НЕОПРЕДЕЛЕНО
	|	КОНЕЦ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеПоНоменклатуре.Номенклатура КАК Номенклатура,
	|	ДанныеПоНоменклатуре.Характеристика КАК Характеристика,
	|	ДанныеПоНоменклатуре.Упаковка,
	|	ДанныеПоНоменклатуре.Серия,
	|	МИНИМУМ(ДанныеПоНоменклатуре.Порядок) КАК Порядок,
	|	СУММА(1) КАК Количество
	|ИЗ
	|	(ВЫБРАТЬ
	|		ЦеныНоменклатурыПредв.Номенклатура,
	|		ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЕСТЬNULL(ХарактеристикиНоменклатуры1.Ссылка,
	|			ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК Характеристика,
	|		ЦеныНоменклатурыПредв.Упаковка,
	|		ЦеныНоменклатурыПредв.Серия,
	|		ЦеныНоменклатурыПредв.Порядок
	|	ИЗ
	|		ЦеныНоменклатурыПредв КАК ЦеныНоменклатурыПредв
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
	|			ПО ЦеныНоменклатурыПредв.ХарактеристикаЦО <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|			И ЦеныНоменклатурыПредв.ХарактеристикаЦО = ХарактеристикиНоменклатуры.ХарактеристикаНоменклатурыДляЦенообразования
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры1
	|			ПО ЦеныНоменклатурыПредв.ХарактеристикаЦО = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
	|			И ЦеныНоменклатурыПредв.ВладелецХарактеристик = ХарактеристикиНоменклатуры1.Владелец
	|
	|	ОБЪЕДИНИТЬ ВСЕ
	|
	|	ВЫБРАТЬ
	|		УстановкаЦенНоменклатурыТовары.Номенклатура,
	|		УстановкаЦенНоменклатурыТовары.Характеристика,
	|		УстановкаЦенНоменклатурыТовары.Упаковка,
	|		ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка),
	|		УстановкаЦенНоменклатурыТовары.НомерСтроки
	|	ИЗ
	|		Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
	|	ГДЕ
	|		УстановкаЦенНоменклатурыТовары.Ссылка В (&МассивДокументов)
	|		И ВЫБОР
	|			КОГДА УстановкаЦенНоменклатурыТовары.Номенклатура.ИспользованиеХарактеристик В
	|			(ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
	|				ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
	|				ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
	|			И УстановкаЦенНоменклатурыТовары.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
	|				ТОГДА ЛОЖЬ
	|			ИНАЧЕ ИСТИНА
	|		КОНЕЦ) КАК ДанныеПоНоменклатуре
	|СГРУППИРОВАТЬ ПО
	|	ДанныеПоНоменклатуре.Номенклатура,
	|	ДанныеПоНоменклатуре.Характеристика,
	|	ДанныеПоНоменклатуре.Упаковка,
	|	ДанныеПоНоменклатуре.Серия
	|
	|УПОРЯДОЧИТЬ ПО
	|	Порядок,
	|	Номенклатура
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УстановкаЦенНоменклатуры.ВидЦены КАК ВидЦены
	|ИЗ
	|	Документ.УстановкаЦенНоменклатуры.ВидыЦен КАК УстановкаЦенНоменклатуры
	|ГДЕ
	|	УстановкаЦенНоменклатуры.Ссылка В (&МассивДокументов)";
		
	Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
	
	МассивРезультатов = Запрос.ВыполнитьПакет();
	
	ТаблицаРеквизитыДокументов = МассивРезультатов[2].Выгрузить();
	МассивВидовЦен = ТаблицаРеквизитыДокументов.ВыгрузитьКолонку(0);
	
	// Подготовка структуры действий для обработки печати ценников и этикеток
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ЗаполнитьОрганизацию", Неопределено);
	СтруктураДействий.Вставить("ЗаполнитьСклад",       Неопределено);
	СтруктураДействий.Вставить("ЗаполнитьВидЦены",     ?(МассивВидовЦен.Количество() = 1, МассивВидовЦен[0], Неопределено));
	СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Ложь);
	СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
	СтруктураДействий.Вставить("УстановитьРежим", ПараметрыПечати.ВариантПечати);
	СтруктураДействий.Вставить(ПараметрыПечати.ВариантЗаполнения);
	СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
	
	// Подготовка данных для заполенения табличной части обработки печати ценников и этикеток.
	СтруктураРезультат = Новый Структура;
	СтруктураРезультат.Вставить("Товары", МассивРезультатов[1].Выгрузить());
	СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
	СтруктураРезультат.Вставить("Дата", ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов));
	
	Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
	
КонецФункции

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

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

#КонецЕсли

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