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