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