#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Организация, Соглашение";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Менеджер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Менеджер";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Склад", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"НаименованиеВходящегоДокумента", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
МеханизмыДокумента.Добавить("Закупки");
ПоступлениеТоваровОтХранителяЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ПоступлениеТоваровОтХранителя") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры);
ПоступлениеТоваровОтХранителяЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(Запрос, ТекстыЗапроса, Регистры, ПустаяСсылка().Метаданные());
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область СозданиеНаОсновании
Функция ДобавитьКомандуСоздатьНаОснованииПоступлениеОтХранителя(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПоступлениеТоваровОтХранителя) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Идентификатор = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ПоступлениеТоваровОтХранителяСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Поступление товаров от хранителя'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииПоступлениеОтКомиссионера(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПоступлениеТоваровОтХранителя) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Идентификатор = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ПоступлениеТоваровОтКомиссионераСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Поступление товаров от комиссионера'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьКомиссиюПриПродажах";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииВозвратОтПереработчика(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПоступлениеТоваровОтХранителя) Тогда
ИмяОбработчика = "ПереработкаНаСторонеКлиент.ПоступлениеТоваровОтХранителяОперацияВозвратОтПереработчикаСоздатьНаОсновании";
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьВозвратОтПереработчика";
КомандаСоздатьНаОсновании.Обработчик = ИмяОбработчика;
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Возврат сырья от переработчика'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПроизводствоНаСтороне2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииПоступлениеОтПереработчика(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПоступлениеТоваровОтХранителя) Тогда
ИмяОбработчика = "ПереработкаНаСторонеКлиент.ПоступлениеТоваровОтХранителяОперацияПоступлениеОтПереработчикаСоздатьНаОсновании";
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьПоступлениеОтПереработчика";
КомандаСоздатьНаОсновании.Обработчик = ИмяОбработчика;
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПоступлениеТоваровОтХранителя.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Поступление от переработчика'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПроизводствоНаСтороне2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
НастройкиОпераций = Новый Соответствие;
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ВозвратОтХранителя,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПриемки"));
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПриемки"));
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПриемкиПоПоступлениямОтПереработчика2_5"));
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПриемкиПоПоступлениямОтПереработчика2_5"));
Для каждого НастройкаОперации Из НастройкиОпераций Цикл
Если Не НастройкаОперации.Значение Тогда
Продолжить;
КонецЕсли;
ХозяйственнаяОперация = НастройкаОперации.Ключ;
Команда = Документы.АктОРасхожденияхПослеПриемки.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда, "ХозяйственнаяОперация", ХозяйственнаяОперация);
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(ХозяйственнаяОперация);
Команда.Представление = Обработчик.ЗаголовокФормыАкта();
КонецЕсли;
КонецЦикла;
Команда = Документы.ПередачаТоваровХранителю.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
КонецЕсли;
Команда = Документы.ОтчетПереработчика2_5.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
КонецЕсли;
Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ПоступлениеТоваровОтХранителяЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Назначения
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок =
Справочники.Назначения.ДобавитьОписаниеКолонок(
МакетФормы,
"ТоварыПереданныеХранителям",
Истина,
"Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Передано").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Организация = "Объект.Организация";
ОписаниеКолонок.ПутиКДанным.Договор = "Объект.Договор";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок =
Справочники.Назначения.ДобавитьОписаниеКолонок(
МакетФормы,
"ОбеспечениеЗаказов",
Истина,
"Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
ОписаниеКолонок =
Справочники.Назначения.ДобавитьОписаниеКолонок(
МакетФормы,
"ОбеспечениеЗаказовВсеСклады",
Истина,
"Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
Возврат МакетФормы;
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "Товары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
ПорядокОбработкиДокумента.ИмяРеквизитаПоЗаказу = "ПоРаспоряжениям";
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,ХозяйственнаяОперация,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ИспользоватьСерииНоменклатуры =
ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура());
УчитыватьСебестоимостьПоСериям =
ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад", Новый Структура());
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПоступлениеТоваровОтХранителя";
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = УчитыватьСебестоимостьПоСериям;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5 Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаОтПоставщика);
Иначе
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента);
КонецЕсли;
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
ПараметрыУказанияСерий.ПоляСвязи.Добавить("НоменклатураОприходование");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("ХарактеристикаОприходование");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийНаСкладах");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПереданныхТоваров");
ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыУказанияСерий.ОперацияДокумента = Объект.ХозяйственнаяОперация;
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.НоменклатураОприходование КАК НоменклатураОприходование,
| Товары.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтатусУказанияСерийПереданныхТоваров,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| НоменклатураОприходование,
| ХарактеристикаОприходование,
| Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.НоменклатураОприходование КАК НоменклатураОприходование,
| Товары.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(Товары.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.НоменклатураОприходование,
| Товары.ХарактеристикаОприходование,
| Товары.Назначение,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| НоменклатураОприходование,
| ХарактеристикаОприходование,
| Назначение
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.НоменклатураОприходование КАК НоменклатураОприходование,
| Серии.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Серии.Назначение КАК Назначение,
| Серии.Количество КАК Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.НоменклатураОприходование КАК НоменклатураОприходование,
| Серии.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Серии.Назначение КАК Назначение,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.НоменклатураОприходование,
| Серии.ХарактеристикаОприходование,
| Серии.Назначение
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| НоменклатураОприходование,
| ХарактеристикаОприходование,
| Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтарыйСтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтарыйСтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА &ТолькоСерииДляСебестоимости
| ТОГДА 0
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И (НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении)
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеПоВозвратуОтКлиента
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий,
| ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| И ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах)
| ИЛИ (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров)
| ИЛИ ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийПереданныхПереработчикуТоваров
| И &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтПереработчика2_5))
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 18
| ИНАЧЕ 17
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерийПереданныхТоваров
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.НоменклатураОприходование = ТоварыДляЗапроса.НоменклатураОприходование
| И Товары.ХарактеристикаОприходование = ТоварыДляЗапроса.ХарактеристикаОприходование
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.НоменклатураОприходование = СерииДляЗапроса.НоменклатураОприходование
| И ТоварыДляЗапроса.ХарактеристикаОприходование = СерииДляЗапроса.ХарактеристикаОприходование
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И ПолитикиУчетаСерий.Склад = &Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| Статусы.СтатусУказанияСерийПереданныхТоваров КАК СтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийПереданныхТоваров
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийПереданныхТоваров
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерий
| ИЛИ Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерийНаСкладах
| ИЛИ Статусы.СтатусУказанияСерийПереданныхТоваров <> Статусы.СтарыйСтатусУказанияСерийПереданныхТоваров
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ПроводкиРеглУчета
Функция ТекстОтраженияВРеглУчете() Экспорт
Возврат ПоступлениеТоваровОтХранителяЛокализация.ТекстОтраженияВРеглУчете();
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат ПоступлениеТоваровОтХранителяЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Склад)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(ХозяйственнаяОперация)";
КонецПроцедуры
#КонецОбласти
#Область Заполнение
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
ХозяйственнаяОперацияНакладной = Неопределено;
Если СвойстваЗаказов = Неопределено
Или Не СвойстваЗаказов.Свойство("ХозяйственнаяОперацияОформляемойНакладной", ХозяйственнаяОперацияНакладной)
Или Не ЗначениеЗаполнено(ХозяйственнаяОперацияНакладной) Тогда
ХозяйственнаяОперацияНакладной = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
КонецЕсли;
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(ХозяйственнаяОперацияНакладной);
Запрос = Новый Запрос;
Запрос.Текст = Обработчик.ТекстЗапросаДанныеЗаполненияНакладной();
Запрос.УстановитьПараметр("Заказ", МассивСсылок[0]);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперацияНакладной);
РеквизитыШапки = Новый Структура;
Результат = Запрос.Выполнить();
Для Каждого Колонка Из Результат.Колонки Цикл
РеквизитыШапки.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Выборка);
КонецЕсли;
Возврат РеквизитыШапки;
КонецФункции
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Ложь);
ПараметрыЗаполнения.Вставить("ДополнятьСериямиПоЗаявке", Ложь);
ПараметрыЗаполнения.Вставить("ОформлениеЧерезРМ", Ложь);
ПараметрыЗаполнения.Вставить("АктОРасхождениях", Документы.АктОРасхожденияхПослеПриемки.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ОснованиеАкта", Документы.ПоступлениеТоваровОтХранителя.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("Организация", Справочники.Организации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("Подразделение", Справочники.СтруктураПредприятия.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "Распоряжение");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "");
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ДанныеДляПроверкиВводаНаОсновании(Распоряжения, ХозяйственнаяОперация = Неопределено) Экспорт
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(ХозяйственнаяОперация);
ДанныеДляВвода = Новый Структура("Основание, Статус, РаспоряженияКОформлению, ЕстьОтгрузить, МожноСгруппировать");
ДанныеДляВвода.ЕстьОтгрузить = Ложь;
ДанныеДляВвода.МожноСгруппировать = Истина;
ДанныеДляВвода.Вставить("ОформлениеЧерезРМ", Ложь);
ДанныеДляВвода.Вставить("Склад");
ДанныеДляВвода.Вставить("ХозяйственнаяОперация");
ДанныеДляВвода.Вставить("ХозяйственнаяОперацияОформляемойНакладной");
ДанныеДляВвода.Вставить("ИмяРегистраЗаказ");
ДанныеДляВвода.ХозяйственнаяОперацияОформляемойНакладной = ХозяйственнаяОперация;
ДанныеДляВвода.ИмяРегистраЗаказ = Обработчик.ИмяРегистраЗаказ();
Запрос = Новый Запрос;
Запрос.Текст = Обработчик.ТекстЗапросаДанныеДляПроверкиВводаНаОсновании();
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("Регистратор", Неопределено);
Результат = Запрос.ВыполнитьПакет();
Выборка = Результат[0].Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.Количество() = 1 Тогда
ДанныеДляВвода.Основание = Выборка.Основание;
ДанныеДляВвода.Статус = Выборка.Статус;
КонецЕсли;
ДанныеДляВвода.ОформлениеЧерезРМ = Выборка.ОформлениеЧерезРМ;
ДанныеДляВвода.Склад = Выборка.Склад;
ДанныеДляВвода.ХозяйственнаяОперация = Выборка.ХозяйственнаяОперация;
ДанныеДляВвода.ЕстьОтгрузить = Не Результат[1].Пустой();
КонецЕсли;
КОформлению = Результат[Результат.ВГраница()].Выгрузить();
ДанныеДляВвода.РаспоряженияКОформлению = КОформлению.ВыгрузитьКолонку("РаспоряженияКОформлению");
Возврат ДанныеДляВвода;
КонецФункции
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Регистратор", Накладная);
Запрос.УстановитьПараметр("МассивЗаказов", Новый Массив);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("Склад", РеквизитыШапки.Склад);
Запрос.УстановитьПараметр("Партнер", РеквизитыШапки.Партнер);
Запрос.УстановитьПараметр("Контрагент", РеквизитыШапки.Контрагент);
Запрос.УстановитьПараметр("Договор", РеквизитыШапки.Договор);
Запрос.УстановитьПараметр("Соглашение", РеквизитыШапки.Соглашение);
Запрос.УстановитьПараметр("Сделка", РеквизитыШапки.Сделка);
Запрос.УстановитьПараметр("Валюта", РеквизитыШапки.Валюта);
Запрос.УстановитьПараметр("НаправлениеДеятельности", РеквизитыШапки.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", РеквизитыШапки.ВернутьМногооборотнуюТару);
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| &Регистратор КАК Распоряжение
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
Обработчик = ОбработчикДействий(РеквизитыШапки.ХозяйственнаяОперация);
ТекстЗапроса =
Обработчик.ТекстЗапросаРаспоряженияНакладной(ОбщегоНазначенияУТ.ПараметрыТекстаЗапросаРаспоряженийНакладных());
Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
ТекстыЗапроса.Добавить(ТекстЗапроса);
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
КонецФункции
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Возврат "Организация, Партнер, Контрагент, Соглашение, Договор, Склад, Сделка,
|Подразделение, НаправлениеДеятельности, ВариантПриемкиТоваров";
КонецФункции
Функция КлючевыеПоляТаблицыТоваровРаспоряжения() Экспорт
Возврат "Распоряжение, Номенклатура, Характеристика, Назначение, Серия";
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
ПараметрыЗаполнения.Организация = РеквизитыШапки.Организация;
ПараметрыЗаполнения.Склад = РеквизитыШапки.Склад;
Обработчик = ОбработчикДействий(РеквизитыШапки.ХозяйственнаяОперация);
ПараметрыЗаполнения.КлючевыеПоля = Обработчик.КлючевыеПоляТаблицыТоваровРаспоряжения();
КонецПроцедуры
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НоменклатураОприходование КАК НоменклатураОприходование,
| Таблица.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Таблица.Порча КАК Порча,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Цена КАК Цена,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.КодСтроки КАК КодСтроки
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Накладная";
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Если ПараметрыЗаполнения.МассивЗаказов <> Неопределено
И ПараметрыЗаполнения.МассивЗаказов.Количество() = 1 Тогда
Объект.ДокументОснование = ПараметрыЗаполнения.МассивЗаказов[0];
КонецЕсли;
Распоряжения = Объект.Товары.Выгрузить(, "Распоряжение");
Распоряжения.Свернуть("Распоряжение");
Если Распоряжения.Количество() > 1
Или Распоряжения.Количество() = 1
И ЗначениеЗаполнено(Распоряжения[0].Распоряжение) Тогда
Объект.ПоРаспоряжениям = Истина;
КонецЕсли;
Если Объект.ПоРаспоряжениям
И ТипЗнч(Распоряжения[0].Распоряжение) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
Объект.ВидЦены = ВидЦеныИзТабличнойЧасти(Распоряжения);
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваровХранителю") Тогда
Объект.ВидЦены = ВидЦеныИзТабличнойЧасти(Объект.ДокументОснование);
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
Доступность =
ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5")
И (ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или (ПравоДоступа("Добавление", Метаданные.Документы.ПоступлениеТоваровОтХранителя)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыПоставщикам)));
Если Не Доступность Тогда
Возврат;
КонецЕсли;
ПараметрыОтбора =
НакладныеСервер.ПараметрыОтбораРаспоряжений(,,,
Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5,
ОбщиеПараметрыЗапросов.Пользователь);
ТекстыЗапросов =
Обработки.ЖурналДокументовПередачиВПереработку2_5.ТекстыЗапросов(
ПараметрыОтбора,
Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
Запрос = Новый Запрос(ТекстыЗапросов.ТекстЗапросаРасчетаСостояний);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ХозОперация", Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
Запрос.УстановитьПараметр("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
НакладныеСервер.ДобавитьПараметрыОтбораПоРееструДокументов(Запрос, ПараметрыОтбора);
Запрос.Выполнить();
Запрос.Текст = ТекстыЗапросов.ТекстЗапросаСпискаРаспоряжений;
Результат = Запрос.Выполнить().Выбрать().Количество();
ДелоРодитель = ТекущиеДела.Найти("ПроизводствоНаСтороне", "Идентификатор");
Если ДелоРодитель = Неопределено Тогда
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ПроизводствоНаСтороне";
ДелоРодитель.Представление = НСтр("ru = 'Производство на стороне'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Производство;
КонецЕсли;
ДелоРодитель.ЕстьДела =
ДелоРодитель.ЕстьДела
Или Результат > 0;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "СтраницаПоступления");
ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПоступлениеОтПереработчикаКОформлению2_5";
Дело.ЕстьДела = Результат > 0;
Дело.Представление = НСтр("ru = 'Поступления от переработчика к оформлению'");
Дело.Количество = Результат;
Дело.Важное = Ложь;
Дело.Форма = "Обработка.ЖурналДокументовПередачиВПереработку2_5.Форма.КОформлениюНакладных";
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = "ПроизводствоНаСтороне";
Возврат;
КонецПроцедуры
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок = Неопределено) Экспорт
ОтборПоСкладу = ЗначениеЗаполнено(ПараметрыЗаполнения.Склад);
ОтборПоНомерамГТД = (ПараметрыЗаполнения.МассивЗаказов <> Неопределено
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ПередачаТоваровХранителю"))
Или ЗначениеЗаполнено(ПараметрыЗаполнения.АктОРасхождениях);
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
Обработчик =
Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(
ПараметрыЗаполнения.РеквизитыШапки.ХозяйственнаяОперация);
ТекстыЗапроса = Новый Массив;
Отбор = Новый Структура(Обработчик.ИмяИзмерениеЗаказ(), "Распоряжения");
Если ОтборПоСкладу Тогда
Отбор.Вставить("Склад", "Склад");
КонецЕсли;
ТекстыЗапроса.Добавить(Обработчик.ТекстЗапросаОстаткиТоваровКОформлению("ВтДанныеУчета", Отбор));
Отбор = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Таблица.Ссылка", "&Распоряжения");
Если ОтборПоСкладу
И (ПараметрыЗаполнения.МассивЗаказов <> Неопределено
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента")) Тогда
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Таблица.Склад", "&Склад");
КонецЕсли;
ТекстыЗапроса.Добавить(
Обработчик.ТекстЗапросаТоварыДокументаЗаказа(
Отбор,
ПараметрыЗаполнения.ДополнятьСериямиПоЗаявке));
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
ТекстЗапроса = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписейВоВсемЗапросе(ТекстЗапроса, Истина);
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Если ОтборПоСкладу Тогда
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
КонецЕсли;
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
Если ЗначениеЗаполнено(ПараметрыЗаполнения.МассивЗаказов)
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ЗаполнитьСерииПоОтчетамПереработчика(ТаблицаЗаказы, МенеджерВременныхТаблиц, Регистратор);
КонецЕсли;
КолонкаЗаказПоставщику = ТаблицаЗаказы.Колонки.ЗаказПоставщику;
КолонкаЗаказПоставщику.Имя = "Распоряжение";
Если Не Обработчик.ИспользоватьКодСтроки() Тогда
ТаблицаЗаказы.Колонки.Добавить("Распределено", Новый ОписаниеТипов("Булево"));
ТаблицаЗаказы.ЗаполнитьЗначения(Ложь, "Распределено");
Если ЗначениеЗаполнено(ПараметрыЗаполнения.КлючевыеПоля) Тогда
СтруктураПоиска = Новый Структура(ПараметрыЗаполнения.КлючевыеПоля + ", Распределено");
Иначе
СтруктураПоиска = Новый Структура(Обработчик.КлючевыеПоляТаблицыТоваровРаспоряжения() + ", Распределено");
КонецЕсли;
УдаляемыеСтроки = Новый Массив;
Для Каждого СтрокаТаблицыЗначений Из ТаблицаЗаказы Цикл
Если СтрокаТаблицыЗначений.Распределено Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицыЗначений);
КоличествоКРаспределению = СтрокаТаблицыЗначений.КОформлению;
НайденныеСтроки = ТаблицаЗаказы.НайтиСтроки(СтруктураПоиска);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Если КоличествоКРаспределению = 0 Тогда
Если УдаляемыеСтроки.Найти(НайденнаяСтрока) = Неопределено Тогда
УдаляемыеСтроки.Добавить(НайденнаяСтрока);
КонецЕсли;
ИначеЕсли (НайденнаяСтрока.Количество >= КоличествоКРаспределению) Тогда
НайденнаяСтрока.Количество = КоличествоКРаспределению;
НайденнаяСтрока.КОформлению = КоличествоКРаспределению;
НайденнаяСтрока.Распределено = Истина;
КоличествоКРаспределению = КоличествоКРаспределению - НайденнаяСтрока.КОформлению;
Иначе
НайденнаяСтрока.КОформлению = НайденнаяСтрока.Количество;
НайденнаяСтрока.Распределено = Истина;
КоличествоКРаспределению = КоличествоКРаспределению - НайденнаяСтрока.КОформлению;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОбщегоНазначенияУТ.УдалитьСтрокиТаблицы(ТаблицаЗаказы, УдаляемыеСтроки);
КонецЕсли;
ТаблицаЗаказы.Колонки.Добавить("НомерГТД", Новый ОписаниеТипов("СправочникСсылка.НомераГТД"));
ТаблицаПередачи = ТаблицаЗаказы.СкопироватьКолонки();
Если ПараметрыЗаполнения.МассивЗаказов <> Неопределено
И (ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ПередачаТоваровХранителю")
Или ПараметрыЗаполнения.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера) Тогда
ОтборПоТипуГТД = Ложь;
Если ПараметрыЗаполнения.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ОтборПоТипуГТД = Справочники.СоглашенияСКлиентами.КомиссионерВедетУчетПоРНПТ(
ПараметрыЗаполнения.РеквизитыШапки.Соглашение);
КонецЕсли;
ТекстСоединения = "Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров = ДанныеУчета.АналитикаУчетаНоменклатуры
| И Таблица.НомерГТД = ДанныеУчета.НомерГТД";
Если ОтборПоТипуГТД Тогда
ТекстСоединения = "Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров = ДанныеУчета.АналитикаУчетаНоменклатуры";
КонецЕсли;
ТекстПроверкиСоединения = "НЕ ДанныеУчета.АналитикаУчетаНоменклатуры ЕСТЬ NULL";
Если ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
АналитикиУчетаНоменклатуры = АналитикиУчетаНоменклатурыПоВозвратуСКомиссии(ПараметрыЗаполнения.МассивЗаказов);
Иначе
АналитикиУчетаНоменклатуры = АналитикиУчетаНоменклатурыПоПередачеТоваровХранителю(ПараметрыЗаполнения.МассивЗаказов);
КонецЕсли;
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(
Документы.ПередачаТоваровХранителю.ТекстЗапросаОстаткиКОформлениюПоПередачам("ВтДанныеУчета"));
Отбор = Новый Соответствие;
Если ПараметрыЗаполнения.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Таблица.ЗаказКлиента", "&Распоряжения");
Иначе
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Таблица.Ссылка", "&Распоряжения");
КонецЕсли;
ТекстыЗапроса.Добавить(
Документы.ПередачаТоваровХранителю.ТекстЗапросаТоварыДокумента(
Отбор,
ТекстСоединения,
ТекстПроверкиСоединения));
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("АналитикиУчетаНоменклатуры", АналитикиУчетаНоменклатуры);
Запрос.УстановитьПараметр("КомиссионерВедетУчетПоРНПТ", ОтборПоТипуГТД);
Если ОтборПоСкладу Тогда
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
КонецЕсли;
ТаблицаПередачи = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ТекстЗапросаОстаткиКОформлениюПоАктам("ВтДанныеУчета", Обработчик.ИспользоватьКодСтроки()));
Отбор = Новый Соответствие;
Отбор.Вставить("ДанныеУчета.ДокументОснование", "ДокументПоступления");
ТекстСоединения =
" Таблица.Ссылка = ДанныеУчета.ДокументОснование
| И Таблица.Распоряжение = ДанныеУчета.Распоряжение
| И Таблица.НомерГТД = ДанныеУчета.НомерГТД
|";
Если Обработчик.ИспользоватьКодСтроки() Тогда
ТекстСоединения =
ТекстСоединения +
"И Таблица.КодСтроки = ДанныеУчета.КодСтроки";
Иначе
ТекстСоединения =
ТекстСоединения +
" И Таблица.Номенклатура = ДанныеУчета.Номенклатура
| И Таблица.Характеристика = ДанныеУчета.Характеристика
| И Таблица.Назначение = ДанныеУчета.Назначение";
КонецЕсли;
ТекстыЗапроса.Добавить(ТекстЗапросаТоварыДокумента(Отбор, ТекстСоединения, Обработчик.ИспользоватьКодСтроки()));
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());;
Запрос.УстановитьПараметр("ДокументПоступления", ПараметрыЗаполнения.ОснованиеАкта);
Запрос.УстановитьПараметр("АктОРасхождениях", ПараметрыЗаполнения.АктОРасхождениях);
Если ОтборПоСкладу Тогда
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
КонецЕсли;
ТаблицаАктыОРасхождениях = Запрос.Выполнить().Выгрузить();
Если ЗначениеЗаполнено(ПараметрыЗаполнения.АктОРасхождениях) Тогда
ТаблицаЗаказы.Очистить();
КонецЕсли;
ТаблицаОтчетыПереработчика = ТаблицаЗаказы.СкопироватьКолонки();
Если ПараметрыЗаполнения.МассивЗаказов <> Неопределено
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст = Документы.ОтчетПереработчика2_5.ТекстЗапросаОстаткиКПоступлениюПоОтчетамПереработчика();
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
ТаблицаОтчетыПереработчика = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаПередачи, ТаблицаЗаказы);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаАктыОРасхождениях, ТаблицаЗаказы);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаОтчетыПереработчика, ТаблицаЗаказы);
КолонкаКОформлению = ТаблицаЗаказы.Колонки.КОформлению;
КолонкаКОформлению.Имя = "КоличествоВЗаказе";
Отбор = Новый Соответствие;
Если ОтборПоСкладу Тогда
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Склад", "&Склад", "=");
КонецЕсли;
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст =
РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОсталосьОформитьПоОрдерам(
Ложь, Отбор);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Если ОтборПоСкладу Тогда
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
КонецЕсли;
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
Если ТаблицаОрдера.Количество() > 0 И ЗначениеЗаполнено(Регистратор) Тогда
РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Регистратор, "ПоРаспоряжениям, Распоряжение");
Если РеквизитыДокумента.ПоРаспоряжениям
И ЗначениеЗаполнено(РеквизитыДокумента.Распоряжение) Тогда
Для Каждого СтрокаОрдера Из ТаблицаОрдера Цикл
Если Не ЗначениеЗаполнено(СтрокаОрдера.Распоряжение) Тогда
СтрокаОрдера.Распоряжение = РеквизитыДокумента.Распоряжение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру
И ЗначениеЗаполнено(ПараметрыЗаполнения.МассивЗаказов)
И ТипЗнч(ПараметрыЗаполнения.МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ЗаполнитьСерииЗаказовПоТаблицеОрдеров(ТаблицаЗаказы, ТаблицаОрдера.Скопировать());
КонецЕсли;
КолонкаКоличество = ТаблицаОрдера.Колонки.Количество;
КолонкаКоличество.Имя = "КоличествоВОрдере";
Ключ = ПараметрыЗаполнения.КлючевыеПоля;
Если ОтборПоНомерамГТД Тогда
Ключ = Ключ + "," + " НомерГТД";
КонецЕсли;
Если Обработчик.ИспользоватьКодСтроки() Тогда
Ключ = Ключ + ", КодСтроки";
КонецЕсли;
Товары.Индексы.Добавить(Ключ);
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = ПараметрыЗаполнения.КлючевыеПоля;
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
КонецПроцедуры
Процедура ПривязатьСтрокиКЗаказам(Форма, Объект, ПараметрыУказанияСерий, ОтобратьПоЗаказу) Экспорт
Если Не Форма.ИспользоватьРаспоряжения
Или (Не Форма.ИспользоватьПоступлениеПоНесколькимЗаказам
И Не ЗначениеЗаполнено(Объект.Распоряжение)) Тогда
Возврат;
КонецЕсли;
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
ПараметрыТекстаЗапроса = ОбщегоНазначенияУТ.ПараметрыТекстаЗапросаРаспоряженийНакладных();
ПараметрыТекстаЗапроса.СформироватьВТ = Истина;
ПараметрыТекстаЗапроса.ИмяВТ = "РаспоряженияНакладной";
Если ОтобратьПоЗаказу Тогда
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"Ссылка",
"&Распоряжение",
"=");
КонецЕсли;
ТекстыЗапроса.Добавить(Обработчик.ТекстЗапросаРаспоряженияНакладной(ПараметрыТекстаЗапроса));
ОтборПоИзмерениям = Новый Соответствие();
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборПоИзмерениям,
Обработчик.ИмяИзмерениеЗаказ(),
"ВЫБРАТЬ
| РаспоряженияНакладной.Распоряжение
|ИЗ
| РаспоряженияНакладной КАК РаспоряженияНакладной");
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"Склад",
"&Склад",
"=");
ТекстыЗапроса.Добавить(Обработчик.ТекстЗапросаОстаткиТоваровКОформлению("ТоварыКОформлению", ОтборПоИзмерениям));
ТекстыЗапроса.Добавить(ТекстЗапросаДублиТоваровКОформлению());
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыКОформлению.Распоряжение КАК Распоряжение,
| ТоварыКОформлению.КодСтроки КАК КодСтроки,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Назначение КАК Назначение,
| ТоварыКОформлению.Серия КАК Серия,
| ТоварыКОформлению.КОформлению КАК КОформлению,
| 0 КАК Распределено,
| ДублиТоваровКОформлению.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ТоварыКОформлению КАК ТоварыКОформлению
|
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваровКОформлению КАК ДублиТоваровКОформлению
| ПО ТоварыКОформлению.Номенклатура = ДублиТоваровКОформлению.Номенклатура
| И ТоварыКОформлению.Характеристика = ДублиТоваровКОформлению.Характеристика
|
|УПОРЯДОЧИТЬ ПО
| ТоварыКОформлению.Номенклатура,
| ТоварыКОформлению.Характеристика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
Запрос = Новый Запрос;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
ИменаКолонок = "Номенклатура, Характеристика";
ТаблицаТоваров = Объект.Товары.Выгрузить(, ИменаКолонок);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("Распоряжение", Объект.Распоряжение);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Соглашение", Объект.Соглашение);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Договор", Объект.Договор);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("Сделка", Объект.Сделка);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Объект.ВозвратПереданнойМногооборотнойТары);
Запрос.УстановитьПараметр("Товары", ТаблицаТоваров);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
Если РезультатЗапроса[2].Пустой() Тогда
Возврат;
КонецЕсли;
ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Распоряжение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Серия");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
Выборка = РезультатЗапроса[4].Выбрать();
ИменаЗаполняемыхСвойств = "Распоряжение, КодСтроки, Назначение";
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
СтруктураПоиска.Вставить("Серия", Выборка.Серия);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураПоиска);
НераспределенноеКоличество = Выборка.КОформлению;
Если Выборка.КоличествоДублей < 2 Тогда
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, ИменаЗаполняемыхСвойств);
НераспределенноеКоличество = НераспределенноеКоличество - ТекСтрока.Количество;
Если НераспределенноеКоличество <= 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
НайденаПодходящаяСтрока = Ложь;
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Если ТекСтрока.Количество = Выборка.КОформлению Тогда
НайденаПодходящаяСтрока = Истина;
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, ИменаЗаполняемыхСвойств);
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденаПодходящаяСтрока Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Количество = НераспределенноеКоличество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
ОбрабатываемыеСтроки = Новый Массив;
КешированныеЗначения = Неопределено;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Распоряжение", Неопределено);
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("Номенклатура", НераспределеннаяСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
СтруктураПоиска.Вставить("Серия", НераспределеннаяСтрока.Серия);
СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств);
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
Разница = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
НоваяСтрокаТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары);
НоваяСтрокаТовары.Количество = Разница;
СтрокиТовары.Добавить(НоваяСтрокаТовары);
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств + ",Количество");
НераспределеннаяСтрока.Количество = 0;
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
Разница = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств);
НераспределеннаяСтрока.Количество = Разница;
КонецЕсли;
Если НераспределеннаяСтрока.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КешированныеЗначения);
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект, ПараметрыЗаполнения) Экспорт
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиСЦеной = Новый Массив;
ОбрабатываемыеСтрокиСВидомЦены = Новый Массив;
Для Каждого Строка Из Объект.Товары Цикл
Если Не Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5 Тогда
Если ЗначениеЗаполнено(Строка.Цена) Тогда
ОбрабатываемыеСтрокиСЦеной.Добавить(Строка);
Продолжить;
ИначеЕсли ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ОбрабатываемыеСтрокиСВидомЦены.Добавить(Строка);
Продолжить;
КонецЕсли;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЦикла;
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиСЦеной,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиСВидомЦены,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
Функция НаименованияВходящихДокументов() Экспорт
МассивНаименований = Новый Массив();
МассивНаименований.Добавить(НСтр("ru='Поступление'"));
ПоступлениеТоваровОтХранителяЛокализация.ДополнитьНаименованияВходящихДокументов(МассивНаименований);
Возврат МассивНаименований;
КонецФункции
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Очистить();
Поля.Добавить("НаименованиеВходящегоДокумента");
Поля.Добавить("НомерВходящегоДокумента");
Поля.Добавить("ДатаВходящегоДокумента");
Поля.Добавить("ХозяйственнаяОперация");
Поля.Добавить("Дата");
Поля.Добавить("Номер");
Поля.Добавить("ХозяйственнаяОперация");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ПредставлениеОбъекта = НСтр("ru = 'Поступление товаров от комиссионера'");
ИначеЕсли Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5 Тогда
ПредставлениеОбъекта = НСтр("ru = 'Поступление от переработчика'");
ИначеЕсли Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5 Тогда
ПредставлениеОбъекта = НСтр("ru = 'Возврат сырья от переработчика'");
Иначе
ПредставлениеОбъекта = НСтр("ru = 'Поступление товаров от хранителя'");
КонецЕсли;
Представление = СтрШаблон(НСтр("ru='%1 %2 от %3'"), ПредставлениеОбъекта, Данные.Номер, Данные.Дата);
ОбщегоНазначенияУТКлиентСервер.ОбработкаПолученияПредставленияВходящегоДокумента(
Данные, Представление, СтандартнаяОбработка, "ПоступлениеТоваровОтХранителя");
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.ПоРаспоряжениям КАК ПоРаспоряжениям,
| ДанныеДокумента.Распоряжение КАК Распоряжение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Менеджер КАК Менеджер,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ЕСТЬNULL(ДанныеДокумента.Подразделение.ВариантОбособленногоУчетаТоваров,
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.ВозвратПереданнойМногооборотнойТары КАК ВозвратПереданнойМногооборотнойТары,
| ДанныеДокумента.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ДанныеДокумента.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ДанныеДокумента.НаименованиеВходящегоДокумента КАК НаименованиеВходящегоДокумента,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ВЫБОР
| КОГДА ДанныеДокумента.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ДанныеДокумента.Дата >= ДанныеДокумента.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользоватьОрдернуюСхемуПриПоступлении,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Реквизиты = РезультатЗапроса.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
ИнформацияПоДоговору = "";
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер);
ИдентификаторМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ПоступлениеТоваровОтХранителя");
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ИдентификаторМетаданных);
Запрос.УстановитьПараметр("НомерНаПечать", НомерНаПечать);
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета",
ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ТаблицаВидыЗапасов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &Договор КАК Склад,
| ТаблицаВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| &НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.Склад КАК КорСклад,
| ТаблицаВидыЗапасов.КорТипЗапасов КАК КорТипЗапасов,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.КорВидЗапасов
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.Количество КАК КорКоличество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ТаблицаСерии.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА ТаблицаСерии.Номенклатура
| ИНАЧЕ ТаблицаСерии.НоменклатураОприходование
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаСерии.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА ТаблицаСерии.Характеристика
| ИНАЧЕ ТаблицаСерии.ХарактеристикаОприходование
| КОНЕЦ КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| &Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК ПомещениеОтправителя,
| &Склад КАК Получатель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК ПомещениеПолучателя,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента) КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| &Период КАК Период,
| &Ссылка КАК Регистратор,
| НЕ &ИспользоватьОрдернуюСхемуПриПоступлении КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Серии КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ТаблицаТовары.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА ТаблицаТовары.Номенклатура
| ИНАЧЕ ТаблицаТовары.НоменклатураОприходование
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА ТаблицаТовары.Характеристика
| ИНАЧЕ ТаблицаТовары.ХарактеристикаОприходование
| КОНЕЦ КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| &Партнер,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка),
| &Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка),
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента),
| &Ссылка,
| &Период,
| &Ссылка,
| НЕ &ИспользоватьОрдернуюСхемуПриПоступлении
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Количество <> 0
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаТовары.Распоряжение КАК Распоряжение,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Ссылка.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Сумма КАК Сумма
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В
| (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоПоВозвратам),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ПринятоПоВозвратам))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ПоРаспоряжениям
| И &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДатыПоступленияТоваровОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.КорВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| &Период КАК ДатаПоступления
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДатыПоступленияТоваровОрганизаций КАК ПоступленияТоваров
| ПО ПоступленияТоваров.ВидЗапасов = ТаблицаВидыЗапасов.КорВидЗапасов
| И ПоступленияТоваров.Номенклатура = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И ПоступленияТоваров.Характеристика = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И ПоступленияТоваров.Серия = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия
| И ПоступленияТоваров.Назначение = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И ПоступленияТоваров.НомерГТД = ТаблицаВидыЗапасов.НомерГТД
|
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И &ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5))
| И (ПоступленияТоваров.ДатаПоступления ЕСТЬ NULL
| ИЛИ ПоступленияТоваров.ДатаПоступления < &Период)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыПоставщикам";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Распоряжение КАК ЗаказПоставщику,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| &Склад КАК Склад,
| 0 КАК Заказано,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК КПоступлению,
| 0 КАК Сумма
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ПоРаспоряжениям
| И НЕ ТаблицаТовары.КодСтроки = 0
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Распоряжение КАК ЗаказПоставщику,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| &Склад КАК Склад,
| 0 КАК Заказано,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК КПоступлению,
| 0 КАК Сумма
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ПоРаспоряжениям
| И ТаблицаТовары.КодСтроки = 0
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Распоряжение КАК ЗаказПоставщику,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| &Склад КАК Склад,
| 0 КАК Заказано,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК КПоступлению,
| 0 КАК Сумма
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ПоРаспоряжениям
| И ТаблицаТовары.КодСтроки = 0
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &ДатаВходящегоДокумента КАК ДатаПервичногоДокумента,
| &НомерВходящегоДокумента КАК НомерПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &НаименованиеВходящегоДокумента КАК НаименованиеПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ПоРаспоряжениям
| ТОГДА ИсточникДанных.Распоряжение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| ИсточникДанных.Ссылка.Соглашение КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
|
| ВЫБОР КОГДА ИсточникДанных.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ИсточникДанных.Ссылка.ДатаПоступления
| ИНАЧЕ
| ИсточникДанных.Ссылка.Дата
| КОНЕЦ КАК Дата,
|
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.НоменклатураОприходование
| ИНАЧЕ ИсточникДанных.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.ХарактеристикаОприходование
| ИНАЧЕ ИсточникДанных.Характеристика
| КОНЕЦ КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера))
| ТОГДА ЛОЖЬ
| КОГДА ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ИсточникДанных.Ссылка.Склад КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ИсточникДанных.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.НоменклатураОприходование
| ИНАЧЕ ТабЧасть.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.ХарактеристикаОприходование
| ИНАЧЕ ТабЧасть.Характеристика
| КОНЕЦ КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка.ПоРаспоряжениям КАК ПоГрафику,
| ТабЧасть.Распоряжение КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ ТабЧасть.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении > ТабЧасть.Ссылка.Дата
| ИЛИ ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.НоменклатураОприходование
| ИНАЧЕ ТабЧасть.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.ХарактеристикаОприходование
| ИНАЧЕ ТабЧасть.Характеристика
| КОНЕЦ КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ТабЧасть.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.НоменклатураОприходование
| ИНАЧЕ ТабЧасть.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТабЧасть.Порча
| ТОГДА ТабЧасть.ХарактеристикаОприходование
| ИНАЧЕ ТабЧасть.Характеристика
| КОНЕЦ КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
| ВЫБОР
| КОГДА ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ ТабЧасть.Ссылка.Распоряжение В (НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказПереработчику2_5.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка))
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ТабЧасть.Ссылка.Распоряжение
| ИНАЧЕ ВЫБОР
| КОГДА ТабЧасть.Ссылка.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.ПоступлениеТоваровОтХранителя.ПустаяСсылка)
| ТОГДА ТабЧасть.Ссылка
| ИНАЧЕ ТабЧасть.Ссылка.ИсправляемыйДокумент
| КОНЕЦ
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТабЧасть.Ссылка.ДатаПоступления
| ИНАЧЕ ТабЧасть.Ссылка.Дата
| КОНЕЦ КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ТабЧасть.Ссылка.ПоРаспоряжениям КАК ПоГрафику,
| ТабЧасть.Ссылка.Распоряжение КАК РаспоряжениеВГрафике,
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| И (ТабЧасть.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ТабЧасть.Ссылка.ПоРаспоряжениям)";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
Процедура ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ИсточникДанных.Распоряжение В
| (НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказПереработчику2_5.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка))
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ИсточникДанных.Распоряжение
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| ИсточникДанных.Ссылка.Соглашение КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.Ссылка.Дата КАК Дата,
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.НоменклатураОприходование
| ИНАЧЕ ИсточникДанных.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ИсточникДанных.Номенклатура КАК НоменклатураДляСоединения,
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.ХарактеристикаОприходование
| ИНАЧЕ ИсточникДанных.Характеристика
| КОНЕЦ КАК Характеристика,
| ИсточникДанных.Характеристика КАК ХарактеристикаДляСоединения,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерий,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера))
| ТОГДА ЛОЖЬ
| КОГДА ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ИсточникДанных.Ссылка.Склад КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ИсточникДанных.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоКорректировкаВнутриНакладной
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)";
ДополнительныеПоляСоединенияССериями = Новый Массив;
ДополнительныеПоляСоединенияССериями.Добавить("НоменклатураОприходование");
ДополнительныеПоляСоединенияССериями.Добавить("ХарактеристикаОприходование");
ПереопределяемыеПоляСоединенияССериями = Новый Соответствие;
ПереопределяемыеПоляСоединенияССериями.Вставить("Номенклатура", "НоменклатураДляСоединения");
ПереопределяемыеПоляСоединенияССериями.Вставить("Характеристика", "ХарактеристикаДляСоединения");
ПараметрыМетода = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМетода.ИмяТЧСерии = "Серии";
ПараметрыМетода.ТребуетсяУчитыватьСерииКОформлениюНакладныхПоРаспоряжению = Истина;
ПараметрыМетода.ДополнительныеПоляСоединенияССериями = ДополнительныеПоляСоединенияССериями;
ПараметрыМетода.ПереопределяемыеПоляСоединенияССериями = ПереопределяемыеПоляСоединенияССериями;
СкладыСервер.ОформитьПоступлениеТоваровПоОдноходовкеСНастройкойСоединенияСерий(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
Метаданные.Документы.ПоступлениеТоваровОтХранителя,
ПараметрыМетода);
КонецПроцедуры
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| Аналитика.Ссылка КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров = Аналитика.Ссылка
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| Аналитика.Ссылка КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| Аналитика.Ссылка КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.НоменклатураОприходование = Аналитика.Номенклатура
| И ТаблицаВидыЗапасов.ХарактеристикаОприходование = Аналитика.Характеристика
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение = Аналитика.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.НоменклатураОприходование <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтВидыЗапасов";
ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаПереданнойНоменклатуры,
| АналитикаПереданнойНоменклатурыБезНазначения.КлючАналитики КАК АналитикаПереданнойНоменклатурыБезНазначения,
|
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.КорВидЗапасов.ТипЗапасов КАК КорТипЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
|
| ТаблицаВидыЗапасов.НоменклатураОприходование КАК НоменклатураОприходование,
| ТаблицаВидыЗапасов.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
|
| АналитикаОприходования.КлючАналитики КАК АналитикаУчетаНоменклатурыОприходования,
| АналитикаОприходованияБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыОприходованияБезНазначения,
|
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО АналитикаБезНазначения.Номенклатура = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И АналитикаБезНазначения.Характеристика = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И АналитикаБезНазначения.Серия = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия
| И АналитикаБезНазначения.МестоХранения = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаПереданнойНоменклатурыБезНазначения
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура = АналитикаПереданнойНоменклатурыБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика = АналитикаПереданнойНоменклатурыБезНазначения.Характеристика
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия = АналитикаПереданнойНоменклатурыБезНазначения.Серия
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров.МестоХранения = АналитикаПереданнойНоменклатурыБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.СтатьяКалькуляции
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаОприходования
| ПО ТаблицаВидыЗапасов.НоменклатураОприходование = АналитикаОприходования.Номенклатура
| И ТаблицаВидыЗапасов.ХарактеристикаОприходование = АналитикаОприходования.Характеристика
| И Аналитика.Серия = АналитикаОприходования.Серия
| И Аналитика.МестоХранения = АналитикаОприходования.МестоХранения
| И Аналитика.Назначение = АналитикаОприходования.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаОприходованияБезНазначения
| ПО ТаблицаВидыЗапасов.НоменклатураОприходование = АналитикаОприходованияБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.ХарактеристикаОприходование = АналитикаОприходованияБезНазначения.Характеристика
| И Аналитика.Серия = АналитикаОприходованияБезНазначения.Серия
| И Аналитика.МестоХранения = АналитикаОприходованияБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаОприходованияБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.СтатьяКалькуляции
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаАналитик.Номенклатура КАК Номенклатура,
| ТаблицаАналитик.Характеристика КАК Характеристика,
| ТаблицаАналитик.Назначение КАК Назначение,
| ТаблицаАналитик.Серия КАК Серия,
| ТаблицаАналитик.Склад КАК Склад
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| Товары.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| Товары.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| Товары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
| ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.АналитикаУчетаНоменклатуры.Номенклатура = Аналитика.Номенклатура
| И Товары.АналитикаУчетаНоменклатуры.Характеристика = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И (&ПустоеНазначение = Аналитика.Назначение)
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции)
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
| И Товары.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика,
| &ПустоеНазначение,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.МестоХранения
| ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура = Аналитика.Номенклатура
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.МестоХранения = Аналитика.МестоХранения
| И (&ПустоеНазначение = Аналитика.Назначение)
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции)
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
| И Товары.НоменклатураОприходование = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.НоменклатураОприходование КАК Номенклатура,
| Товары.ХарактеристикаОприходование КАК Характеристика,
| Товары.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| Товары.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| Товары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
| ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.НоменклатураОприходование = Аналитика.Номенклатура
| И Товары.ХарактеристикаОприходование = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И Товары.АналитикаУчетаНоменклатуры.Назначение = Аналитика.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И Товары.НоменклатураОприходование <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.НоменклатураОприходование КАК Номенклатура,
| Товары.ХарактеристикаОприходование КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| Товары.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| Товары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
| ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.НоменклатураОприходование = Аналитика.Номенклатура
| И Товары.ХарактеристикаОприходование = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
| И Товары.НоменклатураОприходование <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК ТаблицаАналитик";
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ПоступлениеТоваровОтХранителя";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("НомерВходящегоДокумента", """""");
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
ИначеЕсли ИмяРегистра = "ЗаказыПоставщикам" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""Товары"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ТаблицаДокумента.Ссылка.Дата КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.Сумма КАК СуммаБезНДС,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДСДокумента,
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ЕСТЬNULL(ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыОприходования,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры) КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И (ТаблицаВидыЗапасов.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВозвратПереданнойМногооборотнойТары)";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
Возврат ПравилаПечатиЗадания;
КонецФункции
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.ПоступлениеТоваровОтХранителя) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПоступлениеТоваровОтХранителя";
КомандаПечати.Представление = НСтр("ru = 'Поступление товаров от хранителя'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ВозвратОтХранителя,
ВидСравнения.Равно);
КонецЕсли;
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаРазмещение");
ПоступлениеТоваровОтХранителяЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПоступлениеТоваровОтХранителя") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПоступлениеТоваровОтХранителя",
НСтр("ru='Поступление товаров от хранителя'"),
СформироватьПечатнуюФормуПоступлениеТоваровОтХранителя(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
ПоступлениеТоваровОтХранителяЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати,
ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьПечатнуюФормуПоступлениеТоваровОтХранителя(МассивОбъектов, ОбъектыПечати)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваров.Ссылка КАК Ссылка,
| ПоступлениеТоваров.Номер КАК Номер,
| ПоступлениеТоваров.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПоступлениеТоваров.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ПоступлениеТоваров.Дата КАК Дата,
| ПоступлениеТоваров.Партнер КАК Партнер,
| ПоступлениеТоваров.Контрагент КАК Получатель,
| ПоступлениеТоваров.Организация КАК Организация,
| ПоступлениеТоваров.Организация.Префикс КАК Префикс,
| ПоступлениеТоваров.Валюта КАК Валюта,
| ПоступлениеТоваров.Склад.ТекущийОтветственный КАК ПолучениеПроизвел
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя КАК ПоступлениеТоваров
|ГДЕ
| ПоступлениеТоваров.Ссылка В(&МассивДокументов)
| И ПоступлениеТоваров.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ВариантыКомплектации.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектации.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектации.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ТаблицаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТовары.Порча
| ТОГДА ТаблицаТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ТаблицаТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ТаблицаТовары.Упаковка
| КОНЕЦ КАК ЕдиницаИзмерения,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Сумма КАК Сумма,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.ВозвратПереданнойМногооборотнойТары
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектации
| ПО ВариантыКомплектации.Владелец = ТаблицаТовары.НоменклатураНабора
| И ВариантыКомплектации.Характеристика = ТаблицаТовары.ХарактеристикаНабора
| И ВариантыКомплектации.Основной
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивДокументов)
| И ТаблицаТовары.Ссылка.Проведен
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ДокументыПечати
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры
|ПОМЕСТИТЬ КомплектацииДокументов
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ТаблицаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| СУММА(ТаблицаТовары.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Количество КАК Количество,
| 0 КАК КоличествоПоУмолчанию,
| ВЫБОР
| КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументыПечати.Ссылка КАК Ссылка,
| ВариантыКомплектации.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектации.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектации.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектации.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектации.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектации.Номенклатура КАК Номенклатура,
| ВариантыКомплектации.Характеристика КАК Характеристика,
| 0 КАК Количество,
| СУММА(ВариантыКомплектации.Количество) КАК КоличествоПоУмолчанию,
| ЛОЖЬ КАК ОсновнаяКомплектующая
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектации
| ЛЕВОЕ СОЕДИНЕНИЕ ДокументыПечати КАК ДокументыПечати
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектации.Ссылка В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Комплектации.ВариантКомплектацииНоменклатуры
| ИЗ КомплектацииДокументов КАК Комплектации)
|
|СГРУППИРОВАТЬ ПО
| ДокументыПечати.Ссылка,
| ВариантыКомплектации.Ссылка,
| ВариантыКомплектации.Ссылка.Владелец,
| ВариантыКомплектации.Ссылка.Характеристика,
| ВариантыКомплектации.Номенклатура,
| ВариантыКомплектации.Характеристика
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| СУММА(Таблица.Количество) КАК Количество,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка КАК Ссылка,
| Результат.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора КАК НоменклатураНабора,
| Результат.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.ОсновнаяКомплектующая
| ТОГДА Результат.СтавкаНДС
| ИНАЧЕ NULL
| КОНЕЦ) КАК СтавкаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НомерСтроки КАК НомерСтроки,
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| ВЫБОР
| КОГДА ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| Таблица.Сумма КАК Сумма,
| ВременнаяТаблицаНаборыДополнительно.СтавкаНДС КАК СтавкаНДС,
| 0 КАК СуммаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
| И Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВложенныйЗапрос.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВложенныйЗапрос.НоменклатураНабора КАК НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименованиеПолное,
| ВложенныйЗапрос.Характеристика.НаименованиеПолное КАК Характеристика,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.ЕдиницаИзмерения.Наименование КАК ЕдиницаЦены,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ВложенныйЗапрос.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ВложенныйЗапрос.КоличествоУпаковок КАК Количество,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
| ВложенныйЗапрос.СуммаНДС КАК СуммаНДС,
| ВложенныйЗапрос.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ВложенныйЗапрос.ЭтоНабор КАК ЭтоНабор,
| ВложенныйЗапрос.ЭтоВозвратнаяТара КАК ЭтоВозвратнаяТара
|ИЗ
| (ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| Таблица.ЭтоВозвратнаяТара КАК ЭтоВозвратнаяТара
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
| И ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка КАК Ссылка,
| ВременнаяТаблицаНаборы.НомерСтроки КАК НомерСтроки,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК Номенклатура,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК Характеристика,
| ВременнаяТаблицаНаборы.НоменклатураНабора.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.Количество КАК Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0
| ТОГДА (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ 0
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.СтавкаНДС КАК СтавкаНДС,
| ВременнаяТаблицаНаборы.СуммаНДС КАК СуммаНДС,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ЛОЖЬ КАК ЭтоВозвратнаяТара
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Ссылка,
| НомерСтроки,
| ЭтоНабор УБЫВ";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВложенныйЗапрос.Упаковка",
"ВложенныйЗапрос.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ПервыйДокумент = Истина;
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровОтХранителя_Накладная";
ДанныеПечати = МассивРезультатов[0].Выбрать();
Товары = МассивРезультатов[МассивРезультатов.Количество() - 1].Выгрузить();
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ТаблицаТовары = Товары.НайтиСтроки(СтруктураПоиска);
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПоступлениеТоваровОтХранителя.ПФ_MXL_ПоступлениеТоваровОтХранителя");
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета,
ДанныеПечати.Ссылка);
ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати,
НСтр("ru='Поступление товаров от хранителя'", ОбщегоНазначения.КодОсновногоЯзыка()));
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ТекстЗаголовка);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата), "ПолноеНаименование");
СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("Поставщик", ДанныеПечати.Организация);
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Получатель, ДанныеПечати.Дата), "ПолноеНаименование");
СтруктураДанныхПокупатель = Новый Структура;
СтруктураДанныхПокупатель.Вставить("Получатель", ДанныеПечати.Получатель);
СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомераСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы|НомерСтроки");
ОбластьКодовСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
ОбластьТоварСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы|Товар");
ОбластьДанныхСтрокиСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные");
ИспользоватьНаборы = Ложь;
Если Товары.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;
ОбластьНомераСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицыНабор" + "|НомерСтроки");
ОбластьКодовСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицыНабор" + "|КолонкаКодов");
ОбластьТоварСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицыНабор" + "|Товар");
ОбластьДанныхСтрокиНабор = Макет.ПолучитьОбласть("СтрокаТаблицыНабор" + "|Данные");
ОбластьНомераСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицыКомплектующие" + "|НомерСтроки");
ОбластьКодовСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицыКомплектующие" + "|КолонкаКодов");
ОбластьТоварСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицыКомплектующие" + "|Товар");
ОбластьДанныхСтрокиКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицыКомплектующие" + "|Данные");
КонецЕсли;
Сумма = 0;
НомерСтроки = 0;
ПустыеДанные = НаборыСервер.ПустыеДанные();
Для Каждого ВыборкаПоТоварам Из ТаблицаТовары Цикл
Если НаборыСервер.ИспользоватьОбластьНабор(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиНабор;
ОбластьНомераСтроки = ОбластьНомераСтрокиНабор;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиНабор;
ОбластьТоварСтроки = ОбластьТоварСтрокиНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиКомплектующие;
ОбластьНомераСтроки = ОбластьНомераСтрокиКомплектующие;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиКомплектующие;
ОбластьТоварСтроки = ОбластьТоварСтрокиКомплектующие;
Иначе
ОбластьКодовСтроки = ОбластьКодовСтрокиСтандарт;
ОбластьНомераСтроки = ОбластьНомераСтрокиСтандарт;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиСтандарт;
ОбластьТоварСтроки = ОбластьТоварСтрокиСтандарт;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[ИмяКолонкиКодов]);
ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовСтроки);
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоТоварам, ИспользоватьНаборы);
ОбластьТоварСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоТоварам.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.ТоварНаименованиеПолное,
ВыборкаПоТоварам.Характеристика,
,
,
ДополнительныеПараметрыПолученияНаименованияДляПечати) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
ТабличныйДокумент.Присоединить(ОбластьТоварСтроки);
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхСтроки);
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоТоварам.Сумма;
КонецЕсли;
КонецЦикла;
ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицы|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
СтруктураДанныхВсего = Новый Структура;
СтруктураДанныхВсего.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсего);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма;
СуммаПрописью = РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта);
ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Всего наименований %1, на сумму %2'", ОбщегоНазначения.КодОсновногоЯзыка()),
НомерСтроки,
ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью = Новый Структура;
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", СуммаПрописью);
СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
Если ЗначениеЗаполнено(ДанныеПечати.ПолучениеПроизвел) Тогда
ПолучениеПроизвел = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.ПолучениеПроизвел, ДанныеПечати.Дата);
СтруктураДанныхПолучениеПроизвел = Новый Структура;
СтруктураДанныхПолучениеПроизвел.Вставить("ПолучениеПроизвел", ПолучениеПроизвел);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПолучениеПроизвел);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
КонецПроцедуры
Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
ПараметрыЗаполнения = Новый Структура(ИмяПараметра, ЗначениеПараметра);
ОбластьМакета.Параметры.Заполнить(ПараметрыЗаполнения);
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Заполнение
Функция ТекстЗапросаТоварыДокумента(Отбор, ТекстСоединения, ИспользоватьКодСтроки = Ложь)
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеУчета.ДокументОснование КАК Ссылка,
| ДанныеУчета.Номенклатура КАК Номенклатура,
| ДанныеУчета.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ДанныеУчета.Назначение КАК Назначение,
| ДанныеУчета.Серия КАК Серия,
| СУММА(ЕСТЬNULL(Таблица.Количество, 0)) КАК Количество,
| МАКСИМУМ(ЕСТЬNULL(ДанныеУчета.КОформлению, 0)) КАК КОформлению,
| МАКСИМУМ(ДанныеУчета.Упаковка) КАК Упаковка,
| МАКСИМУМ(ДанныеУчета.Цена) КАК Цена,
| ДанныеУчета.Склад КАК Склад,
| ДанныеУчета.НомерГТД КАК НомерГТД,
| ЕСТЬNULL(Таблица.Распоряжение, ДанныеУчета.Распоряжение) КАК Распоряжение,
| &КодСтроки КАК КодСтроки
|ИЗ
| ВтДанныеУчета КАК ДанныеУчета
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровОтХранителя.Товары КАК Таблица
| ПО (&МетодСоединения)
|ГДЕ
| &Отбор
|
|СГРУППИРОВАТЬ ПО
| ДанныеУчета.ДокументОснование,
| ДанныеУчета.Номенклатура,
| ДанныеУчета.Характеристика,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ДанныеУчета.Назначение,
| ДанныеУчета.Серия,
| ДанныеУчета.Склад,
| ДанныеУчета.НомерГТД,
| ЕСТЬNULL(Таблица.Распоряжение, ДанныеУчета.Распоряжение),
| &КодСтроки";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&МетодСоединения", ТекстСоединения);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КодСтроки", ?(ИспользоватьКодСтроки, "ДанныеУчета.КодСтроки", "0"));
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Отбор", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиКОформлениюПоАктам(ИмяВременнойТаблицы = "", ИспользоватьКодСтроки = Ложь)
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Набор.ДокументОснование КАК ДокументОснование,
| Набор.Распоряжение КАК Распоряжение,
| Набор.КодСтроки КАК КодСтроки,
| Набор.Склад КАК Склад,
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Назначение КАК Назначение,
| Набор.Серия КАК Серия,
| Набор.НомерГТД КАК НомерГТД,
| СУММА(Набор.Количество) КАК КОформлению,
| Набор.Цена КАК Цена,
| Набор.Упаковка КАК Упаковка
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТовары.ДокументОснование КАК ДокументОснование,
| ТаблицаТовары.ЗаказПоставщику КАК Распоряжение,
| &КодСтроки КАК КодСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ТаблицаТовары.Склад КАК Склад,
| (ТаблицаТовары.КоличествоПоДокументу
| - ТаблицаТовары.Количество) КАК Количество,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Упаковка КАК Упаковка
| ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТаблицаТовары
| ГДЕ
| ТаблицаТовары.Ссылка.Проведен
| И ТаблицаТовары.Ссылка В(&АктОРасхождениях)
| И ТаблицаТовары.ДокументОснование В(&ДокументПоступления)
| И ТаблицаТовары.ЗаполненоПоОснованию
| И ТаблицаТовары.Действие В
| (ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК ДокументОснование,
| ТаблицаТовары.Распоряжение КАК Распоряжение,
| &КодСтроки КАК КодСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ПоступлениеТоваров.Склад КАК Склад,
| -ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Упаковка КАК Упаковка
| ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровОтХранителя КАК ПоступлениеТоваров
| ПО ТаблицаТовары.Ссылка = ПоступлениеТоваров.Ссылка
| ГДЕ
| ПоступлениеТоваров.Проведен
| И ПоступлениеТоваров.ДовозвратПоПоступлению В(&ДокументПоступления)
|
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.ДокументОснование,
| Набор.Распоряжение,
| Набор.КодСтроки,
| Набор.Номенклатура,
| Набор.Характеристика,
| Набор.Назначение,
| Набор.Серия,
| Набор.НомерГТД,
| Набор.Склад,
| Набор.Цена,
| Набор.Упаковка
|
|ИМЕЮЩИЕ
| СУММА(Набор.Количество) <> 0
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КодСтроки", ?(ИспользоватьКодСтроки, "ТаблицаТовары.КодСтроки", "0"));
Если Не ПустаяСтрока(ИмяВременнойТаблицы) Тогда
ТекстЗапроса = СхемыЗапросов.УстановитьПомещениеВоВременнуюТаблицу(ТекстЗапроса, ИмяВременнойТаблицы);
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьСерииПоОтчетамПереработчика(ТаблицаТоваров, МенеджерВременныхТаблиц, Регистратор)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ИзделияОтчета.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ВтИзделияОтчета
|ИЗ
| Документ.ОтчетПереработчика2_5.ВыходныеИзделия КАК ИзделияОтчета
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ИзделияОтчета.ЗаказПереработчику = ДанныеУчета.Распоряжение
| И ИзделияОтчета.КодСтроки = ДанныеУчета.КодСтроки
|
|ГДЕ
| НЕ ИзделияОтчета.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИзделияОтчета.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ИЗ
| Документ.ОтчетПереработчика2_5.ПобочныеИзделия КАК ИзделияОтчета
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО ИзделияОтчета.ЗаказПереработчику = ДанныеУчета.Распоряжение
| И ИзделияОтчета.КодСтроки = ДанныеУчета.КодСтроки
|
|ГДЕ
| НЕ ИзделияОтчета.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|
|ВЫБРАТЬ
| ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
| ТоварыОрганизацийОстатки.Характеристика КАК Характеристика,
| ТоварыОрганизацийОстатки.Назначение КАК Назначение,
| ТоварыОрганизацийОстатки.Серия КАК Серия,
| СУММА(ТоварыОрганизацийОстатки.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(,
| (АналитикаУчетаНоменклатуры) В
| (ВЫБРАТЬ
| ВтИзделияОтчета.АналитикаУчетаНоменклатуры
| ИЗ
| ВтИзделияОтчета КАК ВтИзделияОтчета)) КАК ТоварыОрганизацийОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ТоварыОрганизацийОстатки.Количество КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизацийОстатки
| ГДЕ
| ТоварыОрганизацийОстатки.Регистратор = &Регистратор
| И (ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры) В
| (ВЫБРАТЬ
| ВтИзделияОтчета.АналитикаУчетаНоменклатуры
| ИЗ
| ВтИзделияОтчета КАК ВтИзделияОтчета)
| ) КАК ТоварыОрганизацийОстатки
|
|СГРУППИРОВАТЬ ПО
| ТоварыОрганизацийОстатки.Номенклатура,
| ТоварыОрганизацийОстатки.Характеристика,
| ТоварыОрганизацийОстатки.Назначение,
| ТоварыОрганизацийОстатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(ТоварыОрганизацийОстатки.Количество) > 0
|
|";
Запрос.УстановитьПараметр("Регистратор", Регистратор);
ТаблицаСерий = Запрос.Выполнить().Выгрузить();
Ключ = "Номенклатура, Характеристика, Назначение";
Отбор = Новый Структура(Ключ);
ТаблицаСерий.Индексы.Добавить(Ключ);
Для Каждого СтрокаТоваров Из ТаблицаТоваров Цикл
КоличествоИзделий = СтрокаТоваров.КОформлению;
ЗаполнитьЗначенияСвойств(Отбор, СтрокаТоваров);
Для Каждого СтрокаСерий Из ТаблицаСерий.НайтиСтроки(Отбор) Цикл
Если СтрокаСерий.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Количество = Мин(КоличествоИзделий, СтрокаСерий.Количество);
НоваяСтрока = ТаблицаТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТоваров);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСерий, "Серия");
НоваяСтрока.КОформлению = Количество;
НоваяСтрока.Количество = Количество;
СтрокаСерий.Количество = СтрокаСерий.Количество - НоваяСтрока.Количество;
СтрокаТоваров.КОформлению = СтрокаТоваров.КОформлению - НоваяСтрока.КОформлению;
СтрокаТоваров.Количество = СтрокаТоваров.Количество - НоваяСтрока.Количество;
КоличествоИзделий = КоличествоИзделий - НоваяСтрока.КОформлению;
Если КоличествоИзделий = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОтборСтрок = Новый Структура("КОформлению", 0);
Для Каждого СтрокаТаблицы Из ТаблицаТоваров.НайтиСтроки(ОтборСтрок) Цикл
ТаблицаТоваров.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьСерииЗаказовПоТаблицеОрдеров(ТаблицаЗаказы, ТаблицаОрдера)
Ключ = "Распоряжение, Номенклатура, Характеристика, Назначение";
Отбор = Новый Структура(Ключ);
Для Каждого СтрокаЗаказа Из ТаблицаЗаказы Цикл
Если ЗначениеЗаполнено(СтрокаЗаказа.Серия) Тогда
Продолжить;
КонецЕсли;
КоличествоВЗаказе = СтрокаЗаказа.КоличествоВЗаказе;
ЗаполнитьЗначенияСвойств(Отбор, СтрокаЗаказа);
Для Каждого СтрокаОрдера Из ТаблицаОрдера.НайтиСтроки(Отбор) Цикл
Если Не ЗначениеЗаполнено(СтрокаОрдера.Серия) Тогда
Продолжить;
КонецЕсли;
Количество = Мин(КоличествоВЗаказе, СтрокаОрдера.Количество);
Если СтрокаЗаказа.КоличествоВЗаказе = Количество Тогда
ТекущиеДанные = СтрокаЗаказа;
Иначе
ТекущиеДанные = ТаблицаЗаказы.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаЗаказа);
ТекущиеДанные.КоличествоВЗаказе = Количество;
СтрокаЗаказа.КоличествоВЗаказе = СтрокаЗаказа.КоличествоВЗаказе - Количество;
КонецЕсли;
ТекущиеДанные.Серия = СтрокаОрдера.Серия;
КоличествоВЗаказе = КоличествоВЗаказе - Количество;
СтрокаОрдера.Количество = СтрокаОрдера.Количество - Количество;
Если КоличествоВЗаказе = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Отбор = Новый Структура("КоличествоВЗаказе", 0);
Для Каждого ТекущиеДанные Из ТаблицаЗаказы.НайтиСтроки(Отбор) Цикл
ТаблицаЗаказы.Удалить(ТекущиеДанные);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция АналитикиУчетаНоменклатурыПоПередачеТоваровХранителю(Распоряжения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ТаблицаТовары.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатуры
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Распоряжения)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатуры
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.ЗаказКлиента В (&Распоряжения)
|";
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
АналитикиУчетаНоменклатуры = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("АналитикаУчетаНоменклатуры");
Возврат АналитикиУчетаНоменклатуры;
КонецФункции
Функция АналитикиУчетаНоменклатурыПоВозвратуСКомиссии(Распоряжения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатуры
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В
| (ВЫБРАТЬ
| ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.ДокументРеализации КАК ДокументРеализации
| ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары
| ГДЕ
| ЗаявкаНаВозвратТоваровОтКлиентаВозвращаемыеТовары.Ссылка В (&Распоряжения))";
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
АналитикиУчетаНоменклатуры = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("АналитикаУчетаНоменклатуры");
Возврат АналитикиУчетаНоменклатуры;
КонецФункции
Функция ВидЦеныИзТабличнойЧасти(Распоряжения)
ВидЦеныВЗаяке = Справочники.ВидыЦен.ПустаяСсылка();
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ВидЦены КАК ВидЦены
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Распоряжения)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.ВидЦены";
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Если ТипЗнч(Распоряжения) = Тип("Массив") Тогда
Распоряжение = Распоряжения[0];
Иначе
Распоряжение = Распоряжения;
КонецЕсли;
Если ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ТаблицаТоваров", "Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары");
Иначе
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ТаблицаТоваров", "Документ.ПередачаТоваровХранителю.Товары");
КонецЕсли;
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() = 1 Тогда
ВидЦеныВЗаяке = Результат[0].ВидЦены;
КонецЕсли;
Возврат ВидЦеныВЗаяке;
КонецФункции
#КонецОбласти
#Область УнифицированныеМетодыПоХозяйственнымОперациям
#Область Заполнение
Функция ПолучитьУсловияПродаж(Соглашение) Экспорт
Возврат ПродажиСервер.ПолучитьУсловияПродаж(Соглашение);
КонецФункции
#КонецОбласти
#Область Проведение
Функция ПараметрыЗаполненияВидовЗапасов(Объект) Экспорт
Перем ПараметрыЗаполнения;
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.СторнируемыйДокумент = Объект.СторнируемыйДокумент;
ПараметрыЗаполнения.ДокументДелаетИПриходИРасход = Истина;
ПараметрыЗаполнения.ОтборыВидовЗапасов.Организация = Объект.Организация;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов = Новый Массив;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(Перечисления.ТипыЗапасов.Товар);
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи);
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ДобавитьДополнительноеСвойствоДляКонтроляПриПроведении(Объект) Экспорт
Если Не Объект.ПоРаспоряжениям Тогда
Объект.Движения.ТоварыОрганизаций.ДополнительныеСвойства.Вставить("ФормироватьСводнуюТаблицуТоварыОрганизаций");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Округление
Процедура ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект) Экспорт
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.Товары,, Объект.Склад);
КонецПроцедуры
Процедура ПересчитатьКоличествоЕдиниц(Объект) Экспорт
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
Процедура ДобавитьДействиеЗаполнитьПризнакЦеховаяКладовая(СтруктураДействий, Склад) Экспорт
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", Новый Структура("ЗначениеСклада", Склад));
КонецПроцедуры
Процедура ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий) Экспорт
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПараметрыПересчетаКоличестваЕдиниц());
КонецПроцедуры
Функция ПараметрыПересчетаКоличестваЕдиниц() Экспорт
Возврат Неопределено;
КонецФункции
Функция ПараметрыТЧДляОкругления(Склад) Экспорт
Возврат Новый Структура("Товары");
КонецФункции
#КонецОбласти
#Область ТекстыЗапросов
Функция ТекстЗапросаДанныеДляПроверкиВводаНаОсновании() Экспорт
ТекстыЗапросов = Новый Массив;
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| Распоряжение.Ссылка КАК Основание,
| Распоряжение.Статус КАК Статус,
| ЛОЖЬ КАК ОформлениеЧерезРМ,
| ВЫБОР
| КОГДА Распоряжение.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Распоряжение.Склад
| КОНЕЦ КАК Склад,
| Распоряжение.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Распоряжение
|ГДЕ
| Распоряжение.Ссылка В(&Распоряжения)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Распоряжение.Ссылка КАК Основание,
| НЕОПРЕДЕЛЕНО КАК Статус,
| ЛОЖЬ КАК ОформлениеЧерезРМ,
| ВЫБОР
| КОГДА Распоряжение.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Распоряжение.Склад
| КОНЕЦ КАК Склад,
| Распоряжение.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПередачаТоваровХранителю КАК Распоряжение
|ГДЕ
| Распоряжение.Ссылка В(&Распоряжения)
|");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТоварыРаспоряжения
|ГДЕ
| ТоварыРаспоряжения.Ссылка В(&Распоряжения)
| И НЕ ТоварыРаспоряжения.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыРаспоряжения
|ГДЕ
| ТоварыРаспоряжения.Ссылка В(&Распоряжения)
|");
ТекстыЗапросов.Добавить(
РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОстатки(
"ВтОстаткиКОформлению",
Новый Структура("ДокументПоступления", "Распоряжения"),
"КОформлению <> 0"));
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| Набор.Распоряжение КАК РаспоряженияКОформлению
|ИЗ
| (ВЫБРАТЬ
| ОстаткиКОформлению.Распоряжение КАК Распоряжение
| ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Распоряжение
| ИЗ
| Документ.ПередачаТоваровХранителю КАК ТаблицаДокумента
| ГДЕ
| ТаблицаДокумента.Ссылка В (&Распоряжения)
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Распоряжение
|");
Возврат СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
КонецФункции
Функция ТекстЗапросаДанныеЗаполненияНакладной() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Заказ.Ссылка.Организация КАК Организация,
| Заказ.Ссылка.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Заказ.Ссылка.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Заказ.Ссылка.Склад
| КОНЕЦ КАК Склад,
| Заказ.Ссылка.Сделка КАК Сделка,
| Заказ.Ссылка.Партнер КАК Партнер,
| Заказ.Ссылка.Контрагент КАК Контрагент,
| Заказ.Ссылка.Соглашение КАК Соглашение,
| Заказ.Ссылка.Договор КАК Договор,
| Заказ.Ссылка.НаправлениеДеятельности КАК НаправлениеДеятельности,
| Заказ.Ссылка.ВернутьМногооборотнуюТару КАК ВозвратПереданнойМногооборотнойТары,
| Заказ.Ссылка.Валюта КАК Валюта,
| ВЫБОР
| КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Заказ.ВидЦены) = 1
| ТОГДА МАКСИМУМ(Заказ.ВидЦены)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| КОНЕЦ КАК ВидЦены,
| Заказ.Ссылка.ВозвратПорчи КАК ВозвратПорчи
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Заказ
|ГДЕ
| Заказ.Ссылка = &Заказ
|СГРУППИРОВАТЬ ПО
| Заказ.Ссылка,
| Заказ.Ссылка.Организация,
| Заказ.Ссылка.Подразделение,
| ВЫБОР
| КОГДА Заказ.Ссылка.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Заказ.Ссылка.Склад
| КОНЕЦ,
| Заказ.Ссылка.Сделка,
| Заказ.Ссылка.Партнер,
| Заказ.Ссылка.Контрагент,
| Заказ.Ссылка.Соглашение,
| Заказ.Ссылка.Договор,
| Заказ.Ссылка.НаправлениеДеятельности,
| Заказ.Ссылка.ВернутьМногооборотнуюТару,
| Заказ.Ссылка.Валюта,
| Заказ.Ссылка.ВозвратПорчи
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Передача.Ссылка.Организация КАК Организация,
| Передача.Ссылка.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Передача.Ссылка.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Передача.Ссылка.Склад
| КОНЕЦ КАК Склад,
| Передача.Ссылка.Сделка КАК Сделка,
| Передача.Ссылка.Партнер КАК Партнер,
| Передача.Ссылка.Контрагент КАК Контрагент,
| Передача.Ссылка.Соглашение КАК Соглашение,
| Передача.Ссылка.Договор КАК Договор,
| Передача.Ссылка.НаправлениеДеятельности КАК НаправлениеДеятельности,
| Передача.Ссылка.ВернутьМногооборотнуюТару КАК ВозвратПереданнойМногооборотнойТары,
| Передача.Ссылка.Валюта КАК Валюта,
| ВЫБОР
| КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Передача.ВидЦены) = 1
| ТОГДА МАКСИМУМ(Передача.ВидЦены)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| КОНЕЦ КАК ВидЦены,
| ЛОЖЬ КАК ВозвратПорчи
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК Передача
|ГДЕ
| Передача.Ссылка = &Заказ
|СГРУППИРОВАТЬ ПО
| Передача.Ссылка,
| Передача.Ссылка.Организация,
| Передача.Ссылка.Подразделение,
| ВЫБОР
| КОГДА Передача.Ссылка.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Передача.Ссылка.Склад
| КОНЕЦ,
| Передача.Ссылка.Сделка,
| Передача.Ссылка.Партнер,
| Передача.Ссылка.Контрагент,
| Передача.Ссылка.Соглашение,
| Передача.Ссылка.Договор,
| Передача.Ссылка.НаправлениеДеятельности,
| Передача.Ссылка.ВернутьМногооборотнуюТару,
| Передача.Ссылка.Валюта";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТоварыДокументаЗаказа(Отбор, ДополнятьПоТаблицеСерий = Ложь) Экспорт
ТекстЗапроса =
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ТекстЗапросаТоварыДокумента(
Отбор,
ТекстСоединения(Ложь),
ДополнятьПоТаблицеСерий);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТоварыПереданные() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыНакладной.НомерСтроки КАК НомерСтроки,
| ТоварыНакладной.Номенклатура КАК Номенклатура,
| ТоварыНакладной.Характеристика КАК Характеристика,
| ТоварыНакладной.Серия КАК Серия,
| ТоварыНакладной.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыНакладной.Назначение КАК Назначение,
| ТоварыНакладной.НомерГТД КАК НомерГТД,
| ТоварыНакладной.Количество КАК Количество
|ПОМЕСТИТЬ ВтТоварыНакладной
|ИЗ
| &Товары КАК ТоварыНакладной
|;
|
|
|ВЫБРАТЬ
| МИНИМУМ(ВтТоварыНакладной.НомерСтроки) КАК НомерСтроки,
| ВтТоварыНакладной.Номенклатура,
| ВтТоварыНакладной.Характеристика,
| ВЫБОР
| КОГДА ВтТоварыНакладной.СтатусУказанияСерий <> 0
| И (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров
| ИЛИ &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтПереработчика2_5))
| И НЕ ВтПолитикиУчетаСерий.УчетСерийПереданныхПереработчикуТоваров)
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ВтТоварыНакладной.Серия
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА ВтТоварыНакладной.СтатусУказанияСерий <> 0
| И (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров
| ИЛИ &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтПереработчика2_5))
| И НЕ ВтПолитикиУчетаСерий.УчетСерийПереданныхПереработчикуТоваров)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РазныйУчетСерий,
| ВтТоварыНакладной.Назначение,
| ВтТоварыНакладной.НомерГТД,
| СУММА(ВтТоварыНакладной.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыНакладной
|ИЗ
| ВтТоварыНакладной КАК ВтТоварыНакладной
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ВтНоменклатура
| ПО ВтТоварыНакладной.Номенклатура = ВтНоменклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВтВидыНоменклатуры
| ПО ВтНоменклатура.ВидНоменклатуры = ВтВидыНоменклатуры.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПолитикиУчетаСерий КАК ВтПолитикиУчетаСерий
| ПО ВтВидыНоменклатуры.ПолитикаУчетаСерий = ВтПолитикиУчетаСерий.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВтТоварыНакладной.Номенклатура,
| ВтТоварыНакладной.Характеристика,
| ВЫБОР
| КОГДА ВтТоварыНакладной.СтатусУказанияСерий <> 0
| И (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров
| ИЛИ &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтПереработчика2_5))
| И НЕ ВтПолитикиУчетаСерий.УчетСерийПереданныхПереработчикуТоваров)
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ВтТоварыНакладной.Серия
| КОНЕЦ,
| ВЫБОР
| КОГДА ВтТоварыНакладной.СтатусУказанияСерий <> 0
| И (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И НЕ ВтПолитикиУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров
| ИЛИ &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтПереработчика2_5))
| И НЕ ВтПолитикиУчетаСерий.УчетСерийПереданныхПереработчикуТоваров)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВтТоварыНакладной.Назначение,
| ВтТоварыНакладной.НомерГТД
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КлючиАналитики.Ссылка КАК Ссылка
|ПОМЕСТИТЬ КлючиАналитики
|ИЗ
| Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитики
|ГДЕ
| КлючиАналитики.МестоХранения = &Договор
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыПереданныеОстатки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТоварыПереданныеОстатки.НомерГТД КАК НомерГТД,
| ТоварыПереданныеОстатки.КоличествоОстаток КАК КоличествоОстаток
|ПОМЕСТИТЬ ТоварыПереданныеОстаток
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, АналитикаУчетаНоменклатуры В
| (ВЫБРАТЬ
| КлючиАналитики.Ссылка
| ИЗ
| КлючиАналитики КАК КлючиАналитики)
| И Организация = &Организация) КАК ТоварыПереданныеОстатки
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыПереданные.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТоварыПереданные.НомерГТД КАК НомерГТД,
| ТоварыПереданные.КоличествоОстаток КАК КоличествоОстаток,
| ВЫБОР
| КОГДА ТоварыПереданные.КоличествоОстаток < 0
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ КАК Знак
|ПОМЕСТИТЬ ТоварыПереданныеОстатокЗнак
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(, АналитикаУчетаНоменклатуры В
| (ВЫБРАТЬ
| КлючиАналитики.Ссылка
| ИЗ
| КлючиАналитики КАК КлючиАналитики)
| И Организация = &Организация) КАК ТоварыПереданные
|;
|
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыПереданные.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТоварыПереданные.НомерГТД КАК НомерГТД,
| СУММА(ТоварыПереданные.КоличествоОстаток) КАК КоличествоОстаток
|ПОМЕСТИТЬ ТоварыПереданные
|ИЗ
| (ВЫБРАТЬ
| ТоварыПереданные.АналитикаУчетаНоменклатуры,
| ТоварыПереданные.НомерГТД,
| ВЫБОР
| КОГДА ЕСТЬNULL(Остатки.КоличествоОстаток * Остатки.Знак, 0) < ТоварыПереданные.КоличествоОстаток *
| ЕСТЬNULL(Остатки.Знак, 1)
| ТОГДА ЕСТЬNULL(Остатки.КоличествоОстаток, 0)
| ИНАЧЕ ТоварыПереданные.КоличествоОстаток
| КОНЕЦ КАК КоличествоОстаток
| ИЗ
| ТоварыПереданныеОстаток КАК ТоварыПереданные
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПереданныеОстатокЗнак КАК Остатки
| ПО ТоварыПереданные.АналитикаУчетаНоменклатуры = Остатки.АналитикаУчетаНоменклатуры
| И ТоварыПереданные.НомерГТД = Остатки.НомерГТД
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыПереданныеРегистратор.АналитикаУчетаНоменклатуры,
| ТоварыПереданныеРегистратор.НомерГТД,
| ТоварыПереданныеРегистратор.Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК ТоварыПереданныеРегистратор
| ГДЕ
| ТоварыПереданныеРегистратор.Регистратор = &Регистратор
| И ТоварыПереданныеРегистратор.Активность
| И ТоварыПереданныеРегистратор.АналитикаУчетаНоменклатуры В
| (ВЫБРАТЬ
| КлючиАналитики.Ссылка
| ИЗ
| КлючиАналитики КАК КлючиАналитики)
| И ТоварыПереданныеРегистратор.Организация = &Организация) КАК ТоварыПереданные
|СГРУППИРОВАТЬ ПО
| ТоварыПереданные.АналитикаУчетаНоменклатуры,
| ТоварыПереданные.НомерГТД
|
|ИМЕЮЩИЕ
| СУММА(ТоварыПереданные.КоличествоОстаток) > 0
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(КлючиАналитики.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
| ЕСТЬNULL(КлючиАналитики.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК
| Характеристика,
| ВЫБОР
| КОГДА вт_Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ КлючиАналитики.Назначение
| КОНЕЦ КАК Назначение,
| ЕСТЬNULL(КлючиАналитики.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
| ТоварыПереданные.НомерГТД КАК НомерГТД,
| ТоварыПереданные.НомерГТД.СтранаПроисхождения КАК СтранаПроисхождения,
| СУММА(ТоварыПереданные.КоличествоОстаток) КАК КоличествоОстаток
|ПОМЕСТИТЬ ТоварыПереданныеГруппировка
|ИЗ
| ТоварыПереданные КАК ТоварыПереданные
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитики
| ПО ТоварыПереданные.АналитикаУчетаНоменклатуры = КлючиАналитики.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК вт_Номенклатура
| ПО КлючиАналитики.Номенклатура = вт_Номенклатура.Ссылка
|СГРУППИРОВАТЬ ПО
| ЕСТЬNULL(КлючиАналитики.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)),
| ЕСТЬNULL(КлючиАналитики.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)),
| ВЫБОР
| КОГДА вт_Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ КлючиАналитики.Назначение
| КОНЕЦ,
| ЕСТЬNULL(КлючиАналитики.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)),
| ТоварыПереданные.НомерГТД,
| ТоварыПереданные.НомерГТД.СтранаПроисхождения
|;
|
|
|ВЫБРАТЬ
| ТоварыПереданныеГруппировка.Номенклатура КАК Номенклатура,
| ТоварыПереданныеГруппировка.Характеристика КАК Характеристика,
| ТоварыПереданныеГруппировка.Назначение КАК Назначение,
| ТоварыПереданныеГруппировка.Серия КАК Серия,
| ЕСТЬNULL(ТоварыНакладной.РазныйУчетСерий, ЛОЖЬ) КАК РазныйУчетСерий,
| ТоварыПереданныеГруппировка.НомерГТД КАК НомерГТД,
| ТоварыПереданныеГруппировка.СтранаПроисхождения КАК СтранаПроисхождения,
| ТоварыПереданныеГруппировка.КоличествоОстаток КАК КоличествоОстаток,
| ТоварыПереданныеГруппировка.КоличествоОстаток - ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоОсталосьПодобрать,
| ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоПодобрано,
| ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоВНакладной
|
|ИЗ
| ТоварыПереданныеГруппировка КАК ТоварыПереданныеГруппировка
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыНакладной КАК ТоварыНакладной
| ПО ТоварыПереданныеГруппировка.Номенклатура = ТоварыНакладной.Номенклатура
| И ТоварыПереданныеГруппировка.Характеристика = ТоварыНакладной.Характеристика
| И ТоварыПереданныеГруппировка.Назначение = ТоварыНакладной.Назначение
| И ТоварыПереданныеГруппировка.Серия = ТоварыНакладной.Серия
| И ТоварыПереданныеГруппировка.НомерГТД = ТоварыНакладной.НомерГТД
|
|УПОРЯДОЧИТЬ ПО
| ЕСТЬNULL(ТоварыНакладной.НомерСтроки, 99999),
| ТоварыПереданныеГруппировка.Номенклатура,
| ТоварыПереданныеГруппировка.Характеристика,
| ТоварыПереданныеГруппировка.Назначение,
| ТоварыПереданныеГруппировка.Серия
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстСоединения(ИспользоватьНомерГТД = Истина) Экспорт
ТекстСоединения =
"Таблица.Ссылка = ДанныеУчета.Распоряжение
| И Таблица.Назначение = ДанныеУчета.Назначение
| И ВЫБОР
| КОГДА Таблица.Порча
| ТОГДА Таблица.НоменклатураОприходование
| ИНАЧЕ Таблица.Номенклатура
| КОНЕЦ = ДанныеУчета.Номенклатура
| И ВЫБОР
| КОГДА Таблица.Порча
| ТОГДА Таблица.ХарактеристикаОприходование
| ИНАЧЕ Таблица.Характеристика
| КОНЕЦ = ДанныеУчета.Характеристика";
Если ИспользоватьНомерГТД Тогда
ТекстСоединения = ТекстСоединения + "
| И Таблица.НомерГТД = ДанныеУчета.НомерГТД";
КонецЕсли;
Возврат ТекстСоединения;
КонецФункции
#Область ТекстыЗапросовЗаполненияСпискаРаспоряжений
Функция ТекстЗапросаРаспоряженияНакладной(ПараметрыТекстаЗапроса) Экспорт
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"ТаблицаРаспоряжений.Склад",
"&Склад",
"=");
Возврат Документы.ЗаявкаНаВозвратТоваровОтКлиента.ТекстЗапросаРаспоряженийНакладных(ПараметрыТекстаЗапроса);
КонецФункции
Функция ТекстЗапросаРаспоряженияКОформлению() Экспорт
Возврат РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаРаспоряженияКОформлению();
КонецФункции
Функция ТекстЗапросаОстаткиТоваровКОформлению(ИмяВременнойТаблицы, ОтборПоИзмерениям = Неопределено) Экспорт
Если ОтборПоИзмерениям = Неопределено Тогда
ОтборПоИзмерениям = Новый Соответствие;
КонецЕсли;
ТекстЗапроса =
РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОстатки(
ИмяВременнойТаблицы,
ОтборПоИзмерениям,
"КОформлению > 0");
ТекстЗапроса = СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(ТекстЗапроса, "0", "КодСтроки");
ТекстЗапроса = СхемыЗапросов.УстановитьИндексациюПолейЗапроса(ТекстЗапроса, "Номенклатура, Характеристика");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДублиТоваровКОформлению() Экспорт
Возврат
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоДублей,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика
|ПОМЕСТИТЬ ДублиТоваровКОформлению
|ИЗ
| ТоварыКОформлению КАК ТоварыКОформлению
|
|СГРУППИРОВАТЬ ПО
| ТоварыКОформлению.Номенклатура,
| ТоварыКОформлению.Характеристика
|";
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Распоряжение
Функция ТипыРаспоряжение() Экспорт
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента"));
Возврат МассивТипов;
КонецФункции
Функция ИмяРегистраЗаказ() Экспорт
Возврат "ТоварыКПоступлению";
КонецФункции
Функция ИмяИзмерениеЗаказ() Экспорт
Возврат "ДокументПоступления";
КонецФункции
Функция ИспользоватьКодСтроки() Экспорт
Возврат Ложь;
КонецФункции
Функция СинонимЗаказа() Экспорт
Возврат НСтр("ru='Заявка на возврат товаров от клиента'");
КонецФункции
#КонецОбласти
#Область АктОРасхождениях
Функция ТипОснованияАкта() Экспорт
Возврат Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтХранителя;
КонецФункции
Функция ПостфиксИмениАкта() Экспорт
Возврат НСтр("ru = 'после поступления товаров от хранителя'");
КонецФункции
Функция ЗаголовокФормыСозданияАкта() Экспорт
Возврат НСтр("ru = 'Акт о расхождениях после поступления товаров от хранителя (создание)'");
КонецФункции
Функция ЗаголовокФормыАкта() Экспорт
Возврат НСтр("ru = 'Акт о расхождениях после поступления товаров от хранителя'");
КонецФункции
Функция ПодсказкаДоговораАкта() Экспорт
Возврат НСтр("ru = 'Договор, в рамках которого оформлено поступление'");
КонецФункции
Функция ПодсказкаСоглашенияАкта() Экспорт
Возврат НСтр("ru = 'Соглашение, по которому был передан товар.'");
КонецФункции
Функция ЗаголовокДокументаОснованияАкта() Экспорт
Возврат НСтр("ru = 'Поступление от хранителя'");
КонецФункции
Функция ЗаголовокПоОснованиям(ДополнитьПартнером = Истина) Экспорт
Если ДополнитьПартнером Тогда
Возврат НСтр("ru = 'По поступлениям от хранителя'");
Иначе
Возврат НСтр("ru = 'По поступлениям'");
КонецЕсли;
КонецФункции
Функция КомментарийПоставщикаПодвал() Экспорт
Возврат НСтр("ru = 'Комментарии хранителя по расхождениям в строке'");
КонецФункции
Функция КомментарийКлиента() Экспорт
Возврат НСтр("ru = 'от хранителя'");
КонецФункции
#КонецОбласти
#Область ХозяйственныеОперации
Функция ХозяйственнаяОперация() Экспорт
Возврат Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
КонецФункции
Функция ХозяйственнаяОперацияДоговора() Экспорт
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецФункции
#КонецОбласти
#Область ФункциональныеОпции
Функция СоглашенияСПоставщикамиПрименимы() Экспорт
Возврат Истина;
КонецФункции
Функция СоглашенияСКлиентамиПрименимы() Экспорт
Возврат Истина;
КонецФункции
Функция ИспользоватьСоглашенияСКлиентами() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
КонецФункции
Функция ИспользоватьРаспоряжения() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");
КонецФункции
Функция ИспользоватьПоступлениеПоНесколькимЗаказам() Экспорт
Возврат Ложь;
КонецФункции
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецФункции
#КонецОбласти
#Область Форма
Функция ПолучитьДоговорПоУмолчанию(Объект, ОтборПоВалюте = Истина, ОтборПоНаправлениюДеятельности = Истина) Экспорт
ХозяйственнаяОперация = ХозяйственнаяОперацияДоговора();
Валюта = Неопределено;
Если ОтборПоВалюте Тогда
Валюта = Объект.Валюта;
КонецЕсли;
НаправлениеДеятельности = Неопределено;
Если ОтборПоНаправлениюДеятельности
И ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности") Тогда
НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперация, Валюта, НаправлениеДеятельности);
Возврат Договор;
КонецФункции
Процедура УстановитьДоступностьДоговора(Форма, Объект, Договор = Неопределено) Экспорт
Элементы = Форма.Элементы;
ПродажиСервер.УстановитьДоступностьДоговора(
Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Договор);
КонецПроцедуры
Процедура НастроитьФорму(Форма, Номер, Дата) Экспорт
Элементы = Форма.Элементы;
Параметры = Форма.Параметры;
Объект = Форма.Объект;
Форма.АвтоЗаголовок = Ложь;
Форма.Заголовок = ЗаголовокФормыДокумента(Не ЗначениеЗаполнено(Параметры.Ключ), Номер, Дата);
Форма.ЗаголовокФормыПодбораПереданныхТоваров = "";
Элементы.Партнер.Заголовок = НСтр("ru = 'Клиент'");
Элементы.ТоварыПодобратьПереданныеТовары.Заголовок = "";
Элементы.СтраницыЗаказ.Видимость = ИспользоватьРаспоряжения();
Элементы.ПоРаспоряжению.Заголовок = НСтр("ru = 'По заявке'");
Элементы.ПоРаспоряжениям.Заголовок = НСтр("ru = 'По заявкам'");
Элементы.ЗакрытьЗаявку.Заголовок = НСтр("ru = 'Закрыть заявку'");
Элементы.ЗакрытьЗаявки.Заголовок = НСтр("ru = 'Закрыть заявки'");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами();
Элементы.ВидЦены.Видимость = Истина;
Элементы.ТоварыЦена.Видимость = Истина;
Элементы.ТоварыСумма.Видимость = Истина;
Элементы.ТоварыЗаполнитьЦеныПоВидуЦен.Видимость = Истина;
Элементы.ТоварыЗаполнитьНомераГТД.Видимость = Истина;
Элементы.ГруппаИтого.Видимость = Истина;
Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = Ложь;
Элементы.ВозвратПереданнойМногооборотнойТары.Видимость = Объект.ВозвратПереданнойМногооборотнойТары;
КонецПроцедуры
Процедура НастроитьПараметрыВыбораЭлементов(Форма, Объект) Экспорт
Элементы = Форма.Элементы;
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("ЗаголовокПоПартнеру", НСтр("ru = 'По клиенту'")));
Элементы.Контрагент.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует));
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", ХозяйственнаяОперацияДоговора()));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.НеИзменять));
Элементы.Договор.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.КомиссионныеПродажи25", Ложь));
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Дата", "Объект.Дата", РежимИзмененияСвязанногоЗначения.НеИзменять));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
Элементы.Соглашение.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
Если Не Элементы.Найти("НаправлениеДеятельности") = Неопределено Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.УчетДоходов", Истина));
Элементы.НаправлениеДеятельности.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
Если Не Элементы.Найти("ВидЦены") = Неопределено Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ИспользоватьПриПродаже", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
Элементы.ВидЦены.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
КонецПроцедуры
Функция ЗаголовокФормыДокумента(НовыйДокумент, Номер, Дата) Экспорт
Если НовыйДокумент Тогда
Заголовок = СтрШаблон(НСтр("ru = '%1 (создание)'"), ПредставлениеОбъекта());
Иначе
Заголовок = СтрШаблон(НСтр("ru = '%1 %2 от %3'"), ПредставлениеОбъекта(), Номер, Дата);
КонецЕсли;
Возврат Заголовок;
КонецФункции
Функция ПредставлениеОбъекта() Экспорт
Возврат НСтр("ru = 'Поступление товаров от хранителя'");
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ОбщиеМетодыПоХозяйственнымОперациям
#Область ОбработчикиДействий
Функция ОбработчикДействий(ХозяйственнаяОперация = Неопределено) Экспорт
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Обработчик = ПоступлениеОтКомиссионера;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5 Тогда
Обработчик = ПоступлениеОтПереработчика;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5 Тогда
Обработчик = ВозвратОтПереработчика;
Иначе
Обработчик = Документы.ПоступлениеТоваровОтХранителя;
КонецЕсли;
Возврат Обработчик;
КонецФункции
Функция ОбработчикДействийПоТипуОснованияАкта(ТипОснования) Экспорт
Если ТипОснования = ПоступлениеОтКомиссионера.ТипОснованияАкта() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ИначеЕсли ТипОснования = ПоступлениеОтПереработчика.ТипОснованияАкта() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5;
ИначеЕсли ТипОснования = ВозвратОтПереработчика.ТипОснованияАкта() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5;
Иначе
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
КонецЕсли;
Возврат ОбработчикДействий(ХозяйственнаяОперация);
КонецФункции
#КонецОбласти
#Область Форма
Процедура НастроитьРеквизитХозяйственнаяОперация(Форма, Объект) Экспорт
Элементы = Форма.Элементы;
Элементы.ХозяйственнаяОперация.СписокВыбора.Очистить();
Если ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах") Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5") Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5);
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
КонецЕсли;
Элементы.ХозяйственнаяОперация.Видимость = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() > 1;
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация)
И Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#КонецЕсли