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