#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Подразделение", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
МеханизмыДокумента.Добавить("Взаиморасчеты");
СписаниеОтгруженныхТоваровЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.СписаниеОтгруженныхТоваров") Тогда
ДокументОбъект = Документ;
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументОбъект = Документ.ПолучитьОбъект();
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаДвиженияНоменклатураДоходыРасходы(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
СписаниеОтгруженныхТоваровЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(Запрос, ТекстыЗапроса, Регистры, ПустаяСсылка().Метаданные());
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область СозданиеНаОсновании
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СписаниеОтгруженныхТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.СписаниеОтгруженныхТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(
Метаданные.Документы.СписаниеОтгруженныхТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи, ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
СписаниеОтгруженныхТоваровЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
СписаниеОтгруженныхТоваровЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
Возврат "ХозяйственнаяОперация,Дата";
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.СписаниеОтгруженныхТоваров";
УчитыватьСебестоимостьПоСериям = ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад",
Новый Структура());
ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад",
Новый Структура());
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.ИменаПолейДополнительные.Добавить("Склад");
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ДвижениеВФинансовомУчете);
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИмяПоляСклад = Неопределено;
ПараметрыУказанияСерий.ИмяТЧСерии = "Товары";
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийНаСкладах");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПереданныхТоваров");
ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыУказанияСерий.ОперацияДокумента = Объект.ХозяйственнаяОперация;
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтатусУказанияСерийПереданныхТоваров,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(Товары.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтарыйСтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтарыйСтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| И (ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеНедостачЗаСчетПоклажедателя)
| ИЛИ ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента)
| ИЛИ ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийПереданныхПереработчикуТоваров
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровУПереработчика)
| ИЛИ &ОперацияДокумента = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийТоваровОтгруженныхКлиенту)
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 18
| ИНАЧЕ 17
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий,
| ВЫБОР
| КОГДА &ОперацияДокумента <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийНаСкладах
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.Склад = ТоварыДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И ТоварыДляЗапроса.Склад = ПолитикиУчетаСерий.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ТоварыДляЗапроса.Склад = Склады.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерийНаСкладах,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийНаСкладах
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерийПереданныхТоваров
| ИЛИ ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийНаСкладах
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерий
| ИЛИ Статусы.СтатусУказанияСерийНаСкладах <> Статусы.СтарыйСтатусУказанияСерийНаСкладах
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область НазначениеИНаправлениеДеятельности
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ШаблонНазначения.ТипыНазначений.Очистить();
ШаблонНазначения.ТипыНазначений.Добавить(Перечисления.ТипыНазначений.Собственное);
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(
МакетФормы,
"ТоварыПереданныеХранителям",
Истина,
"Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Передано").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Организация = "Объект.Организация";
ОписаниеКолонок.ПутиКДанным.Договор = "Объект.Договор";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
Возврат МакетФормы;
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "Товары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(ХозяйственнаяОперация)";
КонецПроцедуры
#КонецОбласти
Функция ПараметрыВыбораСтатейИАналитик() Экспорт
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ПараметрыВыбора.ЭлементыФормы.Статья.Добавить("СтатьяРасходов");
ПараметрыВыбора.ЭлементыФормы.АналитикаРасходов.Добавить("АналитикаРасходов");
ПараметрыВыбора.ЭлементыФормы.АналитикаАктивовПассивов.Добавить("АналитикаАктивовПассивов");
Возврат ПараметрыВыбора;
КонецФункции
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.Количество,
| ТаблицаТовары.Склад,
| ТаблицаТовары.Серия,
| ТаблицаТовары.СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерийНаСкладах,
| ТаблицаТовары.СтатусУказанияСерийПереданныхТоваров,
| ТаблицаТовары.АналитикаУчетаНоменклатуры,
| ТаблицаТовары.НомерГТД,
| ТаблицаТовары.Цена,
| ТаблицаТовары.Сумма,
| ТаблицаТовары.Распоряжение,
| ТаблицаТовары.КодСтроки
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Накладная";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
#Область ЗаполнениеПоРаспоряжению
Функция РеквизитыШапки() Экспорт
РеквизитыШапки = Новый Структура;
РеквизитыШапки.Вставить("Ссылка", Документы.СписаниеОтгруженныхТоваров.ПустаяСсылка());
РеквизитыШапки.Вставить("Партнер", Справочники.Партнеры.ПустаяСсылка());
РеквизитыШапки.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
РеквизитыШапки.Вставить("Контрагент", Справочники.Контрагенты.ПустаяСсылка());
РеквизитыШапки.Вставить("Соглашение", Справочники.СоглашенияСКлиентами.ПустаяСсылка());
РеквизитыШапки.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка());
РеквизитыШапки.Вставить("Организация", Справочники.Организации.ПустаяСсылка());
РеквизитыШапки.Вставить("Договор", Справочники.ДоговорыКонтрагентов.ПустаяСсылка());
РеквизитыШапки.Вставить("Сделка", Справочники.СделкиСКлиентами.ПустаяСсылка());
РеквизитыШапки.Вставить("Подразделение", Справочники.СтруктураПредприятия.ПустаяСсылка());
РеквизитыШапки.Вставить("НаправлениеДеятельности", Справочники.НаправленияДеятельности.ПустаяСсылка());
РеквизитыШапки.Вставить("Валюта", Справочники.Валюты.ПустаяСсылка());
Возврат РеквизитыШапки;
КонецФункции
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеДокумента.Ссылка КАК Распоряжение
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Проведен
| И ДанныеДокумента.Организация = &Организация
| И ДанныеДокумента.Партнер = &Партнер
| И ДанныеДокумента.Контрагент = &Контрагент
| И ДанныеДокумента.Соглашение = &Соглашение
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ДанныеДокумента.Соглашение = &Соглашение)
| И ДанныеДокумента.Договор = &Договор
| И ДанныеДокумента.Склад В ИЕРАРХИИ (&Склад)
| И &Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеДокумента.Валюта = &Валюта
| И ДанныеДокумента.Сделка = &Сделка
| И ВЫБОР
| КОГДА НЕ &ИспользоватьНаправленияДеятельности
| ТОГДА ИСТИНА
| ИНАЧЕ ДанныеДокумента.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Распоряжение
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Проведен
| И ДанныеДокумента.Организация = &Организация
| И ДанныеДокумента.Партнер = &Партнер
| И ДанныеДокумента.Контрагент = &Контрагент
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ДанныеДокумента.Соглашение = &Соглашение)
| И ДанныеДокумента.Договор = &Договор
| И ДанныеДокумента.Склад В ИЕРАРХИИ (&Склад)
| И &Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеДокумента.Валюта = &Валюта
| И ДанныеДокумента.Сделка = &Сделка
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ДанныеДокумента.НаправлениеДеятельности = &НаправлениеДеятельности)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА ДанныеДокумента.Ссылка.Исправление
| ТОГДА ДанныеДокумента.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ
| ДанныеДокумента.Ссылка
| КОНЕЦ КАК Распоряжение
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту.Товары КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка.Проведен
| И ДанныеДокумента.Ссылка.Организация = &Организация
| И ДанныеДокумента.Ссылка.Партнер = &Партнер
| И ДанныеДокумента.Ссылка.Контрагент = &Контрагент
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ДанныеДокумента.Ссылка.Соглашение = &Соглашение)
| И ДанныеДокумента.Ссылка.Договор = &Договор
| И ДанныеДокумента.Склад В ИЕРАРХИИ (&Склад)
| И &Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеДокумента.Ссылка.Валюта = &Валюта
| И ДанныеДокумента.Ссылка.Сделка = &Сделка
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ДанныеДокумента.Ссылка.НаправлениеДеятельности = &НаправлениеДеятельности)
| И (НЕ ДанныеДокумента.Ссылка.ОтгрузкаПоЗаказам
| И ДанныеДокумента.ЗаказКлиента В (
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО
| )
| ИЛИ ДанныеДокумента.Ссылка.ОтгрузкаПоЗаказам
| И ВЫБОР
| КОГДА ДанныеДокумента.ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(ДанныеДокумента.ЗаказКлиента КАК Документ.ЗаказКлиента).ЭтоЗаказКакСчет
| КОГДА ДанныеДокумента.ЗаказКлиента ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(ДанныеДокумента.ЗаказКлиента КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ЭтоЗаказКакСчет
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.Партия КАК Распоряжение
|ИЗ
| Документ.ВводОстатковТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО ДанныеДокумента.Ссылка = РеестрДокументов.СторнируемыйДокумент
| И РеестрДокументов.Проведен
| И НЕ РеестрДокументов.ДополнительнаяЗапись
|ГДЕ
| ДанныеДокумента.Проведен
| И ДанныеДокумента.Организация = &Организация
| И ДанныеДокумента.Партнер = &Партнер
| И ДанныеДокумента.Контрагент = &Контрагент
| И ДанныеДокумента.Договор = &Договор
| И ДанныеДокумента.Склад В ИЕРАРХИИ (&Склад)
| И &Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеДокумента.Валюта = &Валюта
| И ДанныеДокумента.Партия <> ЗНАЧЕНИЕ(Документ.ПервичныйДокумент.ПустаяСсылка)
| И РеестрДокументов.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Накладная КАК Распоряжение
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Накладная", Накладная);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("Партнер", РеквизитыШапки.Партнер);
Запрос.УстановитьПараметр("Контрагент", РеквизитыШапки.Контрагент);
Запрос.УстановитьПараметр("Соглашение", РеквизитыШапки.Соглашение);
Запрос.УстановитьПараметр("Договор", РеквизитыШапки.Договор);
Запрос.УстановитьПараметр("Склад", РеквизитыШапки.Склад);
Запрос.УстановитьПараметр("Валюта", РеквизитыШапки.Валюта);
Запрос.УстановитьПараметр("Сделка", РеквизитыШапки.Сделка);
Запрос.УстановитьПараметр("НаправлениеДеятельности", РеквизитыШапки.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ИспользоватьСоглашенияСКлиентами",
ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами"));
Запрос.УстановитьПараметр("ИспользоватьНаправленияДеятельности",
ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности"));
Распоряжения = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
Возврат ОбщегоНазначенияКлиентСервер.СвернутьМассив(Распоряжения);
КонецФункции
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "Распоряжение");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.КлючевыеПоля = КлючевыеПоляТаблицыТоваровРаспоряжения();
КонецПроцедуры
Функция КлючевыеПоляТаблицыТоваровРаспоряжения() Экспорт
Возврат "Распоряжение, Номенклатура, Характеристика, Назначение, Серия";
КонецФункции
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок = Неопределено) Экспорт
ЗаполнятьГТД = Товары.Колонки.Найти("НомерГТД") <> Неопределено;
ТекстыЗапроса = Новый Массив();
Если ЗаполнятьГТД Тогда
ТекстыЗапроса.Добавить(ТекстЗапросаОстаткиКОформлениюПоРаспоряжениям("ВтКОформлениюПоРаспоряжениям"));
ТекстыЗапроса.Добавить(ТекстЗапросаОстаткиКОформлениюПоГТД("ВтКОформлениюПоРаспоряжениям"));
Иначе
ТекстыЗапроса.Добавить(ТекстЗапросаОстаткиКОформлениюПоРаспоряжениям());
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВтДанныеУчета.Распоряжение КАК Распоряжение,
| МАКСИМУМ(ДанныеИсправленныхДокументов.Дата) КАК ДатаПоследнегоИсправления
|ПОМЕСТИТЬ ПоследниеИсправления
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту КАК ДанныеИсправленныхДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ВтДанныеУчета
| ПО ДанныеИсправленныхДокументов.ИсправляемыйДокумент = ВтДанныеУчета.Распоряжение
|ГДЕ
| ДанныеИсправленныхДокументов.Проведен
| И ДанныеИсправленныхДокументов.Исправление
|
|СГРУППИРОВАТЬ ПО
| ВтДанныеУчета.Распоряжение
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВтДанныеУчета.Распоряжение КАК Распоряжение,
| ДанныеДокументов.Ссылка КАК ИсправленнаяОтгрузкаТоваров
|ПОМЕСТИТЬ ИсправленияОтгрузокТоваров
|ИЗ
| ВтДанныеУчета КАК ВтДанныеУчета
| ЛЕВОЕ СОЕДИНЕНИЕ ПоследниеИсправления КАК ПоследниеИсправления
| ПО ВтДанныеУчета.Распоряжение = ПоследниеИсправления.Распоряжение
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту КАК ДанныеДокументов
| ПО ВтДанныеУчета.Распоряжение = ДанныеДокументов.ИсправляемыйДокумент
| И ПоследниеИсправления.ДатаПоследнегоИсправления = ДанныеДокументов.Дата
|;
|
|
|ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеУчета.Распоряжение КАК Распоряжение,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Таблица.Обособленно
| ТОГДА Таблица.Ссылка.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Таблица.Склад КАК Склад,
| ВЫБОР
| КОГДА Таблица.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Серия
| ИНАЧЕ
| ДанныеУчета.Серия
| КОНЕЦ КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Количество КАК Количество,
| ДанныеУчета.КОформлениюКоличество КАК КОформлению,
| ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество КАК Цена,
| ДанныеУчета.КОформлениюСумма КАК Сумма,
| ДанныеУчета.НомерГТД КАК НомерГТД
|ПОМЕСТИТЬ ВтКОформлению
|ИЗ
| Документ.ЗаказКлиента.Товары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ДанныеУчета.Распоряжение = Таблица.Ссылка
| И ДанныеУчета.Номенклатура = Таблица.Номенклатура
| И ДанныеУчета.Характеристика = Таблица.Характеристика
| И ДанныеУчета.КодСтроки = Таблица.КодСтроки
|ГДЕ
| НЕ Таблица.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеУчета.Распоряжение КАК Распоряжение,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Таблица.Обособленно
| ТОГДА Таблица.Ссылка.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Таблица.Ссылка.Склад КАК Склад,
| ВЫБОР
| КОГДА Таблица.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Серия
| ИНАЧЕ
| ДанныеУчета.Серия
| КОНЕЦ КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Количество КАК Количество,
| ДанныеУчета.КОформлениюКоличество КАК КОформлению,
| ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество КАК Цена,
| ДанныеУчета.КОформлениюСумма КАК Сумма,
| ДанныеУчета.НомерГТД КАК НомерГТД
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ДанныеУчета.Распоряжение = Таблица.Ссылка
| И ДанныеУчета.Номенклатура = Таблица.Номенклатура
| И ДанныеУчета.Характеристика = Таблица.Характеристика
| И ДанныеУчета.КодСтроки = Таблица.КодСтроки
|ГДЕ
| НЕ Таблица.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеУчета.Распоряжение КАК Распоряжение,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Склад КАК Склад,
| ВЫБОР
| КОГДА Таблица.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Серия
| ИНАЧЕ
| ДанныеУчета.Серия
| КОНЕЦ КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Количество КАК Количество,
| ДанныеУчета.КОформлениюКоличество КАК КОформлению,
| ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество КАК Цена,
| ДанныеУчета.КОформлениюСумма КАК Сумма,
| ДанныеУчета.НомерГТД КАК НомерГТД
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту.Товары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсправленияОтгрузокТоваров КАК ИсправленияОтгрузокТоваров
| ПО ЕСТЬNULL(ИсправленияОтгрузокТоваров.ИсправленнаяОтгрузкаТоваров, ИсправленияОтгрузокТоваров.Распоряжение) = Таблица.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ИсправленияОтгрузокТоваров.Распоряжение = ДанныеУчета.Распоряжение
| И ДанныеУчета.Номенклатура = Таблица.Номенклатура
| И ДанныеУчета.Характеристика = Таблица.Характеристика
| И ДанныеУчета.КодСтроки = Таблица.КодСтроки
|ГДЕ
| Таблица.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| МАКСИМУМ(ЕСТЬNULL(Таблица.НомерСтроки, 0)) КАК НомерСтроки,
| ДанныеУчета.Распоряжение КАК Распоряжение,
| ДанныеУчета.Номенклатура КАК Номенклатура,
| ДанныеУчета.Характеристика КАК Характеристика,
| МАКСИМУМ(ЕСТЬNULL(Таблица.Назначение, ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка))) КАК Назначение,
| МАКСИМУМ(ЕСТЬNULL(Таблица.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))) КАК Склад,
| МАКСИМУМ(ВЫБОР
| КОГДА Таблица.Серия ЕСТЬ НЕ NULL И Таблица.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Серия
| КОГДА ОприходованиеТовары.Серия ЕСТЬ НЕ NULL И ОприходованиеТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ОприходованиеТовары.Серия
| ИНАЧЕ
| ДанныеУчета.Серия
| КОНЕЦ) КАК Серия,
| ДанныеУчета.КодСтроки КАК КодСтроки,
| СУММА(ЕСТЬNULL(Таблица.Количество, 0) + ЕСТЬNULL(ОприходованиеТовары.Количество, 0)) КАК Количество,
| МАКСИМУМ(ДанныеУчета.КОформлениюКоличество) КАК КОформлению,
| МАКСИМУМ(ВЫБОР
| КОГДА ДанныеУчета.КОформлениюКоличество = 0
| ТОГДА 0
| ИНАЧЕ
| ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество
| КОНЕЦ) КАК Цена,
| МАКСИМУМ(ДанныеУчета.КОформлениюСумма) КАК Сумма,
| ДанныеУчета.НомерГТД КАК НомерГТД
|ИЗ
| ВтДанныеУчета КАК ДанныеУчета
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.Товары КАК Таблица
| ПО ДанныеУчета.Распоряжение = Таблица.ЗаказКлиента
| И Таблица.КодСтроки = 0
| И ДанныеУчета.КодСтроки = Таблица.КодСтроки
| И ДанныеУчета.Номенклатура = Таблица.Номенклатура
| И ДанныеУчета.Характеристика = Таблица.Характеристика
| И Таблица.Ссылка.Проведен
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОприходованиеИзлишковОтгруженныхТоваров.Товары КАК ОприходованиеТовары
| ПО ДанныеУчета.Распоряжение = ОприходованиеТовары.Распоряжение
| И ДанныеУчета.Номенклатура = ОприходованиеТовары.Номенклатура
| И ДанныеУчета.Характеристика = ОприходованиеТовары.Характеристика
| И ОприходованиеТовары.Ссылка.Проведен
|ГДЕ
| ДанныеУчета.КодСтроки = 0
|
|СГРУППИРОВАТЬ ПО
| ДанныеУчета.Распоряжение,
| ДанныеУчета.Номенклатура,
| ДанныеУчета.Характеристика,
| ДанныеУчета.КодСтроки,
| ДанныеУчета.НомерГТД
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеУчета.Распоряжение КАК Распоряжение,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Ссылка.Склад КАК Склад,
| ВЫБОР
| КОГДА Таблица.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Серия
| ИНАЧЕ
| ДанныеУчета.Серия
| КОНЕЦ КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Количество КАК Количество,
| ДанныеУчета.КОформлениюКоличество КАК КОформлению,
| ВЫБОР
| КОГДА Таблица.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество
| ИНАЧЕ
| ДанныеУчета.КОформлениюСумма / ДанныеУчета.КОформлениюКоличество
| * &ТекстЗапросаКоэффициентУпаковки
| КОНЕЦ КАК Цена,
| ДанныеУчета.КОформлениюСумма КАК Сумма,
| Таблица.НомерГТД КАК НомерГТД
|ИЗ
| Документ.ВводОстатковТоваров.Товары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ДанныеУчета.Распоряжение = Таблица.Ссылка.Партия
| И ДанныеУчета.Номенклатура = Таблица.Номенклатура
| И ДанныеУчета.Характеристика = Таблица.Характеристика
| И ДанныеУчета.КодСтроки = Таблица.КодСтроки
| И Таблица.Ссылка.Проведен
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО Таблица.Ссылка = РеестрДокументов.СторнируемыйДокумент
| И РеестрДокументов.Проведен
| И НЕ РеестрДокументов.ДополнительнаяЗапись
|ГДЕ
| РеестрДокументов.Ссылка ЕСТЬ NULL
| И Таблица.Ссылка.Проведен
|;
|
|
|ВЫБРАТЬ
| МИНИМУМ(ВтКОформлению.НомерСтроки) КАК НомерСтроки,
| ВтКОформлению.Распоряжение КАК Распоряжение,
| ВтКОформлению.Номенклатура КАК Номенклатура,
| ВтКОформлению.Характеристика КАК Характеристика,
| ВтКОформлению.Назначение КАК Назначение,
| ВтКОформлению.Склад КАК Склад,
| ВтКОформлению.Серия КАК Серия,
| ВтКОформлению.КодСтроки КАК КодСтроки,
| СУММА(ВтКОформлению.Количество) КАК Количество,
| СУММА(ВтКОформлению.КОформлению) КАК КОформлению,
| МАКСИМУМ(ВтКОформлению.Цена) КАК Цена,
| СУММА(ВтКОформлению.Сумма) КАК Сумма,
| ВтКОформлению.НомерГТД КАК НомерГТД
|ИЗ
| ВтКОформлению КАК ВтКОформлению
|
|СГРУППИРОВАТЬ ПО
| ВтКОформлению.Распоряжение,
| ВтКОформлению.Номенклатура,
| ВтКОформлению.Характеристика,
| ВтКОформлению.Назначение,
| ВтКОформлению.Склад,
| ВтКОформлению.Серия,
| ВтКОформлению.КодСтроки,
| ВтКОформлению.НомерГТД
|
|УПОРЯДОЧИТЬ ПО
| ВтКОформлению.Распоряжение,
| МИНИМУМ(ВтКОформлению.НомерСтроки)
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, НакладныеСервер.ТекстРазделителяЗапросов());
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
Ключ = "КодСтроки, " + ПараметрыЗаполнения.КлючевыеПоля;
Если ЗаполнятьГТД Тогда
Ключ = Ключ + ", НомерГТД";
КонецЕсли;
ТаблицаЗаказы.Колонки.КОформлению.Имя = "КоличествоВЗаказе";
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("Валюта");
МассивВсехРеквизитов.Добавить("СуммаДокумента");
МассивВсехРеквизитов.Добавить("ВидЦены");
МассивВсехРеквизитов.Добавить("УменьшитьОтгрузкуПоРаспоряжению");
МассивВсехРеквизитов.Добавить("ИсточникИнформацииОЦенахДляПечати");
МассивВсехРеквизитов.Добавить("Склад");
МассивВсехРеквизитов.Добавить("Товары.Цена");
МассивВсехРеквизитов.Добавить("Товары.Сумма");
МассивВсехРеквизитов.Добавить("Товары.Склад");
Обработчик = ОбработчикДействий(ХозяйственнаяОперация);
МассивРеквизитовОперации = Обработчик.РеквизитыОперации();
КонецПроцедуры
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары", Неопределено);
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("ХозяйственнаяОперация");
Поля.Добавить("Номер");
Поля.Добавить("Дата");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента Тогда
ПредставлениеОбъекта = НСтр("ru = 'Списание товаров, отгруженных комиссионеру'");
ИначеЕсли Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетПоклажедателя Тогда
ПредставлениеОбъекта = НСтр("ru = 'Списание товаров, отгруженных хранителю'");
Иначе
ПредставлениеОбъекта = НСтр("ru = 'Списание товаров, отгруженных клиенту'");
КонецЕсли;
Представление = СтрШаблон(НСтр("ru='%1 %2 от %3'"), ПредставлениеОбъекта, Данные.Номер, Данные.Дата);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.СтатьяРасходов КАК СтатьяРасходов,
| ДанныеДокумента.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ДанныеДокумента.АналитикаРасходов КАК АналитикаРасходов,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ИсточникИнформацииОЦенахДляПечати КАК ИсточникИнформацииОЦенахДляПечати,
| ДанныеДокумента.ВидЦены КАК ВидЦены,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ВидыЗапасовУказаныВручную КАК ВидыЗапасовУказаныВручную,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ЕСТЬNULL(ДанныеДокумента.Подразделение.ВариантОбособленногоУчетаТоваров,
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеДокумента.Проведен КАК Проведен,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации,
| ДанныеДокумента.Валюта КАК Валюта,
| ВЫБОР
| КОГДА
| ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СписаниеУКомитента,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента
|ИЗ
| Документ.СписаниеОтгруженныхТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Реквизиты = РезультатЗапроса.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
ИнформацияПоДоговору = "";
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер);
ИдентификаторМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.СписаниеОтгруженныхТоваров");
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ИдентификаторМетаданных);
Запрос.УстановитьПараметр("НомерНаПечать", НомерНаПечать);
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Функция ТекстЗапросаДвиженияНоменклатураДоходыРасходы(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураДоходыРасходы";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ТаблицаТовары.НаправлениеДеятельности КАК НаправлениеДеятельностиНоменклатуры,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаТовары.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаТовары.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &Партнер КАК Склад,
| ТаблицаТовары.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| &СтатьяРасходов КАК СтатьяДоходовРасходов,
| &НаправлениеДеятельности КАК НаправлениеДеятельностиСтатьи,
| &АналитикаРасходов КАК АналитикаРасходов,
| &АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
| ТаблицаТовары.ВидЗапасов КАК ИсточникГФУНоменклатуры
|ИЗ
| ВтВидыЗапасов КАК ТаблицаТовары";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| &Ссылка КАК Документ,
| &Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ДвижениеВФинансовомУчете) КАК СкладскаяОперация,
| ЛОЖЬ КАК ЭтоСкладскоеДвижение,
| ТаблицаСерии.Количество КАК Количество
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
| И ТаблицаСерии.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаСерии.НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ВЫБОР
| КОГДА ДанныеДокумента.КоличествоНаправленийДеятельности = 1
| ТОГДА ДанныеДокумента.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НаправлениеДеятельности,
| &Партнер КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| ВтОснований КАК ДанныеДокумента";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &СтатьяРасходов КАК СтатьяРасходов,
| &АналитикаРасходов КАК АналитикаРасходов,
| &АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| 0 КАК КОформлениюСписания,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| 0 КАК КОформлениюСписанияПоРНПТ
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК СтатьяРасходов,
| НЕОПРЕДЕЛЕНО КАК АналитикаРасходов,
| НЕОПРЕДЕЛЕНО КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| 0 КАК Количество,
| ТаблицаВидыЗапасов.Количество КАК КОформлениюСписания,
| 0 КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КОформлениюСписанияПоРНПТ
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.ТипЗапасов В (
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи))
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаВидыЗапасов.НомерСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.Распоряжение КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС) КАК Показатель,
| СУММА(ТаблицаТовары.Количество) КАК Количество,
| СУММА(ТаблицаТовары.Сумма) КАК Сумма
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И НЕ ТаблицаТовары.Распоряжение В (
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ПервичныйДокумент.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО
| )
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.НомерСтроки,
| ТаблицаТовары.Ссылка.Дата,
| ТаблицаТовары.Распоряжение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.Распоряжение КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| И ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА
| ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению)
| КОНЕЦ КАК Показатель,
| СУММА(ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Количество
| ИНАЧЕ
| -ТаблицаТовары.Количество
| КОНЕЦ) КАК Количество,
| СУММА(ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Сумма
| ИНАЧЕ
| -ТаблицаТовары.Сумма
| КОНЕЦ) КАК Сумма
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И НЕ ТаблицаТовары.Распоряжение В (
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ПервичныйДокумент.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО
| )
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.НомерСтроки,
| ТаблицаТовары.Ссылка.Дата,
| ТаблицаТовары.Распоряжение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| И ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА
| ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТаблицаТовары.КодСтроки <> 0
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТаблицаТовары.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению)
| КОНЕЦ
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ИСТИНА КАК КонтрольСвободногоОстатка,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И ТабЧасть.Ссылка.УменьшитьОтгрузкуПоРаспоряжению
| И ТабЧасть.КодСтроки <> 0
| И НЕ ТабЧасть.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТабЧасть.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
|";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| Строки.Валюта КАК Валюта,
| Строки.ВидЗапасов КАК ВидЗапасов,
| Строки.АналитикаНоменклатурыКомитента КАК АналитикаУчетаНоменклатуры,
| Строки.Номенклатура КАК Номенклатура,
| Строки.Характеристика КАК Характеристика,
| Строки.НомерГТД КАК НомерГТД,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Строки.Количество КАК КоличествоСписано,
| Строки.Количество КАК КоличествоСписаноКОформлению,
| Строки.КоличествоПоРНПТ КАК КоличествоСписаноКОформлениюПоРНПТ,
| Строки.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| ВтВидыЗапасов КАК Строки
|ГДЕ
| Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТоварыДокумента.Распоряжение КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.КодСтроки <> 0
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.УменьшитьОтгрузкуПоРаспоряжению
| И НЕ ТоварыДокумента.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| И НЕ ТоварыДокумента.Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| И НЕ ТоварыДокумента.Распоряжение В (
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ПервичныйДокумент.ПустаяСсылка)
| )
|";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Функция ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса) Экспорт
ИмяРегистра = "ВтВидыЗапасов";
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ВидыЗапасов.Ссылка КАК Ссылка,
| СпрВидыЗапасов.ВладелецТовара КАК ВладелецТовара,
| СпрВидыЗапасов.Договор КАК Договор,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| СпрВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ВидыЗапасов.Количество КАК Количество,
| ВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВидыЗапасов.НомерГТД КАК НомерГТД,
| ВЫБОР
| КОГДА &СписаниеУКомитента
| ТОГДА ВидыЗапасов.Сумма
| ИНАЧЕ 0
| КОНЕЦ КАК Сумма,
| ВЫБОР
| КОГДА &СписаниеУКомитента
| ТОГДА ВЫРАЗИТЬ(ВидыЗапасов.Сумма * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2))
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУпр,
| ВЫБОР
| КОГДА &СписаниеУКомитента
| ТОГДА ВЫРАЗИТЬ(ВидыЗапасов.Сумма * &КоэффициентПересчетаВВалютуРегл КАК ЧИСЛО(31,2))
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаРегл,
| ЕСТЬNULL(ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)) КАК НаправлениеДеятельности,
| ВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВидыЗапасов.ВидЗапасов.Валюта КАК Валюта,
| КлючиКомитента.КлючАналитики КАК АналитикаНоменклатурыКомитента,
| ЕСТЬNULL(ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.ВидДеятельностиНДС,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) КАК ВидДеятельностиНДС
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.ВидыЗапасов КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции = АналитикаБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК СпрВидыЗапасов
| ПО ВидыЗапасов.ВидЗапасов = СпрВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиКомитента
| ПО ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = КлючиКомитента.Номенклатура
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = КлючиКомитента.Характеристика
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение = КлючиКомитента.Назначение
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиКомитента.Серия
| И ВидыЗапасов.ВидЗапасов.ВладелецТовара = КлючиКомитента.МестоХранения
|ГДЕ
| ВидыЗапасов.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ключи.Номенклатура КАК Номенклатура,
| Ключи.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| Ключи.Серия КАК Серия,
| Ключи.МестоХранения КАК Склад
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.ВидыЗапасов КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Ключи
| ПО Товары.АналитикаУчетаНоменклатуры = Ключи.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Ключи.Номенклатура = Аналитика.Номенклатура
| И Ключи.Характеристика = Аналитика.Характеристика
| И Ключи.Серия = Аналитика.Серия
| И Ключи.МестоХранения = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
|ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.КлючАналитики ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ключи.Номенклатура КАК Номенклатура,
| Ключи.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| &Серия КАК Серия,
| Товары.ВидЗапасов.ВладелецТовара КАК Склад
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.ВидыЗапасов КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Ключи
| ПО Товары.АналитикаУчетаНоменклатуры = Ключи.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Ключи.Номенклатура = Аналитика.Номенклатура
| И Ключи.Характеристика = Аналитика.Характеристика
| И &Серия = Аналитика.Серия
| И Товары.ВидЗапасов.ВладелецТовара = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
|ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.КлючАналитики ЕСТЬ NULL
| И Товары.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)";
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям",
Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| МАКСИМУМ(
| ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(
| РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности
|ПОМЕСТИТЬ ВтОснований
|ИЗ
| Документ.СписаниеОтгруженныхТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.СписаниеОтгруженныхТоваров";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ЗначенияПараметров = Новый Структура();
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
ИначеЕсли ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
#Область НаправленияДеятельности
ИмяРегистра = "ВременнаяТаблицаНаправленияДеятельности";
ТекстЗапросаНаправленияДеятельности =
"ВЫБРАТЬ
| НаправленияДокументов.ОбъектРасчетов КАК ОбъектРасчетов,
| НаправленияДокументов.ОбъектРасчетов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА (ЕСТЬNULL(НаправленияДокументов.ОбъектРасчетов.НаправлениеДеятельности.УчетДоходов, ЛОЖЬ)
| И
| НаправленияДокументов.ОбъектРасчетов.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом))
| ИЛИ (ЕСТЬNULL(НаправленияДокументов.ОбъектРасчетов.НаправлениеДеятельности.УчетРасчетовСПоставщиками, ЛОЖЬ)
| И
| НаправленияДокументов.ОбъектРасчетов.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком))
| ТОГДА НаправленияДокументов.ОбъектРасчетов.НаправлениеДеятельности
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
| КОНЕЦ КАК НаправлениеАналитики
|ПОМЕСТИТЬ ВтНаправленияДеятельности
|ИЗ
| Документ.ЗаказКлиента КАК НаправленияДокументов
|ГДЕ
| НаправленияДокументов.Ссылка В
| (ВЫБРАТЬ
| Распоряжение
| ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары
| ГДЕ
| Ссылка = &Ссылка)
| И НЕ НаправленияДокументов.ЭтоЗаказКакСчет";
ТекстыЗапроса.Добавить(ТекстЗапросаНаправленияДеятельности, ИмяРегистра);
#КонецОбласти
ТекстПланыОплат =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Распоряжение КАК Распоряжение,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Партнер КАК Партнер,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Дата КАК ДатаРегистратора,
| ДанныеДокументаШапка.Номер КАК НомерРегистратора,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ФормаОплаты КАК ФормаОплаты,
| ЭтапыГрафика.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафика.ВариантОплаты КАК ВариантОплаты,
| -Таблица.Сумма * ЭтапыГрафика.ПроцентПлатежа / 100 КАК КОплате,
| 0 КАК СуммаОтклоненияМерныхТоваров,
| ИСТИНА КАК ИсключатьПриКонтроле
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафика
| ПО Таблица.Распоряжение = ЭтапыГрафика.Ссылка
|ГДЕ
| ДанныеДокументаШапка.Ссылка = &Ссылка
| И Таблица.КодСтроки <> 0
| И НЕ ДанныеДокументаШапка.УменьшитьОтгрузкуПоРаспоряжению
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И ТИПЗНАЧЕНИЯ(Таблица.Распоряжение) = ТИП(Документ.ЗаказКлиента)
| И НЕ ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ЭтоЗаказКакСчет
| И ВЫРАЗИТЬ(Таблица.Распоряжение КАК
| Документ.ЗаказКлиента).ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)";
ТекстПланыОтгрузок =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Распоряжение КАК Распоряжение,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Партнер КАК Партнер,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ОбъектРасчетов КАК ОбъектРасчетов,
| КОНЕЦПЕРИОДА(ДанныеДокументаШапка.Дата, ДЕНЬ) КАК ДатаОтгрузки,
| -Таблица.Сумма КАК УвеличитьКОтгрузке,
| -Таблица.Сумма КАК УвеличитьОтгружается,
| ДанныеДокументаШапка.Дата КАК ДатаРегистратора,
| ДанныеДокументаШапка.Номер КАК НомерРегистратора,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ФормаОплаты КАК ФормаОплаты
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| ДанныеДокументаШапка.Ссылка = &Ссылка
| И Таблица.КодСтроки <> 0
| И НЕ ДанныеДокументаШапка.УменьшитьОтгрузкуПоРаспоряжению
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| И ТИПЗНАЧЕНИЯ(Таблица.Распоряжение) = ТИП(Документ.ЗаказКлиента)
| И НЕ ВЫРАЗИТЬ(Таблица.Распоряжение КАК Документ.ЗаказКлиента).ЭтоЗаказКакСчет
| И ВЫРАЗИТЬ(Таблица.Распоряжение КАК
| Документ.ЗаказКлиента).ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)";
ВзаиморасчетыСервер.ПроведениеЗаказаКлиента(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат, ТекстПланыОтгрузок);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОплат(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОтгрузок(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОтгрузок);
КонецПроцедуры
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""ВидыЗапасов"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ТаблицаДокумента.Ссылка.Дата КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.Сумма КАК СуммаБезНДС,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.ВидыЗапасов КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Ссылка.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| )";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Процедура УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос)
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуУпр")
И Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
Возврат;
КонецЕсли;
Коэффициенты = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентыПересчетаВалюты(
Запрос.Параметры.Валюта,
Неопределено,
Запрос.Параметры.Период,
Запрос.Параметры.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпр", Коэффициенты.КоэффициентПересчетаВВалютуУпр);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_ТоварНаХраненииСПравомПродажи
Если НЕ Документ = Неопределено
И Документ.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.СписаниеОтгруженныхТоваров Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Автор КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.СписаниеОтгруженныхТоваров КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
КонецЕсли;
#КонецОбласти
#Область СписаниеНаРасходыАктивы_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВЫБОР
| КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| ТОГДА ТаблицаВидыЗапасов.ВидДеятельностиНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВидДеятельностиНДС,
| ВЫБОР
| КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| ТОГДА ТаблицаВидыЗапасов.ВидДеятельностиНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| ТаблицаДокумента.СтатьяРасходов КАК СтатьяРасходовАктивов,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаДокумента.СтатьяРасходов) = Тип(ПланВидовХарактеристик.СтатьиРасходов)
| ТОГДА ТаблицаДокумента.АналитикаРасходов
| ИНАЧЕ ТаблицаДокумента.АналитикаАктивовПассивов
| КОНЕЦ КАК АналитикаРасходовАктивов,
| ВЫБОР
| КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)
| ТОГДА ТаблицаВидыЗапасов.НаправлениеДеятельности
| ИНАЧЕ ТаблицаДокумента.НаправлениеДеятельности
| КОНЕЦ КАК КорНаправлениеДеятельности,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Автор КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.СписаниеОтгруженныхТоваров КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И (ТаблицаВидыЗапасов.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров))
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.СписаниеНаРасходыАктивы,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктСписанияТоваровУХранителя";
КомандаПечати.Представление = НСтр("ru = 'Акт о списании товаров у хранителя'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетПоклажедателя,
ВидСравнения.Равно);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктСписанияТоваровУКомиссионера";
КомандаПечати.Представление = НСтр("ru = 'Акт о списании товаров у комиссионера'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента,
ВидСравнения.Равно);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктСписанияТоваровУКлиента";
КомандаПечати.Представление = НСтр("ru = 'Акт о списании товаров у клиента'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.СписаниеОтгруженныхТоваров,
ВидСравнения.Равно);
СписаниеОтгруженныхТоваровЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСписанияТоваровУХранителя") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"АктСписанияТоваровУХранителя",
НСтр("ru = 'Акт о списании товаров'"),
СформироватьПечатнуюФормуАктСписанияТоваров(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСписанияТоваровУКомиссионера") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"АктСписанияТоваровУКомиссионера",
НСтр("ru = 'Акт о списании товаров'"),
СформироватьПечатнуюФормуАктСписанияТоваров(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСписанияТоваровУКлиента") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"АктСписанияТоваровУКлиента",
НСтр("ru = 'Акт о списании товаров'"),
СформироватьПечатнуюФормуАктСписанияТоваров(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки,
МассивОбъектов,
КоллекцияПечатныхФорм);
КонецПроцедуры
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуАктСписанияТоваров(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СписаниеТоваров.Ссылка КАК Ссылка,
| СписаниеТоваров.Номер КАК Номер,
| СписаниеТоваров.Дата КАК Дата,
| СписаниеТоваров.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| СписаниеТоваров.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| СписаниеТоваров.Контрагент КАК Контрагент,
| СписаниеТоваров.Организация КАК Организация,
| ЕСТЬNULL(Организации.Префикс, """") КАК Префикс,
| СписаниеТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| СписаниеТоваров.Подразделение КАК Подразделение,
| ПРЕДСТАВЛЕНИЕ(СписаниеТоваров.Подразделение) КАК ПодразделениеПредставление,
| ЕСТЬNULL(Пользователи.ФизическоеЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК Ответственный
|ИЗ
| Документ.СписаниеОтгруженныхТоваров КАК СписаниеТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО СписаниеТоваров.Организация = Организации.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
| ПО СписаниеТоваров.Ответственный = Пользователи.Ссылка
|ГДЕ
| СписаниеТоваров.Ссылка В(&МассивОбъектов)
| И СписаниеТоваров.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(СпрНоменклатура.Код, """") КАК Код,
| ЕСТЬNULL(СпрНоменклатура.Артикул, """") КАК Артикул,
| ЕСТЬNULL(СпрНоменклатура.НаименованиеПолное, """") КАК НоменклатураПредставление,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(Характеристики.НаименованиеПолное, """") КАК ХарактеристикаПредставление,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ПРЕДСТАВЛЕНИЕ(ТоварыДокумента.Серия) КАК СерияПредставление,
| ПРЕДСТАВЛЕНИЕ(СпрНоменклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставление,
| ТоварыДокумента.Количество КАК Количество
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК СписаниеТоваров
| ПО ТоварыДокумента.Ссылка = СписаниеТоваров.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО ТоварыДокумента.Номенклатура = СпрНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК Характеристики
| ПО ТоварыДокумента.Характеристика = Характеристики.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка В(&МассивОбъектов)
| И СписаниеТоваров.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|
|ИТОГИ ПО
| Ссылка";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатДанныеПечати = МассивРезультатов[0];
РезультатВыборкаПоДокументам = МассивРезультатов[1];
ДанныеПечати = РезультатДанныеПечати.Выбрать();
ВыборкаПоДокументам = РезультатВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписаниеОтгруженныхТоваров_АктОСписанииТоваров";
ПервыйДокумент = Истина;
ИспользоватьПодразделения = ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения");
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
Пока ДанныеПечати.Следующий() Цикл
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.СписаниеОтгруженныхТоваров.ПФ_MXL_АктОСписанииТоваров");
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Если ИспользоватьПодразделения Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Иначе
ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокБезПодразделения");
КонецЕсли;
ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация,
ДанныеПечати.Дата),
"ПолноеНаименование");
ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент,
ДанныеПечати.Дата),
"ПолноеНаименование");
Обработчик = Документы.СписаниеОтгруженныхТоваров.ОбработчикДействий(ДанныеПечати.ХозяйственнаяОперация);
СинонимДокумента = Обработчик.СинонимДокументаДляПечатнойФормыАктОСписанииТоваров();
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати,
СинонимДокумента));
СтруктураДанныхШапки.Вставить("Организация", ДанныеПечати.Организация);
СтруктураДанныхШапки.Вставить("ОрганизацияПредставление", ПредставлениеОрганизации);
СтруктураДанныхШапки.Вставить("Покупатель", ДанныеПечати.Контрагент);
СтруктураДанныхШапки.Вставить("ПокупательПредставление", ПредставлениеПокупателя);
Если ИспользоватьПодразделения Тогда
СтруктураДанныхШапки.Вставить("Подразделение", ДанныеПечати.Подразделение);
СтруктураДанныхШапки.Вставить("ПодразделениеПредставление", ДанныеПечати.ПодразделениеПредставление);
КонецЕсли;
ОбластьЗаголовок.Параметры.Заполнить(СтруктураДанныхШапки);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент,
Макет,
ОбластьЗаголовок,
ДанныеПечати.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ОбластьНомераШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодовШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьТоварШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ОбластьДанныеШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомераШапка);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
ОбластьКодовШапка.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовШапка);
Иначе
Макет.Область("Товар").ШиринаКолонки = Макет.Область("Товар").ШиринаКолонки
+ Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТоварШапка);
ТабличныйДокумент.Присоединить(ОбластьДанныеШапка);
ОбластьНомераСтрока = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодовСтрока = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьТоварСтрока = Макет.ПолучитьОбласть("Строка|Товар");
ОбластьДанныхСтрока = Макет.ПолучитьОбласть("Строка|Данные");
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать();
НомерСтроки = 0;
Пока ВыборкаПоТоварам.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", НомерСтроки);
ОбластьНомераСтрока.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
ТабличныйДокумент.Вывести(ОбластьНомераСтрока);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ДопКолонка", ВыборкаПоТоварам[ИмяКолонкиКодов]);
ОбластьКодовСтрока.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовСтрока);
КонецЕсли;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(ВыборкаПоТоварам.НоменклатураПредставление,
ВыборкаПоТоварам.ХарактеристикаПредставление,
Неопределено,
ВыборкаПоТоварам.СерияПредставление,
ДопПараметрыПредставлениеНоменклатуры);
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтрока.Параметры.Заполнить(СтруктураДанныхТовар);
ОбластьТоварСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьТоварСтрока);
ОбластьДанныхСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьДанныхСтрока);
КонецЦикла;
ОбластьНомераПодвал = Макет.ПолучитьОбласть("ПодвалТаблицы|НомерСтроки");
ОбластьКодовПодвал = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
ОбластьТоварПодвал = Макет.ПолучитьОбласть("ПодвалТаблицы|Товар");
ОбластьДанныхПодвал = Макет.ПолучитьОбласть("ПодвалТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомераПодвал);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодовПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТоварПодвал);
ТабличныйДокумент.Присоединить(ОбластьДанныхПодвал);
ОбластьКоличествоВсего = Макет.ПолучитьОбласть("КоличествоВсего");
ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований: %ВсегоНаименований%'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", ВыборкаПоТоварам.Количество());
СтруктураДанныхИтоговаяСтрока = Новый Структура("ИтоговаяСтрока", ТекстИтоговойСтроки);
ОбластьКоличествоВсего.Параметры.Заполнить(СтруктураДанныхИтоговаяСтрока);
ТабличныйДокумент.Вывести(ОбластьКоличествоВсего);
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
Если ЗначениеЗаполнено(ДанныеПечати.Ответственный) Тогда
СтруктураДанныхОтпускПроизвел = Новый Структура("Ответственный",
ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Ответственный,
ДанныеПечати.Дата));
ОбластьПодписи.Параметры.Заполнить(СтруктураДанныхОтпускПроизвел);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьПодписи);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область УнифицированныеМетодыПоХозяйственнымОперациям
#Область Проведение
Функция ПараметрыЗаполненияВидовЗапасов(Объект) Экспорт
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.ПодбиратьВТЧТоварыПринятыеНаОтветственноеХранение.Вставить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи, "ПоНастройкамДоговора");
ПараметрыЗаполнения.СторнируемыйДокумент = Объект.СторнируемыйДокумент;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область ХозяйственныеОперации
Функция ХозяйственнаяОперацияДоговора() Экспорт
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецФункции
Функция РеквизитыОперации() Экспорт
РеквизитыОперации = Новый Массив;
РеквизитыОперации.Добавить("ВидЦены");
РеквизитыОперации.Добавить("ИсточникИнформацииОЦенахДляПечати");
Возврат РеквизитыОперации;
КонецФункции
#КонецОбласти
#Область ФункциональныеОпции
Функция СоглашенияСКлиентамиПрименимы() Экспорт
Возврат Истина;
КонецФункции
Функция ИспользоватьСоглашенияСКлиентами() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
КонецФункции
#КонецОбласти
#Область Форма
Функция ПолучитьДоговорПоУмолчанию(Объект) Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности") Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(
Объект,
ХозяйственнаяОперацияДоговора(),
Неопределено,
Объект.НаправлениеДеятельности);
Иначе
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(
Объект,
ХозяйственнаяОперацияДоговора());
КонецЕсли;
Возврат Договор;
КонецФункции
Процедура УстановитьДоступностьДоговора(Форма, Объект, Договор = Неопределено) Экспорт
Элементы = Форма.Элементы;
ПродажиСервер.УстановитьДоступностьДоговора(
Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Договор);
КонецПроцедуры
Процедура НастроитьФорму(Форма, Номер, Дата) Экспорт
Элементы = Форма.Элементы;
Параметры = Форма.Параметры;
Форма.АвтоЗаголовок = Ложь;
Форма.Заголовок = ЗаголовокФормыДокумента(Не ЗначениеЗаполнено(Параметры.Ключ), Номер, Дата);
Элементы.Партнер.Заголовок = НСтр("ru = 'Клиент'");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами();
Элементы.ИсточникИнформацииОЦенахДляПечати.Видимость = Истина;
Элементы.ВалютаДокумента.Видимость = Ложь;
Элементы.УменьшитьОтгрузкуПоРаспоряжению.Видимость = Ложь;
Элементы.Склад.Видимость = Ложь;
Элементы.Склад.АвтоОтметкаНезаполненного = Ложь;
Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = Ложь;
Элементы.СтраницыРаспоряжение.Видимость = Ложь;
Элементы.ТоварыПодобратьТоварыПоЗаказам.Видимость = Ложь;
Элементы.ТоварыОтвязатьОтЗаказа.Видимость = Ложь;
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Видимость = Ложь;
ТекстЗаголовка = НСтр("ru = 'Подобрать переданные товары'");
КомандаФормы = Форма.Команды.Найти("ПодобратьПереданныеТовары");
КомандаФормы.Заголовок = ТекстЗаголовка;
КомандаФормы.Подсказка = ТекстЗаголовка;
КонецПроцедуры
Процедура НастроитьПараметрыВыбораЭлементов(Форма, Объект) Экспорт
Элементы = Форма.Элементы;
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("ЗаголовокПоПартнеру", НСтр("ru = 'По клиенту'")));
Элементы.Контрагент.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует));
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", ХозяйственнаяОперацияДоговора()));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.НеИзменять));
Элементы.Договор.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.КомиссионныеПродажи25", Ложь));
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Дата", "Объект.Дата", РежимИзмененияСвязанногоЗначения.НеИзменять));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
Элементы.Соглашение.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.УчетДоходов", Истина));
Элементы.НаправлениеДеятельности.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецПроцедуры
Функция ЗаголовокФормыДокумента(НовыйДокумент, Номер, Дата) Экспорт
Если НовыйДокумент Тогда
Заголовок = СтрШаблон(НСтр("ru = '%1 (создание)'"), ПредставлениеОбъекта());
Иначе
Заголовок = СтрШаблон(НСтр("ru = '%1 %2 от %3'"), ПредставлениеОбъекта(), Номер, Дата);
КонецЕсли;
Возврат Заголовок;
КонецФункции
Функция ПредставлениеОбъекта() Экспорт
Возврат НСтр("ru = 'Списание товаров, отгруженных хранителю'");
КонецФункции
#КонецОбласти
#Область ПечатныеФормы
Функция СинонимДокументаДляПечатнойФормыАктОСписанииТоваров() Экспорт
СинонимДокумента = НСтр("ru='Акт о списании товаров у хранителя'", ОбщегоНазначения.КодОсновногоЯзыка());
Возврат СинонимДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ОбщиеМетодыПоХозяйственнымОперациям
#Область ОбработчикиДействий
Функция ОбработчикДействий(ХозяйственнаяОперация = Неопределено) Экспорт
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента Тогда
ОбработчикДействий = СписаниеТоваровУКомиссионера;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеОтгруженныхТоваров Тогда
ОбработчикДействий = СписаниеТоваровОтгруженныхКлиенту;
Иначе
ОбработчикДействий = Документы.СписаниеОтгруженныхТоваров;
КонецЕсли;
Возврат ОбработчикДействий;
КонецФункции
#КонецОбласти
#Область Форма
Процедура НастроитьРеквизитХозяйственнаяОперация(Форма, Объект) Экспорт
Элементы = Форма.Элементы;
СписокВыбора = Элементы.ХозяйственнаяОперация.СписокВыбора;
СписокВыбора.Очистить();
Если ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
СписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетПоклажедателя);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах") Тогда
СписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.СписаниеНедостачЗаСчетКомитента);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5") Тогда
СписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.СписаниеОтгруженныхТоваров);
КонецЕсли;
Элементы.ХозяйственнаяОперация.Видимость = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() > 1;
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация)
И СписокВыбора.Количество() = 1 Тогда
Объект.ХозяйственнаяОперация = СписокВыбора[0].Значение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
#Область Документы_СписаниеОтгруженныхТоваров_ОбработатьДанныеДляПереходаНаНовуюВерсию
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "Документы.СписаниеОтгруженныхТоваров.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Версия = "11.5.23.24";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Некритичный;
Обработчик.Идентификатор = Новый УникальныйИдентификатор("37bce852-8ca1-440b-b8db-eead2c670d92");
Обработчик.Многопоточный = Истина;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.СписаниеОтгруженныхТоваров.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Списание отгруженных товаров"":'"));
СписокОписаний.Добавить(НСтр("ru = '- заполнение реквизита ""Статус указания серий, переданных товаров"" в табличной части ""Товары"".';"));
Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
Читаемые = Новый Массив;
Читаемые.Добавить(Метаданные.Документы.СписаниеОтгруженныхТоваров.ПолноеИмя());
Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
Изменяемые = Новый Массив;
Изменяемые.Добавить(Метаданные.Документы.СписаниеОтгруженныхТоваров.ПолноеИмя());
Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
Блокируемые = Новый Массив;
Блокируемые.Добавить(Метаданные.Документы.СписаниеОтгруженныхТоваров.ПолноеИмя());
Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
#КонецОбласти
КонецПроцедуры
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПараметрыВыборки = Параметры.ПараметрыВыборки;
ПараметрыВыборки.ПолныеИменаОбъектов = ПустаяСсылка().Метаданные().ПолноеИмя();
ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();
ПараметрыВыборки.ПоляУпорядочиванияПриРаботеПользователей.Добавить("Дата УБЫВ");
ПараметрыВыборки.ПоляУпорядочиванияПриОбработкеДанных.Добавить("Дата УБЫВ");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеквизитыШапки.Ссылка КАК Ссылка
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТоварыДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК РеквизитыШапки
| ПО ТоварыДокументы.Ссылка = РеквизитыШапки.Ссылка
|ГДЕ
| ТоварыДокументы.СтатусУказанияСерий > 0
| И ТоварыДокументы.СтатусУказанияСерий <> ТоварыДокументы.СтатусУказанияСерийПереданныхТоваров
| И НЕ РеквизитыШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОтгруженныхТоваров)";
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПолноеИмяОбъекта = ПустаяСсылка().Метаданные().ПолноеИмя();
ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ИсключенияПриОбновлении = Новый Массив;
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Не удалось обработать документы ""Списание отгруженных товаров"" по обработчику:'"));
СписокОписаний.Добавить(НСтр("ru = '- заполнение реквизита ""Статус указания серий, переданных товаров"" в табличной части ""Товары"".';"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыДокументы.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.СписаниеОтгруженныхТоваров.Товары КАК ТоварыДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеОтгруженныхТоваров КАК РеквизитыШапки
| ПО ТоварыДокументы.Ссылка = РеквизитыШапки.Ссылка
|
|ГДЕ
| ТоварыДокументы.Ссылка = &Ссылка
| И ТоварыДокументы.СтатусУказанияСерий > 0
| И ТоварыДокументы.СтатусУказанияСерий <> ТоварыДокументы.СтатусУказанияСерийПереданныхТоваров";
Для Каждого Документ Из ОбновляемыеДанные Цикл
ПричинаИсключения = 0;
Рекомендация = "";
НачатьТранзакцию();
Попытка
ПричинаИсключения = 1;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
ЭлементБлокировки.УстановитьЗначение("Ссылка", Документ.Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
ДокументОбъект = Документ.Ссылка.ПолучитьОбъект();
ПричинаИсключения = 2;
Рекомендация = НСтр("ru = 'Перепроведите документ вручную.'");
Если ДокументОбъект <> Неопределено Тогда
Если ДокументОбъект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.СписаниеОтгруженныхТоваров Тогда
Запрос.УстановитьПараметр("Ссылка", ДокументОбъект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТовары = ДокументОбъект.Товары[Выборка.НомерСтроки - 1];
СтрокаТовары.СтатусУказанияСерийПереданныхТоваров = СтрокаТовары.СтатусУказанияСерий;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПричинаИсключения = 3;
Если ДокументОбъект <> Неопределено
И ДокументОбъект.Модифицированность() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Документ.Ссылка);
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), Документ.Ссылка);
Если ПричинаИсключения = 2 Тогда
ОписаниеПроблемы = ОбновлениеИнформационнойБазыУТ.ПроблемаСДанными(
Документ.Ссылка, Рекомендация, ИнформацияОбОшибке());
ИсключенияПриОбновлении.Добавить(ОписаниеПроблемы);
ИначеЕсли ПричинаИсключения = 3 Тогда
ОбновлениеИнформационнойБазыУТ.ЗаписатьПлохиеДанные(
ИсключенияПриОбновлении, ОбъектовОбработано, Параметры);
ВызватьИсключение СтрСоединить(СписокОписаний, Символы.ПС);
КонецЕсли;
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
КонецПроцедуры
#КонецОбласти
Функция ТекстЗапросаОстаткиКОформлениюПоРаспоряжениям(ИмяВременнойТаблицы = "ВтДанныеУчета")
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаОбороты.Распоряжение КАК Распоряжение,
| ТаблицаОбороты.Номенклатура КАК Номенклатура,
| ТаблицаОбороты.Характеристика КАК Характеристика,
| ТаблицаОбороты.КодСтроки КАК КодСтроки,
| ТаблицаОбороты.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОприходованоДоППСКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОприходованоДоППССумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК СписаноДоППСКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК СписаноДоППССумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КПриемкеКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КПриемкеСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПринятоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПринятоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСумма
|ПОМЕСТИТЬ РаспоряженияНаОтгрузкуБезГруппировки
|ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат.Обороты(
| ,
| ,
| ,
| Распоряжение В (&Распоряжения)
| И Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
| И Показатель В (
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| )
| ) КАК ТаблицаОбороты
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Серия КАК Серия,
| 0 КАК ОтгруженоКоличество,
| 0 КАК ОтгруженоСумма,
| 0 КАК ОприходованоДоППСКоличество,
| 0 КАК ОприходованоДоППССумма,
| -Таблица.Количество КАК СписаноДоППСКоличество,
| -Таблица.Сумма КАК СписаноДоППССумма,
| 0 КАК КПриемкеКоличество,
| 0 КАК КПриемкеСумма,
| 0 КАК ПринятоКоличество,
| 0 КАК ПринятоСумма,
| 0 КАК ОформленоКоличество,
| 0 КАК ОформленоСумма
|ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат КАК Таблица
|ГДЕ
| Таблица.Активность
| И Таблица.Регистратор = &Регистратор
| И Таблица.Распоряжение В (&Распоряжения)
| И Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
| И Таблица.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС)
|;
|
|
|ВЫБРАТЬ
| РаспоряженияНаОтгрузкуБезГруппировки.Распоряжение КАК Распоряжение,
| РаспоряженияНаОтгрузкуБезГруппировки.Номенклатура КАК Номенклатура,
| РаспоряженияНаОтгрузкуБезГруппировки.Характеристика КАК Характеристика,
| РаспоряженияНаОтгрузкуБезГруппировки.КодСтроки КАК КодСтроки,
| РаспоряженияНаОтгрузкуБезГруппировки.Серия КАК Серия,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОтгруженоКоличество) КАК ОтгруженоКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОтгруженоСумма) КАК ОтгруженоСумма,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОприходованоДоППСКоличество) КАК ОприходованоДоППСКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОприходованоДоППССумма) КАК ОприходованоДоППССумма,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.СписаноДоППСКоличество) КАК СписаноДоППСКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.СписаноДоППССумма) КАК СписаноДоППССумма,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.КПриемкеКоличество) КАК КПриемкеКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.КПриемкеСумма) КАК КПриемкеСумма,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ПринятоКоличество) КАК ПринятоКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ПринятоСумма) КАК ПринятоСумма,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОформленоКоличество) КАК ОформленоКоличество,
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОформленоСумма) КАК ОформленоСумма
|ПОМЕСТИТЬ РаспоряженияНаОтгрузкуСгруппировано
|ИЗ
| РаспоряженияНаОтгрузкуБезГруппировки КАК РаспоряженияНаОтгрузкуБезГруппировки
|
|СГРУППИРОВАТЬ ПО
| РаспоряженияНаОтгрузкуБезГруппировки.Распоряжение,
| РаспоряженияНаОтгрузкуБезГруппировки.Номенклатура,
| РаспоряженияНаОтгрузкуБезГруппировки.Характеристика,
| РаспоряженияНаОтгрузкуБезГруппировки.КодСтроки,
| РаспоряженияНаОтгрузкуБезГруппировки.Серия
|
|ИМЕЮЩИЕ
| СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОтгруженоКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОтгруженоСумма) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОприходованоДоППСКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОприходованоДоППССумма) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.СписаноДоППСКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.СписаноДоППССумма) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.КПриемкеКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.КПриемкеСумма) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ПринятоКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ПринятоСумма) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОформленоКоличество) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуБезГруппировки.ОформленоСумма) <> 0
|;
|
|
|ВЫБРАТЬ
| РаспоряженияНаОтгрузкуСгруппировано.Распоряжение КАК Распоряжение,
| РаспоряженияНаОтгрузкуСгруппировано.Номенклатура КАК Номенклатура,
| РаспоряженияНаОтгрузкуСгруппировано.Характеристика КАК Характеристика,
| РаспоряженияНаОтгрузкуСгруппировано.КодСтроки КАК КодСтроки,
| МАКСИМУМ(РаспоряженияНаОтгрузкуСгруппировано.Серия) КАК Серия,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД,
| СУММА(РаспоряженияНаОтгрузкуСгруппировано.ОтгруженоКоличество
| + РаспоряженияНаОтгрузкуСгруппировано.ОприходованоДоППСКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.СписаноДоППСКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.ПринятоКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.ОформленоКоличество) КАК КОформлениюКоличество,
| СУММА(РаспоряженияНаОтгрузкуСгруппировано.ОтгруженоСумма
| + РаспоряженияНаОтгрузкуСгруппировано.ОприходованоДоППССумма
| - РаспоряженияНаОтгрузкуСгруппировано.СписаноДоППССумма
| - РаспоряженияНаОтгрузкуСгруппировано.ПринятоСумма
| - РаспоряженияНаОтгрузкуСгруппировано.ОформленоСумма) КАК КОформлениюСумма
|ПОМЕСТИТЬ ВтКОформлениюПоРаспоряжениям
|ИЗ
| РаспоряженияНаОтгрузкуСгруппировано КАК РаспоряженияНаОтгрузкуСгруппировано
|
|СГРУППИРОВАТЬ ПО
| РаспоряженияНаОтгрузкуСгруппировано.Распоряжение,
| РаспоряженияНаОтгрузкуСгруппировано.Номенклатура,
| РаспоряженияНаОтгрузкуСгруппировано.Характеристика,
| РаспоряженияНаОтгрузкуСгруппировано.КодСтроки
|
|ИМЕЮЩИЕ
| СУММА(РаспоряженияНаОтгрузкуСгруппировано.ОтгруженоКоличество
| + РаспоряженияНаОтгрузкуСгруппировано.ОприходованоДоППСКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.СписаноДоППСКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.ПринятоКоличество
| - РаспоряженияНаОтгрузкуСгруппировано.ОформленоКоличество) <> 0
|;
|
|
|УНИЧТОЖИТЬ РаспоряженияНаОтгрузкуБезГруппировки
|;
|
|
|УНИЧТОЖИТЬ РаспоряженияНаОтгрузкуСгруппировано
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИмяВременнойТаблицы", ИмяВременнойТаблицы);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиКОформлениюПоГТД(ИмяВременнойТаблицыКОформлениюПоРаспоряжениям,
ИмяВременнойТаблицы = "ВтДанныеУчета")
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Таблица.Ссылка КАК Документ
|ПОМЕСТИТЬ ДокументыПродажи
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту.Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО Таблица.Ссылка = РеестрДокументов.СторнируемыйДокумент
| И РеестрДокументов.Проведен
| И НЕ РеестрДокументов.ДополнительнаяЗапись
|ГДЕ
| Таблица.ЗаказКлиента В(&Распоряжения)
| И Таблица.Ссылка.Проведен
| И РеестрДокументов.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Документ
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту КАК Таблица
|ГДЕ
| Таблица.Ссылка В(&Распоряжения)
| И Таблица.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Документ
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту КАК Таблица
|ГДЕ
| Таблица.ИсправляемыйДокумент В(&Распоряжения)
| И Таблица.Ссылка.Исправление
| И Таблица.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Ссылка КАК Документ
|ИЗ
| Документ.ОприходованиеИзлишковОтгруженныхТоваров.Товары КАК Таблица
|ГДЕ
| Таблица.Распоряжение В(&Распоряжения)
| И Таблица.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Ссылка КАК Документ
|ИЗ
| Документ.ВводОстатковТоваров.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка.Партия В(&Распоряжения)
| И Таблица.Ссылка.Проведен
|;
|
|
|ВЫБРАТЬ
| ВидыЗапасов.АналитикаУчетаНоменклатурыОтгрузки КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.НомерГТД КАК НомерГТД,
| ВидыЗапасов.Количество КАК КоличествоИзДокумента,
| ВЫБОР
| КОГДА Товары.ЗаказКлиента В (
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО
| )
| И Товары.Ссылка.Исправление
| ТОГДА Товары.Ссылка.ИсправляемыйДокумент
| КОГДА Товары.ЗаказКлиента В (
| ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО
| )
| ТОГДА Товары.Ссылка
| КОГДА Товары.ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента
| И ВЫРАЗИТЬ(Товары.ЗаказКлиента КАК Документ.ЗаказКлиента).ЭтоЗаказКакСчет
| ТОГДА Товары.Ссылка
| КОГДА Товары.ЗаказКлиента ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| И ВЫРАЗИТЬ(Товары.ЗаказКлиента КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ЭтоЗаказКакСчет
| ТОГДА Товары.Ссылка
| ИНАЧЕ
| Товары.ЗаказКлиента
| КОНЕЦ КАК Распоряжение,
| Товары.КодСтроки КАК КодСтроки
|ПОМЕСТИТЬ АналитикиУчетаНоменклатурыСНомерамиГТДБезГруппировки
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту.ВидыЗапасов КАК ВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПродажи КАК ДокументыПродажи
| ПО ВидыЗапасов.Ссылка = ДокументыПродажи.Документ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.Товары КАК Товары
| ПО ВидыЗапасов.Ссылка = Товары.Ссылка
| И ВидыЗапасов.АналитикаУчетаНоменклатуры = Товары.АналитикаУчетаНоменклатуры
| И ВидыЗапасов.ЗаказКлиента = Товары.ЗаказКлиента
| И ВидыЗапасов.КодСтроки = Товары.КодСтроки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Товары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Товары.НомерГТД КАК НомерГТД,
| Товары.Количество КАК КоличествоИзДокумента,
| Товары.Распоряжение КАК Распоряжение,
| 0 КАК КодСтроки
|ИЗ
| Документ.ОприходованиеИзлишковОтгруженныхТоваров.Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПродажи КАК ДокументыПродажи
| ПО Товары.Ссылка = ДокументыПродажи.Документ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Товары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Товары.НомерГТД КАК НомерГТД,
| Товары.Количество КАК КоличествоИзДокумента,
| Товары.Ссылка.Партия КАК Распоряжение,
| Товары.КодСтроки КАК КодСтроки
|ИЗ
| Документ.ВводОстатковТоваров.Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПродажи КАК ДокументыПродажи
| ПО Товары.Ссылка = ДокументыПродажи.Документ
|;
|
|
|ВЫБРАТЬ
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД КАК НомерГТД,
| СУММА(Таблица.КоличествоИзДокумента) КАК КоличествоИзДокумента,
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.КодСтроки КАК КодСтроки
|ПОМЕСТИТЬ АналитикиУчетаНоменклатурыСНомерамиГТД
|ИЗ
| АналитикиУчетаНоменклатурыСНомерамиГТДБезГруппировки КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД,
| Таблица.Распоряжение,
| Таблица.КодСтроки
|;
|
|
|ВЫБРАТЬ
| Набор.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Набор.НомерГТД КАК НомерГТД,
| СУММА(Набор.Количество) КАК ОстатокПоГТД
|ПОМЕСТИТЬ ВтОстаткиПоГТД
|ИЗ
| (ВЫБРАТЬ
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(, (АналитикаУчетаНоменклатуры, НомерГТД) В (
| ВЫБРАТЬ
| АналитикаУчетаНоменклатуры,
| НомерГТД
| ИЗ
| АналитикиУчетаНоменклатурыСНомерамиГТД
| )
| ) КАК Таблица
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.Количество КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК Таблица
| ГДЕ
| Таблица.Активность
| И Таблица.Регистратор В(&Регистратор)
| И Таблица.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.АналитикаУчетаНоменклатуры,
| Набор.НомерГТД
|
|ИМЕЮЩИЕ
| СУММА(Набор.Количество) > 0
|;
|
|
|ВЫБРАТЬ
| АналитикиУчетаНоменклатурыСНомерамиГТД.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| АналитикиУчетаНоменклатурыСНомерамиГТД.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| АналитикиУчетаНоменклатурыСНомерамиГТД.НомерГТД КАК НомерГТД,
| АналитикиУчетаНоменклатурыСНомерамиГТД.КоличествоИзДокумента КАК КоличествоИзДокумента,
| АналитикиУчетаНоменклатурыСНомерамиГТД.Распоряжение КАК Распоряжение,
| АналитикиУчетаНоменклатурыСНомерамиГТД.КодСтроки КАК КодСтроки,
| СУММА(ВЫБОР
| КОГДА АналитикиУчетаНоменклатурыСНомерамиГТД.КоличествоИзДокумента < ВтОстаткиПоГТД.ОстатокПоГТД
| ТОГДА АналитикиУчетаНоменклатурыСНомерамиГТД.КоличествоИзДокумента
| ИНАЧЕ
| ВтОстаткиПоГТД.ОстатокПоГТД
| КОНЕЦ) КАК ОстатокПоГТД
|ПОМЕСТИТЬ ВтОстаткиПоГТДСРаспоряжениями
|ИЗ
| АналитикиУчетаНоменклатурыСНомерамиГТД КАК АналитикиУчетаНоменклатурыСНомерамиГТД
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтОстаткиПоГТД КАК ВтОстаткиПоГТД
| ПО АналитикиУчетаНоменклатурыСНомерамиГТД.АналитикаУчетаНоменклатуры = ВтОстаткиПоГТД.АналитикаУчетаНоменклатуры
| И АналитикиУчетаНоменклатурыСНомерамиГТД.НомерГТД = ВтОстаткиПоГТД.НомерГТД
|
|СГРУППИРОВАТЬ ПО
| АналитикиУчетаНоменклатурыСНомерамиГТД.АналитикаУчетаНоменклатуры.Номенклатура,
| АналитикиУчетаНоменклатурыСНомерамиГТД.АналитикаУчетаНоменклатуры.Характеристика,
| АналитикиУчетаНоменклатурыСНомерамиГТД.НомерГТД,
| АналитикиУчетаНоменклатурыСНомерамиГТД.КоличествоИзДокумента,
| АналитикиУчетаНоменклатурыСНомерамиГТД.Распоряжение,
| АналитикиУчетаНоменклатурыСНомерамиГТД.КодСтроки
|;
|
|
|ВЫБРАТЬ
| ВтКОформлениюПоРаспоряжениям.Распоряжение КАК Распоряжение,
| ВтКОформлениюПоРаспоряжениям.Номенклатура КАК Номенклатура,
| ВтКОформлениюПоРаспоряжениям.Характеристика КАК Характеристика,
| ВтКОформлениюПоРаспоряжениям.КодСтроки КАК КодСтроки,
| ВтКОформлениюПоРаспоряжениям.Серия КАК Серия,
| ЕСТЬNULL(ВтОстаткиПоГТДСРаспоряжениями.НомерГТД, ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)) КАК НомерГТД,
| ЕСТЬNULL(ВтОстаткиПоГТДСРаспоряжениями.ОстатокПоГТД, 0) КАК ОстатокПоГТД,
| ВтКОформлениюПоРаспоряжениям.КОформлениюКоличество КАК КОформлениюКоличество,
| ВтКОформлениюПоРаспоряжениям.КОформлениюСумма КАК КОформлениюСумма
|ПОМЕСТИТЬ Результат
|ИЗ
| #ИмяВременнойТаблицыКОформлениюПоРаспоряжениям КАК ВтКОформлениюПоРаспоряжениям
| ЛЕВОЕ СОЕДИНЕНИЕ ВтОстаткиПоГТДСРаспоряжениями КАК ВтОстаткиПоГТДСРаспоряжениями
| ПО ВтКОформлениюПоРаспоряжениям.Номенклатура = ВтОстаткиПоГТДСРаспоряжениями.Номенклатура
| И ВтКОформлениюПоРаспоряжениям.Характеристика = ВтОстаткиПоГТДСРаспоряжениями.Характеристика
| И ВтКОформлениюПоРаспоряжениям.Распоряжение = ВтОстаткиПоГТДСРаспоряжениями.Распоряжение
| И ВтКОформлениюПоРаспоряжениям.КодСтроки = ВтОстаткиПоГТДСРаспоряжениями.КодСтроки
|;
|
|
|ВЫБРАТЬ
| АВТОНОМЕРЗАПИСИ() КАК НомерСтроки,
| Результат.Распоряжение КАК Распоряжение,
| Результат.Номенклатура КАК Номенклатура,
| Результат.Характеристика КАК Характеристика,
| Результат.КодСтроки КАК КодСтроки,
| Результат.Серия КАК Серия,
| Результат.НомерГТД КАК НомерГТД,
| Результат.ОстатокПоГТД КАК ОстатокПоГТД,
| Результат.КОформлениюКоличество КАК КОформлениюКоличество,
| Результат.КОформлениюСумма КАК КОформлениюСумма
|ПОМЕСТИТЬ РезультатСНумерацией
|ИЗ
| Результат
|
|ИНДЕКСИРОВАТЬ ПО
| НомерСтроки,
| Распоряжение,
| Номенклатура,
| Характеристика,
| КодСтроки,
| Серия,
| НомерГТД
|;
|
|
|ВЫБРАТЬ
| ТаблицаБаза.Распоряжение КАК Распоряжение,
| ТаблицаБаза.Номенклатура КАК Номенклатура,
| ТаблицаБаза.Характеристика КАК Характеристика,
| ТаблицаБаза.КодСтроки КАК КодСтроки,
| ТаблицаБаза.Серия КАК Серия,
| ТаблицаБаза.НомерГТД КАК НомерГТД,
| ВЫБОР
| КОГДА ТаблицаБаза.КОформлениюКоличество >= СУММА(ТаблицаРаспределение.ОстатокПоГТД)
| ТОГДА ТаблицаБаза.ОстатокПоГТД
| КОГДА ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество) < 0
| ТОГДА 0
| ИНАЧЕ
| ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество)
| КОНЕЦ КАК КОформлениюКоличество,
| ВЫБОР
| КОГДА ТаблицаБаза.КОформлениюКоличество >= СУММА(ТаблицаРаспределение.ОстатокПоГТД)
| ТОГДА ТаблицаБаза.ОстатокПоГТД
| КОГДА ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество) < 0
| ТОГДА 0
| ИНАЧЕ
| ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество)
| КОНЕЦ * ТаблицаБаза.КОформлениюСумма / ТаблицаБаза.КОформлениюКоличество КАК КОформлениюСумма
|ПОМЕСТИТЬ #ИмяВременнойТаблицы
|ИЗ
| РезультатСНумерацией КАК ТаблицаБаза
| ЛЕВОЕ СОЕДИНЕНИЕ РезультатСНумерацией КАК ТаблицаРаспределение
| ПО ТаблицаБаза.НомерСтроки >= ТаблицаРаспределение.НомерСтроки
| И ТаблицаБаза.Распоряжение = ТаблицаРаспределение.Распоряжение
| И ТаблицаБаза.Номенклатура = ТаблицаРаспределение.Номенклатура
| И ТаблицаБаза.Характеристика = ТаблицаРаспределение.Характеристика
| И ТаблицаБаза.Серия = ТаблицаРаспределение.Серия
| И ТаблицаБаза.КодСтроки = ТаблицаРаспределение.КодСтроки
|
|СГРУППИРОВАТЬ ПО
| ТаблицаБаза.НомерСтроки,
| ТаблицаБаза.Распоряжение,
| ТаблицаБаза.Номенклатура,
| ТаблицаБаза.Характеристика,
| ТаблицаБаза.КодСтроки,
| ТаблицаБаза.Серия,
| ТаблицаБаза.НомерГТД,
| ТаблицаБаза.ОстатокПоГТД,
| ТаблицаБаза.КОформлениюКоличество,
| ТаблицаБаза.КОформлениюСумма
|
|ИМЕЮЩИЕ
| ВЫБОР
| КОГДА ТаблицаБаза.КОформлениюКоличество >= СУММА(ТаблицаРаспределение.ОстатокПоГТД)
| ТОГДА ТаблицаБаза.ОстатокПоГТД
| КОГДА ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество) < 0
| ТОГДА 0
| ИНАЧЕ
| ТаблицаБаза.ОстатокПоГТД - (СУММА(ТаблицаРаспределение.ОстатокПоГТД) - ТаблицаБаза.КОформлениюКоличество)
| КОНЕЦ <> 0
|";
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"#ИмяВременнойТаблицыКОформлениюПоРаспоряжениям",
ИмяВременнойТаблицыКОформлениюПоРаспоряжениям);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИмяВременнойТаблицы", ИмяВременнойТаблицы);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецЕсли