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