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