#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПолучитьСуммуЗаменяющихСтрок(ТолькоЗалогЗаТару = Ложь) Экспорт
СуммаЗаменяющихСтрок = 0;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Отменено КАК Отменено
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
| И ((Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ (НЕ &ВернутьМногооборотнуюТару) ИЛИ &ТребуетсяЗалогЗаТару)
| И НЕ &ТолькоЗалогЗаТару)
| ИЛИ (Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| И &ТребуетсяЗалогЗаТару
| И &ТолькоЗалогЗаТару)
|");
Запрос.УстановитьПараметр("Товары", ЗаменяющиеТовары.Выгрузить(,"Номенклатура,СуммаСНДС,Отменено"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Запрос.УстановитьПараметр("ТолькоЗалогЗаТару", ТолькоЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаЗаменяющихСтрок = Выгрузка[0].СуммаСНДС;
Возврат СуммаЗаменяющихСтрок;
КонецФункции
Функция ПолучитьКоличествоЗаказанныхСтрок() Экспорт
НайденныеСтроки = ЗаменяющиеТовары.НайтиСтроки(Новый Структура("Отменено", Ложь));
Возврат НайденныеСтроки.Количество();
КонецФункции
Процедура ЗаполнитьУсловияПродаж(Знач УсловияПродаж, Знач ЗаполнятьРеквизитыОснования = Истина) Экспорт
Если УсловияПродаж = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗаполнятьРеквизитыОснования Тогда
Если ЗначениеЗаполнено(УсловияПродаж.Валюта) Тогда
Валюта = УсловияПродаж.Валюта;
КонецЕсли;
ЦенаВключаетНДС = УсловияПродаж.ЦенаВключаетНДС;
ОплатаВВалюте = УсловияПродаж.ОплатаВВалюте;
Если ЗначениеЗаполнено(УсловияПродаж.Склад) Тогда
Склад = УсловияПродаж.Склад;
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ХозяйственнаяОперация = ПродажиСервер.ПолучитьХозяйственнуюОперациюВозвратаПоРеализации(УсловияПродаж.ХозяйственнаяОперация);
ВернутьМногооборотнуюТару = УсловияПродаж.ВозвращатьМногооборотнуюТару;
СрокВозвратаМногооборотнойТары = УсловияПродаж.СрокВозвратаМногооборотнойТары;
ТребуетсяЗалогЗаТару = УсловияПродаж.ТребуетсяЗалогЗаТару;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж");
ТолькоКомиссионныеПродажи25 = ИспользоватьДоговорыСКлиентами
И (ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25")
ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж);
КомиссионныеПродажи25 = Ложь;
Если ТолькоКомиссионныеПродажи25 Тогда
КомиссионныеПродажи25 = Истина;
ИначеЕсли ЗначениеЗаполнено(Соглашение) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "КомиссионныеПродажи25");
ИначеЕсли ЗначениеЗаполнено(Договор) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "КомиссионныеПродажи25");
КонецЕсли;
Если КомиссионныеПродажи25 Тогда
ВернутьМногооборотнуюТару = Ложь;
СрокВозвратаМногооборотнойТары = 0;
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
ВернутьМногооборотнуюТару = Ложь;
СрокВозвратаМногооборотнойТары = 0;
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.ГрафикОплаты) Тогда
ГрафикОплаты = УсловияПродаж.ГрафикОплаты;
КонецЕсли;
ИзмененаОрганизация = ЗначениеЗаполнено(УсловияПродаж.Организация) И УсловияПродаж.Организация <> Организация;
ИзмененаФормаОплаты = ЗначениеЗаполнено(УсловияПродаж.ФормаОплаты) И УсловияПродаж.ФормаОплаты <> ФормаОплаты;
ФормаОплаты = УсловияПродаж.ФормаОплаты;
Если ИзмененаОрганизация Тогда
Организация = УсловияПродаж.Организация;
КонецЕсли;
НаправлениеДеятельности = УсловияПродаж.НаправлениеДеятельности;
Если ИзмененаОрганизация Или ИзмененаФормаОплаты Тогда
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
СтруктураПараметров.ФормаОплаты = ФормаОплаты;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
Если Не УсловияПродаж.Типовое Тогда
Если ЗначениеЗаполнено(УсловияПродаж.Контрагент) Тогда
Контрагент = УсловияПродаж.Контрагент;
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Если Не УсловияПродаж.Типовое Тогда
Если ЗначениеЗаполнено(УсловияПродаж.КонтактноеЛицо)
И НЕ ЗначениеЗаполнено(КонтактноеЛицо) Тогда
КонтактноеЛицо = УсловияПродаж.КонтактноеЛицо;
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер, КонтактноеЛицо);
ХозяйственнаяОперацияДоговора = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияДоговора(ХозяйственнаяОперация);
Если УсловияПродаж.ИспользуютсяДоговорыКонтрагентов <> Неопределено И УсловияПродаж.ИспользуютсяДоговорыКонтрагентов Тогда
Если ЗначениеЗаполнено(ХозяйственнаяОперацияДоговора) Тогда
КомиссионныеПродажи25 = Неопределено;
Если ЗначениеЗаполнено(Соглашение)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение,"ХозяйственнаяОперация") = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение,"КомиссионныеПродажи25");
ИначеЕсли ХозяйственнаяОперацияДоговора = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
КомиссионныеПродажи25 = Не ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
КонецЕсли;
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект,
ХозяйственнаяОперацияДоговора,
Валюта,
,
КомиссионныеПродажи25);
КонецЕсли;
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчет, БанковскийСчетКонтрагента);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(НаправлениеДеятельности, Соглашение, Договор);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(УсловияПродаж.ИспользуютсяДоговорыКонтрагентов)
ИЛИ НЕ УсловияПродаж.ИспользуютсяДоговорыКонтрагентов Тогда
ОплатаВВалюте = УсловияПродаж.ОплатаВВалюте;
Иначе
ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ОплатаВВалюте");
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.ГруппаФинансовогоУчета) Тогда
ГруппаФинансовогоУчета = УсловияПродаж.ГруппаФинансовогоУчета;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.СрокПоставки) И Не ЭтоЗаказКакСчет Тогда
ДатаОтгрузкиВСтроке = Дата(1,1,1);
ДатаНачала = ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДатаСеанса());
ДатаОтгрузкиВСтроке = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(ДатаНачала, Перечисления.Периодичность.День, УсловияПродаж.СрокПоставки) + 1;
Если НеОтгружатьЧастями Тогда
ДатаОтгрузки = ДатаОтгрузкиВСтроке;
КонецЕсли;
Для Каждого СтрокаТЧ Из ЗаменяющиеТовары Цикл
СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузкиВСтроке;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьУсловияПродажПоУмолчанию(ПересчитатьЦены = Истина) Экспорт
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
Если ЗначениеЗаполнено(Партнер) ИЛИ НЕ ИспользоватьСоглашенияСКлиентами Тогда
УсловияПродажПоУмолчанию = ПродажиСервер.ПолучитьУсловияПродажПоУмолчанию(
Партнер,
Новый Структура("ВыбранноеСоглашение, ПустаяСсылкаДокумента, ХозяйственныеОперации",
Соглашение,
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка(),
ПродажиСервер.ПолучитьХозяйственнуюОперациюСоглашенияПоВозврату(ХозяйственнаяОперация)));
Если УсловияПродажПоУмолчанию <> Неопределено Тогда
Если НЕ ИспользоватьСоглашенияСКлиентами ИЛИ
(Соглашение <> УсловияПродажПоУмолчанию.Соглашение И ЗначениеЗаполнено(УсловияПродажПоУмолчанию.Соглашение)) Тогда
Соглашение = УсловияПродажПоУмолчанию.Соглашение;
ЗаполнитьУсловияПродаж(УсловияПродажПоУмолчанию);
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
Если ИспользоватьСоглашенияСКлиентами И ПересчитатьЦены Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Организация", Организация);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
ВозвращаемыеТовары,
,
ПараметрыЗаполнения,
СтруктураДействий);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Организация", Организация);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены, СрокПоставки");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
ЗаменяющиеТовары,
,
ПараметрыЗаполнения,
СтруктураДействий);
КонецЕсли;
Иначе
Соглашение = УсловияПродажПоУмолчанию.Соглашение;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
КонецЕсли;
Иначе
Соглашение = Неопределено;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
КонецЕсли;
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
КонецЕсли;
Если Не ИспользоватьСоглашенияСКлиентами Тогда
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер, КонтактноеЛицо);
АдресДоставки = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Партнер);
КонецПроцедуры
Процедура ЗаполнитьУсловияПродажПоСоглашению(ЗаполнитьЗаменяющиеЦены = Истина) Экспорт
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Соглашение);
ЗаполнитьУсловияПродаж(УсловияПродаж);
УчетныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
Если УсловияПродаж.НоваяСхемаКомиссии Тогда
УчетныйВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВидЦенУчетный");
КонецЕсли;
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Организация", Организация);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
Если УсловияПродаж.НоваяСхемаКомиссии Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", УчетныйВидЦены);
КонецЕсли;
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
ДатаРеализации = ?(ЗначениеЗаполнено(ДокументРеализации), ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументРеализации, "Дата"), Дата);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаРеализации;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
ВозвращаемыеТовары,
,
ПараметрыЗаполнения,
СтруктураДействий);
Если ЗаполнитьЗаменяющиеЦены Тогда
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Организация", Организация);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
Если УсловияПродаж.НоваяСхемаКомиссии Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", УчетныйВидЦены);
КонецЕсли;
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены, СрокПоставки");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
ЗаменяющиеТовары,
,
ПараметрыЗаполнения,
СтруктураДействий);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.НаправлениеДеятельности = УсловияПродаж.НаправлениеДеятельности;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
КонецПроцедуры
Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов[НовыйСтатус];
Если ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована
Или ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена Тогда
Если Согласован Тогда
Согласован = Ложь;
КонецЕсли;
ИначеЕсли ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату
Или ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению
Или ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке
Или ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена Тогда
Если ВозвращаемыеТовары.Количество() > 0 Тогда
Если ЗакупкиВызовСервера.ДатаПоступленияПустая(ЭтотОбъект, "ВозвращаемыеТовары") Тогда
Если ЗначениеЗаполнено(ЖелаемаяДатаПоступления) И ЖелаемаяДатаПоступления >= Дата Тогда
ДатаПоступления = ЖелаемаяДатаПоступления;
Иначе
ДатаПоступления = ТекущаяДатаСеанса();
КонецЕсли;
КонецЕсли;
Для Каждого СтрокаТЧ Из ВозвращаемыеТовары Цикл
Если ПоступлениеОднойДатой Или Не ЗначениеЗаполнено(СтрокаТЧ.ДатаПоступления) Тогда
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ДополнительныеПараметры <> Неопределено Тогда
ЗаказИзменен = ЗаказыСервер.СкорректироватьСтрокиЗаказа(ЭтотОбъект, ДополнительныеПараметры);
КонецЕсли;
Статус = ЗначениеНовогоСтатуса;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаявкаНаВозвратТоваровОтКлиента);
ЭтоЗаказСоСклада = Не ЭтоЗаказКакСчет
И Не ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента");
Если ЭтоЗаказСоСклада Тогда
СтруктураДействий = Новый Структура();
ПараметрыДокумента = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект);
ПоляСтрокой = "ВариантОбеспечения";
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ЗаменяющиеТовары, СтруктураДействий, Неопределено);
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий.Заменяющие);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий.Возвращаемые);
Возврат ПроверитьЗаполнение();
КонецФункции
Функция СкорректироватьСтрокиЗаказа(СтруктураПараметров) Экспорт
КоличествоОтмененныхСтрок = 0;
СтруктураВозврата = Новый Структура("КоличествоСтрок",0);
ПроверятьОстатки = СтруктураПараметров.ПроверятьОстатки;
ОтменитьНеотработанныеСтроки = СтруктураПараметров.ОтменитьНеотработанныеСтроки;
СкорректироватьМерныеТовары = СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке;
ТаблицаТовары = ЭтотОбъект[СтруктураПараметров.ИмяТабличнойЧасти];
ВозвратПоПоступлению = ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
СвойстваОтмененнойСтроки = Новый Структура(
"Отменено",
Истина);
Если Не ПроверятьОстатки Тогда
Для Сч = 0 По ТаблицаТовары.Количество() - 1 Цикл
Если Не ТаблицаТовары[Сч].Отменено Тогда
ЗаполнитьЗначенияСвойств(ТаблицаТовары[Сч], СвойстваОтмененнойСтроки);
КоличествоОтмененныхСтрок = КоличествоОтмененныхСтрок + 1;
КонецЕсли;
КонецЦикла;
СтруктураВозврата.КоличествоСтрок = КоличествоОтмененныхСтрок;
Возврат СтруктураВозврата;
КонецЕсли;
Запрос = Новый Запрос;
Если ВозвратПоПоступлению Тогда
Запрос.Текст = ТекстЗапросаПоТоварамКПоступлению();
Иначе
Запрос.Текст = ТекстЗапросаПоЗаявкамНаВозвратТоваровОтКлиентов();
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТаблицаТовары.Упаковка",
"ТаблицаТовары.Номенклатура"));
Запрос.УстановитьПараметр("ТаблицаТовары",
ВозвращаемыеТовары.Выгрузить(,
"НомерСтроки, КодСтроки, Склад, Номенклатура, Характеристика, Упаковка,
|Порча, НоменклатураОприходование, ХарактеристикаОприходование,
|Количество, СуммаСНДС, Отменено, Серия"));
Запрос.УстановитьПараметр("ЗаявкаНаВозвратТоваровОтКлиента", Ссылка);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить() / 100);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра(
"РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение = &ЗаявкаНаВозвратТоваровОтКлиента",
Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
Если Результат[4].Пустой() И Результат[5].Пустой() Тогда
Возврат СтруктураВозврата;
КонецЕсли;
ДопустимыеОтклонения = Результат[1].Выгрузить();
Выборка = Результат[4].Выбрать();
ВыборкаОтменыБезПроверок = Результат[5].Выбрать();
Пока ВыборкаОтменыБезПроверок.Следующий() Цикл
Строка = ТаблицаТовары[ВыборкаОтменыБезПроверок.НомерСтроки-1];
ЗаполнитьЗначенияСвойств(Строка, СвойстваОтмененнойСтроки);
КоличествоОтмененныхСтрок = КоличествоОтмененныхСтрок + 1;
Продолжить;
КонецЦикла;
ПараметрыПоискаПоНоменклатуре = Новый Структура;
ПараметрыПоискаПоНоменклатуреОприходования = Новый Структура;
Пока Выборка.Следующий() Цикл
ПараметрыПоискаПоНоменклатуре = Новый Структура;
ПараметрыПоискаПоНоменклатуре.Вставить("Номенклатура", Выборка.Номенклатура);
ПараметрыПоискаПоНоменклатуре.Вставить("Характеристика", Выборка.Характеристика);
ПараметрыПоискаПоНоменклатуре.Вставить("Склад", Выборка.Склад);
Если ВозвратПоПоступлению Тогда
ПараметрыПоискаПоНоменклатуре.Вставить("Серия", Выборка.Серия);
КонецЕсли;
ПараметрыПоискаПоНоменклатуре.Вставить("Отменено", Ложь);
ПараметрыПоискаПоНоменклатуре.Вставить("Порча", Ложь);
СтрокиЗаказа = ТаблицаТовары.НайтиСтроки(ПараметрыПоискаПоНоменклатуре);
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("НоменклатураОприходование", Выборка.Номенклатура);
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("ХарактеристикаОприходование", Выборка.Характеристика);
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("Склад", Выборка.Склад);
Если ВозвратПоПоступлению Тогда
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("Серия", Выборка.Серия);
КонецЕсли;
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("Отменено", Ложь);
ПараметрыПоискаПоНоменклатуреОприходования.Вставить("Порча", Истина);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СтрокиЗаказа, ТаблицаТовары.НайтиСтроки(ПараметрыПоискаПоНоменклатуреОприходования));
Отклонение = Выборка.КОформлениюОстаток;
Для Сч = 0 По СтрокиЗаказа.Количество()-1 Цикл
Строка = СтрокиЗаказа[сч];
Если Отклонение = 0 Тогда
Прервать;
КонецЕсли;
СтруктураПоискаОтклонений = Новый Структура;
СтруктураПоискаОтклонений.Вставить("Номенклатура", Строка.Номенклатура);
СтруктураПоискаОтклонений.Вставить("Характеристика", Строка.Характеристика);
СтруктураПоискаОтклонений.Вставить("Склад", Строка.Склад);
Если ВозвратПоПоступлению Тогда
СтруктураПоискаОтклонений.Вставить("Серия", Строка.Серия);
КонецЕсли;
СтрокиДопустимыхОтклонений = ДопустимыеОтклонения.НайтиСтроки(СтруктураПоискаОтклонений);
Если СтрокиДопустимыхОтклонений.Количество() > 0
И СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение > 0 Тогда
ДопустимноеОтклонение = СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение;
Иначе
ДопустимноеОтклонение = 0;
КонецЕсли;
КоэффициентУпаковки = Строка.Количество / Строка.КоличествоУпаковок;
Если Отклонение > 0
И (ОтменитьНеотработанныеСтроки ИЛИ (СкорректироватьМерныеТовары И ДопустимноеОтклонение >= Отклонение)) Тогда
Если Строка.Количество <= Отклонение Тогда
ЗаполнитьЗначенияСвойств(Строка, СвойстваОтмененнойСтроки);
Отклонение = Отклонение - Строка.Количество;
Иначе
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СвойстваОтмененнойСтроки);
НоваяСтрока.КодСтроки = 0;
Строка.Количество = Выборка.Количество - Выборка.КОформлениюОстаток;
Строка.КоличествоУпаковок = (Выборка.Количество - Выборка.КОформлениюОстаток) / КоэффициентУпаковки;
НоваяСтрока.Количество = Выборка.КОформлениюОстаток;
НоваяСтрока.КоличествоУпаковок = Выборка.КОформлениюОстаток / КоэффициентУпаковки;
Ценообразование.ПересчитатьСуммыВСтроке(Строка, Ложь, Ложь, Ложь, ЦенаВключаетНДС);
Ценообразование.ПересчитатьСуммыВСтроке(НоваяСтрока, Ложь, Ложь, Ложь, ЦенаВключаетНДС);
Отклонение = Отклонение - НоваяСтрока.Количество;
КонецЕсли;
ИначеЕсли Отклонение < 0 И (СкорректироватьМерныеТовары И ДопустимноеОтклонение >= Отклонение * (-1)) Тогда
Строка.Количество = Строка.Количество + Отклонение * (-1);
Строка.КоличествоУпаковок = Строка.Количество / КоэффициентУпаковки;;
Ценообразование.ПересчитатьСуммыВСтроке(Строка, Ложь, Ложь, Ложь, ЦенаВключаетНДС);
КонецЕсли;
КоличествоОтмененныхСтрок = КоличествоОтмененныхСтрок + 1;
КонецЦикла;
КонецЦикла;
СтруктураВозврата.КоличествоСтрок = КоличествоОтмененныхСтрок;
Возврат СтруктураВозврата;
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПриКопировании(ОбъектКопирования)
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.ПустаяСсылка();
ЖелаемаяДатаПоступления = Дата(1,1,1);
ДатаСогласования = Дата(1,1,1);
ДатаПоступления = Дата(1,1,1);
ДатаОтгрузки = Дата(1,1,1);
Согласован = Ложь;
ДокументРеализации = Неопределено;
Назначение = Неопределено;
ИдентификаторПлатежа = Неопределено;
СостояниеЗаполненияМногооборотнойТары = Перечисления.СостоянияЗаполненияМногооборотнойТары.ПустаяСсылка();
ЗаменяющиеТоварыМаксимальныйКодСтроки = 0;
ВозвращаемыеТоварыМаксимальныйКодСтроки = 0;
ДатаОтгрузкиВСтроке = Дата(1,1,1);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") И ЗначениеЗаполнено(Соглашение) Тогда
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Соглашение);
Если УсловияПродаж.СтатусСоглашения <> Перечисления.СтатусыСоглашенийСКлиентами.Закрыто Тогда
Если ЗначениеЗаполнено(УсловияПродаж.СрокПоставки) И Не ЭтоЗаказКакСчет Тогда
ДатаНачала = ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДатаСеанса());
ДатаОтгрузкиВСтроке = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(ДатаНачала, Перечисления.Периодичность.День, УсловияПродаж.СрокПоставки) + 1;
КонецЕсли;
Иначе
Соглашение = Неопределено;
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ВозвратПорчи = Ложь;
КонецЕсли;
Для Каждого СтрокаТЧ Из ВозвращаемыеТовары Цикл
СтрокаТЧ.КодСтроки = 0;
СтрокаТЧ.ДатаПоступления = Дата(1,1,1);
Если Не ВозвратПорчи И СтрокаТЧ.Порча Тогда
СтрокаТЧ.Порча = Ложь;
СтрокаТЧ.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрокаТЧ.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
Если НеОтгружатьЧастями Тогда
ДатаОтгрузки = ДатаОтгрузкиВСтроке;
КонецЕсли;
Для Каждого СтрокаТЧ Из ЗаменяющиеТовары Цикл
СтрокаТЧ.КодСтроки = 0;
СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузкиВСтроке;
СтрокаТЧ.Отменено = Ложь;
СтрокаТЧ.ПричинаОтмены = Справочники.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка();
КонецЦикла;
ИнициализироватьДокумент();
ВозвращаемыеСерии.Очистить();
СкидкиРассчитаны = Ложь;
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(ЭтотОбъект, "ЗаменяющиеТовары", Истина,,Истина);
Для Каждого СтрокаТЧ Из ЗаменяющиеТовары Цикл
СтрокаТЧ.СуммаБонусныхБалловКСписанию = 0;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = 0;
КонецЦикла;
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
Автор = Пользователи.АвторизованныйПользователь();
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ЗаполненНаОснованииДокумента = Ложь;
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("ЗаполнитьПоПереданнойТаре") Тогда
ЗаполнитьДокументНаОснованииПереданнойТары(ДанныеЗаполнения);
ЗаполненНаОснованииДокумента = Истина;
ИначеЕсли ДанныеЗаполнения.Свойство("АктОРасхождениях")
И ДанныеЗаполнения.Свойство("ОснованиеАкта") Тогда
Если ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаполнитьДокументНаОснованииАктаПоРеализации(ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.ПередачаТоваровХранителю") Тогда
ЗаполнитьДокументНаОснованииАктаПоПередаче(ДанныеЗаполнения);
КонецЕсли;
Иначе
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
КонецЕсли;
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.Партнеры") Тогда
ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиентом(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СделкиСКлиентами") Тогда
ЗаполнитьДокументНаОснованииСделкиПоПродаже(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаполнитьДокументНаОснованииРеализацииТоваровИУслуг(ДанныеЗаполнения);
ЗаполненНаОснованииДокумента = Истина;
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ПередачаТоваровХранителю") Тогда
ЗаполнитьДокументНаОснованииПередачиТоваровХранителю(ДанныеЗаполнения);
ЗаполненНаОснованииДокумента = Истина;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж");
ТолькоКомиссионныеПродажи25 = ИспользоватьДоговорыСКлиентами
И (ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25")
ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж);
КомиссионныеПродажи25 = Ложь;
Если ТолькоКомиссионныеПродажи25 Тогда
КомиссионныеПродажи25 = Истина;
ИначеЕсли ЗначениеЗаполнено(Соглашение) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "КомиссионныеПродажи25");
ИначеЕсли ЗначениеЗаполнено(Договор) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "КомиссионныеПродажи25");
КонецЕсли;
Если КомиссионныеПродажи25 Тогда
ВернутьМногооборотнуюТару = Ложь;
СрокВозвратаМногооборотнойТары = 0;
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
КонецЕсли;
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияКассыПриФОИспользоватьНесколькоКассЛожь", Ложь);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
Автор = Пользователи.АвторизованныйПользователь();
Если Не ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента;
КонецЕсли;
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
Если Не ЗаполненНаОснованииДокумента Тогда
ИнициализироватьУсловияПродаж();
КонецЕсли;
ОтветственныеЛицаСервер.УстановитьМенеджера(
ЭтотОбъект, ПродажиСервер.ДокументОснование(ЭтотОбъект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
ИнициализироватьДокумент(ДанныеЗаполнения);
Если НЕ ЗначениеЗаполнено(Менеджер) Тогда
Менеджер = СамообслуживаниеСервер.МенеджерДокументаПоУмолчанию();
КонецЕсли;
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Склад, СкладГруппа, ВозвращаемыеТовары, Ложь);
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
Если ЭтоНовый() И Не ЭтоЗаказКакСчет Тогда
ЭтоЗаказКакСчет = Не ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение
И ЭтоЗаказКакСчет И Статус <> Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована Тогда
ТекстОшибки = НСтр("ru = 'Заказ как счет должен иметь статус ""На согласовании"".'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, Ссылка, , , Отказ);
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Или
Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению") Или
Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке") Или
Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена") Тогда
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ЗаполнитьПустыеДатыПоступления(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение
И ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах")
И Не СкидкиРассчитаны
И Не ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым
И ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
И ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя")
И СпособКомпенсации = ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары")
И ЗаменяющиеТовары.Количество() > 0 Тогда
Отказ = Истина;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 не рассчитаны автоматические скидки (наценки). Проведение невозможно. Для расчёта автоматических скидок (наценок) проведите документ из формы документа.'"),
Ссылка);
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Ссылка,
,
,
Отказ);
КонецЕсли;
ПараметрыОкругления = НоменклатураСервер.ПараметрыОкругленияКоличестваШтучныхТоваров();
ПараметрыОкругления.ИмяТЧ = "ВозвращаемыеТовары";
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи, ПараметрыОкругления);
Если СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ПараметрыОкругления.ИмяТЧ = "ЗаменяющиеТовары";
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи, ПараметрыОкругления);
Иначе
ЗаменяющиеТовары.Очистить();
КонецЕсли;
ЗаказыСервер.УстановитьКлючВСтрокахТабличнойЧасти(ЭтотОбъект, "ВозвращаемыеТовары", "ВозвращаемыеТоварыМаксимальныйКодСтроки");
ЗаказыСервер.УстановитьКлючВСтрокахТабличнойЧасти(ЭтотОбъект, "ЗаменяющиеТовары", "ЗаменяющиеТоварыМаксимальныйКодСтроки");
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаявкаНаВозвратТоваровОтКлиента);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект,ПараметрыУказанияСерий.Возвращаемые);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект,ПараметрыУказанияСерий.Заменяющие);
Если ПолучитьФункциональнуюОпцию("ИспользоватьКачествоТоваров") Тогда
ВозвратПорчи = Ложь;
Для Каждого СтрТабл Из ВозвращаемыеТовары Цикл
Если СтрТабл.Порча Тогда
ВозвратПорчи = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ГрафикИсполненияВДоговоре = Ложь;
Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ЗначениеЗаполнено(Договор) Тогда
ГрафикИсполненияВДоговоре = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ЗаданГрафикИсполнения");
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или СпособКомпенсации <> Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары
Или ГрафикИсполненияВДоговоре Тогда
СуммаАвансаДоОбеспечения = 0;
СуммаПредоплатыДоОтгрузки = 0;
Иначе
Если Не ТребуетсяЗалогЗаТару Тогда
Для Каждого ЭтапОплаты Из ЭтапыГрафикаОплаты Цикл
ЭтапОплаты.СуммаЗалогаЗаТару = 0;
КонецЦикла;
КонецЕсли;
КонецЕсли;
СуммаДокумента = ПолучитьСуммуДокумента();
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоНакладным
И СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ПродажиСервер.ЗаполнитьСуммыАвансаПредоплаты(ЭтотОбъект);
КонецЕсли;
СуммаЗамены = ПолучитьСуммуЗаменяющихСтрок();
СуммаВозвратнойТары = ПолучитьСуммуВозвратнойТары();
Если ЭтоНовый() И НЕ ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
Если ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоНакладным Тогда
ИдентификаторПлатежа = ОбщегоНазначенияУТ.ПолучитьУникальныйИдентификаторПлатежа(ЭтотОбъект);
Иначе
ИдентификаторПлатежа = Неопределено;
КонецЕсли;
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
НоваяДатаПоступления = Дата(1,1,1);
Если ВозвращаемыеТовары.Количество() > 0 Тогда
Если Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату Тогда
Если ВозвращаемыеТовары.Количество() > 0 Тогда
ТаблицаТоваров = ВозвращаемыеТовары.Выгрузить(, "ДатаПоступления");
ТаблицаТоваров.Сортировать("ДатаПоступления Возр");
НоваяДатаПоступления = ТаблицаТоваров[0].ДатаПоступления;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДатаПервогоПоступления = НоваяДатаПоступления;
Если Не НеОтгружатьЧастями Тогда
НоваяДатаОтгрузки = Дата(1,1,1);
Если ЗаменяющиеТовары.Количество() > 0 Тогда
Если Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату
ИЛИ Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению
ИЛИ Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке
ИЛИ Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена Тогда
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Отменено", Ложь);
СтрокиКОбеспечению = ЗаменяющиеТовары.НайтиСтроки(ПараметрыОтбора);
Если СтрокиКОбеспечению.Количество() > 0 Тогда
ТаблицаСтрокКОбеспечению = ЗаменяющиеТовары.Выгрузить(СтрокиКОбеспечению, "ДатаОтгрузки");
ТаблицаСтрокКОбеспечению.Сортировать("ДатаОтгрузки Возр");
НоваяДатаОтгрузки = ТаблицаСтрокКОбеспечению[0].ДатаОтгрузки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДатаОтгрузки = НоваяДатаОтгрузки;
Иначе
ОбеспечениеВДокументахСервер.ЗаполнитьДатыОтгрузкиВТаблице(ДатаОтгрузки, ЗаменяющиеТовары, "ДатаОтгрузки");
КонецЕсли;
ДокументСогласован = Согласован;
МассивСтатусовНеСогласован = Новый Массив();
МассивСтатусовНеСогласован.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована);
МассивСтатусовНеСогласован.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена);
ОбщегоНазначенияУТ.ИзменитьПризнакСогласованностиДокумента(
ЭтотОбъект,
РежимЗаписи,
МассивСтатусовНеСогласован);
Если Не ДокументСогласован И Согласован Тогда
ДатаСогласования = ТекущаяДатаСеанса();
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Подразделение = Неопределено;
Для Каждого СтрокаЗаменяющиеТовары Из ЗаменяющиеТовары Цикл
СтрокаЗаменяющиеТовары.ПроцентРучнойСкидки = Неопределено;
СтрокаЗаменяющиеТовары.СуммаРучнойСкидки = Неопределено;
СтрокаЗаменяющиеТовары.ПроцентАвтоматическойСкидки = Неопределено;
СтрокаЗаменяющиеТовары.СуммаАвтоматическойСкидки = Неопределено;
КонецЦикла;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Договор = Неопределено;
КонецЕсли;
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ЧекККМ = Неопределено;
КонецЕсли;
МассивРеквизитов = Новый Массив;
Если ФормаОплаты <> Перечисления.ФормыОплаты.Наличная Тогда
Касса = Неопределено;
КонецЕсли;
ШаблонНазначения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ШаблонНазначения(ЭтотОбъект);
Справочники.Назначения.ПроверитьЗаполнитьПередЗаписью(Назначение, ШаблонНазначения, ЭтотОбъект, "НаправлениеДеятельности", Отказ);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект,
Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента.ТабличныеЧасти.ВозвращаемыеТовары.Имя);
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект,
Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента.ТабличныеЧасти.ЗаменяющиеТовары.Имя);
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж");
ТолькоКомиссионныеПродажи25 = ИспользоватьДоговорыСКлиентами
И (ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25")
ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж);
КомиссионныеПродажи25 = Ложь;
Если ТолькоКомиссионныеПродажи25 Тогда
КомиссионныеПродажи25 = Истина;
ИначеЕсли ЗначениеЗаполнено(Соглашение) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "КомиссионныеПродажи25");
ИначеЕсли ЗначениеЗаполнено(Договор) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "КомиссионныеПродажи25");
КонецЕсли;
Если КомиссионныеПродажи25 Тогда
ВернутьМногооборотнуюТару = Ложь;
СрокВозвратаМногооборотнойТары = 0;
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
КонецЕсли;
Если ЭтоНовый() И Не ЗначениеЗаполнено(Автор) Тогда
Автор = Пользователи.АвторизованныйПользователь();
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
ШаблонНазначения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ШаблонНазначения(ЭтотОбъект);
Справочники.Назначения.ПриЗаписиДокумента(Назначение, ШаблонНазначения, ЭтотОбъект, Партнер,
УчетНДСУП.ВидДеятельностиПоНалогообложениюНДС(НалогообложениеНДС, Организация, Дата));
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
Движения.РаспоряженияНаОтгрузкуИВозврат.ДополнительныеСвойства.Вставить("ФормироватьСводнуюТаблицуЗаявкиНаВозврат");
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
МассивНепроверяемыхРеквизитов.Добавить("НалогообложениеНДС");
МассивНепроверяемыхРеквизитов.Добавить("ВозвращаемыеТовары.СтавкаНДС");
КонецЕсли;
Если (ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию)
И (Не ЗначениеЗаполнено(Соглашение)
Или Не ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Соглашение, "ИспользуютсяДоговорыКонтрагентов")) Тогда
МассивНепроверяемыхРеквизитов.Добавить("Договор");
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("ДатаОтгрузки");
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества();
ПараметрыПроверки.ИмяТЧ = "ВозвращаемыеТовары";
НоменклатураСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверки);
Если СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ПараметрыПроверки.ИмяТЧ = "ЗаменяющиеТовары";
НоменклатураСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверки);
НоменклатураСервер.ПроверитьЗаполнениеСодержания(ЭтотОбъект, Отказ, "ЗаменяющиеТовары");
КонецЕсли;
Если СпособКомпенсации <> Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары");
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
МассивНепроверяемыхРеквизитов.Добавить("СпособКомпенсации");
МассивНепроверяемыхРеквизитов.Добавить("СтавкаНДС");
КонецЕсли;
ВсеЗаменяющиеСтрокиОтменены = ОбщегоНазначенияУТ.ВсеСтрокиОтменены(ЭтотОбъект, "ЗаменяющиеТовары", "Отменено");
ВсеВозвращаемыеСтрокиОтменены = ОбщегоНазначенияУТ.ВсеСтрокиОтменены(ЭтотОбъект, "ВозвращаемыеТовары", "Отменено");
Если НЕ ЗначениеЗаполнено(Склад)
И Статус <> Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована
И (ВозвращаемыеТовары.Количество() > 0 И НЕ ВсеВозвращаемыеСтрокиОтменены)
И (ЗаменяющиеТовары.Количество() = 0 ИЛИ ВсеЗаменяющиеСтрокиОтменены) Тогда
ТекстОшибки = НСтр("ru='Поле ""Склад"" не заполнено.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"Склад",
,
Отказ);
КонецЕсли;
Если Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована И
ЗначениеЗаполнено(ДатаСогласования) И ДатаСогласования < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата согласования должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата, "ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаСогласования",
,
Отказ);
КонецЕсли;
Если ЗначениеЗаполнено(ЖелаемаяДатаПоступления) И ЖелаемаяДатаПоступления < НачалоДня(Дата) Тогда
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ТекстОшибки = НСтр("ru = 'Желаемая дата возврата должна быть не меньше даты документа %Дата%'");
Иначе
ТекстОшибки = НСтр("ru = 'Дата поступления должна быть не меньше даты документа %Дата%'");
КонецЕсли;
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ЖелаемаяДатаПоступления",
,
Отказ);
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("ВозвращаемыеТовары.НоменклатураОприходование");
МассивНепроверяемыхРеквизитов.Добавить("ВозвращаемыеТовары.ДатаПоступления");
ВсеВозвращаемыеТоварыОтменены = Истина;
Для ТекИндекс = 0 По ВозвращаемыеТовары.Количество()-1 Цикл
ТекущаяСтрокаВозвращаемыеТовары = ВозвращаемыеТовары[ТекИндекс];
Если Не ТекущаяСтрокаВозвращаемыеТовары.Отменено Тогда
ВсеВозвращаемыеТоварыОтменены = Ложь;
КонецЕсли;
АдресОшибки = " " + НСтр("ru='в строке %НомерСтроки% списка ""Возвращаемые товары""'");
АдресОшибки = СтрЗаменить(АдресОшибки, "%НомерСтроки%", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки);
Если Не ПоступлениеОднойДатой
И (Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату Или
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению Или
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке Или
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена) И
Не ТекущаяСтрокаВозвращаемыеТовары.Отменено И
Не ЗначениеЗаполнено(ТекущаяСтрокаВозвращаемыеТовары.ДатаПоступления) Тогда
ТекстОшибки = НСтр("ru='Не заполнена колонка ""Дата поступления""'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки, "ДатаПоступления"),
,
Отказ);
КонецЕсли;
Если Не ПоступлениеОднойДатой
И ЗначениеЗаполнено(ТекущаяСтрокаВозвращаемыеТовары.ДатаПоступления) И ТекущаяСтрокаВозвращаемыеТовары.ДатаПоступления < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата поступления должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки, "ДатаПоступления"),
,
Отказ);
КонецЕсли;
Если ТекущаяСтрокаВозвращаемыеТовары.Порча Тогда
Если Не ЗначениеЗаполнено(ТекущаяСтрокаВозвращаемыеТовары.НоменклатураОприходование) Тогда
ТекстОшибки = НСтр("ru='Не заполнена колонка ""Номенклатура (оприходование)""'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки, "НоменклатураОприходование"),
,
Отказ);
ИначеЕсли ТекущаяСтрокаВозвращаемыеТовары.НоменклатураОприходование = ТекущаяСтрокаВозвращаемыеТовары.Номенклатура Тогда
ТекстОшибки = НСтр("ru='Возвращаемый товар другого качества совпадает с ранее отгруженным товаром.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки, "НоменклатураОприходование"),
,
Отказ);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Склад) И НЕ ЗначениеЗаполнено(ТекущаяСтрокаВозвращаемыеТовары.Склад) Тогда
ТекстОшибки = НСтр("ru = 'Не заполнена колонка ""Получатель"" в строке %НомерСтроки% списка ""%ИмяТЧ%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерСтроки%", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ИмяТЧ%", НСтр("ru = 'Возвращаемые товары'"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", ТекущаяСтрокаВозвращаемыеТовары.НомерСтроки, "Склад"),
,
Отказ);
КонецЕсли;
КонецЦикла;
Если ВсеВозвращаемыеТоварыОтменены
Или Не ПоступлениеОднойДатой
Или (ПоступлениеОднойДатой
И Не (Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату
Или Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению
Или Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке
Или Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена)) Тогда
МассивНепроверяемыхРеквизитов.Добавить("ДатаПоступления");
КонецЕсли;
Если НеОтгружатьЧастями И
ЗначениеЗаполнено(ДатаОтгрузки) И
ДатаОтгрузки < НачалоДня(Дата) И
СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ТекстОшибки = НСтр("ru='Дата отгрузки должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаОтгрузки",
,
Отказ);
КонецЕсли;
Если ПоступлениеОднойДатой И
ЗначениеЗаполнено(ДатаПоступления) И
ДатаПоступления < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата поступления должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаПоступления",
,
Отказ);
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.ПричинаОтмены");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.ДатаОтгрузки");
ДатаОтгрузкиОбязательна = Ложь;
СкладОбязателен = Ложь;
СоответствиеКодовСтрок = Новый Соответствие;
Если СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ПараметрыВстраивания = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ДоступныеОстаткиПараметрыВстраивания();
ТаблицаОшибок = ОбеспечениеВДокументахСервер.ТаблицаОшибокЗаполнения(ЭтотОбъект, ПараметрыВстраивания);
Для ТекИндекс = 0 По ТаблицаОшибок.Количество() - 1 Цикл
ШаблонТекста = НСтр("ru='Не заполнена колонка ""Дата отгрузки"" в строке %НомерСтроки% списка ""Заменяющие товары""'");
СтрокаОшибки = ТаблицаОшибок[ТекИндекс];
Если СтрокаОшибки.ДатаОтгрузкиОбязательна И Не НеОтгружатьЧастями И СтрокаОшибки.ДатаОтгрузкиНеЗаполнена Тогда
ТекстОшибки = СтрЗаменить(ШаблонТекста, "%НомерСтроки%", СтрокаОшибки.НомерСтроки);
ПутьКТабЧасти = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(
"ЗаменяющиеТовары",
СтрокаОшибки.НомерСтроки,
"ДатаОтгрузки");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, ПутьКТабЧасти, , Отказ);
КонецЕсли;
СкладОбязателен = СкладОбязателен Или СтрокаОшибки.СкладОбязателен;
ДатаОтгрузкиОбязательна = ДатаОтгрузкиОбязательна Или СтрокаОшибки.ДатаОтгрузкиОбязательна;
КонецЦикла;
Если НеОтгружатьЧастями И ДатаОтгрузкиОбязательна И Не ЗначениеЗаполнено(ДатаОтгрузки) Тогда
ТекстОшибки = НСтр("ru='Поле ""Дата отгрузки"" не заполнено'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаОтгрузки", , Отказ);
КонецЕсли;
Если СкладОбязателен И Не ЗначениеЗаполнено(Склад)
И (Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована
Или Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату) Тогда
ТекстОшибки = НСтр("ru='Поле ""Склад"" не заполнено'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "Склад", , Отказ);
КонецЕсли;
Для ТекИндекс = 0 По ЗаменяющиеТовары.Количество()-1 Цикл
ТекущаяСтрокаЗаменяющиеТовары = ЗаменяющиеТовары[ТекИндекс];
АдресОшибки = " " + НСтр("ru='в строке %НомерСтроки% списка ""Заменяющие товары""'");
АдресОшибки = СтрЗаменить(АдресОшибки, "%НомерСтроки%", ТекущаяСтрокаЗаменяющиеТовары.НомерСтроки);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов")
И ТекущаяСтрокаЗаменяющиеТовары.Отменено
И Не ЗначениеЗаполнено(ТекущаяСтрокаЗаменяющиеТовары.ПричинаОтмены) Тогда
ТекстОшибки = НСтр("ru='Необходимо указать причину отмены'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ЗаменяющиеТовары", ТекущаяСтрокаЗаменяющиеТовары.НомерСтроки, "ПричинаОтмены"),
,
Отказ);
КонецЕсли;
Если Не НеОтгружатьЧастями И
ЗначениеЗаполнено(ТекущаяСтрокаЗаменяющиеТовары.ДатаОтгрузки) И
ТекущаяСтрокаЗаменяющиеТовары.ДатаОтгрузки < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата отгрузки должна быть не меньше даты документа ""%Дата%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%Дата%", Формат(Дата, "ДЛФ=DD"));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ЗаменяющиеТовары", ТекущаяСтрокаЗаменяющиеТовары.НомерСтроки, "ДатаОтгрузки"),
,
Отказ);
КонецЕсли;
ЗаказыСервер.ПроверитьДублиКодовСтрокВТаблице(ЭтотОбъект,
ТекущаяСтрокаЗаменяющиеТовары.КодСтроки,
ТекущаяСтрокаЗаменяющиеТовары.НомерСтроки,
СоответствиеКодовСтрок,
Отказ,
"ЗаменяющиеТовары");
КонецЦикла;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
МассивНепроверяемыхРеквизитов.Добавить("Подразделение");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.ПроцентРучнойСкидки");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.СуммаРучнойСкидки");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.ПроцентАвтоматическойСкидки");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.СуммаАвтоматическойСкидки");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
МассивНепроверяемыхРеквизитов.Добавить("Договор");
КонецЕсли;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаявкаНаВозвратТоваровОтКлиента);
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияХарактеристик();
ПараметрыПроверки.ИмяТЧ = "ВозвращаемыеТовары";
ПараметрыПроверки.ИменаПолейССуффиксом.Вставить("Номенклатура", "НоменклатураОприходование");
ПараметрыПроверки.ИменаПолейССуффиксом.Вставить("Характеристика", "ХарактеристикаОприходование");
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ,ПараметрыПроверки);
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(ПараметрыУказанияСерий.Возвращаемые);
Если СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияХарактеристик();
ПараметрыПроверки.ИмяТЧ = "ЗаменяющиеТовары";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ,ПараметрыПроверки);
МассивПараметров.Добавить(ПараметрыУказанияСерий.Заменяющие);
КонецЕсли;
НоменклатураСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,
МассивПараметров,
Отказ,
МассивНепроверяемыхРеквизитов);
МассивНепроверяемыхРеквизитов.Добавить("Подразделение");
Если СпособКомпенсации <> Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары
ИЛИ ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.Номенклатура");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.Характеристика");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.КоличествоУпаковок");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.Количество");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.СтавкаНДС");
МассивНепроверяемыхРеквизитов.Добавить("ЗаменяющиеТовары.Цена");
КонецЕсли;
НоменклатураСервер.ПроверитьВидНоменклатурыОприходования(ЭтотОбъект,Отказ,"ВозвращаемыеТовары");
ДоставкаТоваров.ПроверитьЗаполнениеРеквизитовДоставки(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
Отказ = Истина;
КонецЕсли;
СуммаЗамены = ПолучитьСуммуЗаменяющихСтрок();
СуммаВозвратнойТары = ПолучитьСуммуВозвратнойТары();
ПродажиСервер.ПроверитьКорректностьЗаполненияДокументаПродажи(ЭтотОбъект, Отказ);
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
ПродажиСервер.ПроверитьКорректностьВозвращаемыхТоваров(ЭтотОбъект, "ВозвращаемыеТовары", Отказ);
КонецЕсли;
КонтрольЗаполненияЦенВозвращаемыхТоваров(Отказ);
Если (Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению
ИЛИ Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке
ИЛИ Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
И ЗаменяющиеТовары.Количество() > 0 Тогда
ПродажиСервер.ПроверитьЗапретОтгрузки(Партнер, Отказ);
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ДоставкаТоваров.ОтразитьСостояниеДоставки(Ссылка, Отказ);
ПродажиСервер.ВыполнитьКонтрольЗаказаПослеПроведения(Ссылка, Отказ);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ЗаполнитьДокументНаОснованииПартнера(Знач Основание)
Партнер = Основание;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииСделкиПоПродаже(Основание)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СделкиСКлиентами.Ссылка КАК Сделка,
| СделкиСКлиентами.Партнер КАК Партнер,
| СделкиСКлиентами.СоглашениеСКлиентом КАК Соглашение,
| СделкиСКлиентамиПартнерыИКонтактныеЛица.КонтактноеЛицо
|ИЗ
| Справочник.СделкиСКлиентами КАК СделкиСКлиентами
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СделкиСКлиентами.ПартнерыИКонтактныеЛица КАК СделкиСКлиентамиПартнерыИКонтактныеЛица
| ПО (СделкиСКлиентамиПартнерыИКонтактныеЛица.Ссылка = СделкиСКлиентами.Ссылка)
| И (СделкиСКлиентамиПартнерыИКонтактныеЛица.Партнер = СделкиСКлиентами.Партнер)
| И (СделкиСКлиентамиПартнерыИКонтактныеЛица.КонтактноеЛицо <> ЗНАЧЕНИЕ(Справочник.КонтактныеЛицаПартнеров.ПустаяСсылка))
|ГДЕ
| СделкиСКлиентами.Ссылка = &Основание");
Запрос.УстановитьПараметр("Основание",Основание);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСделкиПоПродаже(Выборка.Партнер);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
Если ЗначениеЗаполнено(Соглашение) Тогда
ЗаполнитьУсловияПродажПоСоглашению();
Иначе
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиентом(Знач ДокументОснование)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| СоглашениеСКлиентом.Ссылка КАК Соглашение,
| СоглашениеСКлиентом.Партнер КАК Партнер,
| СоглашениеСКлиентом.КонтактноеЛицо КАК КонтактноеЛицо,
| СоглашениеСКлиентом.ДоступноВнешнимПользователям КАК ДоступноВнешнимПользователям,
|
| СоглашениеСКлиентом.Статус КАК СтатусДокумента,
| ВЫБОР
| КОГДА
| СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| СоглашениеСКлиентом.Типовое КАК ЕстьОшибкиТиповое,
| СоглашениеСКлиентом.НаправлениеДеятельности КАК НаправлениеДеятельности
|
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Ссылка = &ДокументОснование
|");
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
РезультатЗапроса = МассивРезультатовЗапроса[0];
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыСоглашенийСКлиентами.Действует);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСоглашения(Выборка.ЕстьОшибкиТиповое);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.Соглашение,
Выборка.СтатусДокумента,
,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов,
Выборка.ДоступноВнешнимПользователям);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
ЗаполнитьУсловияПродажПоСоглашению();
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииРеализацииТоваровИУслуг(Знач ДокументОснование)
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| КорректировкаРеализации.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ДанныеПоследнейКорректировки
|ИЗ
| Документ.КорректировкаРеализации КАК КорректировкаРеализации
|ГДЕ
| КорректировкаРеализации.Проведен
| И КорректировкаРеализации.ДокументОснование = &ДокументОснование
| И НЕ КорректировкаРеализации.ВидКорректировки В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара))
|
|УПОРЯДОЧИТЬ ПО
| КорректировкаРеализации.МоментВремени УБЫВ
|;
|
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК ДокументРеализации,
| РеализацияТоваровУслуг.Ссылка КАК Ссылка,
| РеализацияТоваровУслуг.Соглашение КАК Соглашение,
| РеализацияТоваровУслуг.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ВЫБОР
| КОГДА РеализацияТоваровУслуг.ЗаказКлиента = НЕОПРЕДЕЛЕНО
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента.ГрафикОплаты = ЗНАЧЕНИЕ(Справочник.ГрафикиОплаты.ПустаяСсылка)
| ТОГДА РеализацияТоваровУслуг.Соглашение.ГрафикОплаты
| ИНАЧЕ РеализацияТоваровУслуг.ЗаказКлиента.ГрафикОплаты
| КОНЕЦ КАК ГрафикОплаты,
| ВЫБОР
| КОГДА РеализацияТоваровУслуг.ЗаказКлиента = НЕОПРЕДЕЛЕНО
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)
| ИЛИ РеализацияТоваровУслуг.ЗаказКлиента.ГрафикОплаты = ЗНАЧЕНИЕ(Справочник.ГрафикиОплаты.ПустаяСсылка)
| ТОГДА РеализацияТоваровУслуг.Соглашение.ГрафикОплаты.ФормаОплаты
| ИНАЧЕ РеализацияТоваровУслуг.ЗаказКлиента.ФормаОплаты
| КОНЕЦ КАК ФормаОплаты,
| РеализацияТоваровУслуг.Организация КАК Организация,
| РеализацияТоваровУслуг.Партнер КАК Партнер,
| РеализацияТоваровУслуг.Контрагент КАК Контрагент,
| РеализацияТоваровУслуг.КонтактноеЛицо КАК КонтактноеЛицо,
| РеализацияТоваровУслуг.Договор КАК Договор,
| РеализацияТоваровУслуг.Валюта КАК Валюта,
| РеализацияТоваровУслуг.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| РеализацияТоваровУслуг.Сделка КАК Сделка,
| РеализацияТоваровУслуг.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА РеализацияТоваровУслуг.Склад.ЭтоГруппа
| И РеализацияТоваровУслуг.Склад.ВыборГруппы = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ РеализацияТоваровУслуг.Склад
| КОНЕЦ КАК Склад,
| РеализацияТоваровУслуг.ХозяйственнаяОперация КАК ХозяйственнаяОперацияРеализация,
| РеализацияТоваровУслуг.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| РеализацияТоваровУслуг.НалогообложениеНДС КАК НалогообложениеНДС,
| РеализацияТоваровУслуг.ПорядокРасчетов КАК ПорядокРасчетов,
| РеализацияТоваровУслуг.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| РеализацияТоваровУслуг.Грузоотправитель КАК Грузоотправитель,
| РеализацияТоваровУслуг.Грузополучатель КАК Грузополучатель,
| РеализацияТоваровУслуг.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя,
| РеализацияТоваровУслуг.БанковскийСчетГрузополучателя КАК БанковскийСчетГрузополучателя,
| РеализацияТоваровУслуг.АдресДоставки КАК АдресДоставки,
| РеализацияТоваровУслуг.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| РеализацияТоваровУслуг.Соглашение.СрокВозвратаМногооборотнойТары КАК СрокВозвратаМногооборотнойТары,
| РеализацияТоваровУслуг.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| РеализацияТоваровУслуг.Статус КАК СтатусДокумента,
| РеализацияТоваровУслуг.КартаЛояльности КАК КартаЛояльности,
| НЕ РеализацияТоваровУслуг.Проведен КАК ЕстьОшибкиПроведен,
| ВЫБОР
| КОГДА РеализацияТоваровУслуг.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено)
| ИЛИ РеализацияТоваровУслуг.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиентуРеглУчет)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| РеализацияТоваровУслуг.Соглашение.ДоступноВнешнимПользователям КАК СоглашениеДоступноВнешнимПользователям,
| РеализацияТоваровУслуг.НаправлениеДеятельности КАК НаправлениеДеятельности
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.ВидЦены КАК ВидЦены,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Сумма КАК Сумма,
| ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТовары.СуммаНДС КАК СуммаНДС,
| ТаблицаТовары.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.ЗаказКлиента КАК ЗаказКлиента,
| 0 КАК СуммаРучнойСкидки,
| 0 КАК СуммаАвтоматическойСкидки
|ПОМЕСТИТЬ ТоварыДокументаПродажи
|ИЗ
| Документ.КорректировкаРеализации.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеПоследнейКорректировки КАК ДанныеПоследнейКорректировки
| ПО ТаблицаТовары.Ссылка = ДанныеПоследнейКорректировки.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Номенклатура.ТипНоменклатуры,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.Упаковка,
| ТаблицаТовары.КоличествоУпаковок,
| ТаблицаТовары.Цена,
| ТаблицаТовары.ВидЦены,
| ТаблицаТовары.Количество,
| ТаблицаТовары.Сумма,
| ТаблицаТовары.СтавкаНДС,
| ТаблицаТовары.СуммаНДС,
| ТаблицаТовары.СуммаСНДС,
| ТаблицаТовары.КодСтроки,
| ТаблицаТовары.Склад,
| ТаблицаТовары.ЗаказКлиента,
| ТаблицаТовары.СуммаРучнойСкидки,
| ТаблицаТовары.СуммаАвтоматическойСкидки
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоследнейКорректировки КАК ДанныеПоследнейКорректировки
| ПО (ИСТИНА)
|ГДЕ
| ДанныеПоследнейКорректировки.Ссылка ЕСТЬ NULL
| И ТаблицаТовары.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТоварыДокументаПродажи.НоменклатураНабора КАК НоменклатураНабора,
| ТоварыДокументаПродажи.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ) КАК НаборСодержитУслуги,
| ТоварыДокументаПродажи.Номенклатура КАК Номенклатура,
| ТоварыДокументаПродажи.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыДокументаПродажи.Характеристика КАК Характеристика,
| ТоварыДокументаПродажи.Серия КАК Серия,
| ТоварыДокументаПродажи.Назначение КАК Назначение,
| ТоварыДокументаПродажи.Упаковка КАК Упаковка,
| СУММА(ТоварыДокументаПродажи.КоличествоУпаковок) КАК КоличествоУпаковок,
| СРЕДНЕЕ(ТоварыДокументаПродажи.Цена) КАК Цена,
| СУММА(ТоварыДокументаПродажи.Количество) КАК Количество,
| СУММА(ТоварыДокументаПродажи.Сумма) КАК Сумма,
| ТоварыДокументаПродажи.СтавкаНДС КАК СтавкаНДС,
| СУММА(ТоварыДокументаПродажи.СуммаНДС) КАК СуммаНДС,
| СУММА(ТоварыДокументаПродажи.СуммаСНДС) КАК СуммаСНДС,
| СУММА(ТоварыДокументаПродажи.СуммаРучнойСкидки) КАК СуммаРучнойСкидки,
| СУММА(ТоварыДокументаПродажи.СуммаАвтоматическойСкидки) КАК СуммаАвтоматическойСКидки,
| ТоварыДокументаПродажи.Склад КАК Склад
|ПОМЕСТИТЬ ТоварыРеализации
|ИЗ
| ТоварыДокументаПродажи КАК ТоварыДокументаПродажи
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ВариантыКомплектацииНоменклатуры.Владелец = ТоварыДокументаПродажи.НоменклатураНабора
| И ВариантыКомплектацииНоменклатуры.Характеристика = ТоварыДокументаПродажи.ХарактеристикаНабора
| И ВариантыКомплектацииНоменклатуры.Основной
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокументаПродажи.НоменклатураНабора,
| ТоварыДокументаПродажи.ХарактеристикаНабора,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.СодержитУслуги, ЛОЖЬ),
| ТоварыДокументаПродажи.Номенклатура,
| ТоварыДокументаПродажи.ТипНоменклатуры,
| ТоварыДокументаПродажи.Характеристика,
| ТоварыДокументаПродажи.Серия,
| ТоварыДокументаПродажи.Упаковка,
| ТоварыДокументаПродажи.СтавкаНДС,
| ТоварыДокументаПродажи.Назначение,
| ТоварыДокументаПродажи.Склад
|;
|
|
|ВЫБРАТЬ
| ВозвратТоваровОтКлиентаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ВозвратТоваровОтКлиентаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВозвратТоваровОтКлиентаТовары.Номенклатура КАК Номенклатура,
| ВозвратТоваровОтКлиентаТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ВозвратТоваровОтКлиентаТовары.Характеристика КАК Характеристика,
| ВозвратТоваровОтКлиентаТовары.Серия КАК Серия,
| ВозвратТоваровОтКлиентаТовары.Назначение КАК Назначение,
| ВозвратТоваровОтКлиентаТовары.Упаковка КАК Упаковка,
| СУММА(ВозвратТоваровОтКлиентаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ВозвратТоваровОтКлиентаТовары.Количество) КАК Количество,
| СУММА(ВозвратТоваровОтКлиентаТовары.Сумма) КАК Сумма,
| ВозвратТоваровОтКлиентаТовары.СтавкаНДС КАК СтавкаНДС,
| СУММА(ВозвратТоваровОтКлиентаТовары.СуммаНДС) КАК СуммаНДС,
| СУММА(ВозвратТоваровОтКлиентаТовары.СуммаСНДС) КАК СуммаСНДС,
| СРЕДНЕЕ(ВозвратТоваровОтКлиентаТовары.Цена) КАК Цена,
| ВозвратТоваровОтКлиентаТовары.Склад КАК Склад
|ПОМЕСТИТЬ ТоварыПредыдущихВозвратов
|ИЗ
| Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары
|ГДЕ
| ВозвратТоваровОтКлиентаТовары.ДокументРеализации = &ДокументОснование
| И ВозвратТоваровОтКлиентаТовары.Ссылка.Проведен
|
|СГРУППИРОВАТЬ ПО
| ВозвратТоваровОтКлиентаТовары.НоменклатураНабора,
| ВозвратТоваровОтКлиентаТовары.ХарактеристикаНабора,
| ВозвратТоваровОтКлиентаТовары.Номенклатура,
| ВозвратТоваровОтКлиентаТовары.Номенклатура.ТипНоменклатуры,
| ВозвратТоваровОтКлиентаТовары.Характеристика,
| ВозвратТоваровОтКлиентаТовары.Серия,
| ВозвратТоваровОтКлиентаТовары.Упаковка,
| ВозвратТоваровОтКлиентаТовары.СтавкаНДС,
| ВозвратТоваровОтКлиентаТовары.Назначение,
| ВозвратТоваровОтКлиентаТовары.Склад
|;
|
|
|ВЫБРАТЬ
| ТоварыРеализации.НоменклатураНабора КАК НоменклатураНабора,
| ТоварыРеализации.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТоварыРеализации.НаборСодержитУслуги КАК НаборСодержитУслуги,
| ТоварыРеализации.Номенклатура КАК Номенклатура,
| ТоварыРеализации.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыРеализации.Характеристика КАК Характеристика,
| ТоварыРеализации.Серия КАК Серия,
| ТоварыРеализации.Назначение КАК Назначение,
| ТоварыРеализации.Количество - ЕСТЬNULL(ТоварыПредыдущихВозвратов.Количество, 0) КАК Количество,
| ТоварыРеализации.КоличествоУпаковок - ЕСТЬNULL(ТоварыПредыдущихВозвратов.КоличествоУпаковок, 0) КАК КоличествоУпаковок,
| ТоварыРеализации.Упаковка КАК Упаковка,
| ТоварыРеализации.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА ТоварыРеализации.КоличествоУпаковок - ЕСТЬNULL(ТоварыПредыдущихВозвратов.КоличествоУпаковок, 0) = 0
| ТОГДА ТоварыРеализации.Цена
| ИНАЧЕ (ТоварыРеализации.Сумма - ЕСТЬNULL(ТоварыПредыдущихВозвратов.Сумма, 0)) / (ТоварыРеализации.КоличествоУпаковок - ЕСТЬNULL(ТоварыПредыдущихВозвратов.КоличествоУпаковок, 0))
| КОНЕЦ КАК Цена,
| ТоварыРеализации.Сумма - ЕСТЬNULL(ТоварыПредыдущихВозвратов.Сумма, 0) КАК Сумма,
| ТоварыРеализации.СуммаНДС - ЕСТЬNULL(ТоварыПредыдущихВозвратов.СуммаНДС, 0) КАК СуммаНДС,
| ТоварыРеализации.СуммаСНДС - ЕСТЬNULL(ТоварыПредыдущихВозвратов.СуммаСНДС, 0) КАК СуммаСНДС,
| &ДокументОснование КАК ДокументРеализации,
| ТоварыРеализации.Склад КАК Склад
|ИЗ
| ТоварыРеализации КАК ТоварыРеализации
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПредыдущихВозвратов КАК ТоварыПредыдущихВозвратов
| ПО ТоварыРеализации.Номенклатура = ТоварыПредыдущихВозвратов.Номенклатура
| И ТоварыРеализации.НоменклатураНабора = ТоварыПредыдущихВозвратов.НоменклатураНабора
| И ТоварыРеализации.ХарактеристикаНабора = ТоварыПредыдущихВозвратов.ХарактеристикаНабора
| И ТоварыРеализации.Характеристика = ТоварыПредыдущихВозвратов.Характеристика
| И ТоварыРеализации.Серия = ТоварыПредыдущихВозвратов.Серия
| И ТоварыРеализации.Назначение = ТоварыПредыдущихВозвратов.Назначение
| И ТоварыРеализации.Склад = ТоварыПредыдущихВозвратов.Склад
|ГДЕ
| ТоварыРеализации.Количество - ЕСТЬNULL(ТоварыПредыдущихВозвратов.Количество, 0) > 0
|;
|
|
|ВЫБРАТЬ
| ПереданнаяВозвратнаяТараОстатки.Номенклатура КАК Номенклатура,
| ПереданнаяВозвратнаяТараОстатки.Характеристика КАК Характеристика,
| ПереданнаяВозвратнаяТараОстатки.Партнер КАК Партнер,
| ПереданнаяВозвратнаяТараОстатки.ДокументПередачи КАК ДокументПередачи,
| ПереданнаяВозвратнаяТараОстатки.КоличествоОстаток КАК Количество,
| ПереданнаяВозвратнаяТараОстатки.СуммаОстаток КАК Сумма
|ПОМЕСТИТЬ втПереданнаяВозвратнаяТара
|ИЗ
| РегистрНакопления.ПереданнаяВозвратнаяТара.Остатки(, ДокументПередачи = &ДокументОснование) КАК ПереданнаяВозвратнаяТараОстатки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРеализации.Номенклатура,
| ТоварыРеализации.Характеристика,
| ВЫРАЗИТЬ(&ДокументОснование КАК Документ.РеализацияТоваровУслуг).Партнер,
| &ДокументОснование,
| -ТоварыРеализации.Количество + ЕСТЬNULL(ТоварыПредыдущихВозвратов.Количество, 0),
| -ТоварыРеализации.Сумма + ЕСТЬNULL(ТоварыПредыдущихВозвратов.Сумма, 0)
|ИЗ
| ТоварыРеализации КАК ТоварыРеализации
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПредыдущихВозвратов КАК ТоварыПредыдущихВозвратов
| ПО ТоварыРеализации.Номенклатура = ТоварыПредыдущихВозвратов.Номенклатура
| И ТоварыРеализации.НоменклатураНабора = ТоварыПредыдущихВозвратов.НоменклатураНабора
| И ТоварыРеализации.ХарактеристикаНабора = ТоварыПредыдущихВозвратов.ХарактеристикаНабора
| И ТоварыРеализации.Характеристика = ТоварыПредыдущихВозвратов.Характеристика
| И ТоварыРеализации.Серия = ТоварыПредыдущихВозвратов.Серия
| И ТоварыРеализации.Склад = ТоварыПредыдущихВозвратов.Склад
|ГДЕ
| ТоварыРеализации.Количество - ЕСТЬNULL(ТоварыПредыдущихВозвратов.Количество, 0) > 0
| И НЕ ТоварыРеализации.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ТоварыРеализации.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ДокументОснование ССЫЛКА Документ.РеализацияТоваровУслуг
|;
|
|
|ВЫБРАТЬ
| втПереданнаяВозвратнаяТара.Номенклатура КАК Номенклатура,
| втПереданнаяВозвратнаяТара.Характеристика КАК Характеристика,
| втПереданнаяВозвратнаяТара.ДокументПередачи КАК ДокументРеализации,
| СУММА(втПереданнаяВозвратнаяТара.Количество) КАК Количество,
| СУММА(втПереданнаяВозвратнаяТара.Количество) КАК КоличествоУпаковок,
| СУММА(втПереданнаяВозвратнаяТара.Сумма) КАК Сумма,
| СУММА(втПереданнаяВозвратнаяТара.Сумма) КАК СуммаСНДС,
| ВЫБОР
| КОГДА СУММА(втПереданнаяВозвратнаяТара.Количество) = 0
| ТОГДА СУММА(втПереданнаяВозвратнаяТара.Сумма)
| ИНАЧЕ СУММА(втПереданнаяВозвратнаяТара.Сумма) / СУММА(втПереданнаяВозвратнаяТара.Количество)
| КОНЕЦ КАК Цена,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС
|ИЗ
| втПереданнаяВозвратнаяТара КАК втПереданнаяВозвратнаяТара
|
|СГРУППИРОВАТЬ ПО
| втПереданнаяВозвратнаяТара.Номенклатура,
| втПереданнаяВозвратнаяТара.Характеристика,
| втПереданнаяВозвратнаяТара.ДокументПередачи
|
|ИМЕЮЩИЕ
| СУММА(втПереданнаяВозвратнаяТара.Количество) > 0");
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.ВыполнитьПакет();
ВыборкаШапка = Результат[1].Выбрать();
ВыборкаШапка.Следующий();
ХозяйственнаяОперация = ПродажиСервер.ПолучитьХозяйственнуюОперациюВозвратаПоРеализации(ВыборкаШапка.ХозяйственнаяОперацияРеализация);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииПоОперации(ДокументОснование,
"ЗаявкаНаВозвратТоваровОтКлиента",
ХозяйственнаяОперация);
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.Ссылка,
ВыборкаШапка.СтатусДокумента,
ВыборкаШапка.ЕстьОшибкиПроведен,
ВыборкаШапка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов,
ВыборкаШапка.СоглашениеДоступноВнешнимПользователям);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
ТаблицаТоваров = Результат[5].Выгрузить();
ТаблицаТоваров.Сортировать("НоменклатураНабора,ХарактеристикаНабора,Номенклатура,ТипНоменклатуры,Характеристика,Серия,Упаковка");
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
ЭтоНабор = ЗначениеЗаполнено(ТекСтрока.НоменклатураНабора);
Если ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
И Не ЭтоНабор
Или (ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара
И Не ВыборкаШапка.ВернутьМногооборотнуюТару
И Не ЭтоНабор)
Или (ЭтоНабор И Не ТекСтрока.НаборСодержитУслуги) Тогда
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(
НоваяСтрока,
ВыборкаШапка.ЦенаВключаетНДС,
Ложь,
Ложь,
Истина);
КонецЕсли;
КонецЦикла;
ТаблицаТары = Результат[7].Выгрузить();
ТаблицаТары.Сортировать("Номенклатура,Характеристика,ДокументРеализации");
Для каждого ТекущаяСтрока Из ТаблицаТары Цикл
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекущаяСтрока);
Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(НоваяСтрока, ВыборкаШапка.ЦенаВключаетНДС, Ложь, Ложь, Истина);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьДокументПоОтбору(Знач ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("ХозяйственнаяОперация") Тогда
ХозяйственнаяОперация = ДанныеЗаполнения.ХозяйственнаяОперация;
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Партнер = Справочники.Партнеры.РозничныйПокупатель;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
ИначеЕсли ДанныеЗаполнения.Свойство("Партнер") Тогда
Партнер = ДанныеЗаполнения.Партнер;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Организация)
И ДанныеЗаполнения.Свойство("Организация")
И ТипЗнч(ДанныеЗаполнения.Организация) = Тип("СправочникСсылка.Организации") Тогда
Организация = ДанныеЗаполнения.Организация;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииПереданнойТары(Знач РеквизитыЗаполнения)
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыЗаполнения.РеквизитыШапки);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
Если Не ЗначениеЗаполнено(Соглашение) Тогда
ЗаполнитьУсловияПродажПоУмолчанию(Ложь);
Иначе
СрокВозвратаМногооборотнойТары = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Соглашение,
"СрокВозвратаМногооборотнойТары");
КонецЕсли;
Иначе
Если РеквизитыЗаполнения.РеквизитыШапки.ЦенаВключаетНДС = Неопределено Тогда
РеквизитыЦеныПоУмолчанию = Справочники.ВидыЦен.ВидЦеныИПризнакЦенаВключаетНДСПоУмолчанию(
Новый Структура("ИспользоватьПриПродаже", Истина),
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка());
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыЦеныПоУмолчанию);
КонецЕсли;
КонецЕсли;
ВернутьМногооборотнуюТару = Истина;
ТребуетсяЗалогЗаТару = РеквизитыЗаполнения.РеквизитыШапки.ПредусмотренЗалогЗаТару;
Если ЭтоАдресВременногоХранилища(РеквизитыЗаполнения.АдресТарыВоВременномХранилище) Тогда
ПереданнаяТара = ПолучитьИзВременногоХранилища(РеквизитыЗаполнения.АдресТарыВоВременномХранилище);
ВозвращаемыеТовары.Загрузить(ПереданнаяТара);
Для каждого ТекущаяСтрока Из ВозвращаемыеТовары Цикл
ТекущаяСтрока.СуммаСНДС = ТекущаяСтрока.Сумма;
ТекущаяСтрока.КоличествоУпаковок = ТекущаяСтрока.Количество;
ТекущаяСтрока.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(ТекущаяСтрока, ЦенаВключаетНДС, Ложь, Ложь, Истина);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииАктаПоРеализации(Знач ДанныеЗаполнения)
УстановитьПривилегированныйРежим(Истина);
ТекстЗапроса = Документы.АктОРасхожденияхПослеОтгрузки.ТекстЗапросаПерепоставленныйТовар();
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения.ОснованиеАкта);
Запрос.УстановитьПараметр("АктОРасхождениях", ДанныеЗаполнения.АктОРасхождениях);
ПакетЗапросов = Запрос.ВыполнитьПакет();
ВыборкаШапка = ПакетЗапросов[1].Выбрать();
ВыборкаШапка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.Ссылка,
ВыборкаШапка.СтатусДокумента,
ВыборкаШапка.ЕстьОшибкиПроведен,
ВыборкаШапка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
Если ВыборкаШапка.ХозяйственнаяОперацияРеализация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
КонецЕсли;
ТаблицаТоваров = ПакетЗапросов[12].Выгрузить();
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтроке(
НоваяСтрока,
Ложь,
Ложь,
Ложь,
ВыборкаШапка.ЦенаВключаетНДС);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииАктаПоПередаче(Знач ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК СтатусДокумента,
| ПередачаТоваров.Партнер КАК Партнер,
| ПередачаТоваров.Контрагент КАК Контрагент,
| ПередачаТоваров.Соглашение КАК Соглашение,
| ВЫБОР
| КОГДА ПередачаТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| КОНЕЦ КАК ХозяйственнаяОперация,
| ПередачаТоваров.Организация КАК Организация,
| ВЫБОР
| КОГДА ПередачаТоваров.Склад.ЭтоГруппа
| И ПередачаТоваров.Склад.ВыборГруппы = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ПередачаТоваров.Склад
| КОНЕЦ КАК Склад,
| ПередачаТоваров.Договор КАК Договор,
| ПередачаТоваров.Валюта КАК Валюта,
| ПередачаТоваров.Валюта КАК ВалютаВзаиморасчетов,
| ПередачаТоваров.Сделка КАК Сделка,
| ПередачаТоваров.Подразделение КАК Подразделение,
| ПередачаТоваров.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| ЛОЖЬ КАК ЦенаВключаетНДС,
| ПередачаТоваров.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ЛОЖЬ КАК ПредусмотренЗалогЗаТару,
| НЕ ПередачаТоваров.Проведен КАК ЕстьОшибкиПроведен,
| ЛОЖЬ КАК ЕстьОшибкиСтатус
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ПередачаТоваров
|ГДЕ
| ПередачаТоваров.Ссылка = &ДокументОснованиеИсправлениеОснования
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Упаковка КАК Упаковка,
| ТоварыДокумента.Серия КАК Серия,
| СУММА(ТоварыДокумента.Количество) КАК Количество,
| СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок,
| СРЕДНЕЕ(ТоварыДокумента.Цена) КАК Цена,
| СУММА(ТоварыДокумента.Сумма) КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| СУММА(ТоварыДокумента.Сумма) КАК СуммаСНДС
|ПОМЕСТИТЬ ТоварыПередачи
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО ТоварыДокумента.Номенклатура = СпрНоменклатура.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка = &ДокументОснованиеИсправлениеОснования
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Номенклатура,
| СпрНоменклатура.ТипНоменклатуры,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Назначение,
| ТоварыДокумента.Серия,
| ТоварыДокумента.Упаковка
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Серия
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Упаковка КАК Упаковка,
| ТоварыДокумента.Серия КАК Серия,
| СУММА(ТоварыДокумента.Количество) КАК Количество,
| СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок,
| СРЕДНЕЕ(ТоварыДокумента.Цена) КАК Цена,
| СУММА(ТоварыДокумента.Сумма) КАК Сумма,
| ТоварыДокумента.СтавкаНДС КАК СтавкаНДС,
| СУММА(ТоварыДокумента.СуммаНДС) КАК СуммаНДС,
| СУММА(ТоварыДокумента.СуммаСНДС) КАК СуммаСНДС
|ПОМЕСТИТЬ ТоварыПредыдущихВозвратов
|ИЗ
| Документ.ВозвратТоваровОтКлиента.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО ТоварыДокумента.Номенклатура = СпрНоменклатура.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка.Проведен
| И ТоварыДокумента.ДокументРеализации = &ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Номенклатура,
| СпрНоменклатура.ТипНоменклатуры,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Назначение,
| ТоварыДокумента.Упаковка,
| ТоварыДокумента.Серия,
| ТоварыДокумента.СтавкаНДС
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Серия
|;
|
|
|ВЫБРАТЬ
| &ДокументОснование КАК ДокументРеализации,
| ТоварыПередачи.Номенклатура КАК Номенклатура,
| ТоварыПередачи.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыПередачи.Характеристика КАК Характеристика,
| ТоварыПередачи.Назначение КАК Назначение,
| ТоварыПередачи.Упаковка КАК Упаковка,
| ТоварыПередачи.Серия КАК Серия,
| ТоварыПередачи.Количество - ЕСТЬNULL(ТоварыВозвратов.Количество, 0) КАК Количество,
| ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0) КАК КоличествоУпаковок,
| ТоварыПередачи.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0) = 0
| ТОГДА ТоварыПередачи.Цена
| ИНАЧЕ (ТоварыПередачи.Сумма - ЕСТЬNULL(ТоварыВозвратов.Сумма, 0)) / (ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0))
| КОНЕЦ КАК Цена,
| ТоварыПередачи.Сумма - ЕСТЬNULL(ТоварыВозвратов.Сумма, 0) КАК Сумма,
| ТоварыПередачи.СуммаНДС - ЕСТЬNULL(ТоварыВозвратов.СуммаНДС, 0) КАК СуммаНДС,
| ТоварыПередачи.СуммаСНДС - ЕСТЬNULL(ТоварыВозвратов.СуммаСНДС, 0) КАК СуммаСНДС
|ПОМЕСТИТЬ ВтТовары
|ИЗ
| ТоварыПередачи КАК ТоварыПередачи
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПредыдущихВозвратов КАК ТоварыВозвратов
| ПО ТоварыПередачи.Номенклатура = ТоварыВозвратов.Номенклатура
| И ТоварыПередачи.Характеристика = ТоварыВозвратов.Характеристика
| И ТоварыПередачи.Назначение = ТоварыВозвратов.Назначение
| И ТоварыПередачи.Серия = ТоварыВозвратов.Серия
|ГДЕ
| ТоварыПередачи.Количество - ЕСТЬNULL(ТоварыВозвратов.Количество, 0) > 0
| И (ТоварыПередачи.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
| ИЛИ ТоварыПередачи.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И НЕ ВЫРАЗИТЬ(&ДокументОснование КАК Документ.ПередачаТоваровХранителю).ВернутьМногооборотнуюТару)
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Упаковка,
| Серия,
| &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| АктОРасхождениях.Реализация КАК ДокументРеализации,
| АктОРасхождениях.Номенклатура КАК Номенклатура,
| АктОРасхождениях.Характеристика КАК Характеристика,
| АктОРасхождениях.Назначение КАК Назначение,
| АктОРасхождениях.Упаковка КАК Упаковка,
| АктОРасхождениях.Серия КАК Серия,
| СУММА(АктОРасхождениях.Количество - АктОРасхождениях.КоличествоПоДокументу) КАК Количество,
| СУММА(АктОРасхождениях.КоличествоУпаковок - АктОРасхождениях.КоличествоУпаковокПоДокументу) КАК КоличествоУпаковок,
| СУММА(АктОРасхождениях.Сумма - АктОРасхождениях.СуммаПоДокументу) КАК Сумма,
| СУММА(АктОРасхождениях.СуммаНДС - АктОРасхождениях.СуммаНДСПоДокументу) КАК СуммаНДС,
| СУММА(АктОРасхождениях.СуммаСНДС - АктОРасхождениях.СуммаСНДСПоДокументу) КАК СуммаСНДС
|ПОМЕСТИТЬ ВтАктОРасхожденияхПослеОтгрузки
|ИЗ
| Документ.АктОРасхожденияхПослеОтгрузки.Товары КАК АктОРасхождениях
|ГДЕ
| АктОРасхождениях.Ссылка = &АктОРасхождениях
| И АктОРасхождениях.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеОтгрузки.ВозвратПерепоставленного)
| И АктОРасхождениях.Реализация = &ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| АктОРасхождениях.Реализация,
| АктОРасхождениях.Номенклатура,
| АктОРасхождениях.Характеристика,
| АктОРасхождениях.Назначение,
| АктОРасхождениях.Упаковка,
| АктОРасхождениях.Серия
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Упаковка,
| Серия,
| ДокументРеализации
|;
|
|
|ВЫБРАТЬ
| ВтТовары.ДокументРеализации КАК ДокументРеализации,
| ВтТовары.Номенклатура КАК Номенклатура,
| ВтТовары.Характеристика КАК Характеристика,
| ВтТовары.Назначение КАК Назначение,
| ВтТовары.Серия КАК Серия,
| ВтТовары.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ВтТовары.Количество < АктОРасхождениях.Количество
| ТОГДА ВтТовары.Количество
| ИНАЧЕ АктОРасхождениях.Количество
| КОНЕЦ КАК Количество,
| ВЫБОР
| КОГДА ВтТовары.КоличествоУпаковок < АктОРасхождениях.КоличествоУпаковок
| ТОГДА ВтТовары.КоличествоУпаковок
| ИНАЧЕ АктОРасхождениях.КоличествоУпаковок
| КОНЕЦ КАК КоличествоУпаковок,
| ВтТовары.Цена КАК Цена,
| ВЫБОР
| КОГДА ВтТовары.Сумма < АктОРасхождениях.Сумма
| ТОГДА ВтТовары.Сумма
| ИНАЧЕ АктОРасхождениях.Сумма
| КОНЕЦ КАК Сумма,
| ВтТовары.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА ВтТовары.СуммаНДС < АктОРасхождениях.СуммаНДС
| ТОГДА ВтТовары.СуммаНДС
| ИНАЧЕ АктОРасхождениях.СуммаНДС
| КОНЕЦ КАК СуммаНДС,
| ВЫБОР
| КОГДА ВтТовары.СуммаСНДС < АктОРасхождениях.СуммаСНДС
| ТОГДА ВтТовары.СуммаСНДС
| ИНАЧЕ АктОРасхождениях.СуммаСНДС
| КОНЕЦ КАК СуммаСНДС
|ИЗ
| ВтТовары КАК ВтТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтАктОРасхожденияхПослеОтгрузки КАК АктОРасхождениях
| ПО ВтТовары.Номенклатура = АктОРасхождениях.Номенклатура
| И ВтТовары.Характеристика = АктОРасхождениях.Характеристика
| И ВтТовары.Назначение = АктОРасхождениях.Назначение
| И ВтТовары.Упаковка = АктОРасхождениях.Упаковка
| И ВтТовары.Серия = АктОРасхождениях.Серия
| И ВтТовары.ДокументРеализации = АктОРасхождениях.ДокументРеализации
|
|УПОРЯДОЧИТЬ ПО
| ВтТовары.ДокументРеализации,
| ВтТовары.Номенклатура,
| ВтТовары.Характеристика,
| ВтТовары.Назначение,
| ВтТовары.Серия,
| ВтТовары.Упаковка
|";
Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения.ОснованиеАкта);
Запрос.УстановитьПараметр("АктОРасхождениях", ДанныеЗаполнения.АктОРасхождениях);
Если ДанныеЗаполнения.Свойство("ИсправлениеОснования") И ЗначениеЗаполнено(ДанныеЗаполнения.ИсправлениеОснования) Тогда
Запрос.УстановитьПараметр("ДокументОснованиеИсправлениеОснования", ДанныеЗаполнения.ИсправлениеОснования);
Иначе
Запрос.УстановитьПараметр("ДокументОснованиеИсправлениеОснования", ДанныеЗаполнения.ОснованиеАкта);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ПакетЗапросов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаШапка = ПакетЗапросов[0].Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.Ссылка,
ВыборкаШапка.СтатусДокумента,
ВыборкаШапка.ЕстьОшибкиПроведен,
ВыборкаШапка.ЕстьОшибкиСтатус);
ДокументРеализации = ДанныеЗаполнения.ОснованиеАкта;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
ТаблицаТоваров = ПакетЗапросов[5].Выгрузить();
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтроке(НоваяСтрока, Ложь, Ложь, Ложь, ВыборкаШапка.ЦенаВключаетНДС);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииПередачиТоваровХранителю(Знач ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК ДокументРеализации,
| ПередачаТоваров.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК СтатусДокумента,
| ПередачаТоваров.Партнер КАК Партнер,
| ПередачаТоваров.Контрагент КАК Контрагент,
| ПередачаТоваров.Соглашение КАК Соглашение,
| ВЫБОР
| КОГДА ПередачаТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| КОНЕЦ КАК ХозяйственнаяОперация,
| ПередачаТоваров.Организация КАК Организация,
| ВЫБОР
| КОГДА ПередачаТоваров.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ПередачаТоваров.Склад
| КОНЕЦ КАК Склад,
| ПередачаТоваров.Договор КАК Договор,
| ПередачаТоваров.Валюта КАК Валюта,
| ПередачаТоваров.Валюта КАК ВалютаВзаиморасчетов,
| ПередачаТоваров.Сделка КАК Сделка,
| ПередачаТоваров.Подразделение КАК Подразделение,
| ПередачаТоваров.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС) КАК НалогообложениеНДС,
| ПередачаТоваров.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ЛОЖЬ КАК ПредусмотренЗалогЗаТару,
| НЕ ПередачаТоваров.Проведен КАК ЕстьОшибкиПроведен,
| ЛОЖЬ КАК ЕстьОшибкиСтатус
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ПередачаТоваров
|ГДЕ
| ПередачаТоваров.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ ТоварыДокумента.Назначение
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Упаковка КАК Упаковка,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.Склад КАК Склад,
| СУММА(ТоварыДокумента.Количество) КАК Количество,
| СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок,
| СРЕДНЕЕ(ТоварыДокумента.Цена) КАК Цена,
| СУММА(ТоварыДокумента.Сумма) КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| МАКСИМУМ(ТоварыДокумента.ВидЦены) КАК ВидЦены,
| СУММА(ТоварыДокумента.Сумма) КАК СуммаСНДС
|ПОМЕСТИТЬ ТоварыПередачи
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО ТоварыДокумента.Номенклатура = СпрНоменклатура.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка = &ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Номенклатура,
| СпрНоменклатура.ТипНоменклатуры,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Назначение,
| ТоварыДокумента.Серия,
| ТоварыДокумента.Склад,
| ТоварыДокумента.Упаковка,
| ТоварыДокумента.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Серия
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Упаковка КАК Упаковка,
| ТоварыДокумента.Серия КАК Серия,
| СУММА(ТоварыДокумента.Количество) КАК Количество,
| СУММА(ТоварыДокумента.КоличествоУпаковок) КАК КоличествоУпаковок,
| СРЕДНЕЕ(ТоварыДокумента.Цена) КАК Цена,
| СУММА(ТоварыДокумента.Сумма) КАК Сумма,
| ТоварыДокумента.СтавкаНДС КАК СтавкаНДС,
| СУММА(ТоварыДокумента.СуммаНДС) КАК СуммаНДС,
| СУММА(ТоварыДокумента.СуммаСНДС) КАК СуммаСНДС
|ПОМЕСТИТЬ ТоварыПредыдущихВозвратов
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО ТоварыДокумента.Номенклатура = СпрНоменклатура.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка.Проведен
| И ТоварыДокумента.ДокументРеализации = &ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Номенклатура,
| СпрНоменклатура.ТипНоменклатуры,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Назначение,
| ТоварыДокумента.Упаковка,
| ТоварыДокумента.Серия,
| ТоварыДокумента.СтавкаНДС
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Серия
|;
|
|
|ВЫБРАТЬ
| &ДокументОснование КАК ДокументРеализации,
| ТоварыПередачи.Номенклатура КАК Номенклатура,
| ТоварыПередачи.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыПередачи.Характеристика КАК Характеристика,
| ТоварыПередачи.Назначение КАК Назначение,
| ТоварыПередачи.Упаковка КАК Упаковка,
| ТоварыПередачи.Серия КАК Серия,
| ТоварыПередачи.Склад КАК Склад,
| ТоварыПередачи.Количество - ЕСТЬNULL(ТоварыВозвратов.Количество, 0) КАК Количество,
| ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0) КАК КоличествоУпаковок,
| ТоварыПередачи.СтавкаНДС КАК СтавкаНДС,
| ТоварыПередачи.ВидЦены КАК ВидЦены,
| ВЫБОР
| КОГДА ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0) = 0
| ТОГДА ТоварыПередачи.Цена
| ИНАЧЕ (ТоварыПередачи.Сумма - ЕСТЬNULL(ТоварыВозвратов.Сумма, 0)) / (ТоварыПередачи.КоличествоУпаковок - ЕСТЬNULL(ТоварыВозвратов.КоличествоУпаковок, 0))
| КОНЕЦ КАК Цена,
| ТоварыПередачи.Сумма - ЕСТЬNULL(ТоварыВозвратов.Сумма, 0) КАК Сумма,
| ТоварыПередачи.СуммаНДС - ЕСТЬNULL(ТоварыВозвратов.СуммаНДС, 0) КАК СуммаНДС,
| ТоварыПередачи.СуммаСНДС - ЕСТЬNULL(ТоварыВозвратов.СуммаСНДС, 0) КАК СуммаСНДС
|ИЗ
| ТоварыПередачи КАК ТоварыПередачи
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПредыдущихВозвратов КАК ТоварыВозвратов
| ПО ТоварыПередачи.Номенклатура = ТоварыВозвратов.Номенклатура
| И ТоварыПередачи.Характеристика = ТоварыВозвратов.Характеристика
| И ТоварыПередачи.Назначение = ТоварыВозвратов.Назначение
| И ТоварыПередачи.Серия = ТоварыВозвратов.Серия
|ГДЕ
| ТоварыПередачи.Количество - ЕСТЬNULL(ТоварыВозвратов.Количество, 0) > 0
| И (ТоварыПередачи.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
| ИЛИ ТоварыПередачи.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И НЕ ВЫРАЗИТЬ(&ДокументОснование КАК Документ.ПередачаТоваровХранителю).ВернутьМногооборотнуюТару)
|
|УПОРЯДОЧИТЬ ПО
| &ДокументОснование,
| ТоварыПередачи.Номенклатура,
| ТоварыПередачи.ТипНоменклатуры,
| ТоварыПередачи.Характеристика,
| ТоварыПередачи.Назначение,
| ТоварыПередачи.Склад,
| ТоварыПередачи.Упаковка,
| ТоварыПередачи.Серия";
Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения);
УстановитьПривилегированныйРежим(Истина);
ПакетЗапросов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаШапка = ПакетЗапросов[0].Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.Ссылка,
ВыборкаШапка.СтатусДокумента,
ВыборкаШапка.ЕстьОшибкиПроведен,
ВыборкаШапка.ЕстьОшибкиСтатус);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
ТаблицаТоваров = ПакетЗапросов[3].Выгрузить();
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
НоваяСтрока = ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтроке(НоваяСтрока, Ложь, Ложь, Ложь, Ложь);
КонецЦикла;
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
Возврат;
КонецЕсли;
ЭтоЗаказКакСчет = Не ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
Если Не ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад);
Подразделение = ЗначениеНастроекПовтИсп.ПодразделениеПользователя(Менеджер, Подразделение);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.Касса = Касса;
СтруктураПараметров.ФормаОплаты = ФормаОплаты;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(
Контрагент, ,
БанковскийСчетКонтрагента);
Приоритет = ЗначениеНастроекПовтИсп.ПолучитьПриоритетПоУмолчанию(Приоритет);
НеОтгружатьЧастями = Истина;
ПоступлениеОднойДатой = Истина;
Если ЭтоЗаказКакСчет Тогда
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована;
Иначе
Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента") Тогда
ДатаОтгрузки = ТекущаяДатаСеанса();
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура();
ПараметрыДокумента = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект);
ПоляСтрокой = "ВариантОбеспечения";
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ЗаменяющиеТовары, СтруктураДействий, Неопределено);
ВариантПриемкиТоваров = Константы.ВариантПриемкиТоваров.Получить();
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект, Ложь, ВернутьМногооборотнуюТару);
СтруктураЗаполненияСтавкиНДС.ЗаполнениеНаОснованииКопирование = ЗначениеЗаполнено(ДанныеЗаполнения);
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
КэшВозвращаемыеТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КэшЗаменяющиеТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ВозвращаемыеТовары, СтруктураДействий, КэшВозвращаемыеТовары);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ЗаменяющиеТовары, СтруктураДействий, КэшЗаменяющиеТовары);
СтруктураДействий = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшВозвращаемыеТовары.ОбработанныеСтроки,
СтруктураДействий,
ВозвращаемыеТовары,
Неопределено);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшЗаменяющиеТовары.ОбработанныеСтроки,
СтруктураДействий,
ЗаменяющиеТовары,
Неопределено);
КонецПроцедуры
Процедура ИнициализироватьУсловияПродаж()
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами")
Или ЗначениеЗаполнено(Партнер) И Не ЗначениеЗаполнено(Соглашение) Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецПроцедуры
#Область Прочее
Функция ПолучитьСуммуДокумента()
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Отменено КАК Отменено
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| НЕ Товары.Отменено И
| (Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВернутьМногооборотнуюТару
| ИЛИ &ТребуетсяЗалогЗаТару)
|");
Запрос.УстановитьПараметр("Товары", ВозвращаемыеТовары.Выгрузить(,"Номенклатура,СуммаСНДС,Отменено"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаИтого = Выгрузка[0].СуммаСНДС;
Возврат СуммаИтого;
КонецФункции
Функция ПолучитьСуммуВозвратнойТары()
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Отменено КАК Отменено
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| И НЕ &ТребуетсяЗалогЗаТару
|");
Запрос.УстановитьПараметр("Товары", ЗаменяющиеТовары.Выгрузить(,"Номенклатура,СуммаСНДС,Отменено"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаВозвратнойТарыЗаменяющихСтрок = Выгрузка[0].СуммаСНДС;
Возврат СуммаВозвратнойТарыЗаменяющихСтрок;
КонецФункции
Процедура КонтрольЗаполненияЦенВозвращаемыхТоваров(Отказ)
ПараметрыОтбора = Новый Структура("Отменено", Ложь);
ТаблицаПроверяемыеТовары = ЭтотОбъект.ВозвращаемыеТовары.Выгрузить(ПараметрыОтбора);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВозвратТоваровОтКлиентаТовары.Номенклатура КАК Номенклатура,
| ВозвратТоваровОтКлиентаТовары.НомерСтроки КАК НомерСтроки,
| ВозвратТоваровОтКлиентаТовары.Цена КАК Цена
|ПОМЕСТИТЬ ПроверяемыеТовары
|ИЗ
| &ТаблицаПроверяемыеТовары КАК ВозвратТоваровОтКлиентаТовары
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаТовары.НомерСтроки,
| ВЫБОР
| КОГДА
| ВременнаяТаблицаТовары.Цена = 0
| И (ВременнаяТаблицаТовары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ &ТребуетсяЗалогЗаТару
| ИЛИ НЕ &ВозвратМногооборотнойТары)
| И НЕ &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиЗаполненияЦен
|ИЗ
| ПроверяемыеТовары КАК ВременнаяТаблицаТовары";
Запрос.УстановитьПараметр("ТаблицаПроверяемыеТовары", ТаблицаПроверяемыеТовары);
Запрос.УстановитьПараметр("ВозвратМногооборотнойТары", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЕстьОшибкиЗаполненияЦен Тогда
ТекстОшибки = НСтр("ru='Не заполнена колонка ""Цена"" в строке %НомерСтроки% списка ""Возвращаемые товары""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерСтроки%", Выборка.НомерСтроки);
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ВозвращаемыеТовары", Выборка.НомерСтроки,"Цена"),
,
Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ТекстЗапросаПоТоварамКПоступлению()
ТекстЗапроса = "ВЫБРАТЬ
| ВЫРАЗИТЬ(ТаблицаТовары.НомерСтроки КАК ЧИСЛО) КАК НомерСтроки,
| ВЫРАЗИТЬ(ТаблицаТовары.КодСтроки КАК ЧИСЛО) КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ВЫРАЗИТЬ(ТаблицаТовары.НоменклатураОприходование КАК Справочник.Номенклатура)
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура)
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ВЫРАЗИТЬ(ТаблицаТовары.ХарактеристикаОприходование КАК Справочник.ХарактеристикиНоменклатуры)
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаТовары.Характеристика КАК Справочник.ХарактеристикиНоменклатуры)
| КОНЕЦ КАК Характеристика,
| ВЫРАЗИТЬ(ТаблицаТовары.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВЫРАЗИТЬ(ТаблицаТовары.Количество КАК ЧИСЛО) КАК Количество,
| ВЫРАЗИТЬ(ТаблицаТовары.СуммаСНДС КАК ЧИСЛО) КАК СуммаСНДС,
| ВЫРАЗИТЬ(ТаблицаТовары.Отменено КАК БУЛЕВО) КАК Отменено,
| ВЫРАЗИТЬ(ТаблицаТовары.Склад КАК Справочник.Склады) КАК Склад,
| ВЫРАЗИТЬ(ТаблицаТовары.Серия КАК Справочник.СерииНоменклатуры) КАК Серия,
| &ЗаявкаНаВозвратТоваровОтКлиента КАК Заявка
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Отменено = ЛОЖЬ
|
|ИНДЕКСИРОВАТЬ ПО
| КодСтроки
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| СУММА(ТоварыКПоступлению.КОформлениюНакладныхПоРаспоряжениюПриход
| * &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров) КАК ДопустимоеОтклонение,
| ТоварыКПоступлению.Склад КАК Склад,
| ТоварыКПоступлению.Серия КАК Серия
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Обороты(&НачПериод,&КонПериод,,
| ДокументПоступления = &ЗаявкаНаВозвратТоваровОтКлиента) КАК ТоварыКПоступлению
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Ссылка = ТоварыКПоступлению.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеЕдиницыИзмерения
| ПО ДанныеЕдиницыИзмерения.Ссылка = ДанныеНоменклатуры.ЕдиницаИзмерения
| И ДанныеЕдиницыИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.Склад,
| ТоварыКПоступлению.Серия
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Заявка КАК Заявка,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.Склад КАК Склад,
| СУММА(ТаблицаТовары.СуммаСНДС) КАК СуммаСНДС,
| СУММА(ТаблицаТовары.Количество) КАК Количество,
| ТаблицаТовары.Серия КАК Серия
|
|ПОМЕСТИТЬ ВТТаблицаТоваровКПроверке
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
| ПО ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = ТаблицаТовары.Заявка
| И НЕ ЗаявкаНаВозвратТоваровОтКлиента.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Заявка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Упаковка,
| ТаблицаТовары.Склад,
| ТаблицаТовары.Серия
|;
|
|
|
|ВЫБРАТЬ
| Поступления.Заказ КАК Заказ,
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПриемке,
| Поступления.Серия КАК Серия,
| СУММА(Поступления.Оформлено) КАК Оформлено,
| СУММА(Поступления.Принято) КАК Принято,
| СУММА(Поступления.Заказано) КАК Заказано,
| СУММА(Поступления.ПоОрдерам) КАК ПоОрдерам
|
|ПОМЕСТИТЬ ВтПринято
|ИЗ (ВЫБРАТЬ
| Остатки.ДокументПоступления КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.КОформлениюНакладныхПоРаспоряжениюРасход КАК Оформлено,
| 0 КАК Принято,
| Остатки.Склад КАК Склад,
| Остатки.Серия КАК Серия,
| 0 КАК Заказано,
| Остатки.КОформлениюПоступленийПоОрдерамОборот КАК ПоОрдерам
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(,,,,
| ДокументПоступления = &ЗаявкаНаВозвратТоваровОтКлиента) КАК Остатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаТовары.Заявка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| 0 КАК Оформлено,
| 0 КАК Принято,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Заказано,
| 0 КАК ПоОрдерам
| ИЗ
| ВТТаблицаТоваровКПроверке КАК ТаблицаТовары) КАК Поступления
|СГРУППИРОВАТЬ ПО
| Поступления.Заказ,
| Поступления.Номенклатура,
| Поступления.Характеристика,
| Поступления.Склад,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| Поступления.Серия
|;
|
|
|ВЫБРАТЬ
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| Поступления.Серия КАК Серия,
| ВЫБОР
| КОГДА Поступления.Заказано - Поступления.Оформлено < 0
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| КОГДА НЕ Поступления.ОрдернаяСхемаПриПриемке
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Поступления.Оформлено > Поступления.Принято
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ Поступления.Заказано - Поступления.Принято
| КОНЕЦ
| КОНЕЦ -
| ВЫБОР
| КОГДА Поступления.ПоОрдерам > 0
| ТОГДА Поступления.ПоОрдерам
| ИНАЧЕ 0
| КОНЕЦ КАК КОформлениюОстаток,
| Поступления.Заказано КАК Количество
|ИЗ
| ВтПринято КАК Поступления
|;
|
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК КоэффициентУпаковки,
| ТаблицаТовары.Количество КАК Количество,
| 0,
| ЛОЖЬ
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
| ПО ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = ТаблицаТовары.Заявка
| И ЗаявкаНаВозвратТоваровОтКлиента.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаПоЗаявкамНаВозвратТоваровОтКлиентов()
ТекстЗапроса =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(ТаблицаТовары.НомерСтроки КАК ЧИСЛО) КАК НомерСтроки,
| ВЫРАЗИТЬ(ТаблицаТовары.КодСтроки КАК ЧИСЛО) КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ВЫРАЗИТЬ(ТаблицаТовары.НоменклатураОприходование КАК Справочник.Номенклатура)
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура)
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ВЫРАЗИТЬ(ТаблицаТовары.ХарактеристикаОприходование КАК Справочник.ХарактеристикиНоменклатуры)
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаТовары.Характеристика КАК Справочник.ХарактеристикиНоменклатуры)
| КОНЕЦ КАК Характеристика,
| ВЫРАЗИТЬ(ТаблицаТовары.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВЫРАЗИТЬ(ТаблицаТовары.Количество КАК ЧИСЛО) КАК Количество,
| ВЫРАЗИТЬ(ТаблицаТовары.СуммаСНДС КАК ЧИСЛО) КАК СуммаСНДС,
| ВЫРАЗИТЬ(ТаблицаТовары.Отменено КАК БУЛЕВО) КАК Отменено,
| ВЫРАЗИТЬ(ТаблицаТовары.Склад КАК Справочник.Склады) КАК Склад,
| &ЗаявкаНаВозвратТоваровОтКлиента КАК Заявка
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Отменено = ЛОЖЬ
|
|ИНДЕКСИРОВАТЬ ПО
| КодСтроки
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| СУММА(ТоварыКПоступлению.КОформлениюПоВозвратамКоличествоОборот
| * &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров) КАК ДопустимоеОтклонение,
| ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Склад КАК Склад
|ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая1 КАК ТоварыКПоступлению
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары
| ПО ТоварыКПоступлению.Распоряжение = ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Ссылка
| И ТоварыКПоступлению.КодСтроки = ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.КодСтроки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Ссылка = ТоварыКПоступлению.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеЕдиницыИзмерения
| ПО ДанныеЕдиницыИзмерения.Ссылка = ДанныеНоменклатуры.ЕдиницаИзмерения
| И ДанныеЕдиницыИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Склад
|
| ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| СУММА(ТоварыКПоступлению.КОформлениюПоВозвратамКоличествоОборот
| * &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров) КАК ДопустимоеОтклонение,
| ЗаявкаНаВозвратТоваров.Склад КАК Склад
|ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая2 КАК ТоварыКПоступлению
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваров
| ПО ТоварыКПоступлению.Распоряжение = ЗаявкаНаВозвратТоваров.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Ссылка = ТоварыКПоступлению.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеЕдиницыИзмерения
| ПО ДанныеЕдиницыИзмерения.Ссылка = ДанныеНоменклатуры.ЕдиницаИзмерения
| И ДанныеЕдиницыИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ЗаявкаНаВозвратТоваров.Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Заявка КАК Заявка,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.Склад КАК Склад,
| СУММА(ТаблицаТовары.СуммаСНДС) КАК СуммаСНДС,
| СУММА(ТаблицаТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ВТТаблицаТоваровКПроверке
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
| ПО ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = ТаблицаТовары.Заявка
| И НЕ ЗаявкаНаВозвратТоваровОтКлиента.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Заявка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Упаковка,
| ТаблицаТовары.Склад
|;
|
|
|
|ВЫБРАТЬ
| Поступления.Заказ КАК Заказ,
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПриемке,
| СУММА(Поступления.Оформлено) КАК Оформлено,
| СУММА(Поступления.Принято) КАК Принято,
| СУММА(Поступления.Заказано) КАК Заказано
|ПОМЕСТИТЬ ВтПринято
|ИЗ (ВЫБРАТЬ
| Остатки.Распоряжение КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.ОформленоПоВозвратамКоличествоОборот КАК Оформлено,
| 0 КАК Принято,
| ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Склад КАК Склад,
| 0 КАК Заказано
| ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая3 КАК Остатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары
| ПО Остатки.Распоряжение = ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Ссылка
| И Остатки.КодСтроки = ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.КодСтроки
|
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Остатки.Распоряжение КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.ОформленоПоВозвратамКоличествоОборот КАК Оформлено,
| 0 КАК Принято,
| ЗаявкаНаВозвратТоваров.Склад КАК Склад,
| 0 КАК Заказано
| ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая4 КАК Остатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваров
| ПО Остатки.Распоряжение = ЗаявкаНаВозвратТоваров.Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКПоступлениюОстатки.ДокументПоступления КАК Заказ,
| ТоварыКПоступлениюОстатки.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстатки.Характеристика КАК Характеристика,
| 0 КАК Оформлено,
| ТоварыКПоступлениюОстатки.КОформлениюОрдеровРасход КАК Принято,
| ТоварыКПоступлениюОстатки.Склад КАК Склад,
| 0 КАК Заказано
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(,,,,
| ДокументПоступления = &ЗаявкаНаВозвратТоваровОтКлиента) КАК ТоварыКПоступлениюОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаТовары.Заявка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| 0 КАК Оформлено,
| 0 КАК Принято,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Количество КАК Заказано
| ИЗ
| ВТТаблицаТоваровКПроверке КАК ТаблицаТовары) КАК Поступления
|СГРУППИРОВАТЬ ПО
| Поступления.Заказ,
| Поступления.Номенклатура,
| Поступления.Характеристика,
| Поступления.Склад,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| ВЫБОР
| КОГДА Поступления.Заказано - Поступления.Оформлено < 0
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| КОГДА НЕ Поступления.ОрдернаяСхемаПриПриемке
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Поступления.Оформлено > Поступления.Принято
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ Поступления.Заказано - Поступления.Принято
| КОНЕЦ
| КОНЕЦ КАК КОформлениюОстаток,
| Поступления.Заказано КАК Количество
|ИЗ
| ВтПринято КАК Поступления
|;
|
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК КоэффициентУпаковки,
| ТаблицаТовары.Количество КАК Количество,
| 0,
| ЛОЖЬ
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
| ПО ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = ТаблицаТовары.Заявка
| И ЗаявкаНаВозвратТоваровОтКлиента.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериод";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериод";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение = &ЗаявкаНаВозвратТоваровОтКлиента
| И КодСтроки <> 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, КодСтроки";
ПараметрыФормированияТаблицы.Показатели = "КОформлениюПоВозвратам";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
ЗаявкиНаВозвратОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ЗаявкиНаВозвратОборотыРазвернутая1",
ЗаявкиНаВозвратОборотыРазвернутая1);
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение = &ЗаявкаНаВозвратТоваровОтКлиента
| И КодСтроки = 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика";
ЗаявкиНаВозвратОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ЗаявкиНаВозвратОборотыРазвернутая2",
ЗаявкиНаВозвратОборотыРазвернутая2);
ПараметрыФормированияТаблицы.НачалоПериода = "";
ПараметрыФормированияТаблицы.КонецПериода = "";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение = &ЗаявкаНаВозвратТоваровОтКлиента
| И КодСтроки <> 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, КодСтроки";
ПараметрыФормированияТаблицы.Показатели = "ОформленоПоВозвратам";
ЗаявкиНаВозвратОборотыРазвернутая3 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ЗаявкиНаВозвратОборотыРазвернутая3",
ЗаявкиНаВозвратОборотыРазвернутая3);
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение = &ЗаявкаНаВозвратТоваровОтКлиента
| И КодСтроки = 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика";
ЗаявкиНаВозвратОборотыРазвернутая4 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ЗаявкиНаВозвратОборотыРазвернутая4",
ЗаявкиНаВозвратОборотыРазвернутая4);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли