#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаОбъекта" Тогда
Если Параметры.Свойство("Ключ") И ЗначениеЗаполнено(Параметры.Ключ) Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаДокумента";
Иначе
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаДокументаРМК";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ПодарочныеСертификаты");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетДенежныхСредств");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
ЧекККМЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЧекККМ") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаДенежныеСредстваВКассахККМ(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРасчетыПоЭквайрингу(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаПодарочныеСертификаты(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаИсторияПодарочныхСертификатов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДенежныеСредстваВПути(Запрос, ТекстыЗапроса, Регистры);
ЧекККМЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуВРозницу(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,Статус,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина);
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ЧекККМ";
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаВРозницу);
Если СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад) Тогда
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Помещение");
КонецЕсли;
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ПланированиеОтбора = Истина;
ПараметрыУказанияСерий.ФактОтбора = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ОперацияДокумента = Перечисления.ХозяйственныеОперации.РеализацияВРозницу;
ПараметрыУказанияСерий.ТолькоПросмотр = (Объект.Статус = Перечисления.СтатусыЧековККМ.Пробит);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция СтатусДокумента(Ссылка) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЧекККМ.Статус
|ИЗ
| Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
| ЧекККМ.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Статус;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ЕстьПомещения = (ПараметрыУказанияСерий.ПоляСвязи.Найти("Помещение") <> Неопределено);
Если ЕстьПомещения Тогда
Возврат ТекстЗапросаЗаполненияСтатусовУказанияСерийСПомещениями();
Иначе
Возврат ТекстЗапросаЗаполненияСтатусовУказанияСерийБезПомещений();
КонецЕсли;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ПримененныеСкидкиВДокументе.ДобавитьКомандуОтчета(КомандыОтчетов);
КонецПроцедуры
#Область Прочее
#КонецОбласти
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Объект.Склад);
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Объект.Организация);
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Организация = Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Склад = Склад;
ПараметрыЗаполнения.РозничнаяПродажа = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыДляПолученияНевозвращенныхПозицийПоЧекуККМ() Экспорт
Результат = Новый Структура;
Результат.Вставить("ЧекККМ", ПредопределенноеЗначение("Документ.ЧекККМ.ПустаяСсылка"));
Результат.Вставить("ИспользуетсяККТФЗ54", Ложь);
Результат.Вставить("КассаККМИспользуетсяБезПодключенияОборудования", Ложь);
Результат.Вставить("КассоваяСмена", ПредопределенноеЗначение("Документ.КассоваяСмена.ПустаяСсылка"));
Результат.Вставить("НомерЧекаККМ", 0);
Результат.Вставить("Номенклатура", ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка"));
Результат.Вставить("КартаЛояльности", ПредопределенноеЗначение("Справочник.КартыЛояльности.ПустаяСсылка"));
Результат.Вставить("Период", Новый СтандартныйПериод);
Результат.Вставить("Организация", ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка"));
Возврат Результат;
КонецФункции
Функция ТаблицаНевозвращенныхПозицийПоЧекуККМ(ПараметрыОтбора) Экспорт
Запрос = Новый Запрос(ТекстЗапросаДляПолученияНевозвращенныхПозицийПоЧекуККМ(ПараметрыОтбора));
Если ЗначениеЗаполнено(ПараметрыОтбора.ЧекККМ) Тогда
Запрос.Параметры.Вставить("ЧекККМ", ПараметрыОтбора.ЧекККМ);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОтбора.НомерЧекаККМ) Тогда
Запрос.Параметры.Вставить("НомерЧекаККМ", ПараметрыОтбора.НомерЧекаККМ);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОтбора.Номенклатура) Тогда
Запрос.Параметры.Вставить("Номенклатура", ПараметрыОтбора.Номенклатура);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОтбора.КартаЛояльности) Тогда
Запрос.Параметры.Вставить("КартаЛояльности", ПараметрыОтбора.КартаЛояльности);
КонецЕсли;
Если ПараметрыОтбора.ИспользуетсяККТФЗ54
Или ПараметрыОтбора.КассаККМИспользуетсяБезПодключенияОборудования Тогда
ПараметрыОтбораПериод = ПараметрыОтбора.Период;
Запрос.Параметры.Вставить("ДатаНачала", ПараметрыОтбораПериод.ДатаНачала);
Запрос.Параметры.Вставить("ДатаОкончания", ПараметрыОтбораПериод.ДатаОкончания);
Запрос.Параметры.Вставить("БезОграниченияОкончанияПериода", НЕ ЗначениеЗаполнено(ПараметрыОтбораПериод.ДатаОкончания));
Запрос.Параметры.Вставить("КассоваяСмена", ПараметрыОтбора.КассоваяСмена);
ИначеЕсли ЗначениеЗаполнено(ПараметрыОтбора.КассоваяСмена) Тогда
Запрос.Параметры.Вставить("КассоваяСмена", ПараметрыОтбора.КассоваяСмена);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОтбора.Организация) Тогда
Запрос.Параметры.Вставить("Организация", ПараметрыОтбора.Организация);
КонецЕсли;
ТаблицаТоваров = Запрос.Выполнить().Выгрузить();
СтруктураПоиска = Новый Структура("ЧекККМ, Номенклатура, Характеристика, НоменклатураНабора,
|ХарактеристикаНабора, Серия, СтавкаНДС");
Для Каждого Строка Из ТаблицаТоваров Цикл
Если Строка.Количество < 0 Тогда
ЗаполнитьЗначенияСвойств(СтруктураПоиска, Строка);
СтрокиПродажи = ТаблицаТоваров.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаПродажи Из СтрокиПродажи Цикл
Если СтрокаПродажи.Количество < 0 Тогда
Продолжить;
КонецЕсли;
Строка.Количество = -Строка.Количество;
Строка.Сумма = -Строка.Сумма;
Строка.СуммаНДС = -Строка.СуммаНДС;
Если Строка.Количество > СтрокаПродажи.Количество Тогда
КоличествоНаВычет = СтрокаПродажи.Количество;
СуммаНаВычет = СтрокаПродажи.Сумма;
СуммаНДСНаВычет = СтрокаПродажи.СуммаНДС;
Иначе
КоличествоНаВычет = Строка.Количество;
СуммаНаВычет = Строка.Сумма;
СуммаНДСНаВычет = Строка.СуммаНДС;
КонецЕсли;
СтрокаПродажи.Количество = СтрокаПродажи.Количество - КоличествоНаВычет;
Строка.Количество = Строка.Количество - КоличествоНаВычет;
СтрокаПродажи.Сумма = СтрокаПродажи.Сумма - СуммаНаВычет;
Строка.Сумма = Строка.Сумма - СуммаНаВычет;
СтрокаПродажи.СуммаНДС = СтрокаПродажи.СуммаНДС - СуммаНДСНаВычет;
Строка.СуммаНДС = Строка.СуммаНДС - СуммаНДСНаВычет;
КонецЦикла;
КонецЕсли;
КонецЦикла;
МассивУдаляемыхСтрок = Новый Массив();
Для Каждого Строка Из ТаблицаТоваров Цикл
Если Строка.Количество <= 0 Тогда
МассивУдаляемыхСтрок.Добавить(Строка);
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из МассивУдаляемыхСтрок Цикл
ТаблицаТоваров.Удалить(Строка);
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТоваров, СтруктураДействий);
Возврат ТаблицаТоваров;
КонецФункции
Функция ТекстЗапросаДляПолученияНевозвращенныхПозицийПоЧекуККМ(ПараметрыОтбора) Экспорт
ТекстУсловияЧекККМ = "И Т.Ссылка = &ЧекККМ";
ТекстУсловияЧекККМВозврат = "И Т.ЧекККМ = &ЧекККМ";
ТекстУсловияОтборПоДате = "И Т.Дата >= &ДатаНачала И (Т.Дата <= &ДатаОкончания ИЛИ &БезОграниченияОкончанияПериода)";
ТекстУсловияОтборПоДатеВозврат = "И Т.Дата >= &ДатаНачала";
ТекстУсловияОтборПоКассовойСмене = "И Т.КассоваяСмена = &КассоваяСмена";
ТекстУсловияНомерЧека = "И ЕСТЬNULL(ФискальныеОперации.НомерЧекаККМ, 0) = &НомерЧекаККМ";
ТекстУсловияКартаЛояльности = "И Т.КартаЛояльности = &КартаЛояльности";
ТекстУсловияОрганизация = "";
ТекстУсловияОрганизацияПоСсылке = "";
Если ЗначениеЗаполнено(ПараметрыОтбора.Организация) Тогда
ТекстУсловияОрганизация = "И Т.Организация = &Организация";
ТекстУсловияОрганизацияПоСсылке = "И Т.Ссылка.Организация = &Организация";
КонецЕсли;
Если ПараметрыОтбора.ИспользуетсяККТФЗ54
Или ПараметрыОтбора.КассаККМИспользуетсяБезПодключенияОборудования Тогда
ТекстУсловияНоменклатура =
"И (Т.Ссылка, ИСТИНА) В (
| ВЫБРАТЬ
| Т.Ссылка,
| ИСТИНА
|ИЗ
| Документ.ЧекККМ.Товары КАК Т
|ГДЕ
| Т.Ссылка.Дата >= &ДатаНачала
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.ЧекККМ), ТекстУсловияЧекККМ, ТекстУсловияОрганизацияПоСсылке) + "
| И Т.Номенклатура = &Номенклатура
| И (Т.Ссылка.Дата <= &ДатаОкончания ИЛИ &БезОграниченияОкончанияПериода))
|";
Иначе
ТекстУсловияНоменклатура =
"И (Т.Ссылка, ИСТИНА) В (
| ВЫБРАТЬ
| Т.Ссылка,
| ИСТИНА
|ИЗ
| Документ.ЧекККМ.Товары КАК Т
|ГДЕ
| Т.Ссылка.КассоваяСмена = &КассоваяСмена
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.ЧекККМ), ТекстУсловияЧекККМ, "") + "
| И Т.Номенклатура = &Номенклатура)
|";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Т.Ссылка КАК Ссылка,
| Т.Ссылка КАК ЧекККМ,
| Т.Дата КАК Дата,
| Т.КартаЛояльности КАК КартаЛояльности,
| Т.Партнер КАК Партнер,
| ЕСТЬNULL(ФискальныеОперации.НомерЧекаККМ, 0) КАК НомерЧекаККМ
|ПОМЕСТИТЬ ЧекиККМ
|ИЗ
| Документ.ЧекККМ КАК Т
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФискальныеОперации КАК ФискальныеОперации
| ПО Т.Ссылка = ФискальныеОперации.ДокументОснование
|ГДЕ
| Т.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И НЕ (Т.Ссылка, ИСТИНА) В
| (ВЫБРАТЬ
| ЧекККМКоррекции.ЧекККМ, ИСТИНА
| ИЗ
| Документ.ЧекККМКоррекции КАК ЧекККМКоррекции
| ГДЕ
| ЧекККМКоррекции.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И ЧекККМКоррекции.ВидКоррекции = ЗНАЧЕНИЕ(Перечисление.ВидыЧековКоррекции.ИсправлениеОшибки))
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.ЧекККМ), ТекстУсловияЧекККМ, ТекстУсловияОрганизация) + "
| " + ?(ПараметрыОтбора.ИспользуетсяККТФЗ54
Или ПараметрыОтбора.КассаККМИспользуетсяБезПодключенияОборудования, ТекстУсловияОтборПоДате, ТекстУсловияОтборПоКассовойСмене) + "
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.НомерЧекаККМ), ТекстУсловияНомерЧека, "") + "
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.КартаЛояльности), ТекстУсловияКартаЛояльности, "") + "
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.Номенклатура), ТекстУсловияНоменклатура, "") + "
|
|ИНДЕКСИРОВАТЬ ПО Ссылка
|;
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Т.Ссылка КАК Ссылка,
| Т.ЧекККМ КАК ЧекККМ,
| Т.ЧекККМ.Дата КАК Дата,
| Т.ЧекККМ.КартаЛояльности КАК КартаЛояльности,
| Т.ЧекККМ.Партнер КАК Партнер,
| 0 КАК НомерЧекаККМ
|ПОМЕСТИТЬ ЧекиККМВозврат
|ИЗ
| Документ.ЧекККМВозврат КАК Т
|ГДЕ
| Т.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И НЕ Т.ЧекККМ = ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
| " + ?(ЗначениеЗаполнено(ПараметрыОтбора.ЧекККМ), ТекстУсловияЧекККМВозврат, ТекстУсловияОрганизация) + "
| " + ?(ПараметрыОтбора.ИспользуетсяККТФЗ54
Или ПараметрыОтбора.КассаККМИспользуетсяБезПодключенияОборудования, ТекстУсловияОтборПоДатеВозврат, ТекстУсловияОтборПоКассовойСмене) + "
|
|ИНДЕКСИРОВАТЬ ПО Ссылка
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Т.ЧекККМ КАК ЧекККМ
|ПОМЕСТИТЬ ЧекиККМПоКоторымОформленыВозвраты
|ИЗ
| ЧекиККМВозврат КАК Т
|
|ИНДЕКСИРОВАТЬ ПО ЧекККМ
|;
|
|///////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ЕСТЬNULL(Т.Ссылка, ЗНАЧЕНИЕ(Документ.ЧекККМВозврат.ПустаяСсылка))) КАК Ссылка,
| ЧекиККМ.ЧекККМ КАК ЧекККМ
|ПОМЕСТИТЬ ОтложенныеЧекиККМВозврат
|ИЗ
| ЧекиККМ КАК ЧекиККМ
|ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат КАК Т
| ПО Т.ЧекККМ = ЧекиККМ.Ссылка
|ГДЕ
| Т.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
|СГРУППИРОВАТЬ ПО
| ЧекиККМ.ЧекККМ
|ИНДЕКСИРОВАТЬ ПО ЧекККМ
|;
|
|///////////////////////////////////////////////////////////////////////
|";
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЧекиККМ.Ссылка КАК Ссылка,
| ИСТИНА КАК ОплаченКартой
|ПОМЕСТИТЬ ЧекиККМОплаченныеКартами
|ИЗ
| ЧекиККМ КАК ЧекиККМ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ОплатаПлатежнымиКартами
| ПО ЧекиККМ.Ссылка = ОплатаПлатежнымиКартами.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО Ссылка
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК ЧекККМ,
| ЧекиККМ.Дата КАК Дата,
| ЧекиККМ.КартаЛояльности КАК КартаЛояльности,
| ЧекиККМ.Партнер КАК Партнер,
| ЧекиККМ.НомерЧекаККМ КАК НомерЧекаККМ,
| Товары.НоменклатураЕГАИС КАК НоменклатураЕГАИС,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.Упаковка КАК Упаковка,
| СУММА(Товары.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки + Товары.СуммаБонусныхБалловКСписаниюВВалюте = 0
| ИЛИ Товары.КоличествоУпаковок = 0
| ТОГДА Товары.Цена
| ИНАЧЕ Товары.Сумма / Товары.КоличествоУпаковок
| КОНЕЦ КАК ЧИСЛО(31, 2)) КАК Цена,
| СУММА(Товары.Сумма) КАК Сумма,
| Товары.СтавкаНДС КАК СтавкаНДС,
| СУММА(Товары.СуммаНДС) КАК СуммаНДС,
| Товары.Помещение КАК Помещение,
| Товары.Продавец КАК Продавец,
| Товары.Комитент КАК Комитент
|ПОМЕСТИТЬ ПроданныеПозиции
|ИЗ
| ЧекиККМ КАК ЧекиККМ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК Товары
| ПО ЧекиККМ.Ссылка = Товары.Ссылка
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| ЧекиККМ.Дата,
| ЧекиККМ.КартаЛояльности,
| ЧекиККМ.Партнер,
| ЧекиККМ.НомерЧекаККМ,
| Товары.НоменклатураЕГАИС,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Серия,
| Товары.СтатусУказанияСерий,
| Товары.Упаковка,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки + Товары.СуммаБонусныхБалловКСписаниюВВалюте = 0
| ИЛИ Товары.КоличествоУпаковок = 0
| ТОГДА Товары.Цена
| ИНАЧЕ Товары.Сумма / Товары.КоличествоУпаковок
| КОНЕЦ КАК ЧИСЛО(31, 2)),
| Товары.СтавкаНДС,
| Товары.Помещение,
| Товары.Продавец,
| Товары.Комитент
|;
|
|ВЫБРАТЬ
| ЧекиККМ.ЧекККМ КАК ЧекККМ,
| ЧекиККМ.Дата КАК Дата,
| ЧекиККМ.КартаЛояльности КАК КартаЛояльности,
| ЧекиККМ.Партнер КАК Партнер,
| ЧекиККМ.НомерЧекаККМ КАК НомерЧекаККМ,
| Товары.НоменклатураЕГАИС КАК НоменклатураЕГАИС,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.Упаковка КАК Упаковка,
| СУММА(Товары.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(Товары.Количество) КАК Количество,
| Товары.Цена КАК Цена,
| СУММА(Товары.Сумма) КАК Сумма,
| Товары.СтавкаНДС КАК СтавкаНДС,
| СУММА(Товары.СуммаНДС) КАК СуммаНДС,
| Товары.Помещение КАК Помещение,
| Товары.Продавец КАК Продавец,
| Товары.Комитент КАК Комитент
|ПОМЕСТИТЬ ВозвращенныеПозиции
|ИЗ
| ЧекиККМВозврат КАК ЧекиККМ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат.Товары КАК Товары
| ПО ЧекиККМ.Ссылка = Товары.Ссылка
|ГДЕ
| Товары.КоличествоУпаковок <> 0
|
|СГРУППИРОВАТЬ ПО
| ЧекиККМ.ЧекККМ,
| ЧекиККМ.Дата,
| ЧекиККМ.КартаЛояльности,
| ЧекиККМ.Партнер,
| ЧекиККМ.НомерЧекаККМ,
| Товары.НоменклатураЕГАИС,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Серия,
| Товары.СтатусУказанияСерий,
| Товары.Упаковка,
| Товары.Цена,
| Товары.СтавкаНДС,
| Товары.Помещение,
| Товары.Продавец,
| Товары.Комитент
|;
|
|
|ВЫБРАТЬ
| ЕСТЬNULL(ПроданныеПозиции.ЧекККМ, ВозвращенныеПозиции.ЧекККМ) КАК ЧекККМ,
| ЕСТЬNULL(ПроданныеПозиции.Дата, ВозвращенныеПозиции.Дата) КАК Дата,
| ЕСТЬNULL(ПроданныеПозиции.КартаЛояльности, ВозвращенныеПозиции.КартаЛояльности) КАК КартаЛояльности,
| ЕСТЬNULL(ПроданныеПозиции.Партнер, ВозвращенныеПозиции.Партнер) КАК Партнер,
| ЕСТЬNULL(ПроданныеПозиции.НомерЧекаККМ, ВозвращенныеПозиции.НомерЧекаККМ) КАК НомерЧекаККМ,
| ЕСТЬNULL(ПроданныеПозиции.НоменклатураЕГАИС, ВозвращенныеПозиции.НоменклатураЕГАИС) КАК НоменклатураЕГАИС,
| ЕСТЬNULL(ПроданныеПозиции.СтатусУказанияСерий, ВозвращенныеПозиции.СтатусУказанияСерий) КАК СтатусУказанияСерий,
| ЕСТЬNULL(ПроданныеПозиции.Цена, ВозвращенныеПозиции.Цена) КАК Цена,
| ЕСТЬNULL(ПроданныеПозиции.Помещение, ВозвращенныеПозиции.Помещение) КАК Помещение,
| ЕСТЬNULL(ПроданныеПозиции.Продавец, ВозвращенныеПозиции.Продавец) КАК Продавец,
| ЕСТЬNULL(ПроданныеПозиции.Комитент, ВозвращенныеПозиции.Комитент) КАК Комитент,
| ЕСТЬNULL(ПроданныеПозиции.НоменклатураНабора, ВозвращенныеПозиции.НоменклатураНабора) КАК НоменклатураНабора,
| ЕСТЬNULL(ПроданныеПозиции.ХарактеристикаНабора, ВозвращенныеПозиции.ХарактеристикаНабора) КАК ХарактеристикаНабора,
| ЕСТЬNULL(ПроданныеПозиции.Номенклатура, ВозвращенныеПозиции.Номенклатура) КАК Номенклатура,
| ЕСТЬNULL(ПроданныеПозиции.Характеристика, ВозвращенныеПозиции.Характеристика) КАК Характеристика,
| ЕСТЬNULL(ПроданныеПозиции.Серия, ВозвращенныеПозиции.Серия) КАК Серия,
| ЕСТЬNULL(ПроданныеПозиции.Количество, 0) - ЕСТЬNULL(ВозвращенныеПозиции.Количество, 0) КАК Количество,
| 0 КАК КоличествоУпаковок,
| ЕСТЬNULL(ПроданныеПозиции.Упаковка, ВозвращенныеПозиции.Упаковка) КАК Упаковка,
| ЕСТЬNULL(ПроданныеПозиции.СтавкаНДС, ВозвращенныеПозиции.СтавкаНДС) КАК СтавкаНДС,
| ЕСТЬNULL(ПроданныеПозиции.Сумма, 0) - ЕСТЬNULL(ВозвращенныеПозиции.Сумма, 0) КАК Сумма,
| ЕСТЬNULL(ПроданныеПозиции.СуммаНДС, 0) - ЕСТЬNULL(ВозвращенныеПозиции.СуммаНДС, 0) КАК СуммаНДС
|ПОМЕСТИТЬ Результат
|ИЗ
| ПроданныеПозиции КАК ПроданныеПозиции
| ПОЛНОЕ СОЕДИНЕНИЕ ВозвращенныеПозиции КАК ВозвращенныеПозиции
| ПО ПроданныеПозиции.Номенклатура = ВозвращенныеПозиции.Номенклатура
| И ПроданныеПозиции.Характеристика = ВозвращенныеПозиции.Характеристика
| И ПроданныеПозиции.НоменклатураНабора = ВозвращенныеПозиции.НоменклатураНабора
| И ПроданныеПозиции.ХарактеристикаНабора = ВозвращенныеПозиции.ХарактеристикаНабора
| И ПроданныеПозиции.Серия = ВозвращенныеПозиции.Серия
| И ПроданныеПозиции.Упаковка = ВозвращенныеПозиции.Упаковка
| И ПроданныеПозиции.СтавкаНДС = ВозвращенныеПозиции.СтавкаНДС
| И ПроданныеПозиции.ЧекККМ = ВозвращенныеПозиции.ЧекККМ
| И ПроданныеПозиции.Цена = ВозвращенныеПозиции.Цена
|;
|
|
|ВЫБРАТЬ
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора
|ПОМЕСТИТЬ ТаблицаНаборовСВариантомРасчетаЦеныНабора
|ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
| ИЗ Результат КАК Таблица
| ГДЕ Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ) КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО (ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора)
| И (ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора)
| И (ВариантыКомплектацииНоменклатуры.Основной)
|;
|
|
|ВЫБРАТЬ
| Таблица.ЧекККМ КАК ЧекККМ,
| Таблица.НомерЧекаККМ КАК НомерЧекаККМ,
| Таблица.КартаЛояльности КАК КартаЛояльности,
| Таблица.Партнер КАК Клиент,
| ЕСТЬNULL(ЧекиККМОплаченныеКартами.ОплаченКартой, ЛОЖЬ) КАК ОплаченКартой,
| ВЫБОР
| КОГДА Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ИндексНабора,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора, НЕОПРЕДЕЛЕНО) КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураЕГАИС КАК НоменклатураЕГАИС,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Серия КАК Серия,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.Упаковка КАК Упаковка,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.Цена КАК Цена,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Количество КАК Количество,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Помещение КАК Помещение,
| Таблица.Продавец КАК Продавец,
| Таблица.Комитент КАК Комитент,
| ЕСТЬNULL(ОтложенныеЧекиККМВозврат.Ссылка, ЗНАЧЕНИЕ(Документ.ЧекККМВозврат.ПустаяСсылка)) КАК ОтложенныйЧекККМВозврат,
| ВЫБОР КОГДА ЕСТЬNULL(ЧекиККМПоКоторымОформленыВозвраты.ЧекККМ, ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)) = ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОформленЧастичныйВозврат,
| ВЫБОР КОГДА ЧекиККМ.КассоваяСмена <> &КассоваяСмена
| И НЕ ЧекККМКассоваяСмена.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.Закрыта)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЧекККМКассоваяСменаОткрыта
|
|ИЗ
| Результат КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО СправочникНоменклатура.Ссылка = Таблица.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ЧекиККМОплаченныеКартами КАК ЧекиККМОплаченныеКартами
| ПО Таблица.ЧекККМ = ЧекиККМОплаченныеКартами.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНаборовСВариантомРасчетаЦеныНабора КАК ВариантыКомплектацииНоменклатуры
| ПО (ВариантыКомплектацииНоменклатуры.НоменклатураНабора = Таблица.НоменклатураНабора)
| И (ВариантыКомплектацииНоменклатуры.ХарактеристикаНабора = Таблица.ХарактеристикаНабора)
| ЛЕВОЕ СОЕДИНЕНИЕ ОтложенныеЧекиККМВозврат КАК ОтложенныеЧекиККМВозврат
| ПО ОтложенныеЧекиККМВозврат.ЧекККМ = Таблица.ЧекККМ
| ЛЕВОЕ СОЕДИНЕНИЕ ЧекиККМПоКоторымОформленыВозвраты КАК ЧекиККМПоКоторымОформленыВозвраты
| ПО ЧекиККМПоКоторымОформленыВозвраты.ЧекККМ = Таблица.ЧекККМ
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ЧекиККМ
| ПО ЧекиККМ.Ссылка = Таблица.ЧекККМ
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассоваяСмена КАК ЧекККМКассоваяСмена
| ПО ЧекККМКассоваяСмена.Ссылка = ЧекиККМ.КассоваяСмена
|
|УПОРЯДОЧИТЬ ПО
| Таблица.Дата УБЫВ,
| Таблица.НомерЧекаККМ УБЫВ,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| Таблица.Серия,
| Таблица.Упаковка,
| Таблица.Комитент
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДляПолученияНеотмененныхОплатПоЧекуККМ(ИспользоватьОтборПоВидуОплаты, ВсеВидыОплатКромеУказанных = Ложь) Экспорт
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОплатыПлатежнымиКартами.ВидОплаты КАК ВидОплаты,
| ОплатыПлатежнымиКартами.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
| ОплатыПлатежнымиКартами.КодАвторизации КАК КодАвторизации,
| ОплатыПлатежнымиКартами.НомерПлатежнойКарты КАК НомерПлатежнойКарты,
| ОплатыПлатежнымиКартами.Сумма КАК Сумма,
| ОплатыПлатежнымиКартами.ОплатаОтменена КАК ОплатаОтменена
|ПОМЕСТИТЬ ВозвратОплатыПлатежнымиКартамиПоЧеку
|ИЗ
| Документ.ЧекККМВозврат КАК ЧекККМВозврат
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ОплатыПлатежнымиКартами
| ПО ОплатыПлатежнымиКартами.Ссылка = ЧекККМВозврат.Ссылка
|ГДЕ
| ЧекККМВозврат.ЧекККМ = &Ссылка
| И ЧекККМВозврат.Проведен
| И ЧекККМВозврат.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И ОплатыПлатежнымиКартами.ВидОплаты В (&ВидыОплат)
|;
|
|
|ВЫБРАТЬ
| ОплатыПлатежнымиКартами.ВидОплаты КАК ВидОплаты,
| ОплатыПлатежнымиКартами.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
| ОплатыПлатежнымиКартами.КодАвторизации КАК КодАвторизации,
| ОплатыПлатежнымиКартами.НомерПлатежнойКарты КАК НомерПлатежнойКарты,
| ОплатыПлатежнымиКартами.Сумма КАК Сумма,
| ОплатыПлатежнымиКартами.ИдентификаторКорзины КАК ИдентификаторКорзины,
| ОплатыПлатежнымиКартами.СсылочныйНомер КАК СсылочныйНомер,
| ОплатыПлатежнымиКартами.ДоговорПодключения КАК ДоговорПодключения,
| ОплатыПлатежнымиКартами.ИдентификаторПлатежнойСистемы КАК ИдентификаторПлатежнойСистемы,
| ОплатыПлатежнымиКартами.НомерЧекаЭТ КАК НомерЧекаЭТ
|ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ОплатыПлатежнымиКартами
|ГДЕ
| ОплатыПлатежнымиКартами.Ссылка = &Ссылка
| И &ТекстУсловияПоВидуОплаты
| И ОплатыПлатежнымиКартами.ВидОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей)
| И НЕ (ОплатыПлатежнымиКартами.ВидОплаты, ОплатыПлатежнымиКартами.ЭквайринговыйТерминал,
| ОплатыПлатежнымиКартами.КодАвторизации, ОплатыПлатежнымиКартами.НомерПлатежнойКарты, ОплатыПлатежнымиКартами.Сумма,
| ИСТИНА) В
| (ВЫБРАТЬ
| ВозвратОплатыПлатежнымиКартамиПоЧеку.ВидОплаты,
| ВозвратОплатыПлатежнымиКартамиПоЧеку.ЭквайринговыйТерминал,
| ВозвратОплатыПлатежнымиКартамиПоЧеку.КодАвторизации,
| ВозвратОплатыПлатежнымиКартамиПоЧеку.НомерПлатежнойКарты,
| ВозвратОплатыПлатежнымиКартамиПоЧеку.Сумма,
| ВозвратОплатыПлатежнымиКартамиПоЧеку.ОплатаОтменена
| ИЗ
| ВозвратОплатыПлатежнымиКартамиПоЧеку КАК ВозвратОплатыПлатежнымиКартамиПоЧеку)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НеотмененныеОплатыПоЧекуККМСБП.ВидОплаты,
| НеотмененныеОплатыПоЧекуККМСБП.ЭквайринговыйТерминал,
| НеотмененныеОплатыПоЧекуККМСБП.КодАвторизации,
| НеотмененныеОплатыПоЧекуККМСБП.НомерПлатежнойКарты,
| СУММА(НеотмененныеОплатыПоЧекуККМСБП.Сумма),
| НеотмененныеОплатыПоЧекуККМСБП.ИдентификаторКорзины,
| НеотмененныеОплатыПоЧекуККМСБП.СсылочныйНомер,
| НеотмененныеОплатыПоЧекуККМСБП.ДоговорПодключения,
| НеотмененныеОплатыПоЧекуККМСБП.ИдентификаторПлатежнойСистемы,
| НеотмененныеОплатыПоЧекуККМСБП.НомерЧекаЭТ
|ИЗ
| (ВЫБРАТЬ
| ОплатыПлатежнымиКартами.ВидОплаты КАК ВидОплаты,
| ОплатыПлатежнымиКартами.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
| ОплатыПлатежнымиКартами.КодАвторизации КАК КодАвторизации,
| ОплатыПлатежнымиКартами.НомерПлатежнойКарты КАК НомерПлатежнойКарты,
| -ОплатыПлатежнымиКартами.Сумма КАК Сумма,
| ОплатыПлатежнымиКартами.СсылочныйНомер КАК СсылочныйНомер,
| ОплатыПлатежнымиКартами.ИдентификаторКорзины КАК ИдентификаторКорзины,
| ОплатыПлатежнымиКартами.ДоговорПодключения КАК ДоговорПодключения,
| ОплатыПлатежнымиКартами.ИдентификаторПлатежнойСистемы КАК ИдентификаторПлатежнойСистемы,
| ОплатыПлатежнымиКартами.НомерЧекаЭТ КАК НомерЧекаЭТ
| ИЗ
| Документ.ЧекККМВозврат КАК ЧекККМВозврат
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ОплатыПлатежнымиКартами
| ПО ОплатыПлатежнымиКартами.Ссылка = ЧекККМВозврат.Ссылка
| ГДЕ
| ЧекККМВозврат.ЧекККМ = &Ссылка
| И ЧекККМВозврат.Проведен
| И ЧекККМВозврат.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И ОплатыПлатежнымиКартами.ВидОплаты = ЗНАЧЕНИЕ(Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей)
| И &ТекстУсловияПоВидуОплаты
| И ОплатыПлатежнымиКартами.ОплатаОтменена
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОплатыПлатежнымиКартами.ВидОплаты,
| ОплатыПлатежнымиКартами.ЭквайринговыйТерминал,
| ОплатыПлатежнымиКартами.КодАвторизации,
| ОплатыПлатежнымиКартами.НомерПлатежнойКарты,
| ОплатыПлатежнымиКартами.Сумма,
| ОплатыПлатежнымиКартами.СсылочныйНомер,
| ОплатыПлатежнымиКартами.ИдентификаторКорзины,
| ОплатыПлатежнымиКартами.ДоговорПодключения,
| ОплатыПлатежнымиКартами.ИдентификаторПлатежнойСистемы,
| ОплатыПлатежнымиКартами.НомерЧекаЭТ
| ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ОплатыПлатежнымиКартами
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ЧекККМ
| ПО ОплатыПлатежнымиКартами.Ссылка = ЧекККМ.Ссылка
| ГДЕ
| ЧекККМ.Проведен
| И ЧекККМ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| И ЧекККМ.Ссылка = &Ссылка
| И ОплатыПлатежнымиКартами.ВидОплаты = ЗНАЧЕНИЕ(Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей)
| И &ТекстУсловияПоВидуОплаты) КАК НеотмененныеОплатыПоЧекуККМСБП
|СГРУППИРОВАТЬ ПО
| НеотмененныеОплатыПоЧекуККМСБП.ВидОплаты,
| НеотмененныеОплатыПоЧекуККМСБП.ЭквайринговыйТерминал,
| НеотмененныеОплатыПоЧекуККМСБП.КодАвторизации,
| НеотмененныеОплатыПоЧекуККМСБП.НомерПлатежнойКарты,
| НеотмененныеОплатыПоЧекуККМСБП.ИдентификаторКорзины,
| НеотмененныеОплатыПоЧекуККМСБП.СсылочныйНомер,
| НеотмененныеОплатыПоЧекуККМСБП.ДоговорПодключения,
| НеотмененныеОплатыПоЧекуККМСБП.ИдентификаторПлатежнойСистемы,
| НеотмененныеОплатыПоЧекуККМСБП.НомерЧекаЭТ
|ИМЕЮЩИЕ
| СУММА(НеотмененныеОплатыПоЧекуККМСБП.Сумма) <> 0
|
|УПОРЯДОЧИТЬ ПО
| ВидОплаты,
| ЭквайринговыйТерминал,
| НомерПлатежнойКарты,
| КодАвторизации,
| ИдентификаторКорзины,
| ДоговорПодключения,
| НомерЧекаЭТ";
ТекстУсловияПоВидуОплаты = "ИСТИНА";
Если ИспользоватьОтборПоВидуОплаты Тогда
Если ВсеВидыОплатКромеУказанных Тогда
ТекстУсловияПоВидуОплаты = "НЕ ОплатыПлатежнымиКартами.ВидОплаты В (&ВидыОплат)";
Иначе
ТекстУсловияПоВидуОплаты = "ОплатыПлатежнымиКартами.ВидОплаты В (&ВидыОплат)";
КонецЕсли;
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&ТекстУсловияПоВидуОплаты" , ТекстУсловияПоВидуОплаты);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДляПолученияНевозвращенныхСерийПоЧекуККМ() Экспорт
ТекстЗапроса = "ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Серия КАК Серия,
| Серии.Помещение КАК Помещение,
| Серии.Количество КАК Количество
|ПОМЕСТИТЬ врСерии
|ИЗ
| Документ.ЧекККМ.Серии КАК Серии
|ГДЕ
| Серии.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Серия,
| Серии.Помещение,
| -Серии.Количество
|ИЗ
| Документ.ЧекККМВозврат.Серии КАК Серии
|ГДЕ
| Серии.Ссылка.ЧекККМ = &Ссылка
| И Серии.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Серия,
| МАКСИМУМ(ЧекККМСерии.Помещение),
| -СУММА(Серии.Количество)
|ИЗ
| Документ.ВозвратТоваровОтКлиента.Серии КАК Серии
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Серии КАК ЧекККМСерии
| ПО ЧекККМСерии.Ссылка = &Ссылка
| И ЧекККМСерии.Номенклатура = Серии.Номенклатура
| И ЧекККМСерии.Характеристика = Серии.Характеристика
| И ЧекККМСерии.Серия = Серии.Серия
|ГДЕ
| Серии.Ссылка.ЧекККМ = &Ссылка
| И Серии.Ссылка.Проведен
| И (Серии.Ссылка <> &ТекущийВозвратТоваровОтКлиента)
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Серия
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Серия КАК Серия,
| Серии.Помещение КАК Помещение,
| СУММА(Серии.Количество) КАК Количество
|ИЗ
| врСерии КАК Серии
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Серия,
| Серии.Помещение
|ИМЕЮЩИЕ
| СУММА(Серии.Количество) > 0
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| Характеристика,
| Серия,
| Помещение";
Возврат ТекстЗапроса;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(КассаККМ)
| И ЗначениеРазрешено(Склад)";
КонецПроцедуры
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка) Экспорт
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Архивный КАК Архивный,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.КассаККМ.Владелец КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Контрагент,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияВРозницу) КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.РеализацияВРозницу) КАК НастройкаХозяйственнойОперации,
| ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПоступлениеОплатыОтКлиента) КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.ОрганизацияЕГАИС КАК ОрганизацияЕГАИС,
| ДанныеДокумента.КартаЛояльности.Владелец.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности
|ИЗ
| Документ.ЧекККМ КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Архивный", Реквизиты.Архивный);
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.УстановитьПараметр("Склад", Реквизиты.Склад);
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("Валюта", Реквизиты.Валюта);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", ?(Реквизиты.ЦенаВключаетНДС, 0, 1));
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("НастройкаХозяйственнойОперации", Реквизиты.НастройкаХозяйственнойОперации);
Запрос.УстановитьПараметр("СтатьяДвиженияДенежныхСредств", Реквизиты.СтатьяДвиженияДенежныхСредств);
Запрос.УстановитьПараметр("ЧекПробит", Реквизиты.Статус = Перечисления.СтатусыЧековККМ.Пробит);
Запрос.УстановитьПараметр("ТоварЗарезервирован", Реквизиты.Статус = Перечисления.СтатусыЧековККМ.ОтложенСРезервированием);
Запрос.УстановитьПараметр("Партнер", Реквизиты.Партнер);
Запрос.УстановитьПараметр("БонуснаяПрограммаЛояльности", Реквизиты.БонуснаяПрограммаЛояльности);
Запрос.УстановитьПараметр("ОрганизацияЕГАИС", Реквизиты.ОрганизацияЕГАИС);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяУниверсальнаяДата());
Запрос.УстановитьПараметр("ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5", Константы.ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5.Получить());
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить());
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Реквизиты.Организация);
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРеглУчета);
КонецПроцедуры
Функция ТекстЗапросаТаблицаДенежныеСредстваВКассахККМ(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДенежныеСредстваВКассахККМ";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСуммаПлатежнымиКартами", ТекстыЗапроса) Тогда
ТекстЗапросаВтСуммаПлатежнымиКартами(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСуммаПодарочнымиСертификатами", ТекстыЗапроса) Тогда
ТекстЗапросаВтСуммаПодарочнымиСертификатами(Запрос, ТекстыЗапроса);
КонецЕсли;
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ДанныеДокумента.КассаККМ.Владелец КАК Организация,
| ДанныеДокумента.КассаККМ КАК КассаККМ,
| ДанныеДокумента.СуммаДокумента - ЕСТЬNULL(ТаблицаСуммаПлатежнымиКартами.Сумма, 0) - ЕСТЬNULL(ТаблицаСуммаПодарочнымиСертификатами.Сумма, 0) КАК Сумма,
| ВЫРАЗИТЬ((ДанныеДокумента.СуммаДокумента - ЕСТЬNULL(ТаблицаСуммаПлатежнымиКартами.Сумма, 0) - ЕСТЬNULL(ТаблицаСуммаПодарочнымиСертификатами.Сумма, 0)) * &КоэффициентПересчетаВВалютуРегл КАК ЧИСЛО(31,2)) КАК СуммаРегл,
| ВЫРАЗИТЬ((ДанныеДокумента.СуммаДокумента - ЕСТЬNULL(ТаблицаСуммаПлатежнымиКартами.Сумма, 0) - ЕСТЬNULL(ТаблицаСуммаПодарочнымиСертификатами.Сумма, 0)) * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаУпр,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| &СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.ИдентификаторДокумента КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПоступлениеОплатыОтКлиента) КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ЧекККМ КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммаПлатежнымиКартами КАК ТаблицаСуммаПлатежнымиКартами
| ПО (ИСТИНА)
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммаПодарочнымиСертификатами КАК ТаблицаСуммаПодарочнымиСертификатами
| ПО (ИСТИНА)
|ГДЕ
| ДанныеДокумента.СуммаДокумента - ЕСТЬNULL(ТаблицаСуммаПлатежнымиКартами.Сумма, 0) - ЕСТЬNULL(ТаблицаСуммаПодарочнымиСертификатами.Сумма, 0) <> 0
| И ДанныеДокумента.Ссылка = &Ссылка
| И &ЧекПробит
| И (НЕ &Архивный)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРасчетыПоЭквайрингу(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РасчетыПоЭквайрингу";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСтатьиДДС", ТекстыЗапроса) Тогда
ТекстЗапросаВтСтатьиДДС(ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаПлатежей.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ЗНАЧЕНИЕ(Перечисление.ТипыДенежныхСредствПоЭквайрингу.ПоступлениеПоПлатежнойКарте) КАК ТипДенежныхСредств,
| &Организация КАК Организация,
| &Валюта КАК Валюта,
| ТаблицаПлатежей.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
| ВЫБОР
| КОГДА НЕ ТаблицаПлатежей.ДоговорПодключения = ЗНАЧЕНИЕ(Справочник.ДоговорыЭквайринга.ПустаяСсылка)
| ТОГДА ТаблицаПлатежей.ДоговорПодключения
| ИНАЧЕ ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец
| КОНЕЦ КАК Договор,
| ТаблицаПлатежей.НомерПлатежнойКарты КАК НомерПлатежнойКарты,
| ТаблицаПлатежей.КодАвторизации КАК КодАвторизации,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиентаПоПлатежнойКарте) КАК ХозяйственнаяОперация,
| СтатьиДДС.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| &Период КАК ДатаПлатежа,
| ТаблицаПлатежей.Сумма КАК Сумма
|ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ТаблицаПлатежей
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСтатьиДДС КАК СтатьиДДС
| ПО ТаблицаПлатежей.НомерСтроки = СтатьиДДС.НомерСтроки
|ГДЕ
| ТаблицаПлатежей.Ссылка = &Ссылка
| И (НЕ &Архивный)
| И ВЫБОР
| КОГДА ТаблицаПлатежей.ДоговорПодключения <> ЗНАЧЕНИЕ(Справочник.ДоговорыЭквайринга.ПустаяСсылка)
| ТОГДА ТаблицаПлатежей.ДоговорПодключения.ДетальнаяСверкаТранзакций
| ИНАЧЕ ЕСТЬNULL(ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец.ДетальнаяСверкаТранзакций, ИСТИНА)
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДенежныеСредстваВПути(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДенежныеСредстваВПути";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСтатьиДДС", ТекстыЗапроса) Тогда
ТекстЗапросаВтСтатьиДДС(ТекстыЗапроса);
КонецЕсли;
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаПлатежей.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ВЫБОР
| КОГДА НЕ ТаблицаПлатежей.ДоговорПодключения = ЗНАЧЕНИЕ(Справочник.ДоговорыЭквайринга.ПустаяСсылка)
| ТОГДА ТаблицаПлатежей.ДоговорПодключения.БанковскийСчет
| ИНАЧЕ ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец.БанковскийСчет
| КОНЕЦ КАК Получатель,
| ЗНАЧЕНИЕ(Перечисление.ВидыПереводовДенежныхСредств.ПоступлениеОтБанкаПоЭквайрингу) КАК ВидПереводаДенежныхСредств,
| ВЫБОР
| КОГДА НЕ ТаблицаПлатежей.ДоговорПодключения = ЗНАЧЕНИЕ(Справочник.ДоговорыЭквайринга.ПустаяСсылка)
| ТОГДА ТаблицаПлатежей.ДоговорПодключения.Контрагент
| ИНАЧЕ ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА НЕ ТаблицаПлатежей.ДоговорПодключения = ЗНАЧЕНИЕ(Справочник.ДоговорыЭквайринга.ПустаяСсылка)
| ТОГДА ТаблицаПлатежей.ДоговорПодключения
| ИНАЧЕ ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец
| КОНЕЦ КАК Договор,
| НЕОПРЕДЕЛЕНО КАК ПлатежныйДокумент,
| &Валюта КАК Валюта,
| ТаблицаПлатежей.Сумма КАК Сумма,
| ВЫРАЗИТЬ(ТаблицаПлатежей.Сумма * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаУпр,
| ВЫРАЗИТЬ(ТаблицаПлатежей.Сумма * &КоэффициентПересчетаВВалютуРегл КАК ЧИСЛО(31,2)) КАК СуммаРегл,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиентаПоПлатежнойКарте) КАК ХозяйственнаяОперация,
| СтатьиДДС.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ТаблицаПлатежей.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПоступлениеОплатыОтКлиентаПоПлатежнойКарте) КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ТаблицаПлатежей
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСтатьиДДС КАК СтатьиДДС
| ПО ТаблицаПлатежей.НомерСтроки = СтатьиДДС.НомерСтроки
|ГДЕ
| ТаблицаПлатежей.Ссылка = &Ссылка
| И (НЕ &Архивный)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтСтатьиДДС(ТекстыЗапроса)
ИмяРегистра = "ВтСтатьиДДС";
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаПлатежей.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА НЕ ЕСТЬNULL(СведенияОДоговоре.СтатьяДвиженияДенежныхСредствПоступлениеОплаты, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)
| ТОГДА СведенияОДоговоре.СтатьяДвиженияДенежныхСредствПоступлениеОплаты
| КОГДА НЕ ЕСТЬNULL(СведенияОДоговореНаТерминал.СтатьяДвиженияДенежныхСредствПоступлениеОплаты, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)
| ТОГДА СведенияОДоговореНаТерминал.СтатьяДвиженияДенежныхСредствПоступлениеОплаты
| ИНАЧЕ &СтатьяДвиженияДенежныхСредств
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств
|ПОМЕСТИТЬ ВтСтатьиДДС
|ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ТаблицаПлатежей
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыЭквайринга КАК СведенияОДоговоре
| ПО ТаблицаПлатежей.ДоговорПодключения = СведенияОДоговоре.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыЭквайринга КАК СведенияОДоговореНаТерминал
| ПО ТаблицаПлатежей.ЭквайринговыйТерминал.Владелец = СведенияОДоговореНаТерминал.Ссылка
|ГДЕ
| ТаблицаПлатежей.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстыЗапроса;
КонецФункции
Процедура ОформитьОтгрузкуВРозницу(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.Ссылка.Дата КАК Период,
| ТоварыДокумента.Ссылка.Склад КАК Склад,
| ТоварыДокумента.Помещение КАК Помещение,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК ВозвратТовара
|ИЗ
| Документ.ЧекККМ.Товары КАК ТоварыДокумента
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И НЕ ТоварыДокумента.Ссылка.Архивный
| И (ТоварыДокумента.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
| ИЛИ ТоварыДокумента.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.ОтложенСРезервированием)
| ИЛИ ТоварыДокумента.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.КОплате))";
ОбъектМетаданных = Метаданные.Документы.ЧекККМ;
ПараметрыМетода = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМетода.ИмяТЧСерии = "Серии";
ПараметрыМетода.СинонимТаблицыДокумента = "ТоварыДокумента";
СкладыСервер.ОформитьОтгрузкуВРозницу(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ПараметрыМетода);
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| &Склад КАК Отправитель,
| &Партнер КАК Партнер,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаВРозницу) КАК СкладскаяОперация,
| ТаблицаСерии.Помещение КАК ПомещениеОтправителя,
| &Период КАК Период,
| &Ссылка КАК Документ,
| &Ссылка КАК Регистратор,
| ТаблицаСерии.НомерСтроки КАК НомерСтроки,
| ИСТИНА КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ЧекККМ.Серии КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
| И &ЧекПробит
| И НЕ &Архивный
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| &Склад,
| &Партнер,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаВРозницу),
| ТаблицаТовары.Помещение,
| &Период,
| &Ссылка,
| &Ссылка,
| ТаблицаТовары.НомерСтроки,
| ИСТИНА
|ИЗ
| Документ.ЧекККМ.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Количество <> 0
| И &ЧекПробит
| И НЕ &Архивный
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаИсторияПодарочныхСертификатов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ИсторияПодарочныхСертификатов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| ТабличнаяЧасть.ПодарочныйСертификат КАК ПодарочныйСертификат,
|
| ВЫБОР КОГДА ТабличнаяЧасть.ПодарочныйСертификат.Владелец.ЧастичнаяОплата ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СтатусыПодарочныхСертификатов.ЧастичноПогашен)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.СтатусыПодарочныхСертификатов.ПолностьюПогашен)
| КОНЕЦ КАК Статус
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И ТабличнаяЧасть.ПодарочныйСертификат.Владелец.УчетПодарочныхСертификатов2_5 = ЛОЖЬ
| И &ЧекПробит
| И (НЕ &Архивный)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаПодарочныеСертификаты(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ПодарочныеСертификаты";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ТабличнаяЧасть.ПодарочныйСертификат КАК ПодарочныйСертификат,
| ТабличнаяЧасть.СуммаВВалютеСертификата КАК Сумма,
| ТабличнаяЧасть.Сумма * &КоэффициентПересчетаВВалютуРегл КАК СуммаРегл,
| ТабличнаяЧасть.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.РеализацияПодарочныхСертификатов) КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК ТабличнаяЧасть
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПодарочныеСертификаты КАК ПодарочныеСертификаты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыПодарочныхСертификатов КАК ВидыПодарочныхСертификатов
| ПО ПодарочныеСертификаты.Владелец = ВидыПодарочныхСертификатов.Ссылка
| И УчетПодарочныхСертификатов2_5 = ЛОЖЬ
| ПО ТабличнаяЧасть.ПодарочныйСертификат = ПодарочныеСертификаты.Ссылка
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И &ЧекПробит
| И (НЕ &Архивный)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "БонусныеБаллы";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтБонусныеБаллы", ТекстыЗапроса) Тогда
ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| БонусныеБаллы.Период КАК Период,
| БонусныеБаллы.ДатаНачалаДействия КАК ДатаНачалаДействия,
| БонусныеБаллы.ДатаКОбработке КАК ДатаКОбработке,
| БонусныеБаллы.ВидДвижения КАК ВидДвижения,
| БонусныеБаллы.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер КАК Партнер,
| СУММА(БонусныеБаллы.Начислено) КАК Начислено,
| СУММА(БонусныеБаллы.КСписанию) КАК КСписанию
|ИЗ
| ВтБонусныеБаллы КАК БонусныеБаллы
|
|СГРУППИРОВАТЬ ПО
| БонусныеБаллы.БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер,
| БонусныеБаллы.ДатаНачалаДействия,
| БонусныеБаллы.ДатаКОбработке,
| БонусныеБаллы.Период,
| БонусныеБаллы.ВидДвижения
|ИМЕЮЩИЕ
| СУММА(БонусныеБаллы.Начислено) <> 0 ИЛИ
| СУММА(БонусныеБаллы.КСписанию) <> 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры)
#Область КурсыВалютДокумента
ИмяРегистра = "ВременнаяТаблицаКурсыВалютДокумента";
ТекстЗапросаКурсыВалютДокумента =
"ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| Таблица.Ссылка В (&Ссылка)";
ТекстЗапросаКурсыВалютДокумента = ВзаиморасчетыСервер.ПолучитьТаблицуКурсовВалютНаправленийДеятельности(ТекстЗапросаКурсыВалютДокумента);
ТекстыЗапроса.Добавить(ТекстЗапросаКурсыВалютДокумента, ИмяРегистра);
#КонецОбласти
#Область Продажа
ТекстПродажа = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ЗаказПродажи,
| ЛОЖЬ КАК НакладнаяПоЗаказам,
|
| Таблица.Сумма КАК СуммаВзаиморасчетов,
| 0 КАК СуммаВзаиморасчетовПоТаре,
| Таблица.Сумма КАК Сумма,
|
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияВРозницу) КАК ХозяйственнаяОперация,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,
| Таблица.Ссылка.Дата КАК ДатаКурса,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.КредитПослеОтгрузки) КАК ВариантОплаты,
| ЛОЖЬ КАК СверхЗаказа,
| НЕОПРЕДЕЛЕНО КАК СвязанныйДокумент
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И НЕ Таблица.ОбъектРасчетов = ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)
| И &ЧекПробит
| И (НЕ &Архивный)";
#КонецОбласти
#Область УвеличениеПланаОплат
ТекстПланированиеОплат = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияВРозницу) КАК ХозяйственнаяОперация,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты,
|
| Таблица.Ссылка.Дата КАК ДатаПлатежа,
| ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.КредитПослеОтгрузки) КАК ВариантОплаты,
| Таблица.Сумма КАК КОплате,
|
| ИСТИНА КАК ИсключатьПриКонтроле,
| ЛОЖЬ КАК НакладнаяПоЗаказам,
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка) КАК ЗаказПродажи,
| ЛОЖЬ КАК СверхЗаказа,
| НЕОПРЕДЕЛЕНО КАК СвязанныйДокумент
|
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И НЕ Таблица.ОбъектРасчетов = ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)
| И &ЧекПробит
| И (НЕ &Архивный)";
#КонецОбласти
#Область ЗачетАванса
ТекстЗачетАванса = "";
#КонецОбласти
ВзаиморасчетыСервер.ПроведениеПродажи(Запрос, ТекстыЗапроса, Регистры, ТекстПродажа, ТекстПланированиеОплат, ТекстЗачетАванса);
КонецПроцедуры
Функция ТекстЗапросаВтСуммаПлатежнымиКартами(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтСуммаПлатежнымиКартами";
ТекстЗапроса =
"ВЫБРАТЬ
| СУММА(ТабличнаяЧасть.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВтСуммаПлатежнымиКартами
|ИЗ
| Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтСуммаПодарочнымиСертификатами(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтСуммаПодарочнымиСертификатами";
ТекстЗапроса =
"ВЫБРАТЬ
| СУММА(ТабличнаяЧасть.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВтСуммаПодарочнымиСертификатами
|ИЗ
| Документ.ЧекККМ.ПодарочныеСертификаты КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтБонусныеБаллы";
ТекстЗапроса =
"ВЫБРАТЬ
| ТабличнаяЧасть.ДатаНачисления КАК Период,
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(ТабличнаяЧасть.ДатаСписания,
| ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА ТабличнаяЧасть.ДатаНачисления
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаНачалаДействия,
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(ТабличнаяЧасть.ДатаСписания,
| ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА &ТекущаяДата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаКОбработке,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| ТабличнаяЧасть.СуммаБонусныхБаллов КАК Начислено,
| 0 КАК КСписанию
|ПОМЕСТИТЬ ВтБонусныеБаллы
|ИЗ
| Документ.ЧекККМ.БонусныеБаллы КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И НЕ &Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
| И &ЧекПробит
| И НЕ &Архивный
| И ТабличнаяЧасть.ДатаНачисления <> ДатаВремя(1, 1, 1)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТабличнаяЧасть.ДатаСписания КАК Период,
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(ТабличнаяЧасть.ДатаСписания,
| ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА ТабличнаяЧасть.ДатаНачисления
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ,
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(ТабличнаяЧасть.ДатаСписания,
| ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА &ТекущаяДата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| 0 КАК Начислено,
| ТабличнаяЧасть.СуммаБонусныхБаллов КАК КСписанию
|ИЗ
| Документ.ЧекККМ.БонусныеБаллы КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И НЕ &Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
| И &ЧекПробит
| И НЕ &Архивный
| И ТабличнаяЧасть.ДатаСписания <> ДатаВремя(1, 1, 1)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачалоПериода(&Период, ДЕНЬ),
| ДатаВремя(1, 1, 1),
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(&Период, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА &ТекущаяДата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
| &БонуснаяПрограммаЛояльности,
| &Партнер,
| ТабличнаяЧасть.СуммаБонусныхБалловКСписанию,
| ВЫБОР
| КОГДА НАЧАЛОПЕРИОДА(&Период, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаНачалаРаботыМеханизмаБонусныхБаллов_2_5, ДЕНЬ)
| ТОГДА 0
| ИНАЧЕ ТабличнаяЧасть.СуммаБонусныхБалловКСписанию
| КОНЕЦ
|ИЗ
| Документ.ЧекККМ.Товары КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И НЕ &Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
| И &ЧекПробит
| И НЕ &Архивный
| И ТабличнаяЧасть.СуммаБонусныхБалловКСписанию <> 0";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос)
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуУпр")
И Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
Возврат;
КонецЕсли;
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(Запрос.Параметры.Валюта,
Запрос.Параметры.Валюта,
Запрос.Параметры.Период,
Запрос.Параметры.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпр", Коэффициенты.КоэффициентПересчетаВВалютуУПР);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ
| ТабЧасть.Ссылка.Склад
| КОНЕЦ КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЧекККМ.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.ОтложенСРезервированием),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.КОплате))
| И НЕ ТабЧасть.Ссылка.Архивный";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьТоварногоЧека";
КомандаПечати.Идентификатор = "ТоварныйЧек";
КомандаПечати.Представление = НСтр("ru = 'Товарный чек'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Возврат;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыТоварныйЧек(ПараметрыПечати, МассивОбъектов) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДокЧек.Номер КАК Номер,
| ДокЧек.Дата КАК Дата,
| ДокЧек.Ссылка КАК Ссылка,
| ДокЧек.КассаККМ КАК КассаККМ,
| ДокЧек.Валюта КАК Валюта,
| ДокЧек.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДокЧек.КассаККМ.Представление КАК Покупатель,
| ДокЧек.Кассир.ФизическоеЛицо КАК Ответственный,
| ДокЧек.Организация КАК Организация,
| ДокЧек.Организация.Префикс КАК Префикс,
| ДокЧек.Организация.Представление КАК Поставщик,
| ДокЧек.СуммаДокумента КАК СуммаДокумента,
| ДокЧек.КассаККМ.Подразделение КАК Подразделение
|ИЗ
| Документ.ЧекККМ КАК ДокЧек
|ГДЕ
| ДокЧек.Ссылка В(&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| ДокЧек.МоментВремени
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Цена КАК Цена,
| Таблица.СуммаРучнойСкидки + Таблица.СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Таблица.Сумма - Таблица.СуммаРучнойСкидки - Таблица.СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Помещение КАК Помещение
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ЧекККМ.Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО (ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора)
| И (ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора)
| И (ВариантыКомплектацииНоменклатуры.Основной)
|ГДЕ
| Таблица.Ссылка В(&МассивДокументов)
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(Таблица.НомерСтроки) КАК НомерСтроки,
| СУММА(Таблица.Сумма) + СУММА(Таблица.СуммаСкидки) КАК Цена,
| СУММА(Таблица.Сумма) КАК Сумма,
| СУММА(Таблица.СуммаНДС) КАК СуммаНДС,
| СУММА(Таблица.СуммаСкидки) КАК СуммаСкидки,
| СУММА(Таблица.Сумма - Таблица.СуммаСкидки) КАК СуммаБезСкидки
|ПОМЕСТИТЬ КомплектыПодготовка
|ИЗ
| Товары КАК Таблица
|ГДЕ
| Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Комплектующие.Ссылка КАК ВариантКомплектацииНоменклатуры,
| Комплектующие.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Комплектующие.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| СУММА(ВЫБОР
| КОГДА ЕСТЬNULL(Комплектующие.Количество, 0) <> 0
| ТОГДА Товары.Количество / Комплектующие.Количество
| ИНАЧЕ 1
| КОНЕЦ) КАК Количество
|ПОМЕСТИТЬ ТаблицаДополнительно
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК Комплектующие
| ПО (Комплектующие.Ссылка = Товары.ВариантКомплектацииНоменклатуры)
| И (Комплектующие.Ссылка.НоменклатураОсновногоКомпонента = Товары.Номенклатура)
| И (Комплектующие.Ссылка.ХарактеристикаОсновногоКомпонента = Товары.Характеристика)
| И (Комплектующие.Номенклатура = Товары.Номенклатура)
| И (Комплектующие.Характеристика = Товары.Характеристика)
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И НЕ Комплектующие.Количество ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Комплектующие.Ссылка,
| Комплектующие.Ссылка.ВариантПредставленияНабораВПечатныхФормах,
| Комплектующие.Ссылка.ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ТаблицаДополнительно.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| ТаблицаДополнительно.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДополнительно.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ТаблицаДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ТаблицаДополнительно.Количество, 1) КАК Количество,
| Таблица.Цена / ЕСТЬNULL(ТаблицаДополнительно.Количество, 1) КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки
|ПОМЕСТИТЬ Комплекты
|ИЗ
| КомплектыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДополнительно КАК ТаблицаДополнительно
| ПО Таблица.НоменклатураНабора = ТаблицаДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ТаблицаДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ТаблицаДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.ЭтоКомплектующие КАК ЭтоКомплектующие,
| Таблица.ЭтоНабор КАК ЭтоНабор,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
| Таблица.Номенклатура.Код КАК Код,
| Таблица.Номенклатура.Артикул КАК Артикул,
| Таблица.Характеристика.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Таблица.Упаковка.Наименование
| КОНЕЦ КАК НаименованиеУпаковки,
| Таблица.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА Таблица.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Таблица.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Таблица.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Цена КАК Цена,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Помещение КАК Помещение
|ИЗ
| (ВЫБРАТЬ
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫБОР
| КОГДА ЕСТЬNULL(Комплекты.НомерСтроки, 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР
| КОГДА ЕСТЬNULL(Комплекты.НомерСтроки, 0) <> 0
| ТОГДА Комплекты.НомерСтроки
| ИНАЧЕ Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки,
| Таблица.Помещение КАК Помещение
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Комплекты КАК Комплекты
| ПО (Комплекты.НоменклатураНабора = Таблица.НоменклатураНабора)
| И (Комплекты.ХарактеристикаНабора = Таблица.ХарактеристикаНабора)
| ГДЕ
| (Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И Таблица.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие), ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Комплекты.ВариантПредставленияНабораВПечатныхФормах,
| Комплекты.ВариантРасчетаЦеныНабора,
| Комплекты.Ссылка,
| Комплекты.НоменклатураНабора,
| Комплекты.ХарактеристикаНабора,
| ЛОЖЬ,
| ИСТИНА,
| Комплекты.НомерСтроки,
| Комплекты.НоменклатураНабора,
| Комплекты.Количество,
| Комплекты.КоличествоУпаковок,
| Комплекты.Цена,
| Комплекты.Сумма,
| Комплекты.СуммаНДС,
| Комплекты.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
| Комплекты.СуммаСкидки,
| Комплекты.СуммаБезСкидки,
| НЕОПРЕДЕЛЕНО
| ИЗ
| Комплекты КАК Комплекты
| ГДЕ
| Комплекты.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор), ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))) КАК Таблица
|
|УПОРЯДОЧИТЬ ПО
| Таблица.НомерСтроки,
| ЭтоНабор УБЫВ");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура(
"РезультатПоШапке, РезультатПоТабличнойЧасти, ЗаголовокДокумента",
ПакетРезультатовЗапроса[0],
ПакетРезультатовЗапроса[5],
НСтр("ru = 'Товарный чек'"));
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат СтруктураДанныхДляПечати;
КонецФункции
#КонецОбласти
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийСПомещениями()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Помещение,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Помещение,
| Товары.Номенклатура,
| Товары.Характеристика,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Помещение,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Помещение,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Помещение,
| Серии.Номенклатура,
| Серии.Характеристика,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Помещение,
| Серии.Номенклатура,
| Серии.Характеристика
|;
|
|
|ВЫБРАТЬ
| ПолитикиУчетаСерий.Ссылка КАК Ссылка,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий КАК ПолитикаУчетаСерий,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям КАК УчитыватьСебестоимостьПоСериям,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки КАК УказыватьПриПланированииОтгрузки,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора КАК УказыватьПриПланированииОтбора,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчетСерийПоFEFO КАК УчетСерийПоFEFO,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПоФактуОтбора КАК УказыватьПоФактуОтбора,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриОтгрузкеВРозницу КАК УказыватьПриОтгрузкеВРозницу,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий КАК УчитыватьОстаткиСерий
|ПОМЕСТИТЬ ПолитикиУчетаСерийДляЗапроса
|ИЗ
| Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|ГДЕ
| (ПолитикиУчетаСерий.Склад = &Склад)
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА &ТолькоСерииДляСебестоимости
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.УчетСерийПоFEFO
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 6
| ИНАЧЕ 5
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерий.УказыватьПриОтгрузкеВРозницу
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Помещение = ТоварыДляЗапроса.Помещение
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО Товары.Номенклатура = СерииДляЗапроса.Номенклатура
| И Товары.Характеристика = СерииДляЗапроса.Характеристика
| И Товары.Помещение = СерииДляЗапроса.Помещение
| ЛЕВОЕ СОЕДИНЕНИЕ ПолитикиУчетаСерийДляЗапроса КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийБезПомещений()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика
|;
|
|
|ВЫБРАТЬ
| ПолитикиУчетаСерий.Ссылка КАК Ссылка,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий КАК ПолитикаУчетаСерий,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям КАК УчитыватьСебестоимостьПоСериям,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки КАК УказыватьПриПланированииОтгрузки,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора КАК УказыватьПриПланированииОтбора,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчетСерийПоFEFO КАК УчетСерийПоFEFO,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПоФактуОтбора КАК УказыватьПоФактуОтбора,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриОтгрузкеВРозницу КАК УказыватьПриОтгрузкеВРозницу,
| ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий КАК УчитыватьОстаткиСерий
|ПОМЕСТИТЬ ПолитикиУчетаСерийДляЗапроса
|ИЗ
| Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|ГДЕ
| (ПолитикиУчетаСерий.Склад = &Склад)
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА &ТолькоСерииДляСебестоимости
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.УчетСерийПоFEFO
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 6
| ИНАЧЕ 5
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерий.УказыватьПриОтгрузкеВРозницу
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО Товары.Номенклатура = СерииДляЗапроса.Номенклатура
| И Товары.Характеристика = СерииДляЗапроса.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ ПолитикиУчетаСерийДляЗапроса КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецЕсли