#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Заказы = Параметры.Заказы;
ДокументИнициатор = Параметры.ДокументИнициатор;
ОтменитьНеотработанныеСтроки = ?(Параметры.Свойство("ОтменитьНеотработанныеСтроки"),
Параметры.ОтменитьНеотработанныеСтроки,
Ложь);
СкорректироватьМерныеТовары = Истина;
СкорректироватьМерныеТоварыПоПриемке = ?(Параметры.Свойство("СкорректироватьМерныеТоварыПоПриемке"),
Параметры.СкорректироватьМерныеТоварыПоПриемке,
Ложь);
СкорректироватьЦены = ?(Параметры.Свойство("СкорректироватьЦены"),
Параметры.СкорректироватьЦены,
Ложь);
ЗакрыватьЗаказы = ?(Параметры.Свойство("ЗакрыватьЗаказы"),
Параметры.ЗакрыватьЗаказы,
Ложь);
ТаблицаТоваровПриход = ?(Параметры.Свойство("ТаблицаТоваровПриход"),
ПолучитьИзВременногоХранилища(Параметры.ТаблицаТоваровПриход),
Неопределено);
ТаблицаТоваровРасход = ?(Параметры.Свойство("ТаблицаТоваровРасход"),
ПолучитьИзВременногоХранилища(Параметры.ТаблицаТоваровРасход),
Неопределено);
Если НЕ ТаблицаТоваровПриход = Неопределено Тогда
УдалитьИзВременногоХранилища(Параметры.ТаблицаТоваровПриход);
КонецЕсли;
Если НЕ ТаблицаТоваровПриход = Неопределено Тогда
УдалитьИзВременногоХранилища(Параметры.ТаблицаТоваровРасход);
КонецЕсли;
Если ЗначениеЗаполнено(Заказы) Тогда
КоличествоНепроведенных = ОбщегоНазначения.ПроверитьПроведенностьДокументов(Заказы.ВыгрузитьЗначения()).Количество();
Если КоличествоНепроведенных = 1 Тогда
ВызватьИсключение НСтр("ru = 'Для выполнения команды необходимо предварительно провести документ.'");
ИначеЕсли КоличествоНепроведенных > 1 Тогда
ВызватьИсключение НСтр("ru = 'Для выполнения команды необходимо предварительно провести документы.'");
КонецЕсли;
Иначе
ВызватьИсключение НСтр("ru = 'Для выполнения команды необходимо выбрать документ.'");
КонецЕсли;
УстановитьУсловноеОформление();
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров =
Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
ЗаполнитьОтклоненияПоЗаказам(ТаблицаТоваровПриход,ТаблицаТоваровРасход);
ЗаполнитьНачальныеНастройки();
ЗаполнитьСтраницыКОтображению(ЭтаФорма);
ЗаполнитьПодсказкиИДекорации();
УстановитьВидимостьЭлементовПриСоздании();
УстановитьТекущуюСтраницуПанелиНавигации(ЭтаФорма);
СформироватьНадписьРасчеты();
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Если ПринудительноЗакрытьФорму Тогда
Возврат;
КонецЕсли;
Если Не Готово И Модифицированность Тогда
СписокКнопок = Новый СписокЗначений();
СписокКнопок.Добавить("Закрыть", НСтр("ru = 'Закрыть'"));
СписокКнопок.Добавить("НеЗакрывать", НСтр("ru = 'Не закрывать'"));
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПередЗакрытиемВопросЗавершение", ЭтотОбъект),
НСтр("ru = 'Закрытие заказов не выполнено. Закрыть форму?'"),
СписокКнопок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос = "Закрыть" Тогда
ПринудительноЗакрытьФорму = Истина;
Закрыть(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьДоступностьЗакрытияЗаказов();
УстановитьВидимостьПричиныОтмены();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОтменитьНепоставленноеПриИзменении(Элемент)
УстановитьВидимостьПричиныОтмены();
УстановитьДоступностьЗакрытияЗаказов();
ЗаполнитьСтраницыКОтображению(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СкорректироватьМерныеТоварыПриИзменении(Элемент)
УстановитьДоступностьЗакрытияЗаказов();
ЗаполнитьСтраницыКОтображению(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СкорректироватьЦеныПриИзменении(Элемент)
УстановитьДоступностьЗакрытияЗаказов();
ЗаполнитьСтраницыКОтображению(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрыватьЗаказыПриИзменении(Элемент)
ЗаполнитьСтраницыКОтображению(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектДляКарточки = ОбъектДляКарточки(Заказы[0].Значение);
Если ТипЗаказа = "ЗаказКлиента" Тогда
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСКлиентами("КарточкаРасчетовСКлиентамиПоДокументамКонтекст",
ОбъектДляКарточки);
ИначеЕсли ТипЗаказа = "ЗаказПоставщику" Тогда
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСПоставщиками("КарточкаРасчетовСПоставщикамиПоДокументамКонтекст",
ОбъектДляКарточки);
ИначеЕсли ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСКлиентами("КарточкаРасчетовСКлиентамиПоДокументамКонтекст",
ОбъектДляКарточки);
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5"
Или ТипЗаказа = "ЗаказПереработчику"
Или Ложь Тогда
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСПоставщиками("КарточкаРасчетовСКлиентамиПоДокументамКонтекст",
ОбъектДляКарточки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОбъектДляКарточки(Заказ)
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказ,"ПорядокРасчетов,Договор");
Если РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
Возврат РеквизитыЗаказа.Договор;
Иначе
Возврат Заказ;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТоварыКОтмене
&НаКлиенте
Процедура ТоварыКОтменеОтгрузкаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.ТоварыКОтменеОтгрузка.ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "ТоварыКОтменеОтгрузкаЗаказ" Тогда
ПоказатьЗначение(Неопределено, Элементы.ТоварыКОтменеОтгрузка.ТекущиеДанные.Заказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКОтменеПриемкаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.ТоварыКОтменеПриемка.ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "ТоварыКОтменеПриемкаЗаказ" Тогда
ПоказатьЗначение(Неопределено, Элементы.ТоварыКОтменеПриемка.ТекущиеДанные.Заказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МерныеТоварыККорректировкеПриемкаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.МерныеТоварыККорректировкеПриемка.ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "МерныеТоварыККорректировкеПриемкаЗаказ" Тогда
ПоказатьЗначение(Неопределено, Элементы.МерныеТоварыККорректировкеПриемка.ТекущиеДанные.Заказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МерныеТоварыККорректировкеОтгрузкаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.МерныеТоварыККорректировкеОтгрузка.ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "МерныеТоварыККорректировкеОтгрузкаЗаказ" Тогда
ПоказатьЗначение(Неопределено, Элементы.МерныеТоварыККорректировкеОтгрузка.ТекущиеДанные.Заказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОтклоненияЦен
&НаКлиенте
Процедура ОтклоненияЦенВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.ОтклоненияЦен.ТекущиеДанные <> Неопределено Тогда
Если Поле.Имя = "ОтклоненияЦенЗаказПоставщику" Тогда
ПоказатьЗначение(Неопределено, Элементы.ОтклоненияЦен.ТекущиеДанные.ЗаказПоставщику);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗаказыКЗакрытию
&НаКлиенте
Процедура НеотработанныеЗаказыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПоказатьЗначение(Неопределено, Элементы.НеотработанныеЗаказы.ТекущиеДанные.Заказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТоварыРасхожденияДвухходовки
&НаКлиенте
Процедура ТоварыРасхождениеПоДвухходовкеДекорацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючНазначенияИспользования", "ПомощникЗакрытияЗаказов");
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "СтраницаРаспоряженияНаПоступление");
ОткрытьФорму("Обработка.ЖурналДокументовЗакупки.Форма.СписокНакладныеКОформлению", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Далее(Команда)
ОчиститьСообщения();
Если ИспользоватьПричиныОтменыЗаказов И ОтменитьНеотработанныеСтроки И НЕ ЗначениеЗаполнено(ПричинаОтмены) Тогда
ТекстОшибки = НСтр("ru='Поле ""Причина отмены"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,,"ПричинаОтмены",,);
Возврат;
КонецЕсли;
ИндексТекущейСтраницы =
СтраницыКОтображению.Индекс(СтраницыКОтображению.НайтиПоЗначению(Элементы.Страницы.ТекущаяСтраница.Имя));
Элементы.Страницы.ТекущаяСтраница = Элементы.Найти(СтраницыКОтображению[ИндексТекущейСтраницы+1]);
УстановитьТекущуюСтраницуПанелиНавигации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Назад(Команда)
ИндексТекущейСтраницы =
СтраницыКОтображению.Индекс(СтраницыКОтображению.НайтиПоЗначению(Элементы.Страницы.ТекущаяСтраница.Имя));
Элементы.Страницы.ТекущаяСтраница = Элементы.Найти(СтраницыКОтображению[ИндексТекущейСтраницы-1]);
УстановитьТекущуюСтраницуПанелиНавигации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Готово(Команда)
ОчиститьСообщения();
Если ИспользоватьПричиныОтменыЗаказов И ОтменитьНеотработанныеСтроки И НЕ ЗначениеЗаполнено(ПричинаОтмены) Тогда
ТекстОшибки = НСтр("ru='Поле ""Причина отмены"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,,"ПричинаОтмены",,);
Возврат;
КонецЕсли;
Если ЗаказыЗакрыты ИЛИ Элементы.Навигация.ТекущаяСтраница = Элементы.НавигацияВсеЗаказыЗакрыты Тогда
Готово = Истина;
Закрыть();
Иначе
СтруктураДополнительныхПараметров = Новый Структура;
СтруктураДополнительныхПараметров.Вставить("ИмяТабличнойЧасти", "Товары");
СтруктураДополнительныхПараметров.Вставить("ПричинаОтмены", ПричинаОтмены);
СтруктураДополнительныхПараметров.Вставить("ПроверятьОстатки", Ложь);
СтруктураДополнительныхПараметров.Вставить("ОтменитьНеотработанныеСтроки", ОтменитьНеотработанныеСтроки);
СтруктураДополнительныхПараметров.Вставить("СкорректироватьМерныеТовары", СкорректироватьМерныеТовары);
СтруктураДополнительныхПараметров.Вставить("СкорректироватьМерныеТоварыПоПриемке", СкорректироватьМерныеТоварыПоПриемке);
СтруктураДополнительныхПараметров.Вставить("СкорректироватьЦены", СкорректироватьЦены);
СтруктураДополнительныхПараметров.Вставить("ЗакрыватьЗаказы", ЗакрыватьЗаказы);
Если ОтклоненияЦен.Количество() > 0 Тогда
СтруктураДополнительныхПараметров.Вставить("ОтклоненияЦен", ОтклоненияЦен);
КонецЕсли;
Если Заказы.Количество() = 1 И ДокументИнициатор = Заказы[0].Значение Тогда
ОповеститьОВыборе(СтруктураДополнительныхПараметров);
Возврат;
КонецЕсли;
ГотовоСервер(ЗакрыватьЗаказы, Заказы, СтруктураДополнительныхПараметров);
Оповестить("ЗакрытиеЗаказов", ДокументИнициатор);
Если НеотработанныеЗаказы.Количество() > 0 Тогда
Элементы.ЗакрытиеЗаказовДекорацияНеудача.Заголовок = СформироватьТекстОбработано();
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаЗакрытиеЗаказов;
Элементы.Навигация.ТекущаяСтраница = Элементы.НавигацияВсеЗаказыЗакрыты;
Иначе
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Справка(Команда)
ОткрытьСправкуФормы();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроцедурыИФункцииУстановкиВидимостиИДоступности
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЗаказПоставщику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаПоступления");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаПоступления");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Green);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаПоступления");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаПоступления");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Green);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКОтменеПриемкаЕдиницаИзмерения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТоварыКОтмене.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПриСоздании()
ПараметрыОтбора = Новый Структура("ЭтоОтгрузка", Истина);
СтрокиОтгрузки = МерныеТоварыККорректировке.НайтиСтроки(ПараметрыОтбора);
ПараметрыОтбора = Новый Структура("ЭтоОтгрузка", Ложь);
СтрокиПриемки = МерныеТоварыККорректировке.НайтиСтроки(ПараметрыОтбора);
ЕстьМерныеТоварыККорректировке = СтрокиОтгрузки.Количество() > 0;
ЕстьМерныеТоварыККорректировкеПоПриемке = СтрокиПриемки.Количество() > 0;
Элементы.СкорректироватьМерныеТовары.Видимость = ЕстьМерныеТоварыККорректировке;
Элементы.СкорректироватьМерныеТоварыПоПриемке.Видимость = ЕстьМерныеТоварыККорректировкеПоПриемке;
ЕстьТоварыКОтмене = ТоварыКОтмене.Количество() > 0;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
"ГруппаНачалоОтменитьНепоставленные",
"Видимость",
ЕстьТоварыКОтмене);
ЕстьРазличияЦен = ОтклоненияЦен.Количество() > 0;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
"ГруппаНачалоРазличияЦен",
"Видимость",
ЕстьРазличияЦен);
Если ТипЗаказа = "ЗаказНаВнутреннееПотребление" Тогда
Элементы.ЗакрыватьЗаказы.Видимость = Не ЗаказыЗакрыты И Не СтатусЗакрытУстановлен;
Иначе
Элементы.ЗакрыватьЗаказы.Видимость = Не ЗаказыЗакрыты И ИспользуетсяСтатусЗакрыт И Не СтатусЗакрытУстановлен;
КонецЕсли;
Элементы.МерныеТоварыККорректировкеОтгрузкаЗаказ.Видимость = Заказы.Количество() > 1;
Элементы.МерныеТоварыККорректировкеПриемкаЗаказ.Видимость = Заказы.Количество() > 1;
Элементы.ТоварыКОтменеОтгрузкаЗаказ.Видимость = Заказы.Количество() > 1;
Элементы.ТоварыКОтменеПриемкаЗаказ.Видимость = Заказы.Количество() > 1;
Элементы.ТоварыРасхожденияДвухходовкиЗаказ.Видимость = Заказы.Количество() > 1;
Элементы.ОтклоненияЦенЗаказПоставщику.Видимость = Заказы.Количество() > 1;
Элементы.ЗакрыватьЗаказы.ОтображениеПодсказки = ?(ДокументИнициатор = Заказы[0].Значение, ОтображениеПодсказки.Нет, ОтображениеПодсказки.ОтображатьСнизу);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьПричиныОтмены()
Если ОтменитьНеотработанныеСтроки И ИспользоватьПричиныОтменыЗаказов Тогда
Элементы.ГруппаПричинаОтмены.ТекущаяСтраница = Элементы.ПричиныОтменыИспользуются;
Иначе
Элементы.ГруппаПричинаОтмены.ТекущаяСтраница = Элементы.ПричиныОтменыНеИспользуются
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьЗакрытияЗаказов()
Если НЕ ЗаказыЗакрыты
И (СкорректироватьМерныеТовары
Или СкорректироватьМерныеТоварыПоПриемке
Или МерныеТоварыККорректировке.Количество() = 0)
И (ОтменитьНеотработанныеСтроки
Или ТоварыКОтмене.Количество() =0)
И (СкорректироватьЦены
Или ОтклоненияЦен.Количество() =0)
И НЕ СтатусЗакрытУстановлен Тогда
Элементы.ЗакрыватьЗаказы.Доступность = Истина;
Иначе
Элементы.ЗакрыватьЗаказы.Доступность = Ложь;
КонецЕсли;
Если ЗакрыватьЗаказы И НЕ Элементы.ЗакрыватьЗаказы.Доступность Тогда
ЗакрыватьЗаказы = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНачальныеНастройки()
Если ТипЗаказа = "ЗаказКлиента"
ИЛИ ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента"
ИЛИ ТипЗаказа = "ЗаказДавальца"
ИЛИ ТипЗаказа = "ЗаказДавальца2_5" Тогда
ИспользоватьПричиныОтменыЗаказов = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
Элементы.ПричинаОтмены.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ПричиныОтменыЗаказовКлиентов");
ИначеЕсли ТипЗаказа = "ЗаказПоставщику"
ИЛИ ТипЗаказа = "ЗаказПереработчику"
ИЛИ ТипЗаказа = "ЗаказПереработчику2_5" Тогда
ИспользоватьПричиныОтменыЗаказов = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
Элементы.ПричинаОтмены.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ПричиныОтменыЗаказовПоставщикам");
Иначе
ИспользоватьПричиныОтменыЗаказов = Ложь;
КонецЕсли;
ПараметрыОтбора = Новый Структура("ЭтоОтгрузка", Истина);
СтрокиОтгрузки = МерныеТоварыККорректировке.НайтиСтроки(ПараметрыОтбора);
ПараметрыОтбора = Новый Структура("ЭтоОтгрузка", Ложь);
СтрокиПриемки = МерныеТоварыККорректировке.НайтиСтроки(ПараметрыОтбора);
ЕстьМерныеТоварыККорректировке = СтрокиОтгрузки.Количество() > 0;
ЕстьМерныеТоварыККорректировкеПоПриемке = СтрокиПриемки.Количество() > 0;
СкорректироватьМерныеТовары = ЕстьМерныеТоварыККорректировке;
СкорректироватьМерныеТоварыПоПриемке = ЕстьМерныеТоварыККорректировкеПоПриемке;
ОтменитьНеотработанныеСтроки = ОтменитьНеотработанныеСтроки И ТоварыКОтмене.Количество() > 0;
СкорректироватьЦены = СкорректироватьЦены И ОтклоненияЦен.Количество() > 0;
Если (СкорректироватьМерныеТовары
Или СкорректироватьМерныеТоварыПоПриемке
Или МерныеТоварыККорректировке.Количество() = 0)
И (ОтменитьНеотработанныеСтроки
Или ТоварыКОтмене.Количество() = 0)
И (СкорректироватьЦены
Или ОтклоненияЦен.Количество() = 0)
И Не ЗаказыЗакрыты И ЗакрыватьЗаказы И ИспользуетсяСтатусЗакрыт
И НЕ СтатусЗакрытУстановлен Тогда
ЗакрыватьЗаказы = Истина;
Иначе
ЗакрыватьЗаказы = Ложь;
КонецЕсли;
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
СтатусЗакрыт = "Выполнена";
Иначе
СтатусЗакрыт = "Закрыт";
КонецЕсли;
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЭтоОтгрузка", Истина);
Элементы.МерныеТоварыККорректировкеОтгрузка.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрок);
Элементы.ТоварыКОтменеОтгрузка.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрок);
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЭтоОтгрузка", Ложь);
Элементы.МерныеТоварыККорректировкеПриемка.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрок);
Элементы.ТоварыКОтменеПриемка.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрок);
КонецПроцедуры
&НаСервере
Процедура СформироватьНадписьРасчеты()
Если ТипЗаказа = "ЗаказКлиента" ИЛИ ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
НеЗакрыватьЗаказыКлиентовБезПолнойОплаты = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты");
НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки");
Если НЕ ИспользуетсяСтатусЗакрыт Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
ИначеЕсли НеЗакрыватьЗаказыКлиентовБезПолнойОплаты И НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузкиБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыКлиентовБезПолнойОплаты Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузки;
Иначе
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
КонецЕсли;
Если Заказы.Количество() = 1 И ТипЗаказа = "ЗаказКлиента" Тогда
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("Состояние", Перечисления.СостоянияЗаказовКлиентов.ПустаяСсылка());
СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено", Ложь);
СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаОтгрузки", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОтгрузки", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
СтруктураСостоянияРасчетов.Вставить("ЕстьРасхожденияОрдерНакладная", Ложь);
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказы[0].Значение, "Договор, Валюта, ПорядокРасчетов");
Документы.ЗаказКлиента.РассчитатьСостояние(
Заказы[0].Значение,
РеквизитыЗаказа.Договор,
СтруктураСостоянияРасчетов);
Элементы.ГруппаЕстьРасхожденияОрдерНакладная.Видимость = СтруктураСостоянияРасчетов.ЕстьРасхожденияОрдерНакладная;
Если РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
ИЛИ РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным Тогда
ТекстОплата = НСтр("ru='Оплачено по заказу: %СуммаОплаты% %Валюта% %ПроцентОплаты%%'");
ТекстОплата = СтрЗаменить(ТекстОплата, "%СуммаОплаты%", Формат(СтруктураСостоянияРасчетов.СуммаОплаты, "ЧДЦ=2; ЧН="));
ТекстОплата = СтрЗаменить(ТекстОплата, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОплата = СтрЗаменить(ТекстОплата, "%ПроцентОплаты%", СтруктураСостоянияРасчетов.ПроцентОплаты);
ТекстОтгрузка = НСтр("ru='Отгружено: %СуммаОтгрузки% %Валюта% %ПроцентОтгрузки%%'");
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%СуммаОтгрузки%", Формат(СтруктураСостоянияРасчетов.СуммаОтгрузки, "ЧДЦ=2; ЧН="));
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%ПроцентОтгрузки%", СтруктураСостоянияРасчетов.ПроцентОтгрузки);
Расчеты = ТекстОплата + ", "+ТекстОтгрузка;
Иначе
Расчеты = СформироватьТекстПорядокРасчетов(РеквизитыЗаказа.ПорядокРасчетов);
КонецЕсли;
ИначеЕсли Заказы.Количество() = 1 И ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
Элементы.ДекорацияЕстьРасхожденияОрдерНакладная.Заголовок = НСтр("ru='Заявка не отгружена или отгружена не полностью'");
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("ЕстьРасхожденияОрдерНакладная", Ложь);
РеквизитыЗаявки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказы[0].Значение,"Договор, Валюта, ПорядокРасчетов");
Документы.ЗаявкаНаВозвратТоваровОтКлиента.РассчитатьСостояние(
Заказы[0].Значение,
РеквизитыЗаявки.Договор,
СтруктураСостоянияРасчетов);
Элементы.ГруппаЕстьРасхожденияОрдерНакладная.Видимость = СтруктураСостоянияРасчетов.ЕстьРасхожденияОрдерНакладная;
Если РеквизитыЗаявки.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
Расчеты = СформироватьТекстПорядокРасчетов(РеквизитыЗаявки.ПорядокРасчетов);
Иначе
СтруктураРасчетов = Документы.ЗаявкаНаВозвратТоваровОтКлиента.РасчетыПоЗаявке(Заказы[0].Значение);
Если Не СтруктураРасчетов.БылиРасчеты Тогда
Расчеты = НСтр("ru='Расчеты по заявке отсутствуют'");
Иначе
ИтогРасчетов = СтруктураРасчетов.НашДолг - СтруктураРасчетов.ДолгКлиента;
Если СтруктураРасчетов.НашДолг > СтруктураРасчетов.ДолгКлиента Тогда
Расчеты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Наш долг по заявке: %1 %2'"),
Формат(ИтогРасчетов,"ЧДЦ=2"),
РеквизитыЗаявки.Валюта);
ИначеЕсли СтруктураРасчетов.ДолгКлиента > СтруктураРасчетов.НашДолг Тогда
Расчеты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Долг клиента по заявке: %1 %2'"),
Формат(ИтогРасчетов*-1,"ЧДЦ=2"),
РеквизитыЗаявки.Валюта);
Иначе
Расчеты = НСтр("ru='Заявка закрыта по расчетам'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗаказа = "ЗаказПоставщику" Тогда
НеЗакрыватьЗаказыПоставщикамБезПолнойОплаты =
ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПоставщикамБезПолнойОплаты");
НеЗакрыватьЗаказыПоставщикамБезПолнойОтгрузки =
ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПоставщикамБезПолногоПоступления");
Если НЕ ИспользуетсяСтатусЗакрыт Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
ИначеЕсли НеЗакрыватьЗаказыПоставщикамБезПолнойОплаты И НеЗакрыватьЗаказыПоставщикамБезПолнойОтгрузки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузкиБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыПоставщикамБезПолнойОплаты Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыПоставщикамБезПолнойОтгрузки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузки;
Иначе
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
КонецЕсли;
Элементы.ДекорацияЕстьРасхожденияОрдерНакладная.Заголовок = НСтр("ru='Заказ не принят или принят не полностью'");
Если Заказы.Количество() = 1 Тогда
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("Состояние", Перечисления.СостоянияЗаказовПоставщикам.ПустаяСсылка());
СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено", Ложь);
СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентПоступления",0);
СтруктураСостоянияРасчетов.Вставить("ЕстьРасхожденияОрдерНакладная", Ложь);
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказы[0].Значение,"Договор,Валюта");
Документы.ЗаказПоставщику.РассчитатьСостояние(
Заказы[0].Значение,
РеквизитыЗаказа.Договор,
СтруктураСостоянияРасчетов);
Элементы.ГруппаЕстьРасхожденияОрдерНакладная.Видимость = СтруктураСостоянияРасчетов.ЕстьРасхожденияОрдерНакладная;
ТекстОплата = НСтр("ru='Оплачено по заказу: %СуммаОплаты% %Валюта% %ПроцентОплаты%%'");
ТекстОплата = СтрЗаменить(ТекстОплата, "%СуммаОплаты%", Формат(СтруктураСостоянияРасчетов.СуммаОплаты, "ЧДЦ=2; ЧН="));
ТекстОплата = СтрЗаменить(ТекстОплата, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОплата = СтрЗаменить(ТекстОплата, "%ПроцентОплаты%", СтруктураСостоянияРасчетов.ПроцентОплаты);
ТекстОтгрузка = НСтр("ru='Поступило: %СуммаПоступления% %Валюта% %ПроцентПоступления%%'");
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%СуммаПоступления%", Формат(СтруктураСостоянияРасчетов.СуммаПоступления, "ЧДЦ=2; ЧН="));
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%ПроцентПоступления%", СтруктураСостоянияРасчетов.ПроцентПоступления);
Расчеты = ТекстОплата + ", "+ТекстОтгрузка;
КонецЕсли;
ИначеЕсли ТипЗаказа = "ЗаказНаВнутреннееПотребление" ИЛИ ТипЗаказа = "ЗаказНаСборку" Тогда
Если ИспользуетсяСтатусЗакрыт Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузки;
Иначе
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
КонецЕсли;
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5"
Или ТипЗаказа = "ЗаказПереработчику"
Или Ложь Тогда
Если ТипЗаказа = "ЗаказПереработчику" Тогда
НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты");
НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки");
Иначе
НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты2_5");
НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки2_5");
КонецЕсли;
Если НЕ ИспользуетсяСтатусЗакрыт Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты И НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузкиБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОплаты;
ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки Тогда
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузки;
Иначе
Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
КонецЕсли;
Если Заказы.Количество() = 1 Тогда
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("Состояние", Перечисления.СостоянияЗаказовПереработчикам.ПустаяСсылка());
СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено", Ложь);
СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПросроченнойОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказы[0].Значение, "Организация, СуммаДокумента, Договор, Валюта, УслугиПоПереработке, ПорядокРасчетов");
Если РеквизитыЗаказа.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете Тогда
СтруктураРасчетов = ВзаиморасчетыСервер.СостояниеВзаиморасчетовОбъектаРасчетов(
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Заказы[0].Значение, "ОбъектРасчетов"),
РеквизитыЗаказа.СуммаДокумента,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком"),
РеквизитыЗаказа.Организация);
СтруктураСостоянияРасчетов.СуммаОплаты = СтруктураРасчетов.СуммаОплат;
СтруктураСостоянияРасчетов.ПроцентОплаты = СтруктураРасчетов.ПроцентОплат;
СтруктураСостоянияРасчетов.СуммаПоступления = СтруктураРасчетов.СуммаПоставок;
СтруктураСостоянияРасчетов.ПроцентПоступления = СтруктураРасчетов.ПроцентПоставок;
Если РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
ИЛИ РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным Тогда
ТекстОплата = НСтр("ru='Оплачено по заказу: %СуммаОплаты% %Валюта% %ПроцентОплаты%%'");
ТекстОплата = СтрЗаменить(ТекстОплата, "%СуммаОплаты%", Формат(СтруктураСостоянияРасчетов.СуммаОплаты, "ЧДЦ=2; ЧН="));
ТекстОплата = СтрЗаменить(ТекстОплата, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОплата = СтрЗаменить(ТекстОплата, "%ПроцентОплаты%", СтруктураСостоянияРасчетов.ПроцентОплаты);
ТекстОтгрузка = НСтр("ru='Поступило: %СуммаПоступления% %Валюта% %ПроцентПоступления%%'");
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%СуммаПоступления%", Формат(СтруктураСостоянияРасчетов.СуммаПоступления, "ЧДЦ=2; ЧН="));
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%Валюта%", РеквизитыЗаказа.Валюта);
ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%ПроцентПоступления%", СтруктураСостоянияРасчетов.ПроцентПоступления);
Расчеты = ТекстОплата + ", "+ТекстОтгрузка;
Иначе
Расчеты = СформироватьТекстПорядокРасчетов(РеквизитыЗаказа.ПорядокРасчетов);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСтраницыКОтображению(Форма)
Если Форма.ЗаказыЗакрыты Тогда
Форма.Элементы.Страницы.ТекущаяСтраница = Форма.Элементы.СтраницаВсеЗаказыЗакрыты;
Возврат;
КонецЕсли;
Форма.СтраницыКОтображению.Очистить();
Форма.СтраницыКОтображению.Добавить("СтраницаНачальная");
ЕстьМерныеОтгрузка =
Форма.МерныеТоварыККорректировке.НайтиСтроки(Новый Структура("ЭтоОтгрузка", Истина)).Количество() > 0;
ЕстьМерныеПриемка =
Форма.МерныеТоварыККорректировке.НайтиСтроки(Новый Структура("ЭтоОтгрузка", Ложь)).Количество() > 0;
ЕстьКОтменеОтгрузка =
Форма.ТоварыКОтмене.НайтиСтроки(Новый Структура("ЭтоОтгрузка", Истина)).Количество() > 0;
ЕстьКОтменеПриемка =
Форма.ТоварыКОтмене.НайтиСтроки(Новый Структура("ЭтоОтгрузка", Ложь)).Количество() > 0;
ЕстьРасхождениеДвухходовки =
Форма.ТоварыРасхожденияДвухходовки.Количество() > 0;
Если Форма.СкорректироватьМерныеТовары Тогда
Если ЕстьМерныеОтгрузка Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаКорректировкаМерныхТоваровОтгрузка");
КонецЕсли;
КонецЕсли;
Если Форма.СкорректироватьМерныеТоварыПоПриемке Тогда
Если ЕстьМерныеПриемка Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаКорректировкаМерныхТоваровПриемка");
КонецЕсли;
КонецЕсли;
Если Форма.ОтменитьНеотработанныеСтроки Тогда
Если ЕстьКОтменеОтгрузка Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаТоварыКОтменеОтгрузка");
КонецЕсли;
Если ЕстьКОтменеПриемка Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаТоварыКОтменеПриемка");
КонецЕсли;
КонецЕсли;
Если ЕстьРасхождениеДвухходовки Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаТоварыРасхожденияДвухходовки");
КонецЕсли;
Если Форма.СкорректироватьЦены Тогда
Форма.СтраницыКОтображению.Добавить("СтраницаРазличияЦен");
КонецЕсли;
УстановитьТекущуюСтраницуПанелиНавигации(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекущуюСтраницуПанелиНавигации(Форма)
Если Форма.СтраницыКОтображению.Количество() < 2 Тогда
Если НЕ Форма.ЗакрыватьЗаказы Тогда
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияВсеЗаказыЗакрыты;
Форма.Элементы.ВсеЗаказыЗакрытыГотово.КнопкаПоУмолчанию = Истина;
Иначе
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияОкончаниеБезНачала;
Форма.Элементы.ОкончаниеБезНачалаГотово.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Возврат;
КонецЕсли;
ПерваяСтраница = Форма.Элементы.Страницы.ТекущаяСтраница = Форма.Элементы.СтраницаНачальная
И НЕ Форма.ЗаказыЗакрыты;
НеПоследняяСтраница = НЕ Форма.Элементы.Страницы.ТекущаяСтраница.Имя
= Форма.СтраницыКОтображению.Получить(Форма.СтраницыКОтображению.Количество()-1).Значение
И НЕ Форма.ЗаказыЗакрыты;
Если ПерваяСтраница Тогда
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияНачало;
Форма.Элементы.НачалоГотово.КнопкаПоУмолчанию = Истина;
ИначеЕсли НеПоследняяСтраница Тогда
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияПродолжение;
Форма.Элементы.ПродолжениеГотово.КнопкаПоУмолчанию = Истина;
ИначеЕсли Форма.ЗаказыЗакрыты Тогда
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияВсеЗаказыЗакрыты;
Форма.Элементы.ВсеЗаказыЗакрытыГотово.КнопкаПоУмолчанию = Истина;
Иначе
Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияОкончание;
Форма.Элементы.ОкончаниеГотово.КнопкаПоУмолчанию = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодсказкиИДекорации()
НастройкиПоТипуЗаказа = НастройкиПадежейПоТипуЗаказа(ТипЗаказа, Заказы.Количество());
ТекстРП = НастройкиПоТипуЗаказа.ТекстРП;
ТекстИП = НастройкиПоТипуЗаказа.ТекстИП;
ТекстДП = НастройкиПоТипуЗаказа.ТекстДП;
СтатусЗакрытПредставление = НастройкиПоТипуЗаказа.СтатусЗакрытПредставление;
ТекстНеОформленаОтгрузка = "";
ТекстНеОформленаПриемка = "";
Если ТипЗаказа = "ЗаказКлиента" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена реализация и не осуществлялась отгрузка'");
ИначеЕсли ТипЗаказа = "ЗаказПоставщику" Тогда
ТекстНеОформленаПриемка = НСтр("ru='не оформлено поступление и не осуществлялась приемка'");
ИначеЕсли ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена реализация замены и не осуществлялась отгрузка'");
ТекстНеОформленаПриемка = НСтр("ru='не оформлен возврат'");
ИначеЕсли ТипЗаказа = "ЗаказНаВнутреннееПотребление" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлено списание и не осуществлялась отгрузка'");
ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена сборка и не осуществлялась отгрузка'");
ТекстНеОформленаПриемка = НСтр("ru='не осуществлялась приемка'");
ИначеЕсли ТипЗаказа = "ЗаказНаПеремещение" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлено перемещение и не осуществлялась отгрузка'");
ТекстНеОформленаПриемка = НСтр("ru='не осуществлялась приемка'");
ИначеЕсли ТипЗаказа = "ЗаказМатериаловВПроизводство" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена передача и не осуществлялась отгрузка'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена передача и не осуществлялась отгрузка'");
ТекстНеОформленаПриемка = НСтр("ru='не оформлено поступление и не осуществлялась приемка'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
ТекстНеОформленаОтгрузка = НСтр("ru='не оформлена передача и не осуществлялась отгрузка'");
ТекстНеОформленаПриемка = НСтр("ru='не оформлено поступление и не осуществлялась приемка'");
КонецЕсли;
ЗаказыКоличество = Заказы.Количество();
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
Заголовок = НСтр("ru='Помощник закрытия заявок'");
Если ЗаказыКоличество = 1 Тогда
Заголовок = НСтр("ru='Помощник закрытия заявки'");
КонецЕсли;
Иначе
Заголовок = НСтр("ru='Помощник закрытия заказов'");
Если ЗаказыКоличество = 1 Тогда
Заголовок = НСтр("ru='Помощник закрытия заказа'");
КонецЕсли;
КонецЕсли;
ТекстИ = ?(ЗначениеЗаполнено(ТекстНеОформленаОтгрузка) И ЗначениеЗаполнено(ТекстНеОформленаПриемка),
НСтр("ru=', а также'"),
"");
ТекстПричинаОтмены = ?(ИспользоватьПричиныОтменыЗаказов, НСтр("ru='Необходимо указать причину отмены.'"), "");
ТекстСтрокиОтгрузка = НСтр("ru='Строки'");
ТекстСтрокиПриемка = НСтр("ru='Строки'");
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ТекстСтрокиОтгрузка = НСтр("ru='Строки заменяющих товаров'");
ТекстСтрокиПриемка = НСтр("ru='Строки возвращаемых товаров'");
ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
ТекстСтрокиОтгрузка = НСтр("ru='Строки списываемых комплектующих / разбираемых комплектов'");
ТекстСтрокиПриемка = НСтр("ru='Строки приходуемых комплектующих / собираемых комплектов'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
ТекстСтрокиОтгрузка = НСтр("ru='Строки сырья и материалов'");
ТекстСтрокиПриемка = НСтр("ru='Строки выходных изделий'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
ТекстСтрокиОтгрузка = НСтр("ru='Строки сырья и материалов'");
ТекстСтрокиПриемка = НСтр("ru='Строки выходных изделий'");
КонецЕсли;
Элементы.СкорректироватьМерныеТовары.Заголовок = НСтр("ru='Скорректировать строки мерных товаров.'");
Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных товаров.'");
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
Элементы.СкорректироватьМерныеТовары.Заголовок = НСтр("ru='Скорректировать строки мерных заменяющих товаров.'");
Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных возвращаемых товаров.'");
ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
Элементы.СкорректироватьМерныеТовары.Заголовок = НСтр("ru='Скорректировать строки мерных списываемых комплектующих / разбираемых комплектов.'");
Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных приходуемых комплектующих / собираемых комплектов.'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
Элементы.СкорректироватьМерныеТовары.Заголовок = НСтр("ru='Скорректировать строки мерных сырья и материалов.'");
Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных выходных изделий.'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
Элементы.СкорректироватьМерныеТовары.Заголовок = НСтр("ru='Скорректировать строки мерных сырья и материалов.'");
Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных выходных изделий.'");
КонецЕсли;
Элементы.СкорректироватьМерныеТовары.РасширеннаяПодсказка.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='В строках %1 с мерными товарами будут устранены расхождения с накладными в пределах допустимых отклонений.'"),
ТекстРП);
Элементы.СкорректироватьМерныеТоварыПоПриемке.РасширеннаяПодсказка.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='В строках %1 с мерными товарами будут устранены расхождения с накладными в пределах допустимых отклонений.'"),
ТекстРП);
Элементы.ГруппаНачалоОтменитьНепоставленные.РасширеннаяПодсказка.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Строки %1, по которым %2%3 %4, будут отменены. %5'"),
ТекстРП,
ТекстНеОформленаОтгрузка,
ТекстИ,
ТекстНеОформленаПриемка,
ТекстПричинаОтмены);
Элементы.ЗакрыватьЗаказы.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Устанавливать статус %1.'"),
СтатусЗакрытПредставление);
Элементы.ЗакрыватьЗаказы.РасширеннаяПодсказка.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='При выполнении необходимых условий %1 будет установлен статус %2.'"),
ТекстДП,
СтатусЗакрытПредставление);
Если Заказы.Количество() = 1 Тогда
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ТекстЗаголовкаБезОплаты = СтрШаблон(НСтр("ru='Частично оплаченная %1 не будет закрыта.'"),ТекстИП);
ТекстЗаголовкаБезОтгрузки = СтрШаблон(НСтр("ru='Частично выполненная %1 не будет закрыта.'"),ТекстИП);
ТекстЗаголовкаБезВсего = СтрШаблон(НСтр("ru='Частично выполненная или частично оплаченная %1 не будет закрыта.'"),ТекстИП);
Иначе
ТекстЗаголовкаБезОплаты = СтрШаблон(НСтр("ru='Частично оплаченный %1 не будет закрыт.'"),ТекстИП);
ТекстЗаголовкаБезОтгрузки = СтрШаблон(НСтр("ru='Частично выполненный %1 не будет закрыт.'"),ТекстИП);
ТекстЗаголовкаБезВсего = СтрШаблон(НСтр("ru='Частично выполненный или частично оплаченный %1 не будет закрыт.'"),ТекстИП);
КонецЕсли;
Иначе
ТекстЗаголовкаБезОплаты = СтрШаблон(НСтр("ru='Частично оплаченные %1 не будет закрыты.'"),ТекстИП);
ТекстЗаголовкаБезОтгрузки = СтрШаблон(НСтр("ru='Частично выполненные %1 не будет закрыты.'"),ТекстИП);
ТекстЗаголовкаБезВсего = СтрШаблон(НСтр("ru='Частично выполненные или частично оплаченные %1 не будет закрыты.'"),ТекстИП);
КонецЕсли;
Элементы.ДекорацияОтгрузкаБезОплаты.Заголовок = ТекстЗаголовкаБезОплаты;
Элементы.ДекорацияОтгрузкаБезОтгрузки.Заголовок = СтрШаблон(
НСтр("ru='%1 Текущее состояние может измениться после корректировок строк.'"),
ТекстЗаголовкаБезОтгрузки);
Элементы.ДекорацияОтгрузкаБезОплатыИлиОтгрузки.Заголовок = СтрШаблон(
НСтр("ru='%1 Текущее состояние может измениться после корректировок строк.'"),
ТекстЗаголовкаБезВсего);
Элементы.МерныеТоварыККорректировкеОтгрузкаДекорация.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2 с мерными товарами, по которым имеются расхождения в пределах допустимых отклонений будут скорректированы.'"),
ТекстСтрокиОтгрузка,
ТекстРП);
Элементы.МерныеТоварыККорректировкеПриемкаДекорация.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2 с мерными товарами, по которым имеются расхождения в пределах допустимых отклонений будут скорректированы.'"),
ТекстСтрокиПриемка,
ТекстРП);
Элементы.ТоварыКОтменеОтгрузкаДекорация.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2, по которым %3, будут отменены.'"),
ТекстСтрокиОтгрузка,
ТекстРП,
ТекстНеОформленаОтгрузка);
Элементы.ТоварыКОтменеПриемкаДекорация.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2, по которым %3, будут отменены.'"),
ТекстСтрокиПриемка,
ТекстРП,
ТекстНеОформленаПриемка);
Элементы.ЗакрытиеЗаказовДекорацияНеудача.Заголовок = СтрШаблон(НСтр("ru='Не удалось обработать %1:'"), ТекстИП);
Если Заказы.Количество() = 1 Тогда
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ТекстЗаголовкаНеудача = СтрШаблон(НСтр("ru='Указанная %1 обработана.'"), ТекстИП);
ТекстЗаголовкаВсеЗакрыты = СтрШаблон(НСтр("ru='Указанная %1 уже закрыта или не требует закрытия.'"),ТекстИП);
Иначе
ТекстЗаголовкаНеудача = СтрШаблон(НСтр("ru='Указанный %1 обработан.'"), ТекстИП);
ТекстЗаголовкаВсеЗакрыты = СтрШаблон(НСтр("ru='Указанный %1 уже закрыт или не требует закрытия.'"),ТекстИП);
КонецЕсли;
Иначе
ТекстЗаголовкаНеудача = СтрШаблон(НСтр("ru='Все %1 обработаны.'"), ТекстИП);
ТекстЗаголовкаВсеЗакрыты = СтрШаблон(НСтр("ru='Все %1 уже закрыты или не требуют закрытия.'"),ТекстИП);
КонецЕсли;
Элементы.ЗакрытиеЗаказовДекорацияНеудача.Заголовок =
СтрШаблон(НСтр("ru='%1 Нажмите ""Закрыть"" для завершения.'"), ТекстЗаголовкаНеудача);
Элементы.ВсеЗаказыЗакрытыДекорация.Заголовок =
СтрШаблон(НСтр("ru='%1 Нажмите ""Закрыть"" для завершения.'"), ТекстЗаголовкаВсеЗакрыты);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция НастройкиПадежейПоТипуЗаказа(ТипЗаказа, ЗаказыКоличество)
Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
Если ЗаказыКоличество = 1 Тогда
ТекстРП = НСтр("ru='заявки'");
ТекстИП = НСтр("ru='заявка'");
ТекстДП = НСтр("ru='заявке'");
Иначе
ТекстРП = НСтр("ru='заявок'");
ТекстИП = НСтр("ru='заявки'");
ТекстДП = НСтр("ru='заявкам'");
КонецЕсли;
ТекстИПЕЧ = НСтр("ru='заявка'");
ТекстИПМЧ = НСтр("ru='заявки'");
СтатусЗакрытПредставление = НСтр("ru='""Выполнена""'");
Иначе
Если ЗаказыКоличество = 1 Тогда
ТекстРП = НСтр("ru='заказа'");
ТекстИП = НСтр("ru='заказ'");
ТекстДП = НСтр("ru='заказу'");
Иначе
ТекстРП = НСтр("ru='заказов'");
ТекстИП = НСтр("ru='заказы'");
ТекстДП = НСтр("ru='заказам'");
КонецЕсли;
ТекстИПЕЧ = НСтр("ru='заказ'");
ТекстИПМЧ = НСтр("ru='заказы'");
СтатусЗакрытПредставление = НСтр("ru='""Закрыт""'");
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("ТекстРП", ТекстРП);
Результат.Вставить("ТекстИП", ТекстИП);
Результат.Вставить("ТекстИПЕЧ", ТекстИПЕЧ);
Результат.Вставить("ТекстИПМЧ", ТекстИПМЧ);
Результат.Вставить("ТекстДП", ТекстДП);
Результат.Вставить("СтатусЗакрытПредставление", СтатусЗакрытПредставление);
Возврат Результат;
КонецФункции
&НаСервере
Функция СформироватьТекстПорядокРасчетов(ПорядокРасчетов)
Расчеты = "";
Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
Расчеты = НСтр("ru='Расчеты по договору'");
КонецЕсли;
Возврат Расчеты;
КонецФункции
#КонецОбласти
#Область ЗаполнениеТабличныхЧастей
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказам(ТаблицаТоваровПриход, ТаблицаТоваровРасход)
Если ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
ТипЗаказа = "ЗаказПоставщику";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПоставщикамБезПолногоПоступления")
ИЛИ ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПоставщикамБезПолнойОплаты");
ЗаполнитьОтклоненияПоЗаказамПоставщикам();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ТипЗаказа = "ЗаказКлиента";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты")
ИЛИ ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки");
ЗаполнитьОтклоненияПоЗаказамКлиентов(ТаблицаТоваровРасход);
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказНаВнутреннееПотребление") Тогда
ТипЗаказа = "ЗаказНаВнутреннееПотребление";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыНаВнутреннееПотреблениеБезПолнойОтгрузки");
ЗаполнитьОтклоненияПоЗаказамНаВнутреннееПотребление();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказНаПеремещение") Тогда
ТипЗаказа = "ЗаказНаПеремещение";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыНаПеремещениеБезПолнойОтгрузки");
ЗаполнитьОтклоненияПоЗаказамНаПеремещение();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказНаСборку") Тогда
ТипЗаказа = "ЗаказНаСборку";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыНаСборкуБезПолнойОтгрузки");
ЗаполнитьОтклоненияПоЗаказамНаСборку();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты")
ИЛИ ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки");
ЗаполнитьОтклоненияПоЗаявкамНаВозвратТоваровОтКлиента(ТаблицаТоваровПриход, ТаблицаТоваровРасход);
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказПереработчику") Тогда
ТипЗаказа = "ЗаказПереработчику";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам");
ЗаполнитьОтклоненияПоЗаказамПереработчикам();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ТипЗаказа = "ЗаказПереработчику2_5";
ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5");
ЗаполнитьОтклоненияПоЗаказамПереработчикам();
ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказМатериаловВПроизводство") Тогда
ТипЗаказа = "ЗаказМатериаловВПроизводство";
ИспользуетсяСтатусЗакрыт = Истина;
ЗаполнитьОтклоненияПоЗаказамМатериаловВПроизводство();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамПоставщикам()
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказПоставщику.Ссылка КАК ЗаказПоставщику
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
| И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| Остатки.ЗаказПоставщику КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.Склад КАК Склад,
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(Остатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Подтвержден)
| ТОГДА Остатки.КОформлениюКонечныйОстаток
| ИНАЧЕ Остатки.ЗаказаноКонечныйОстаток
| КОНЕЦ КАК Количество,
| Остатки.ЗаказаноПриход КАК Заказано
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
| ,, ЗаказПоставщику В (&ЗаказыПоставщикам)) КАК Остатки
|ГДЕ
| Остатки.КОформлениюКонечныйОстаток <> 0
| ИЛИ Остатки.ЗаказаноКонечныйОстаток <> 0
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
| ТоварыКПоступлению.ЗаказПоставщику КАК Заказ,
| СУММА(ТоварыКПоступлению.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Обороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
| , ЗаказПоставщику В (&ЗаказыПоставщикам)) КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.Склад,
| ТоварыКПоступлению.ЗаказПоставщику
|;
|
|
|ВЫБРАТЬ
| ЗаказПоставщику.Ссылка КАК ЗаказПоставщику
|ПОМЕСТИТЬ ВТРаспоряжения
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
| И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПоставщику.Договор КАК ЗаказПоставщику
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
| И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
| И &ИспользоватьСтатусЗакрыт
| И ЗаказПоставщику.Договор.ВариантПриемкиТоваров В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных))
|
|;
|
|
|ВЫБРАТЬ
| РасхождениеДвухходовки.ДокументПоступления КАК Заказ,
| РасхождениеДвухходовки.Номенклатура КАК Номенклатура,
| РасхождениеДвухходовки.Характеристика КАК Характеристика,
| РасхождениеДвухходовки.Назначение КАК Назначение,
| РасхождениеДвухходовки.Серия КАК Серия,
| РасхождениеДвухходовки.КОформлениюПоступленийПоНакладнымОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(
| ,
| ДокументПоступления В (
| ВЫБРАТЬ
| Распоряжения.ЗаказПоставщику
| ИЗ
| ВТРаспоряжения КАК Распоряжения
| )) КАК РасхождениеДвухходовки
|ГДЕ
| РасхождениеДвухходовки.КОформлениюПоступленийПоНакладнымОстаток <> 0
| И &ИспользуетсяДвухходовка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаказыПоставщикам.Регистратор КАК ДокументПоступления,
| ВЫРАЗИТЬ(ЗаказыПоставщикам.ЗаказПоставщику КАК Документ.ЗаказПоставщику) КАК ЗаказПоставщику
|ПОМЕСТИТЬ ДокументыПоступления
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
|ГДЕ
| ЗаказыПоставщикам.ЗаказПоставщику В (&ЗаказыПоставщикам)
| И ЗаказыПоставщикам.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
|;
|
|ВЫБРАТЬ
| ПриобретениеТоваровУслугТовары.КодСтроки КАК КодСтроки,
| ДокументыПоступления.ДокументПоступления.Валюта КАК Валюта,
| ДокументыПоступления.ДокументПоступления.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДокументыПоступления.ДокументПоступления.КурсЗнаменатель КАК КурсЗнаменатель,
| ДокументыПоступления.ДокументПоступления.КурсЧислитель КАК КурсЧислитель,
| НАЧАЛОПЕРИОДА(ДокументыПоступления.ДокументПоступления.Дата, ДЕНЬ) КАК Дата,
| ПриобретениеТоваровУслугТовары.Цена КАК Цена,
| ПриобретениеТоваровУслугТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ПриобретениеТоваровУслугТовары.Сумма КАК Сумма,
| ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
| ПриобретениеТоваровУслугТовары.Количество КАК Количество,
| ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ПриобретениеТоваровУслугТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ПриобретениеТоваровУслугТовары.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК КоэффициентПересчетаУпаковки,
| ПриобретениеТоваровУслугТовары.Ссылка КАК Приобретение
|ПОМЕСТИТЬ ПриобретениеТоваровУслугТовары
|ИЗ
| ДокументыПоступления КАК ДокументыПоступления
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
| ПО ДокументыПоступления.ДокументПоступления = ПриобретениеТоваровУслугТовары.Ссылка
|ГДЕ
| ПриобретениеТоваровУслугТовары.КодСтроки > 0
| И ПриобретениеТоваровУслугТовары.ЗаказПоставщику В (&ЗаказыПоставщикам)
|
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриобретениеТоваровУслугТовары.Валюта КАК Валюта,
| ПриобретениеТоваровУслугТовары.Дата КАК Дата,
| ДокументЗаказПоставщику.Валюта КАК ВалютаЗаказа,
| ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета КАК ВалютаРеглУчета,
| ДокументЗаказПоставщику.Организация.ВалютаРегламентированногоУчета КАК ВалютаРеглУчетаЗаказа
|ПОМЕСТИТЬ ДатыКурсовВалютПоступлений
|ИЗ
| ПриобретениеТоваровУслугТовары КАК ПриобретениеТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ДокументЗаказПоставщику
| ПО ПриобретениеТоваровУслугТовары.ЗаказПоставщику = ДокументЗаказПоставщику.Ссылка
|ГДЕ
| НЕ ПриобретениеТоваровУслугТовары.Валюта = ДокументЗаказПоставщику.Валюта
| И НЕ ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов = ДокументЗаказПоставщику.Валюта
|;
|
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДатыКурсовВалютПоступлений.Валюта КАК Валюта,
| ДатыКурсовВалютПоступлений.Дата КАК Дата,
| ДатыКурсовВалютПоступлений.ВалютаРеглУчета КАК ВалютаРеглУчета
|ПОМЕСТИТЬ ДатыКурсовВалют
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДатыКурсовВалютПоступлений.ВалютаЗаказа КАК Валюта,
| ДатыКурсовВалютПоступлений.Дата КАК Дата,
| ДатыКурсовВалютПоступлений.ВалютаРеглУчетаЗаказа КАК ВалютаРеглУчета
|
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта,
| Дата
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Дата КАК Дата,
| ВложенныйЗапрос.Валюта КАК Валюта,
| КурсыВалют.КурсЧислитель КАК КурсЧислитель,
| КурсыВалют.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ КурсыВалютДляПересчета
|ИЗ
| (ВЫБРАТЬ
| ДатыКурсовВалют.Дата КАК Дата,
| КурсыВалют.Валюта КАК Валюта,
| КурсыВалют.БазоваяВалюта КАК БазоваяВалюта,
| МАКСИМУМ(КурсыВалют.Период) КАК Период
| ИЗ
| ДатыКурсовВалют КАК ДатыКурсовВалют
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ДатыКурсовВалют.Валюта = КурсыВалют.Валюта
| И ДатыКурсовВалют.Дата >= КурсыВалют.Период
| И ДатыКурсовВалют.ВалютаРеглУчета >= КурсыВалют.БазоваяВалюта
|
| СГРУППИРОВАТЬ ПО
| ДатыКурсовВалют.Дата,
| КурсыВалют.Валюта,
| КурсыВалют.БазоваяВалюта) КАК ВложенныйЗапрос
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ВложенныйЗапрос.Валюта = КурсыВалют.Валюта
| И ВложенныйЗапрос.БазоваяВалюта = КурсыВалют.БазоваяВалюта
| И ВложенныйЗапрос.Период = КурсыВалют.Период
|;
|
|
|ВЫБРАТЬ
| ДатыКурсовВалютПоступлений.Дата КАК Дата,
| ДатыКурсовВалютПоступлений.Валюта КАК Валюта,
| КурсыВалютЗаказа.Валюта КАК ВалютаЗаказа,
| КурсыВалютПриобретений.КурсЧислитель * КурсыВалютЗаказа.КурсЗнаменатель /
| (КурсыВалютЗаказа.КурсЧислитель * КурсыВалютПриобретений.КурсЗнаменатель) КАК КоэффициентПересчета
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютПриобретений
| ПО
| ДатыКурсовВалютПоступлений.Дата = КурсыВалютПриобретений.Дата
| И ДатыКурсовВалютПоступлений.Валюта = КурсыВалютПриобретений.Валюта
|
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютЗаказа
| ПО ДатыКурсовВалютПоступлений.Дата = КурсыВалютЗаказа.Дата
| И КурсыВалютЗаказа.Валюта = ДатыКурсовВалютПоступлений.ВалютаЗаказа
|;
|
|
|ВЫБРАТЬ
| ТоварыЗаказа.Ссылка КАК ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.Номенклатура КАК Номенклатура,
| ТоварыЗаказа.Характеристика КАК Характеристика,
| ТоварыЗаказа.Ссылка.Валюта КАК ВалютаЗаказа,
| ТоварыЗаказа.Количество КАК Количество,
| ТоварыЗаказа.Цена КАК Цена,
| ТоварыЗаказа.Сумма КАК Сумма,
| ТоварыЗаказа.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ТоварыЗаказа.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) КАК КоэффициентПересчетаУпаковки
|ПОМЕСТИТЬ ТоварыЗаказа
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.Ссылка В(&ЗаказыПоставщикам)
| И ТоварыЗаказа.Ссылка.Проведен
| И НЕ ТоварыЗаказа.Отменено
|;
|
|
|ВЫБРАТЬ
| ТоварыЗаказа.ЗаказПоставщику КАК ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
| ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
| ПриобретениеТоваровУслугТовары.Цена / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена
| КОНЕЦ * ПриобретениеТоваровУслугТовары.Количество / ПриобретениеТоваровУслугТовары.КоэффициентПересчетаУпаковки КАК ЧИСЛО(31, 2))) КАК СуммаЦенПоступления,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
| ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
| ПриобретениеТоваровУслугТовары.Сумма / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма
| КОНЕЦ КАК ЧИСЛО(31, 2))) КАК СуммаПоступления,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
| ВЫБОР
| КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
| ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки
| КОНЕЦ КАК ЧИСЛО(31, 2))) КАК СуммаРучнойСкидкиПоступления,
| СУММА(ПриобретениеТоваровУслугТовары.Количество) КАК КоличествоПоступления,
| МАКСИМУМ(ПриобретениеТоваровУслугТовары.ПроцентРучнойСкидки) КАК ПроцентРучнойСкидкиПоступления
|ПОМЕСТИТЬ ДанныеПоЦенамПоступлений
|ИЗ
| ТоварыЗаказа КАК ТоварыЗаказа
| ЛЕВОЕ СОЕДИНЕНИЕ ПриобретениеТоваровУслугТовары КАК ПриобретениеТоваровУслугТовары
| ПО ТоварыЗаказа.ЗаказПоставщику = ПриобретениеТоваровУслугТовары.ЗаказПоставщику
| И ТоварыЗаказа.КодСтроки = ПриобретениеТоваровУслугТовары.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО ПриобретениеТоваровУслугТовары.Валюта = КурсыВалют.Валюта
| И ПриобретениеТоваровУслугТовары.Дата = КурсыВалют.Дата
| И ТоварыЗаказа.ВалютаЗаказа = КурсыВалют.ВалютаЗаказа
|СГРУППИРОВАТЬ ПО
| ТоварыЗаказа.ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки
|;
|
|
|ВЫБРАТЬ
| ТоварыЗаказа.ЗаказПоставщику КАК ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.ВалютаЗаказа КАК ВалютаЗаказа,
| ТоварыЗаказа.Номенклатура КАК Номенклатура,
| ТоварыЗаказа.Характеристика КАК Характеристика,
| МАКСИМУМ(ДанныеПоЦенамПоступлений.ПроцентРучнойСкидкиПоступления) КАК ПроцентРучнойСкидкиПоступления,
| ВЫРАЗИТЬ(СРЕДНЕЕ(ДанныеПоЦенамПоступлений.СуммаЦенПоступления / ДанныеПоЦенамПоступлений.КоличествоПоступления * ТоварыЗаказа.КоэффициентПересчетаУпаковки)
| КАК ЧИСЛО(31,2)) КАК ЦенаПоступления,
| ДанныеПоЦенамПоступлений.СуммаПоступления КАК СуммаПоступления,
| ДанныеПоЦенамПоступлений.СуммаРучнойСкидкиПоступления КАК СуммаРучнойСкидкиПоступления,
| ДанныеПоЦенамПоступлений.КоличествоПоступления КАК КоличествоПоступления,
| NULL КАК КоличествоЗаказа,
| NULL КАК ЦенаЗаказа,
| NULL КАК СуммаЗаказа,
| NULL КАК ПроцентРучнойСкидкиЗаказа
|ПОМЕСТИТЬ ОтклоненияЦен
|ИЗ
| ТоварыЗаказа КАК ТоварыЗаказа
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоЦенамПоступлений КАК ДанныеПоЦенамПоступлений
| ПО ТоварыЗаказа.ЗаказПоставщику = ДанныеПоЦенамПоступлений.ЗаказПоставщику
| И ТоварыЗаказа.КодСтроки = ДанныеПоЦенамПоступлений.КодСтроки
|СГРУППИРОВАТЬ ПО
| ТоварыЗаказа.Номенклатура,
| ТоварыЗаказа.Характеристика,
| ТоварыЗаказа.ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки,
| ТоварыЗаказа.ВалютаЗаказа,
| ДанныеПоЦенамПоступлений.СуммаПоступления,
| ДанныеПоЦенамПоступлений.СуммаРучнойСкидкиПоступления,
| ДанныеПоЦенамПоступлений.КоличествоПоступления
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыЗаказа.ЗаказПоставщику КАК ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.ВалютаЗаказа КАК ВалютаЗаказа,
| ТоварыЗаказа.Номенклатура КАК Номенклатура,
| ТоварыЗаказа.Характеристика КАК Характеристика,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| ТоварыЗаказа.Количество КАК КоличествоЗаказа,
| ТоварыЗаказа.Цена КАК ЦенаЗаказа,
| ТоварыЗаказа.Сумма КАК СуммаЗаказа,
| ТоварыЗаказа.ПроцентРучнойСкидки КАК ПроцентРучнойСкидкиЗаказа
|ИЗ
| ТоварыЗаказа КАК ТоварыЗаказа
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоЦенамПоступлений КАК ДанныеПоЦенамПоступлений
| ПО ТоварыЗаказа.ЗаказПоставщику = ДанныеПоЦенамПоступлений.ЗаказПоставщику
| И ТоварыЗаказа.КодСтроки = ДанныеПоЦенамПоступлений.КодСтроки
|СГРУППИРОВАТЬ ПО
| ТоварыЗаказа.Номенклатура,
| ТоварыЗаказа.Характеристика,
| ТоварыЗаказа.ЗаказПоставщику,
| ТоварыЗаказа.КодСтроки,
| ТоварыЗаказа.ВалютаЗаказа,
| ТоварыЗаказа.Цена,
| ТоварыЗаказа.Сумма,
| ТоварыЗаказа.Количество,
| ТоварыЗаказа.ПроцентРучнойСкидки
|;
|
|
|ВЫБРАТЬ
| ОтклоненияЦен.ЗаказПоставщику КАК ЗаказПоставщику,
| ОтклоненияЦен.КодСтроки КАК КодСтроки,
| ОтклоненияЦен.Номенклатура КАК Номенклатура,
| ОтклоненияЦен.Характеристика КАК Характеристика,
| ОтклоненияЦен.ВалютаЗаказа КАК ВалютаЗаказа,
| СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) КАК ЦенаЗаказа,
| СУММА(ОтклоненияЦен.СуммаЗаказа) КАК СуммаЗаказа,
| СУММА(ОтклоненияЦен.ЦенаПоступления) КАК ЦенаПоступления,
| СУММА(ОтклоненияЦен.СуммаПоступления) КАК СуммаПоступления,
| СУММА(ОтклоненияЦен.СуммаРучнойСкидкиПоступления) КАК СуммаРучнойСкидкиПоступления,
| ВЫБОР
| КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) = 0
| ИЛИ СУММА(ОтклоненияЦен.ЦенаПоступления) = 0
| ТОГДА 0
| ИНАЧЕ СУММА(ОтклоненияЦен.ЦенаПоступления) * 100 / СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) - 100
| КОНЕЦ КАК ПроцентОтклоненияОтЦеныЗаказа,
| ВЫБОР
| КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) = 0
| ИЛИ СУММА(ОтклоненияЦен.СуммаПоступления) = 0
| ТОГДА 0
| ИНАЧЕ СУММА(ОтклоненияЦен.СуммаПоступления) * 100 / СУММА(ОтклоненияЦен.СуммаЗаказа) - 100
| КОНЕЦ КАК ПроцентОтклоненияОтСуммыЗаказа,
| ВЫБОР
| КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
| И СУММА(ОтклоненияЦен.ЦенаПоступления) < СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
| ТОГДА 3
| КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
| И СУММА(ОтклоненияЦен.ЦенаПоступления) > СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
| ТОГДА 1
| ИНАЧЕ 8
| КОНЕЦ КАК ИндексКартинки,
| ВЫБОР
| КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.СуммаПоступления) < СУММА(ОтклоненияЦен.СуммаЗаказа)
| ТОГДА 3
| КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.СуммаПоступления) > СУММА(ОтклоненияЦен.СуммаЗаказа)
| ТОГДА 1
| ИНАЧЕ 8
| КОНЕЦ КАК ИндексКартинкиСуммы,
| ВЫБОР
| КОГДА СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
| И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.ЦенаПоступления) <> СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЦенаИзменилась,
| ВЫБОР
| КОГДА МАКСИМУМ(ОтклоненияЦен.КоличествоЗаказа) = СУММА(ОтклоненияЦен.КоличествоПоступления)
| И СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
| И СУММА(ОтклоненияЦен.СуммаПоступления) <> 0
| И СУММА(ОтклоненияЦен.СуммаПоступления) <> СУММА(ОтклоненияЦен.СуммаЗаказа)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СуммаИзменилась,
| МАКСИМУМ(ОтклоненияЦен.ПроцентРучнойСкидкиЗаказа) КАК ПроцентРучнойСкидкиЗаказа,
| МАКСИМУМ(ОтклоненияЦен.ПроцентРучнойСкидкиПоступления) КАК ПроцентРучнойСкидкиПоступления
|ИЗ
| ОтклоненияЦен КАК ОтклоненияЦен
|
|СГРУППИРОВАТЬ ПО
| ОтклоненияЦен.ЗаказПоставщику,
| ОтклоненияЦен.КодСтроки,
| ОтклоненияЦен.Номенклатура,
| ОтклоненияЦен.Характеристика,
| ОтклоненияЦен.ВалютаЗаказа
|
|ИМЕЮЩИЕ
| (СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0 И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> СУММА(ОтклоненияЦен.ЦенаПоступления))
| ИЛИ (СУММА(ОтклоненияЦен.ЦенаПоступления) = 0 И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> СУММА(ОтклоненияЦен.ЦенаПоступления))
| ИЛИ ((МАКСИМУМ(ОтклоненияЦен.КоличествоЗаказа) = СУММА(ОтклоненияЦен.КоличествоПоступления)
| И СУММА(ОтклоненияЦен.СуммаЗаказа) <> СУММА(ОтклоненияЦен.СуммаПоступления)))");
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыЗаказа.Упаковка",
"ТоварыЗаказа.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ПриобретениеТоваровУслугТовары.Упаковка",
"ПриобретениеТоваровУслугТовары.Номенклатура"));
ИспользуетсяДвухходовка = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков")
Или ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеЗакупкиТоваровВПути")
Или ПолучитьФункциональнуюОпцию("ИспользоватьВвозТоваровИзТаможенногоСоюзаТоварыВПути")
Или ПолучитьФункциональнуюОпцию("ИспользоватьВвозТоваровИзТаможенногоСоюзаНеотфактурованныеПоставки")
Или ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
Запрос.УстановитьПараметр("ЗаказыПоставщикам", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ДокументыПоступления", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользуетсяДвухходовка", ИспользуетсяДвухходовка);
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыПоставщикам",
"ЗаказПоставщику В (&ЗаказыПоставщикам)",
Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыПоставщикам", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыПоставщикам", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[1].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[2].Выгрузить();
ТаблицаТоварыРасхожденияДвухходовки = Результат[4].Выгрузить();
ТоварыРасхожденияДвухходовки.Загрузить(ТаблицаТоварыРасхожденияДвухходовки);
ОтклоненияЦен.Загрузить(Результат[14].Выгрузить());
СтруктураПоиска = Новый Структура("Номенклатура, Характеристика, Склад, Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0
И ОтклоненияЦен.Количество() = 0
И ТаблицаТоварыРасхожденияДвухходовки.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамКлиентов(ТаблицаТоваровРасход)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК ЗаказКлиента
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В (&ЗаказыКлиента)
| И ЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| РаспоряженияНаОтгрузкуОбороты.Распоряжение КАК ЗаказКлиента,
| РаспоряженияНаОтгрузкуОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияНаОтгрузкуОбороты.Характеристика КАК Характеристика,
| РаспоряженияНаОтгрузкуОбороты.Склад КАК Склад,
| РаспоряженияНаОтгрузкуОбороты.Серия КАК Серия,
| СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) -
| СУММА(РаспоряженияНаОтгрузкуОбороты.ОтгруженоКоличествоОборот) КАК КОформлениюКонечныйОстаток,
| СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) КАК КОформлениюПриход
|ПОМЕСТИТЬ ВтРаспоряженияНаОтгрузкуОбороты
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая1 КАК РаспоряженияНаОтгрузкуОбороты
|СГРУППИРОВАТЬ ПО
| РаспоряженияНаОтгрузкуОбороты.Распоряжение,
| РаспоряженияНаОтгрузкуОбороты.Номенклатура,
| РаспоряженияНаОтгрузкуОбороты.Характеристика,
| РаспоряженияНаОтгрузкуОбороты.Склад,
| РаспоряженияНаОтгрузкуОбороты.Серия
|ИМЕЮЩИЕ
| СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) -
| СУММА(РаспоряженияНаОтгрузкуОбороты.ОтгруженоКоличествоОборот) <> 0
| ИЛИ СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) <> 0
|
|ИНДЕКСИРОВАТЬ ПО
| ЗаказКлиента,
| Номенклатура,
| Характеристика,
| Склад,
| Серия
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ИСТИНА КАК ЭтоОтгрузка
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
| И (ТаблицаТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| ИЛИ ТаблицаТовары.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
| И НЕ ТаблицаТовары.Отменено
| И НЕ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.Заказ КАК Заказ,
| ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОстатки.Серия КАК Серия,
| ТоварыКОтгрузкеОстатки.Склад КАК Склад,
| ВЫБОР
| КОГДА СУММА(ТоварыКОтгрузкеОстатки.КОтгрузкеСверхЗаказа) >= СУММА(ТоварыКОтгрузкеОстатки.Количество)
| ТОГДА 0
| ИНАЧЕ СУММА(ТоварыКОтгрузкеОстатки.Количество) - СУММА(ТоварыКОтгрузкеОстатки.КОтгрузкеСверхЗаказа)
| КОНЕЦ КАК Количество,
| СУММА(ТоварыКОтгрузкеОстатки.ДопустимоеОтклонение) КАК ДопустимоеОтклонение
|ИЗ
| (ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.ДокументОтгрузки КАК Заказ,
| ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОстатки.Серия КАК Серия,
| ТоварыКОтгрузкеОстатки.Склад КАК Склад,
| ТоварыКОтгрузкеОстатки.КОтгрузкеРасход + ТоварыКОтгрузкеОстатки.СобраноПриход +
| ТоварыКОтгрузкеОстатки.СобираетсяПриход КАК Количество,
| ТоварыКОтгрузкеОстатки.КОтгрузкеПриход КАК КОтгрузкеСверхЗаказа,
| 0 КАК ДопустимоеОтклонение
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодТоварыКОтгрузке, &КонПериодТоварыКОтгрузке,,,
| ДокументОтгрузки В (&ЗаказыКлиента)
| И Номенклатура.ТипНоменклатуры НЕ В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))) КАК
| ТоварыКОтгрузкеОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОформлению.Распоряжение КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ОстаткиКОформлению.Серия КАК Серия,
| ОстаткиКОформлению.Склад КАК Склад,
| 0 КАК Количество,
| -ОстаткиКОформлению.КОтгрузкеКоличествоОборот КАК КОтгрузкеСверхЗаказа,
| 0 КАК ДопустимоеОтклонение
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая2 КАК ОстаткиКОформлению) КАК ТоварыКОтгрузкеОстатки
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузкеОстатки.Заказ,
| ТоварыКОтгрузкеОстатки.Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика,
| ТоварыКОтгрузкеОстатки.Серия,
| ТоварыКОтгрузкеОстатки.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказыКлиентовОстатки.Распоряжение КАК Заказ,
| ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура,
| ЗаказыКлиентовОстатки.Характеристика КАК Характеристика,
| ЗаказыКлиентовОстатки.Серия КАК Серия,
| ЗаказыКлиентовОстатки.Склад КАК Склад,
| ЗаказыКлиентовОстатки.ОтгруженоКоличествоОборот КАК Количество,
| 0 КАК ДопустимоеОтклонение
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая3 КАК ЗаказыКлиентовОстатки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| 0,
| СУММА(ТоварыКОтгрузке.КОтгрузкеКоличествоОборот * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100))
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая4 КАК ТоварыКОтгрузке
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Распоряжение,
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказКлиентаТовары.Ссылка,
| ЗаказКлиентаТовары.Номенклатура,
| ЗаказКлиентаТовары.Характеристика,
| ЗаказКлиентаТовары.Серия,
| ЗаказКлиентаТовары.Склад,
| ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.КоличествоОстаток,
| 0
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупках.Остатки КАК
| ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки
| ПО (ЗаказКлиентаТовары.Ссылка.Назначение = ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.Назначение)
| И (ЗаказКлиентаТовары.Номенклатура = ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.Номенклатура)
|ГДЕ
| ЗаказКлиентаТовары.Ссылка В (&ЗаказыКлиента)
| И
| ЗаказКлиентаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Заказ КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Количество КАК Количество,
| ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| ВЫБОР
| КОГДА ТаблицаТовары.Количество > ЗаказыКлиентовОстатки.КОформлениюПриход
| ТОГДА ТаблицаТовары.Количество - ЗаказыКлиентовОстатки.КОформлениюПриход
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоСверхОформленного,
| ТаблицаТовары.Серия КАК Серия,
| ИСТИНА КАК ЭтоОтгрузка
|ИЗ
| ВТАктуальныеТоварыЗаказов КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтРаспоряженияНаОтгрузкуОбороты КАК ЗаказыКлиентовОстатки
| ПО ТаблицаТовары.Заказ = ЗаказыКлиентовОстатки.ЗаказКлиента
| И ТаблицаТовары.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
| И ТаблицаТовары.Характеристика = ЗаказыКлиентовОстатки.Характеристика
| И ТаблицаТовары.Склад = ЗаказыКлиентовОстатки.Склад
| И ТаблицаТовары.Серия = ЗаказыКлиентовОстатки.Серия
|
|УПОРЯДОЧИТЬ ПО
| КОформлениюОстаток ВОЗР");
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыКлиента)
| И КодСтроки <> 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОтгрузке, Отгружено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая1",
РаспоряженияНаОтгрузкуОборотыРазвернутая1);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыКлиента)
| И КодСтроки <> 0
| И Номенклатура.ТипНоменклатуры НЕ В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОтгрузке";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая2",
РаспоряженияНаОтгрузкуОборотыРазвернутая2);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыКлиента)
| И Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "Отгружено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая3 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая3",
РаспоряженияНаОтгрузкуОборотыРазвернутая3);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыКлиента)
| И КодСтроки <> 0
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОтгрузке";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая4 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая4",
РаспоряженияНаОтгрузкуОборотыРазвернутая4);
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыКлиента", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение В (&ЗаказыКлиента)",
Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыКлиентов", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыКлиентов", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
"ДокументОтгрузки В (&ЗаказыКлиента)",
Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодТоварыКОтгрузке", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодТоварыКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
ПоДокументу = Заказы.Количество() = 1 И Заказы[0].Значение = ДокументИнициатор;
ТекстЗапросаДляПодмены =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары";
Запрос.УстановитьПараметр("ПоДокументу", ПоДокументу);
Если ПоДокументу Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,
ТекстЗапросаДляПодмены,
"ВЫБРАТЬ
| &Заказ КАК Ссылка,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Склад КАК Склад,
| Таблица.Серия КАК Серия,
| Таблица.Количество КАК Количество,
| Таблица.Отменено КАК Отменено,
| Таблица.ВариантОбеспечения КАК ВариантОбеспечения
|ПОМЕСТИТЬ ВтТовары
|ИЗ
| &Товары КАК Таблица
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| СУММА(ТаблицаТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
|ИЗ
| ВтТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
| И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
| И ТаблицаТовары.Ссылка.Статус НЕ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И НЕ ТаблицаТовары.Отменено
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Склад,
| ТаблицаТовары.Серия");
Запрос.УстановитьПараметр("Товары",ТаблицаТоваровРасход);
Запрос.УстановитьПараметр("Заказ",ДокументИнициатор);
КоличествоЗапросов = 6;
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст,
ТекстЗапросаДляПодмены,
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Серия КАК Серия,
| СУММА(ТаблицаТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
| И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
| И НЕ ТаблицаТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Склад,
| ТаблицаТовары.Серия");
КоличествоЗапросов = 5;
КонецЕсли;
Результат = Запрос.ВыполнитьПакет();
ВыборкаЗаказы = Результат[0].Выбрать();
ВыборкаКОтмене = Результат[2].Выбрать();
ОтгруженныеТовары = Результат[3].Выгрузить();
Выборка = Результат[КоличествоЗапросов].Выбрать();
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
ОтгруженныеТовары.Свернуть("Заказ, Номенклатура, Характеристика, Серия, Склад","Количество, ДопустимоеОтклонение");
УстановитьПривилегированныйРежим(Ложь);
СписокСвойствТоварыКОтмене = "Заказ,Номенклатура,Характеристика,Склад,Серия,ЭтоОтгрузка,Количество";
Пока ВыборкаКОтмене.Следующий() Цикл
НовСтр = ТоварыКОтмене.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаКОтмене, СписокСвойствТоварыКОтмене);
НовСтр.Заказано = НовСтр.Количество;
КонецЦикла;
Пока Выборка.Следующий() Цикл
ПараметрыПоиска = Новый Структура();
ПараметрыПоиска.Вставить("Заказ", Выборка.Заказ);
ПараметрыПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
ПараметрыПоиска.Вставить("Характеристика", Выборка.Характеристика);
ПараметрыПоиска.Вставить("Склад", Выборка.Склад);
ПараметрыПоиска.Вставить("Серия", Выборка.Серия);
ОтгруженноеКоличество = 0;
ДопустимоеОтклонение = 0;
ОтгруженнаяСтрока = Неопределено;
НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() > 0 Тогда
ОтгруженнаяСтрока = НайденныеСтроки[0];
ОтгруженноеКоличество = ОтгруженнаяСтрока.Количество;
ДопустимоеОтклонение = ОтгруженнаяСтрока.ДопустимоеОтклонение;
КонецЕсли;
ОтменитьКоличество = 0;
Если Выборка.Количество >= ОтгруженноеКоличество Тогда
ОтменитьКоличество = Мин(Выборка.КОформлениюОстаток, Выборка.Количество - ОтгруженноеКоличество);
Если ОтгруженнаяСтрока <> Неопределено Тогда
Если ОтгруженноеКоличество >
(Выборка.Количество - Выборка.КоличествоСверхОформленного - Выборка.КОформлениюОстаток) Тогда
ОтгруженнаяСтрока.Количество = ОтгруженноеКоличество - (Выборка.Количество
- Выборка.КоличествоСверхОформленного - Выборка.КОформлениюОстаток);
Иначе
ОтгруженнаяСтрока.Количество = 0;
КонецЕсли;
КонецЕсли;
Иначе
ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - Выборка.Количество;
КонецЕсли;
Если ОтменитьКоличество <= ДопустимоеОтклонение Тогда
ОтклонениеВПределахДельты = Истина;
ОтгруженнаяСтрока.ДопустимоеОтклонение = ОтгруженнаяСтрока.ДопустимоеОтклонение - ОтменитьКоличество;
Иначе
ОтклонениеВПределахДельты = Ложь;
КонецЕсли;
Если ОтменитьКоличество = Выборка.Количество Тогда
НоваяСтрока = ТоварыКОтмене.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Заказано = НоваяСтрока.Количество;
ИначеЕсли ОтменитьКоличество > 0 Тогда
ОтменитьКоличество = ОтменитьКоличество + Выборка.КоличествоСверхОформленного;
Если ОтклонениеВПределахДельты Тогда
НоваяСтрока = МерныеТоварыККорректировке.Добавить();
Множитель = -1;
Иначе
НоваяСтрока = ТоварыКОтмене.Добавить();
Множитель = 1;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка, СписокСвойствТоварыКОтмене);
НоваяСтрока.Количество = Множитель*ОтменитьКоличество;
НоваяСтрока.Заказано = Выборка.Количество;
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
Если СкорректироватьМерныеТовары Тогда
Выборка.Сбросить();
Пока Выборка.Следующий() Цикл
ПараметрыПоиска = Новый Структура("Заказ, Номенклатура, Характеристика, Склад, Серия");
ЗаполнитьЗначенияСвойств(ПараметрыПоиска, Выборка);
НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() > 0
И НайденныеСтроки[0].Количество > 0 Тогда
ОтгруженнаяСтрока = НайденныеСтроки[0];
ОтгруженоСверхСтроки = ОтгруженнаяСтрока.Количество;
Иначе
Продолжить;
КонецЕсли;
Если Выборка.КОформлениюОстаток < 0 И ОтгруженоСверхСтроки > 0 Тогда
КоличествоПереоформлено = -Выборка.КОформлениюОстаток;
Если КоличествоПереоформлено >= ОтгруженоСверхСтроки Тогда
ОтгруженнаяСтрока.Количество = 0;
КоличествоДобавить = ОтгруженоСверхСтроки;
Иначе
ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - КоличествоПереоформлено;
КоличествоДобавить = КоличествоПереоформлено;
КонецЕсли;
НовСтр = МерныеТоварыККорректировке.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,Выборка);
НовСтр.Количество = КоличествоДобавить;
НовСтр.Заказано = Выборка.Количество;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 И
ТоварыКОтмене.Количество() = 0 И
МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамНаВнутреннееПотребление()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказНаВнутреннееПотребление.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление
|ГДЕ
| ЗаказНаВнутреннееПотребление.Ссылка В(&ЗаказыНаВнутреннееПотребление)
| И ЗаказНаВнутреннееПотребление.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт)
|
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| Остатки.Серия,
| СУММА(Остатки.КОформлениюОстаток),
| ВЫБОР
| КОГДА СУММА(Остатки.КОтгрузкеСверхЗаказа) >= СУММА(Остатки.КОтгрузкеОстаток)
| ТОГДА 0
| ИНАЧЕ СУММА(Остатки.КОтгрузкеОстаток) - СУММА(Остатки.КОтгрузкеСверхЗаказа)
| КОНЕЦ КАК КОтгрузкеОстаток,
| СУММА(Остатки.Заказано),
| СУММА(Остатки.КВыполнению)
|ПОМЕСТИТЬ ВтОстатки
|ИЗ (ВЫБРАТЬ
| ОстаткиКОформлению.ЗаказНаВнутреннееПотребление КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ОстаткиКОформлению.Склад КАК Склад,
| ОстаткиКОформлению.Серия КАК Серия,
| ОстаткиКОформлению.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| 0 КАК КОтгрузкеОстаток,
| - ОстаткиКОформлению.КОформлениюПриход КАК КОтгрузкеСверхЗаказа,
| ОстаткиКОформлению.ЗаказаноПриход КАК Заказано,
| ОстаткиКОформлению.ЗаказаноПриход
| - ОстаткиКОформлению.КОформлениюПриход КАК КВыполнению
| ИЗ
| РегистрНакопления.ЗаказыНаВнутреннееПотребление.ОстаткиИОбороты(&НачПериод,&КонПериод,,,
| ЗаказНаВнутреннееПотребление В (&ЗаказыНаВнутреннееПотребление) И КодСтроки <> 0) КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОтгрузке.ДокументОтгрузки КАК Заказ,
| ОстаткиКОтгрузке.Номенклатура КАК Номенклатура,
| ОстаткиКОтгрузке.Характеристика КАК Характеристика,
| ОстаткиКОтгрузке.Склад КАК Склад,
| ОстаткиКОтгрузке.Серия КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКОтгрузке.КОтгрузкеКонечныйОстаток КАК КОтгрузкеОстаток,
| ОстаткиКОтгрузке.КОтгрузкеПриход КАК КОтгрузкеСверхЗаказа,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодКОтгрузке,&КонПериодКОтгрузке,,,
| ДокументОтгрузки В (&ЗаказыНаВнутреннееПотребление)) КАК ОстаткиКОтгрузке) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.Серия,
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению КАК Количество,
| ИСТИНА КАК ЭтоОтгрузка,
| Остатки.Заказано
|ИЗ ВтОстатки КАК Остатки
|ГДЕ
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению <> 0
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| ТоварыКОтгрузке.ЗаказНаВнутреннееПотребление КАК Заказ,
| СУММА(ТоварыКОтгрузке.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыНаВнутреннееПотребление.Обороты(&НачПериод,&КонПериод,,
| ЗаказНаВнутреннееПотребление В (&ЗаказыНаВнутреннееПотребление)) КАК ТоварыКОтгрузке
|ГДЕ
| ТоварыКОтгрузке.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Склад,
| ТоварыКОтгрузке.ЗаказНаВнутреннееПотребление");
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыНаВнутреннееПотребление", Заказы.ВыгрузитьЗначения());
УстановитьПривилегированныйРежим(Истина);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыНаВнутреннееПотребление",
"ЗаказНаВнутреннееПотребление В (&ЗаказыНаВнутреннееПотребление)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
"ДокументОтгрузки В (&ЗаказыНаВнутреннееПотребление)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодКОтгрузке", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[2].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[3].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Серия,Склад,Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамНаПеремещение()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказНаПеремещение.Ссылка КАК ЗаказКлиента
|ИЗ
| Документ.ЗаказНаПеремещение КАК ЗаказНаПеремещение
|ГДЕ
| ЗаказНаПеремещение.Ссылка В(&ЗаказыНаПеремещение)
| И ЗаказНаПеремещение.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Заказ.СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Заказ.СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| СУММА(Остатки.КОформлениюОстаток),
| СУММА(Остатки.КОтгрузкеОстаток) КАК КОтгрузкеОстаток,
| СУММА(Остатки.Заказано),
| СУММА(Остатки.КВыполнению)
|ПОМЕСТИТЬ ВтОстатки
|ИЗ (ВЫБРАТЬ
| ОстаткиКОформлению.ЗаказНаПеремещение КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ОстаткиКОформлению.Серия КАК Серия,
| ОстаткиКОформлению.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| 0 КАК КОтгрузкеОстаток,
| - ОстаткиКОформлению.КОформлениюПриход КАК КОтгрузкеСверхЗаказа,
| ОстаткиКОформлению.ЗаказаноПриход КАК Заказано,
| ОстаткиКОформлению.ЗаказаноПриход
| - ОстаткиКОформлению.КОформлениюПриход КАК КВыполнению
| ИЗ
| РегистрНакопления.ЗаказыНаПеремещение.ОстаткиИОбороты(&НачПериод,&КонПериод,,,
| ЗаказНаПеремещение В (&ЗаказыНаПеремещение) И КодСтроки <> 0) КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОтгрузке.ДокументОтгрузки КАК Заказ,
| ОстаткиКОтгрузке.Номенклатура КАК Номенклатура,
| ОстаткиКОтгрузке.Характеристика КАК Характеристика,
| ОстаткиКОтгрузке.Серия КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКОтгрузке.КОтгрузкеКонечныйОстаток КАК КОтгрузкеОстаток,
| ОстаткиКОтгрузке.КОтгрузкеПриход КАК КОтгрузкеСверхЗаказа,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодКОтгрузке,&КонПериодКОтгрузке,,,
| ДокументОтгрузки В (&ЗаказыНаПеремещение)) КАК ОстаткиКОтгрузке) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Заказ.СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Заказ.СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Серия,
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению КАК Количество,
| Остатки.Заказано,
| Остатки.Заказ.СкладОтправитель КАК Склад,
| ИСТИНА КАК ЭтоОтгрузка
|ИЗ ВтОстатки КАК Остатки
|ГДЕ
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению <> 0
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.ЗаказНаПеремещение КАК Заказ,
| СУММА(ТоварыКОтгрузке.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение,
| ИСТИНА КАК ЭтоОтгрузка
|ИЗ
| РегистрНакопления.ЗаказыНаПеремещение.Обороты(&НачПериод,&КонПериод,,
| ЗаказНаПеремещение В (&ЗаказыНаПеремещение)) КАК ТоварыКОтгрузке
|ГДЕ
| ТоварыКОтгрузке.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.ЗаказНаПеремещение");
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыНаПеремещение", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
УстановитьПривилегированныйРежим(Истина);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыНаПеремещение",
"ЗаказНаПеремещение В (&ЗаказыНаПеремещение)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
"ДокументОтгрузки В (&ЗаказыНаПеремещение)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодКОтгрузке", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[2].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[3].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Серия,Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамНаСборку()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказНаСборку.Ссылка КАК ЗаказНаСборку
|ИЗ
| Документ.ЗаказНаСборку КАК ЗаказНаСборку
|ГДЕ
| ЗаказНаСборку.Ссылка В(&ЗаказыНаСборку)
| И ЗаказНаСборку.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.ЭтоОтгрузка,
| Остатки.Склад,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.НачалоСборкиРазборки >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И Остатки.Заказ.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении,
| СУММА(Остатки.КОформлениюОстаток),
| СУММА(Остатки.ОстатокПоОрдерам),
| СУММА(Остатки.Заказано),
| СУММА(Остатки.КВыполнению)
|ПОМЕСТИТЬ ВтОстатки
|ИЗ (ВЫБРАТЬ
| ОстаткиКОформлению.ЗаказНаСборку КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ОстаткиКОформлению.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоОтгрузка,
| ОстаткиКОформлению.ЗаказНаСборку.Склад КАК Склад,
| ОстаткиКОформлению.Серия КАК Серия,
| ОстаткиКОформлению.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| 0 КАК ОстатокПоОрдерам,
| ОстаткиКОформлению.ЗаказаноПриход КАК Заказано,
| ОстаткиКОформлению.ЗаказаноПриход
| - ОстаткиКОформлению.КОформлениюПриход КАК КВыполнению
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.ОстаткиИОбороты(&НачПериодЗаказыНаСборку, &КонПериодЗаказыНаСборку,
| ,, ЗаказНаСборку В (&ЗаказыНаСборку) И КодСтроки <> 0) КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОтгрузке.ДокументОтгрузки КАК Заказ,
| ОстаткиКОтгрузке.Номенклатура КАК Номенклатура,
| ОстаткиКОтгрузке.Характеристика КАК Характеристика,
| ИСТИНА КАК ЭтоОтгрузка,
| ОстаткиКОтгрузке.Склад КАК Склад,
| ОстаткиКОтгрузке.Серия КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКОтгрузке.КОтгрузкеОстаток КАК ОстатокПоОрдерам,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(, ДокументОтгрузки В (&ЗаказыНаСборку)) КАК ОстаткиКОтгрузке
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКПоступлению.ДокументПоступления КАК Заказ,
| ОстаткиКПоступлению.Номенклатура КАК Номенклатура,
| ОстаткиКПоступлению.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ЭтоОтгрузка,
| ОстаткиКПоступлению.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКПоступлению.КОформлениюОрдеровОстаток КАК ОстатокПоОрдерам,
| 0 КАК Заказано,
| 0 КАК Оформлено
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(,
| ДокументПоступления В (&ЗаказыНаСборку)) КАК ОстаткиКПоступлению) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.ЭтоОтгрузка,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.НачалоСборкиРазборки >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И Остатки.Заказ.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.ЭтоОтгрузка,
| Остатки.Серия,
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.ОстатокПоОрдерам
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ (Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриОтгрузке)
| ИЛИ (НЕ Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриПоступлении) ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.ОстатокПоОрдерам
| КОНЕЦ + Остатки.КВыполнению КАК Количество,
| Остатки.Заказано
|ИЗ ВтОстатки КАК Остатки
|ГДЕ
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.ОстатокПоОрдерам
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ (Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриОтгрузке)
| ИЛИ (НЕ Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриПоступлении) ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.ОстатокПоОрдерам
| КОНЕЦ + Остатки.КВыполнению <> 0
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ВЫБОР
| КОГДА ТоварыКОтгрузке.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоОтгрузка,
| ТоварыКОтгрузке.ЗаказНаСборку КАК Заказ,
| ТоварыКОтгрузке.ЗаказНаСборку.Склад КАК Склад,
| СУММА(ТоварыКОтгрузке.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыНаСборку.Обороты(&НачПериодЗаказыНаСборку,&КонПериодЗаказыНаСборку,
| , ЗаказНаСборку В (&ЗаказыНаСборку)) КАК ТоварыКОтгрузке
|ГДЕ
| ТоварыКОтгрузке.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ВЫБОР
| КОГДА ТоварыКОтгрузке.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.ЗаказНаСборку");
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыНаСборку", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
УстановитьПривилегированныйРежим(Истина);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыНаСборку",
"ЗаказНаСборку В (&ЗаказыНаСборку)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыНаСборку", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыНаСборку", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[2].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[3].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Серия,Склад,ЭтоОтгрузка,Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаявкамНаВозвратТоваровОтКлиента(ТаблицаТоваровПриход, ТаблицаТоваровРасход)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаявкаНаВозвратТоваровОтКлиента.Ссылка КАК ЗаявкаНаВозвратТоваровОтКлиента
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
|ГДЕ
| ЗаявкаНаВозвратТоваровОтКлиента.Ссылка В(&ЗаявкиНаВозвратТоваровОтКлиента)
| И ЗаявкаНаВозвратТоваровОтКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
| И &ИспользоватьСтатусЗакрыт
|
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Распоряжение КАК Заказ,
| ТоварыКПоступлению.Склад КАК Склад,
| ЛОЖЬ КАК ЭтоОтгрузка,
| СУММА(ТоварыКПоступлению.КОформлениюПоВозвратамКоличествоОборот
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая1 КАК ТоварыКПоступлению
|
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.Распоряжение,
| ТоварыКПоступлению.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| ТоварыКОтгрузке.Склад КАК Склад,
| ИСТИНА КАК ЭтоОтгрузка,
| СУММА(ТоварыКОтгрузке.КОтгрузкеКоличествоОборот
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая1 КАК ТоварыКОтгрузке
|
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Склад,
| ТоварыКОтгрузке.Распоряжение
|;
|
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА Таблица.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА Таблица.Номенклатура
| ИНАЧЕ Таблица.НоменклатураОприходование
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА Таблица.ХарактеристикаОприходование = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА Таблица.Характеристика
| ИНАЧЕ Таблица.ХарактеристикаОприходование
| КОНЕЦ КАК Характеристика,
| Таблица.Количество КАК Количество,
| Таблица.Склад КАК Склад,
| Таблица.Отменено КАК Отменено
|ПОМЕСТИТЬ ВтВозвращаемыеТовары
|ИЗ &ВозвращаемыеТовары КАК Таблица
|;
|
|
|
|ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Количество КАК Количество,
| Таблица.Склад КАК Склад,
| Таблица.Отменено КАК Отменено
|ПОМЕСТИТЬ ВтЗаменяющиеТовары
|ИЗ &ЗаменяющиеТовары КАК Таблица
|;
|
|
|
|ВЫБРАТЬ
| Отгрузки.Заказ КАК Заказ,
| Отгрузки.Номенклатура КАК Номенклатура,
| Отгрузки.Характеристика КАК Характеристика,
| Отгрузки.Склад КАК Склад,
| ВЫБОР
| КОГДА Отгрузки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Отгрузки.Заказ.Дата >= Отгрузки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| СУММА(Отгрузки.Оформлено) КАК Оформлено,
| СУММА(Отгрузки.Отгружено) КАК Отгружено,
| СУММА(Отгрузки.Заказано) КАК Заказано
|ПОМЕСТИТЬ ВтОтгружено
|ИЗ (ВЫБРАТЬ
| Остатки.Распоряжение КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.Склад КАК Склад,
| СУММА(Остатки.ОтгруженоКоличествоОборот) КАК Оформлено,
| СУММА(0) КАК Отгружено,
| СУММА(ВЫБОР
| КОГДА &ПоДокументу
| ТОГДА 0
| ИНАЧЕ
| Остатки.ЗаказаноКоличествоОборот
| КОНЕЦ) КАК Заказано
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая2 КАК Остатки
| СГРУППИРОВАТЬ ПО
| Остатки.Распоряжение,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.ДокументОтгрузки КАК Заказ,
| ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОстатки.Склад КАК Склад,
| 0 КАК Оформлено,
| ТоварыКОтгрузкеОстатки.КОтгрузкеРасход + ТоварыКОтгрузкеОстатки.СобраноПриход
| + ТоварыКОтгрузкеОстатки.СобираетсяПриход КАК Отгружено,
| 0 КАК Заказано
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(,,,,
| ДокументОтгрузки В (&ЗаявкиНаВозвратТоваровОтКлиента)) КАК ТоварыКОтгрузкеОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &Заказ КАК Заказ,
| ЗаменяющиеТовары.Номенклатура КАК Номенклатура,
| ЗаменяющиеТовары.Характеристика КАК Характеристика,
| ЗаменяющиеТовары.Склад КАК Склад,
| 0 КАК Оформлено,
| 0 КАК Отгружено,
| СУММА(ЗаменяющиеТовары.Количество) КАК Заказано
| ИЗ
| ВтЗаменяющиеТовары КАК ЗаменяющиеТовары
| ГДЕ
| НЕ ЗаменяющиеТовары.Отменено
| СГРУППИРОВАТЬ ПО
| ЗаменяющиеТовары.Номенклатура,
| ЗаменяющиеТовары.Характеристика,
| ЗаменяющиеТовары.Склад
|
| ) КАК Отгрузки
|
|СГРУППИРОВАТЬ ПО
| Отгрузки.Заказ,
| ВЫБОР
| КОГДА Отгрузки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Отгрузки.Заказ.Дата >= Отгрузки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| Отгрузки.Номенклатура,
| Отгрузки.Характеристика,
| Отгрузки.Склад
|;
|
|
|
|ВЫБРАТЬ
| Поступления.Заказ КАК Заказ,
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПриемке,
| СУММА(Поступления.Оформлено) КАК Оформлено,
| СУММА(Поступления.Принято) КАК Принято,
| СУММА(Поступления.Заказано) КАК Заказано
|ПОМЕСТИТЬ ВтПринято
|ИЗ (ВЫБРАТЬ
| Остатки.Распоряжение КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.Склад КАК Склад,
| Остатки.ОформленоПоВозвратамКоличествоОборот КАК Оформлено,
| 0 КАК Принято,
| ВЫБОР
| КОГДА &ПоДокументу
| ТОГДА 0
| ИНАЧЕ Остатки.ЗаявленоНаВозвратКоличествоОборот
| КОНЕЦ КАК Заказано
| ИЗ
| #ЗаявкиНаВозвратОборотыРазвернутая2 КАК Остатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКПоступлениюОстатки.ДокументПоступления КАК Заказ,
| ТоварыКПоступлениюОстатки.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстатки.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстатки.Склад КАК Склад,
| 0 КАК Оформлено,
| ТоварыКПоступлениюОстатки.КОформлениюОрдеровРасход КАК Принято,
| 0 КАК Заказано
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(,,,,
| ДокументПоступления В (&ЗаявкиНаВозвратТоваровОтКлиента)) КАК ТоварыКПоступлениюОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &Заказ КАК Заказ,
| ВозвращаемыеТовары.Номенклатура КАК Номенклатура,
| ВозвращаемыеТовары.Характеристика КАК Характеристика,
| ВозвращаемыеТовары.Склад КАК Склад,
| 0 КАК Оформлено,
| 0 КАК Принято,
| СУММА(ВозвращаемыеТовары.Количество) КАК Заказано
| ИЗ
| ВтВозвращаемыеТовары КАК ВозвращаемыеТовары
| ГДЕ
| НЕ ВозвращаемыеТовары.Отменено
| СГРУППИРОВАТЬ ПО
| ВозвращаемыеТовары.Номенклатура,
| ВозвращаемыеТовары.Характеристика,
| ВозвращаемыеТовары.Склад
| ) КАК Поступления
|
|СГРУППИРОВАТЬ ПО
| Поступления.Заказ,
| Поступления.Номенклатура,
| ВЫБОР
| КОГДА Поступления.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Поступления.Заказ.Дата >= Поступления.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| Поступления.Характеристика,
| Поступления.Склад
|;
|
|
|
|ВЫБРАТЬ
| Поступления.Заказ КАК Заказ,
| Поступления.Номенклатура КАК Номенклатура,
| Поступления.Характеристика КАК Характеристика,
| Поступления.Склад КАК Склад,
| ЛОЖЬ КАК ЭтоОтгрузка,
| Поступления.Заказано КАК Заказано,
| ВЫБОР
| КОГДА Поступления.Заказано - Поступления.Оформлено < 0
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| КОГДА НЕ Поступления.ОрдернаяСхемаПриПриемке
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Поступления.Оформлено > Поступления.Принято
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ Поступления.Заказано - Поступления.Принято
| КОНЕЦ
| КОНЕЦ КАК Количество
|ИЗ
| ВтПринято КАК Поступления
|ГДЕ ВЫБОР
| КОГДА Поступления.Заказано - Поступления.Оформлено < 0
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| КОГДА НЕ Поступления.ОрдернаяСхемаПриПриемке
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Поступления.Оформлено > Поступления.Принято
| ТОГДА Поступления.Заказано - Поступления.Оформлено
| ИНАЧЕ Поступления.Заказано - Поступления.Принято
| КОНЕЦ
| КОНЕЦ <> 0
|
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Отгрузки.Заказ КАК Заказ,
| Отгрузки.Номенклатура КАК Номенклатура,
| Отгрузки.Характеристика КАК Характеристика,
| Отгрузки.Склад КАК Склад,
| ИСТИНА КАК ЭтоОтгрузка,
| Отгрузки.Заказано КАК Заказано,
| ВЫБОР
| КОГДА Отгрузки.Заказано - Отгрузки.Оформлено < 0
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| КОГДА НЕ Отгрузки.ОрдернаяСхемаПриОтгрузке
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Отгрузки.Оформлено > Отгрузки.Отгружено
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| ИНАЧЕ Отгрузки.Заказано - Отгрузки.Отгружено
| КОНЕЦ
| КОНЕЦ КАК Количество
|ИЗ
| ВтОтгружено КАК Отгрузки
|ГДЕ ВЫБОР
| КОГДА Отгрузки.Заказано - Отгрузки.Оформлено < 0
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| КОГДА НЕ Отгрузки.ОрдернаяСхемаПриОтгрузке
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| ИНАЧЕ ВЫБОР
| КОГДА Отгрузки.Оформлено > Отгрузки.Отгружено
| ТОГДА Отгрузки.Заказано - Отгрузки.Оформлено
| ИНАЧЕ Отгрузки.Заказано - Отгрузки.Отгружено
| КОНЕЦ
| КОНЕЦ <> 0
|");
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаявкиНаВозвратТоваровОтКлиента)
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад";
ПараметрыФормированияТаблицы.Показатели = "КОтгрузке";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая1",
РаспоряженияНаОтгрузкуОборотыРазвернутая1);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаявкиНаВозвратТоваровОтКлиента)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад";
ПараметрыФормированияТаблицы.Показатели = "Заказано, Отгружено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая2",
РаспоряженияНаОтгрузкуОборотыРазвернутая2);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаявки";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаявки";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаявкиНаВозвратТоваровОтКлиента)
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад";
ПараметрыФормированияТаблицы.Показатели = "КОформлениюПоВозвратам";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
ЗаявкиНаВозвратОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#ЗаявкиНаВозвратОборотыРазвернутая1",
ЗаявкиНаВозвратОборотыРазвернутая1);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаявки";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаявки";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаявкиНаВозвратТоваровОтКлиента)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад";
ПараметрыФормированияТаблицы.Показатели = "ЗаявленоНаВозврат, ОформленоПоВозвратам";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
ЗаявкиНаВозвратОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#ЗаявкиНаВозвратОборотыРазвернутая2",
ЗаявкиНаВозвратОборотыРазвернутая2);
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаявкиНаВозвратТоваровОтКлиента", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра(
"РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение В (&ЗаявкиНаВозвратТоваровОтКлиента)",
Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыКлиентов", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыКлиентов", ГраницыОборотов.МаксимальнаяДата);
Запрос.УстановитьПараметр("НачПериодЗаявки", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаявки", ГраницыОборотов.МаксимальнаяДата);
ПоДокументу = Заказы.Количество() = 1 И Заказы[0].Значение = ДокументИнициатор;
Запрос.УстановитьПараметр("ПоДокументу",ПоДокументу);
Если ПоДокументу Тогда
Запрос.УстановитьПараметр("ВозвращаемыеТовары", ТаблицаТоваровПриход);
Запрос.УстановитьПараметр("ЗаменяющиеТовары", ТаблицаТоваровРасход);
Запрос.УстановитьПараметр("Заказ", ДокументИнициатор);
Запрос.УстановитьПараметр("Склад", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументИнициатор, "Склад"));
Иначе
ПустаяТаблицаТоваров = НоваяТаблицаТоваровПриходРасход();
Запрос.УстановитьПараметр("ВозвращаемыеТовары", ПустаяТаблицаТоваров);
Запрос.УстановитьПараметр("ЗаменяющиеТовары", ПустаяТаблицаТоваров);
Запрос.УстановитьПараметр("Заказ", Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка());
Запрос.УстановитьПараметр("Склад", Справочники.Склады.ПустаяСсылка());
КонецЕсли;
КоличествоЗапросов = 6;
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ДопустимыеОтклонения = Результат[1].Выгрузить();
ТаблицаТоварыКОтмене = Результат[КоличествоЗапросов].Выгрузить();
ТаблицаТоварыКОтмене.Свернуть("Заказ, Номенклатура, Характеристика, ЭтоОтгрузка, Склад", "Количество, Заказано");
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
СтруктураПоиска = Новый Структура("Номенклатура, Характеристика, Склад, Заказ, ЭтоОтгрузка");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамПереработчикам()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказПереработчику.Ссылка КАК ЗаказПереработчику
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка В(&ЗаказыПереработчику)
| И ЗаказПереработчику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПереработчику.Ссылка КАК ЗаказПереработчику
|ИЗ
| Документ.ЗаказПереработчику КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка В(&ЗаказыПереработчику)
| И ЗаказПереработчику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ КАК Заказ,
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.ЭтоОтгрузка КАК ЭтоОтгрузка,
| Остатки.Склад КАК Склад,
| Остатки.Серия КАК Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И Остатки.Заказ.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении,
| СУММА(Остатки.КОформлениюОстаток) КАК КОформлениюОстаток,
| ВЫБОР
| КОГДА СУММА(Остатки.СверхЗаказаПоОрдерам) >= СУММА(Остатки.ОстатокПоОрдерам)
| ТОГДА 0
| ИНАЧЕ СУММА(Остатки.ОстатокПоОрдерам) - СУММА(Остатки.СверхЗаказаПоОрдерам)
| КОНЕЦ КАК ОстатокПоОрдерам,
| СУММА(Остатки.Заказано) КАК Заказано,
| СУММА(Остатки.КВыполнению) КАК КВыполнению
|ПОМЕСТИТЬ ВтОстатки
|ИЗ (ВЫБРАТЬ
| ОстаткиКОформлению.Распоряжение КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ИСТИНА КАК ЭтоОтгрузка,
| ОстаткиКОформлению.Склад КАК Склад,
| ОстаткиКОформлению.Серия КАК Серия,
| СУММА(ОстаткиКОформлению.КОформлениюКоличествоОборот -
| ОстаткиКОформлению.ОформленоКоличествоОборот) КАК КОформлениюОстаток,
| 0 КАК ОстатокПоОрдерам,
| СУММА(- ОстаткиКОформлению.КОформлениюКоличествоОборот) КАК СверхЗаказаПоОрдерам,
| СУММА(ОстаткиКОформлению.ЗаказаноКоличествоОборот) КАК Заказано,
| СУММА(ОстаткиКОформлению.ЗаказаноКоличествоОборот -
| ОстаткиКОформлению.КОформлениюКоличествоОборот) КАК КВыполнению
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая1 КАК ОстаткиКОформлению
| СГРУППИРОВАТЬ ПО
| ОстаткиКОформлению.Распоряжение,
| ОстаткиКОформлению.Номенклатура,
| ОстаткиКОформлению.Характеристика,
| ОстаткиКОформлению.Склад,
| ОстаткиКОформлению.Серия
| ИМЕЮЩИЕ
| СУММА(ОстаткиКОформлению.КОформлениюКоличествоОборот -
| ОстаткиКОформлению.ОформленоКоличествоОборот) <> 0
| ИЛИ СУММА(- ОстаткиКОформлению.КОформлениюКоличествоОборот) <> 0
| ИЛИ СУММА(ОстаткиКОформлению.ЗаказаноКоличествоОборот) <> 0
| ИЛИ СУММА(ОстаткиКОформлению.ЗаказаноКоличествоОборот -
| ОстаткиКОформлению.КОформлениюКоличествоОборот) <> 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОформлению.ЗаказПоставщику КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ЭтоОтгрузка,
| ОстаткиКОформлению.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ОстаткиКОформлению.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| 0 КАК ОстатокПоОрдерам,
| - ОстаткиКОформлению.КОформлениюПриход КАК СверхЗаказаПоОрдерам,
| ОстаткиКОформлению.ЗаказаноПриход КАК Заказано,
| ОстаткиКОформлению.ЗаказаноПриход
| - ОстаткиКОформлению.КОформлениюПриход КАК КВыполнению
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
| ,, ЗаказПоставщику В (&ЗаказыПереработчику) И КодСтроки <> 0) КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОтгрузке.ДокументОтгрузки КАК Заказ,
| ОстаткиКОтгрузке.Номенклатура КАК Номенклатура,
| ОстаткиКОтгрузке.Характеристика КАК Характеристика,
| ИСТИНА КАК ЭтоОтгрузка,
| ОстаткиКОтгрузке.Склад КАК Склад,
| ОстаткиКОтгрузке.Серия КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКОтгрузке.КОтгрузкеКонечныйОстаток КАК ОстатокПоОрдерам,
| ОстаткиКОтгрузке.КОтгрузкеПриход КАК СверхЗаказаПоОрдерам,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодКОтгрузке,&КонПериодКОтгрузке,,,
| ДокументОтгрузки В (&ЗаказыПереработчику)) КАК ОстаткиКОтгрузке
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКПоступлению.ДокументПоступления КАК Заказ,
| ОстаткиКПоступлению.Номенклатура КАК Номенклатура,
| ОстаткиКПоступлению.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ЭтоОтгрузка,
| ОстаткиКПоступлению.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКПоступлению.КОформлениюОрдеровКонечныйОстаток КАК ОстатокПоОрдерам,
| ОстаткиКПоступлению.КОформлениюОрдеровПриход КАК СверхЗаказаПоОрдерам,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(&НачПериодКПоступлению,&КонПериодКПоступлению,,,
| ДокументПоступления В (&ЗаказыПереработчику)) КАК ОстаткиКПоступлению) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.ЭтоОтгрузка,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И Остатки.Заказ.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| ДанныеНоменклатуры.ТипНоменклатуры,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.ЭтоОтгрузка,
| Остатки.Серия,
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.ОстатокПоОрдерам
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ (Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриОтгрузке)
| ИЛИ (НЕ Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриПоступлении) ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.ОстатокПоОрдерам
| КОНЕЦ + Остатки.КВыполнению КАК Количество,
| Остатки.Заказано
|ИЗ
| ВтОстатки КАК Остатки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО Остатки.Номенклатура = ДанныеНоменклатуры.Ссылка
|
|ГДЕ
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.ОстатокПоОрдерам
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ (Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриОтгрузке)
| ИЛИ (НЕ Остатки.ЭтоОтгрузка И НЕ Остатки.ОрдернаяСхемаПриПоступлении) ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.ОстатокПоОрдерам
| КОНЕЦ + Остатки.КВыполнению <> 0
| И НЕ Остатки.Заказ.ПереработкаПоЗаказу
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ИСТИНА КАК ЭтоОтгрузка,
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| ТоварыКОтгрузке.Склад КАК Склад,
| СУММА(ТоварыКОтгрузке.КОформлениюКоличествоОборот
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая2 КАК ТоварыКОтгрузке
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Распоряжение,
| ТоварыКОтгрузке.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК ЭтоОтгрузка,
| ТоварыКПоступлению.ЗаказПоставщику КАК Заказ,
| ТоварыКПоступлению.Склад КАК Склад,
| СУММА(ТоварыКПоступлению.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Обороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
| , ЗаказПоставщику В (&ЗаказыПереработчику)) КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.ЗаказПоставщику,
| ТоварыКПоступлению.Склад");
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыПереработчику)
| И КодСтроки <> 0";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "Заказано, КОформлению, Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая1",
РаспоряженияНаОтгрузкуОборотыРазвернутая1);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&ЗаказыПереработчику)
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОформлению";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая2",
РаспоряженияНаОтгрузкуОборотыРазвернутая2);
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыПереработчику", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
УстановитьПривилегированныйРежим(Истина);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение В (&ЗаказыПереработчику)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыКлиентов", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыКлиентов", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыПоставщикам",
"ЗаказПоставщику В (&ЗаказыПереработчику)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодЗаказыПоставщикам", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодЗаказыПоставщикам", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
"ДокументОтгрузки В (&ЗаказыПереработчику)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодКОтгрузке", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКПоступлению",
"ДокументПоступления В (&ЗаказыПереработчику)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодКПоступлению", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодКПоступлению", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[2].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[3].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Серия,Склад,ЭтоОтгрузка,Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамМатериаловВПроизводство()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказМатериалов.Ссылка КАК ЗаказМатериалов
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК ЗаказМатериалов
|ГДЕ
| ЗаказМатериалов.Ссылка В(&ЗаказыМатериалов)
| И ЗаказМатериалов.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовМатериаловВПроизводство.Закрыт)
| И &ИспользоватьСтатусЗакрыт
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| Остатки.Серия,
| СУММА(Остатки.КОформлениюОстаток),
| ВЫБОР
| КОГДА СУММА(Остатки.КОтгрузкеСверхЗаказа) >= СУММА(Остатки.КОтгрузкеОстаток)
| ТОГДА 0
| ИНАЧЕ СУММА(Остатки.КОтгрузкеОстаток) - СУММА(Остатки.КОтгрузкеСверхЗаказа)
| КОНЕЦ КАК КОтгрузкеОстаток,
| СУММА(Остатки.Заказано),
| СУММА(Остатки.КВыполнению)
|ПОМЕСТИТЬ ВтОстатки
|ИЗ (ВЫБРАТЬ
| ОстаткиКОформлению.Распоряжение КАК Заказ,
| ОстаткиКОформлению.Номенклатура КАК Номенклатура,
| ОстаткиКОформлению.Характеристика КАК Характеристика,
| ОстаткиКОформлению.Склад КАК Склад,
| ОстаткиКОформлению.Серия КАК Серия,
| ОстаткиКОформлению.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
| 0 КАК КОтгрузкеОстаток,
| - ОстаткиКОформлению.КОформлениюПриход КАК КОтгрузкеСверхЗаказа,
| ОстаткиКОформлению.ЗаказаноПриход КАК Заказано,
| ОстаткиКОформлению.ЗаказаноПриход
| - ОстаткиКОформлению.КОформлениюПриход КАК КВыполнению
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.ОстаткиИОбороты(&НачПериод,&КонПериод,,,
| Распоряжение В (&ЗаказыМатериалов) И КодСтроки <> 0) КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ОстаткиКОтгрузке.ДокументОтгрузки КАК Заказ,
| ОстаткиКОтгрузке.Номенклатура КАК Номенклатура,
| ОстаткиКОтгрузке.Характеристика КАК Характеристика,
| ОстаткиКОтгрузке.Склад КАК Склад,
| ОстаткиКОтгрузке.Серия КАК Серия,
| 0 КАК КОформлениюОстаток,
| ОстаткиКОтгрузке.КОтгрузкеКонечныйОстаток КАК КОтгрузкеОстаток,
| ОстаткиКОтгрузке.КОтгрузкеПриход КАК КОтгрузкеСверхЗаказа,
| 0 КАК Заказано,
| 0 КАК КВыполнению
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодКОтгрузке,&КонПериодКОтгрузке,,,
| ДокументОтгрузки В (&ЗаказыМатериалов)) КАК ОстаткиКОтгрузке) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.Серия,
| ВЫБОР
| КОГДА Остатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Остатки.Заказ.Дата >= Остатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| Остатки.Заказ,
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Склад,
| Остатки.Серия,
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению КАК Количество,
| ИСТИНА КАК ЭтоОтгрузка,
| Остатки.Заказано
|ИЗ ВтОстатки КАК Остатки
|ГДЕ
| ВЫБОР КОГДА Остатки.КОформлениюОстаток >= 0 И Остатки.КОформлениюОстаток < Остатки.КОтгрузкеОстаток
| ИЛИ Остатки.КОформлениюОстаток < 0
| ИЛИ НЕ Остатки.ОрдернаяСхемаПриОтгрузке ТОГДА
| Остатки.КОформлениюОстаток
| ИНАЧЕ
| Остатки.КОтгрузкеОстаток
| КОНЕЦ + Остатки.КВыполнению <> 0
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| СУММА(ТоварыКОтгрузке.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Обороты(&НачПериод,&КонПериод,,
| Распоряжение В (&ЗаказыМатериалов)) КАК ТоварыКОтгрузке
|ГДЕ
| ТоварыКОтгрузке.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Склад,
| ТоварыКОтгрузке.Распоряжение");
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ЗаказыМатериалов", Заказы.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
УстановитьПривилегированныйРежим(Истина);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыМатериаловВПроизводство",
"Распоряжение В (&ЗаказыМатериалов)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
"ДокументОтгрузки В (&ЗаказыМатериалов)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериодКОтгрузке", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериодКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВыборкаЗаказы = Результат[0].Выбрать();
ТаблицаТоварыКОтмене = Результат[2].Выгрузить();
ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
ДопустимыеОтклонения = Результат[3].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика,Серия,Склад,Заказ");
ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
Если ВыборкаЗаказы.Количество() = 0
И ТоварыКОтмене.Количество() = 0
И МерныеТоварыККорректировке.Количество() = 0 Тогда
ЗаказыЗакрыты = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗаказы.Количество() = 0 Тогда
СтатусЗакрытУстановлен = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска)
Сч = ТоварыКОтмене.Количество()-1;
Пока Сч >= 0 Цикл
СтрокаОстатков = ТоварыКОтмене[сч];
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаОстатков);
СтрокиДопустимыхОтклонений = ДопустимыеОтклонения.НайтиСтроки(СтруктураПоиска);
Если СтрокаОстатков.Количество < 0 Тогда
Если СтрокиДопустимыхОтклонений.Количество() > 0 Тогда
ДопустимоеОтклонение = СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение;
Если -СтрокаОстатков.Количество <= ДопустимоеОтклонение Тогда
НовСтр = МерныеТоварыККорректировке.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, СтрокаОстатков);
НовСтр.Количество = -НовСтр.Количество;
КонецЕсли;
КонецЕсли;
ТоварыКОтмене.Удалить(сч);
ИначеЕсли СтрокаОстатков.Количество > 0 Тогда
Если СтрокиДопустимыхОтклонений.Количество() > 0 Тогда
ДопустимоеОтклонение = СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение;
Если СтрокаОстатков.Количество <= ДопустимоеОтклонение Тогда
НовСтр = МерныеТоварыККорректировке.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,СтрокаОстатков);
НовСтр.Количество = -НовСтр.Количество;
ТоварыКОтмене.Удалить(Сч);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Сч = Сч - 1;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Функция СформироватьТекстОбработано()
Обработано = Заказы.Количество() - НеотработанныеЗаказы.Количество();
НастройкиПоТипуЗаказа = НастройкиПадежейПоТипуЗаказа(ТипЗаказа, Обработано);
ТекстРП = НастройкиПоТипуЗаказа.ТекстРП;
ТекстИП = НастройкиПоТипуЗаказа.ТекстИП;
ТекстИПЕЧ = НастройкиПоТипуЗаказа.ТекстИПЕЧ;
ТекстИПМЧ = НастройкиПоТипуЗаказа.ТекстИПМЧ;
ТекстДП = НастройкиПоТипуЗаказа.ТекстДП;
СтатусЗакрытПредставление = НастройкиПоТипуЗаказа.СтатусЗакрытПредставление;
Если Обработано = 0 Тогда
Возврат СтрШаблон(НСтр("ru='Не удалось обработать %1:'"), ТекстИП);
КонецЕсли;
Если ТипЗаказа = "ЗаказКлиента" Тогда
ТекстДля = НСтр("ru='Для заказов клиентов (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказПоставщику" Тогда
ТекстДля = НСтр("ru='Для заказов поставщикам (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
ТекстДля = НСтр("ru='Для заказов на сборку (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказНаВнутреннееПотребеление" Тогда
ТекстДля = НСтр("ru='Для заказов на внутреннее потребление (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказНаПеремещение" Тогда
ТекстДля = НСтр("ru='Для заказов на перемещение (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
ТекстДля = НСтр("ru='Для заявок на возврат товаров от клиента (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
ТекстДля = НСтр("ru='Для заказов переработчикам (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
ТекстДля = НСтр("ru='Для заказов переработчикам (%КоличествоОбработанных%) %ТекстДействия%'");
ИначеЕсли ТипЗаказа = "ЗаказМатериаловВПроизводство" Тогда
ТекстДля = НСтр("ru='Для заказов материалов в производство (%КоличествоОбработанных%) %ТекстДействия%'");
КонецЕсли;
ТекстДействия = "";
Если СкорректироватьМерныеТовары Тогда
ТекстДействия = ТекстДействия + НСтр("ru='скорректированы строки мерных товаров'");
КонецЕсли;
Если СкорректироватьЦены Тогда
ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='скорректированы цены'");
КонецЕсли;
Если ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='отменены непоставленные строки'");
КонецЕсли;
Если ЗакрыватьЗаказы Тогда
ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='установлен статус ""Закрыт""'");
КонецЕсли;
ТекстДля = СтрЗаменить(ТекстДля, "%КоличествоОбработанных%", Заказы.Количество()-НеотработанныеЗаказы.Количество());
Если НеотработанныеЗаказы.Количество() > 0 Тогда
ТекстДействия = ТекстДействия + Символы.ПС + СтрШаблон(НСтр("ru='Не удалось обработать %1:'"), ТекстИПМЧ);
КонецЕсли;
ТекстДля = СтрЗаменить(ТекстДля, "%ТекстДействия%", ТекстДействия);
Возврат ТекстДля;
КонецФункции
&НаСервере
Функция ТекстНеудачнойОбработки(Закрывать)
ТекстДействия = "";
Если Закрывать Тогда
ШаблонНеУдалосьЗакрыть = НСтр("ru='Не удалось установить статус %1.'");
ТекстДействия = СтрШаблон(ШаблонНеУдалосьЗакрыть, СтатусЗакрытПредставление);
Иначе
Если СкорректироватьМерныеТовары
И СкорректироватьЦены
И ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать строки мерных товаров, скорректировать цены, отменить непоставленные строки.'");
ИначеЕсли СкорректироватьМерныеТовары
И СкорректироватьЦены
И Не ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать строки мерных товаров, скорректировать цены.'");
ИначеЕсли СкорректироватьМерныеТовары
И Не СкорректироватьЦены
И ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать строки мерных товаров, отменить непоставленные строки.'");
ИначеЕсли СкорректироватьМерныеТовары
И Не СкорректироватьЦены
И Не ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать строки мерных товаров.'");
ИначеЕсли Не СкорректироватьМерныеТовары
И СкорректироватьЦены
И ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать цены, отменить непоставленные строки.'");
ИначеЕсли Не СкорректироватьМерныеТовары
И СкорректироватьЦены
И Не ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось скорректировать цены.'");
ИначеЕсли Не СкорректироватьМерныеТовары
И Не СкорректироватьЦены
И ОтменитьНеотработанныеСтроки Тогда
ТекстДействия = НСтр("ru='Не удалось отменить непоставленные строки.'");
КонецЕсли;
КонецЕсли;
Возврат ТекстДействия;
КонецФункции
&НаСервере
Процедура ГотовоСервер(ЗакрыватьВТекущемВызове, ЗаказыКОбработке, СтруктураДополнительныхПараметров)
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаЗакрытиеЗаказов
ИЛИ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВсеЗаказыЗакрыты Тогда
Возврат
КонецЕсли;
ШаблонОшибкиЗаблокировать = НСтр("ru='Не удалось заблокировать %Документ%. %ОписаниеОшибки%'");
ШаблонОшибкиЗаписать = НСтр("ru='Не удалось записать %Документ%. %ОписаниеОшибки%'");
Для Каждого ТекСтрока Из ЗаказыКОбработке Цикл
Попытка
ЗаблокироватьДанныеДляРедактирования(ТекСтрока.Значение);
Исключение
СтрокиНеотработанныхЗаказов = НеотработанныеЗаказы.НайтиСтроки(Новый Структура("Заказ", ТекСтрока.Значение));
Если СтрокиНеотработанныхЗаказов.Количество() = 0 Тогда
СтрокаНеотработанныхЗаказов = НеотработанныеЗаказы.Добавить();
СтрокаНеотработанныхЗаказов.Заказ = ТекСтрока.Значение;
Иначе
СтрокаНеотработанныхЗаказов = СтрокиНеотработанныхЗаказов[0];
КонецЕсли;
Если СтрокаНеотработанныхЗаказов.Неудача <> НСтр("ru='Не удалось заблокировать документ.'") Тогда
СтрокаНеотработанныхЗаказов.Неудача = НСтр("ru='Не удалось заблокировать документ.'");
ТекстОшибки = СтрЗаменить(ШаблонОшибкиЗаблокировать, "%Документ%", ТекСтрока.Представление);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ТекСтрока.Значение);
КонецЕсли;
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
ТекСтрока.Значение.Метаданные(),
ТекСтрока.Значение,
ТекстОшибки);
Продолжить;
КонецПопытки;
ЗаказОбъект = ТекСтрока.Значение.ПолучитьОбъект();
ЗаказИзменен = Ложь;
Если СкорректироватьЦены Тогда
СтрокиТекущегоЗаказа = ОтклоненияЦен.НайтиСтроки(Новый Структура("ЗаказПоставщику",ЗаказОбъект.Ссылка));
ОтклоненияТекущегоЗаказа =ОтклоненияЦен.Выгрузить(СтрокиТекущегоЗаказа);
ЗаказОбъект.СкорректироватьЦеныЗаказа(ЗаказОбъект, ОтклоненияТекущегоЗаказа);
ЗаказИзменен= Истина;
КонецЕсли;
Если ЗакрыватьВТекущемВызове Тогда
Если Не ЗаказОбъект.УстановитьСтатус(СтатусЗакрыт, СтруктураДополнительныхПараметров) Тогда
СтрокиНеотработанныхЗаказов = НеотработанныеЗаказы.НайтиСтроки(Новый Структура("Заказ", ТекСтрока.Значение));
Если СтрокиНеотработанныхЗаказов.Количество() = 0 Тогда
СтрокаНеотработанныхЗаказов = НеотработанныеЗаказы.Добавить();
СтрокаНеотработанныхЗаказов.Заказ = ТекСтрока.Значение;
Иначе
СтрокаНеотработанныхЗаказов = СтрокиНеотработанныхЗаказов[0];
КонецЕсли;
СтрокаНеотработанныхЗаказов.Неудача = ТекстНеудачнойОбработки(Истина);
Продолжить;
КонецЕсли;
ЗаказИзменен = Истина;
ИначеЕсли ОтменитьНеотработанныеСтроки
Или СкорректироватьМерныеТовары
Или СкорректироватьМерныеТоварыПоПриемке Тогда
ЗаказИзменен = ЗаказыСервер.СкорректироватьСтрокиЗаказа(ЗаказОбъект, СтруктураДополнительныхПараметров);
КонецЕсли;
Если ЗаказИзменен Тогда
Попытка
ЗаказОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
СтрокиНеотработанныхЗаказов = НеотработанныеЗаказы.НайтиСтроки(Новый Структура("Заказ", ТекСтрока.Значение));
Если СтрокиНеотработанныхЗаказов.Количество() = 0 Тогда
СтрокаНеотработанныхЗаказов = НеотработанныеЗаказы.Добавить();
СтрокаНеотработанныхЗаказов.Заказ = ТекСтрока.Значение;
Иначе
СтрокаНеотработанныхЗаказов = СтрокиНеотработанныхЗаказов[0];
КонецЕсли;
СтрокаНеотработанныхЗаказов.Неудача = ТекстНеудачнойОбработки(ЗакрыватьВТекущемВызове);
ТекстОшибки = СтрЗаменить(ШаблонОшибкиЗаписать, "%Документ%", ТекСтрока.Представление);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ТекСтрока.Значение);
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,
ТекСтрока.Значение.Метаданные(),
ТекСтрока.Значение,
ТекстОшибки);
КонецПопытки
КонецЕсли;
КонецЦикла;
Если ЗакрыватьВТекущемВызове И НеотработанныеЗаказы.Количество()>0 Тогда
СписокКОбработке = Новый СписокЗначений;
СписокКОбработке.ЗагрузитьЗначения(НеотработанныеЗаказы.Выгрузить().ВыгрузитьКолонку("Заказ"));
ГотовоСервер(НЕ ЗакрыватьВТекущемВызове, СписокКОбработке, СтруктураДополнительныхПараметров);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НоваяТаблицаТоваровПриходРасход()
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Результат.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Результат.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Результат.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Результат.Колонки.Добавить("Отменено", Новый ОписаниеТипов("Булево"));
Результат.Колонки.Добавить("НоменклатураОприходование", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Результат.Колонки.Добавить("ХарактеристикаОприходование", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Возврат Результат;
КонецФункции;
#КонецОбласти