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