#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Менеджер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, ЗаказПоставщику, Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Склад", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Партнер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Партнер";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Сдал", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Сдал";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Сдал";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "СдалДолжность", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"НаименованиеВходящегоДокумента", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Закупки");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
ПриемкаТоваровНаХранениеЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ПриемкаТоваровНаХранение") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаПартииТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ПриемкаТоваровНаХранениеЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(Запрос, ТекстыЗапроса, Регистры, ПустаяСсылка().Метаданные());
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область Доставка
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапросаРаспоряжения =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Склад КАК Склад,
| Товары.Ссылка.Договор КАК Договор
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&Ссылки)
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Склад";
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| Шапка.СпособДоставки КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
|
| ВЫБОР КОГДА Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоПунктаПередачи)
| ТОГДА Шапка.АдресДоставкиПеревозчика
| ИНАЧЕ Шапка.АдресДоставки
| КОНЕЦ КАК Адрес,
|
| ВЫБОР КОГДА Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоПунктаПередачи)
| ТОГДА Шапка.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ Шапка.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
|
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Распоряжения.Склад КАК Склад,
| ИСТИНА КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| &ВтРаспоряжения КАК Распоряжения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемкаТоваровНаХранение КАК Шапка
| ПО (Шапка.Ссылка = Распоряжения.Ссылка)
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорКонтрагента
| ПО ДоговорКонтрагента.Ссылка = Распоряжения.Договор
|
|ГДЕ
| ДоговорКонтрагента.Ссылка ЕСТЬ NULL
| ИЛИ НЕ ДоговорКонтрагента.СпособДоставки В (&ИспользуемыеСпособыДоставки)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.Ссылка В (&ДоговораРаспоряженияНаПоступление)
| ТОГДА ИсточникДанныхДоставки.Номер
| ИНАЧЕ
| Распоряжения.Ссылка.Номер
| КОНЕЦ КАК Номер,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.Ссылка В (&ДоговораРаспоряженияНаПоступление)
| ТОГДА ИСТИНА
| ИНАЧЕ
| Распоряжения.Ссылка.Проведен
| КОНЕЦ КАК Проведен,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.Ссылка В (&ДоговораРаспоряженияНаПоступление)
| ТОГДА ИсточникДанныхДоставки.Ссылка
| ИНАЧЕ
| Распоряжения.Ссылка
| КОНЕЦ КАК Ссылка,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.Ссылка В (&ДоговораРаспоряженияНаПоступление)
| ТОГДА ИсточникДанныхДоставки.Дата
| ИНАЧЕ
| Распоряжения.Ссылка.Дата
| КОНЕЦ КАК Дата,
| ИсточникДанныхДоставки.Партнер КАК ПолучательОтправитель,
| ИсточникДанныхДоставки.ПеревозчикПартнер КАК Перевозчик,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз)
| ИНАЧЕ ИсточникДанныхДоставки.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| ИсточникДанныхДоставки.ЗонаДоставки КАК Зона,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА ИсточникДанныхДоставки.АдресДоставкиПеревозчика
| ИНАЧЕ ИсточникДанныхДоставки.АдресДоставки
| КОНЕЦ КАК Адрес,
| ВЫБОР
| КОГДА ИсточникДанныхДоставки.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА ИсточникДанныхДоставки.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ ИсточникДанныхДоставки.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
| ИсточникДанныхДоставки.ВремяДоставкиС КАК ВремяС,
| ИсточникДанныхДоставки.ВремяДоставкиПо КАК ВремяПо,
| ИсточникДанныхДоставки.ДополнительнаяИнформацияПоДоставке КАК ДополнительнаяИнформация,
| Распоряжения.Склад КАК Склад,
| ЛОЖЬ КАК ДоставитьПолностью,
| ЛОЖЬ КАК ОсобыеУсловияПеревозки,
| """" КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|ИЗ
| &ВтРаспоряжения КАК Распоряжения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ИсточникДанныхДоставки
| ПО ИсточникДанныхДоставки.Ссылка = Распоряжения.Договор
|ГДЕ
| ИсточникДанныхДоставки.СпособДоставки В (&ИспользуемыеСпособыДоставки)";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ВтРаспоряжения", "(" + ТекстЗапросаРаспоряжения + ")");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТоварыКДоставке() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Ссылка,
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&Ссылки)
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПриемкаТоваровНаХранение) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПриемкаТоваровНаХранение.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ПриемкаТоваровНаХранение);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьОтветственноеХранениеВПроцессеЗакупки";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПриемки") Тогда
КомандаСоздания = Документы.АктОРасхожденияхПослеПриемки.ДобавитьКомандуСоздатьНаОсновании(
КомандыСозданияНаОсновании);
Если КомандаСоздания <> Неопределено Тогда
КомандаСоздания.Представление = НСтр("ru = 'Акт о расхождениях после приемки'");
КонецЕсли;
КонецЕсли;
Документы.ЗаказНаПеремещение.ДобавитьКомандуСоздатьНаОснованииПриемкиТоваровНаХранениеПоГруппеСкладов(КомандыСозданияНаОсновании);
Команда = Документы.УстановкаЦенНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Команда = Документы.ОтгрузкаТоваровСХранения.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПеремещениеТоваров.ДобавитьКомандуСоздатьНаОснованииПоГруппеСкладов(КомандыСозданияНаОсновании);
Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ПриемкаТоваровНаХранениеЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПриемкаТоваровНаХранение) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ПриемкаТоваровНаХранениеСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Приемка товаров на хранение'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции =
"ИспользоватьОтветственноеХранениеВПроцессеЗакупки";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияДокументЗакупки(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента";
КонецЕсли;
ПриемкаТоваровНаХранениеЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#Область Заполнение
Процедура ЗаполнитьПоОстаткамЗаказов(ДанныеОтбора, Товары, СкладПоступления, МассивЗаказов = Неопределено, ПроверятьПорядокРасчетов = Ложь) Экспорт
МассивЗаказовПоставщику = Новый Массив();
ВыборкаТовары = ПолучитьРезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, СкладПоступления, МассивЗаказов).Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
Если МассивЗаказовПоставщику.Найти(ВыборкаТовары.ЗаказПоставщику) = Неопределено Тогда
МассивЗаказовПоставщику.Добавить(ВыборкаТовары.ЗаказПоставщику);
КонецЕсли;
КонецЦикла;
Если МассивЗаказовПоставщику.Количество() > 0 Тогда
МассивЗаказов = МассивЗаказовПоставщику;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВалютаДокумента", ДанныеОтбора.Валюта);
Запрос.УстановитьПараметр("МассивЗаказовПоставщику", МассивЗаказовПоставщику);
Запрос.Текст =
"ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Ссылка КАК ЗаказПоставщику,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ВЫБОР
| КОГДА ТаблицаЗаказов.Валюта <> &ВалютаДокумента
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПересчитатьВВалютуДокумента
|ИЗ
| Документ.ЗаказПоставщику КАК ТаблицаЗаказов
|ГДЕ
| ТаблицаЗаказов.Ссылка В (&МассивЗаказовПоставщику)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ТаблицаЗаказов.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета
|ИЗ
| Документ.ЗаказПоставщику КАК ТаблицаЗаказов
|ГДЕ
| ТаблицаЗаказов.Ссылка В (&МассивЗаказовПоставщику)
| И ТаблицаЗаказов.Валюта <> &ВалютаДокумента
|";
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатРеквизитыЗаказов = МассивРезультатов[0];
РезультатВыборка = МассивРезультатов[1];
РеквизитыЗаказов = РезультатРеквизитыЗаказов.Выбрать();
ТаблицаКурсовВалют = Новый ТаблицаЗначений;
ТаблицаКурсовВалют.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаКурсовВалют.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЧислитель", Новый ОписаниеТипов("Число"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЗнаменатель", Новый ОписаниеТипов("Число"));
Выборка = РезультатВыборка.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаКурсовВалют.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КурсыВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Выборка.Валюта, Выборка.Дата, Выборка.ВалютаРегламентированногоУчета);
НоваяСтрока.КурсЧислитель = КурсыВалюты.КурсЧислитель;
НоваяСтрока.КурсЗнаменатель = КурсыВалюты.КурсЗнаменатель;
КонецЦикла;
Если ТаблицаКурсовВалют.Количество() > 0 Тогда
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ДанныеОтбора.Валюта, ТекущаяДатаСеанса(),
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеОтбора.Организация));
КонецЕсли;
ВыборкаТовары.Сбросить();
Пока ВыборкаТовары.Следующий() Цикл
НеобходимПересчетСумм = (ВыборкаТовары.Количество <> ВыборкаТовары.КоличествоПоЗаказу);
СтрокаТаб = Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаб, ВыборкаТовары);
СтрокаТаб.Количество = ВыборкаТовары.Количество;
СтрокаТаб.КоличествоУпаковок = ВыборкаТовары.Количество / ВыборкаТовары.Коэффициент;
РеквизитыЗаказов.Сбросить();
ЗаказНайден = РеквизитыЗаказов.НайтиСледующий(СтрокаТаб.ЗаказПоставщику, "ЗаказПоставщику");
Если ЗаказНайден Тогда
Если РеквизитыЗаказов.ПересчитатьВВалютуДокумента Тогда
ПараметрыОтбора = Новый Структура("Валюта, Дата", РеквизитыЗаказов.Валюта, РеквизитыЗаказов.Дата);
КурсВалюты = ТаблицаКурсовВалют.НайтиСтроки(ПараметрыОтбора);
Если КурсВалюты.Количество() = 1 Тогда
НеобходимПересчетСумм = Истина;
СтрокаТаб.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(СтрокаТаб.Цена,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗаказНайден
И НеобходимПересчетСумм Тогда
СтрокаТаб.Сумма = СтрокаТаб.Цена * СтрокаТаб.КоличествоУпаковок;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,ХозяйственнаяОперация,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПриемкаТоваровНаХранение";
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина);
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры =
ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры
И Не СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина)
Или ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Ложь;
ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаОтПоставщика);
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Склад");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Ссылка");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Соглашение");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Договор");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ПоступлениеПоЗаказам");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказПоставщику");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ВариантПриемкиТоваров");
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА НЕ &ТолькоСерииДляСебестоимости
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И (НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении)
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеОтПоставщика
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.Склад = СерииДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = ТоварыДляЗапроса.Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.Склад = ТоварыДляЗапроса.Склад
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Назначения
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина,
"Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Товары.Склад";
Возврат МакетФормы;
КонецФункции
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#Область Прочее
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если Не ЗначениеЗаполнено(ЗначенияПолейДляОпределенияРаспоряжения.Соглашение)
И Не ЗначениеЗаполнено(ЗначенияПолейДляОпределенияРаспоряжения.Договор) Тогда
Если ЗначенияПолейДляОпределенияРаспоряжения.ПоступлениеПоЗаказам Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_ЗаказПоставщику;
Иначе
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Ссылка;
КонецЕсли;
Иначе
ВариантПриемкиТоваров = ЗначенияПолейДляОпределенияРаспоряжения.ВариантПриемкиТоваров;
Если ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаПоЗаказамИНакладным Тогда
Если ЗначенияПолейДляОпределенияРаспоряжения.ПоступлениеПоЗаказам Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_ЗаказПоставщику;
Иначе
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Ссылка;
КонецЕсли;
ИначеЕсли Справочники.СоглашенияСПоставщиками.СоглашениеИспользуетсяПриПриемке(ВариантПриемкиТоваров) Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Соглашение;
ИначеЕсли Справочники.ДоговорыКонтрагентов.ДоговорИспользуетсяПриПриемке(ВариантПриемкиТоваров) Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Договор;
КонецЕсли;
КонецЕсли;
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.ВыводитьТаблицыПоступление = 1;
СтруктураСостояние.ЭтоНакладная = Истина;
СтруктураСостояние.ЕстьСуммовыеПоказателиПоступления = Истина;
СтруктураСостояние.ИмяПоляНакладнаяПоЗаказам = "ПоступлениеПоЗаказам";
СтруктураСостояние.ИмяПоляСумма = "Сумма";
Возврат СтруктураСостояние
КонецФункции
Функция ПорядокЗаполненияНазначенийВДокументе(Форма) Экспорт
ПорядокОбработкиДокумента = НазначенияСервер.ПорядокЗаполненияНазначенийВДокументе();
ПорядокОбработкиДокумента.ВДокументеОпределенаФункцияШаблонНазначения = Истина;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "Товары";
ТаблицаУсловий = НазначенияСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
Функция НаименованияВходящихДокументов() Экспорт
МассивНаименований = Новый Массив();
МассивНаименований.Добавить(НСтр("ru='Приемка товаров'"));
ПриемкаТоваровНаХранениеЛокализация.ДополнитьНаименованияВходящихДокументов(МассивНаименований);
Возврат МассивНаименований
КонецФункции
#КонецОбласти
Процедура ДополнитьНаименованияВходящихДокументов(МассивНаименований) Экспорт
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Склад)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(ХозяйственнаяОперация)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СинонимДокумента = НСтр("ru = 'Приемка товаров на хранение'");
Представление = СтрШаблон(НСтр("ru='%1 %2 от %3'"), СинонимДокумента, Данные.Номер, Данные.Дата);
ОбщегоНазначенияУТКлиентСервер.ОбработкаПолученияПредставленияВходящегоДокумента(
Данные, Представление, СтандартнаяОбработка, "ПриемкаТоваровНаХранение");
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Очистить();
Поля.Добавить("НаименованиеВходящегоДокумента");
Поля.Добавить("НомерВходящегоДокумента");
Поля.Добавить("ДатаВходящегоДокумента");
Поля.Добавить("Дата");
Поля.Добавить("Номер");
Поля.Добавить("ХозяйственнаяОперация");
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Партнер КАК Отправитель,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Контрагент.СтранаРегистрации КАК СтранаРегистрации,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета,
| ДанныеДокумента.Соглашение.Валюта КАК ВалютаСоглашения,
| ДанныеДокумента.ЗаказПоставщику КАК ЗаказПоставщику,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Менеджер КАК Менеджер,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ДанныеДокумента.ВидЦеныПоставщика.Валюта КАК ВалютаВидаЦеныПоставщика,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ДанныеДокумента.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ДанныеДокумента.НаименованиеВходящегоДокумента КАК НаименованиеВходящегоДокумента,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка) КАК НаправлениеДеятельности,
| ДанныеДокумента.РегистрироватьЦеныПоставщика КАК РегистрироватьЦеныПоставщика,
| ДанныеДокумента.ИдентификаторДокумента КАК ИдентификаторДокумента,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
НомерВходящегоДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.НомерВходящегоДокумента);
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("ИспользоватьУчетПрочихДоходовРасходов", ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихДоходовРасходов"));
Запрос.УстановитьПараметр("ПоступлениеПоНесколькимЗаказам", ?(Не ЗначениеЗаполнено(Реквизиты.ЗаказПоставщику), Истина, Ложь));
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета", ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
Запрос.УстановитьПараметр("КонтролироватьОстаткиТоваровОрганизацийКОформлениюПоПоступлениям",ПолучитьФункциональнуюОпцию("КонтролироватьОстаткиТоваровОрганизацийКОформлениюПоПоступлениям"));
Запрос.УстановитьПараметр("КонтролироватьВыдачуПодОтчетВРазрезеЦелей", ПолучитьФункциональнуюОпцию("КонтролироватьВыдачуПодОтчетВРазрезеЦелей"));
Запрос.УстановитьПараметр("НомерВходящегоДокумента", НомерВходящегоДокумента);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяОбъекта()));
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура = Аналитика.Номенклатура
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.Характеристика = Аналитика.Характеристика
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И Аналитика.КлючАналитики ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|");
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Процедура УстановитьПараметрАналитикаУчетаПоПартнерам(Запрос)
Если Запрос.Параметры.Свойство("АналитикаУчетаПоПартнерам") Тогда
Возврат;
КонецЕсли;
АналитикаУчетаПоПартнерам = РегистрыСведений.АналитикаУчетаПоПартнерам.ЗначениеКлючаАналитики(Запрос.Параметры);
Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам", АналитикаУчетаПоПартнерам);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыПоставщикам";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ПоступлениеПоЗаказам
| И ТаблицаТовары.КодСтроки <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| 0 КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.КодСтроки = 0
| И &ПоступлениеПоЗаказам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| 0 КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.КодСтроки = 0
| И &ПоступлениеПоЗаказам
|
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ИсточникДанных.ЗаказПоставщику КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| ИсточникДанных.Ссылка.Соглашение КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
|
| ВЫБОР КОГДА ИсточникДанных.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ИсточникДанных.Ссылка.ДатаПоступления
| ИНАЧЕ
| ИсточникДанных.Ссылка.Дата
| КОНЕЦ КАК Дата,
|
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ИсточникДанных.Ссылка.ПоступлениеПоЗаказам
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Склад КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ИсточникДанных.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ИсточникДанных.ЗаказПоставщику КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| ИсточникДанных.Ссылка.Соглашение КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.Ссылка.Дата КАК Дата,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ИсточникДанных.Ссылка.ПоступлениеПоЗаказам
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Склад КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ИсточникДанных.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоКорректировкаВнутриНакладной
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)";
ТекущийОбъектМетаданных = Метаданные.Документы.ПриемкаТоваровНаХранение;
СкладыСервер.ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента, ТекущийОбъектМетаданных, "Серии");
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| ТаблицаСерии.Склад КАК Получатель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК ПомещениеПолучателя,
| &Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика) КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| &Период КАК Период,
| &Ссылка КАК Регистратор,
| ВЫБОР
| КОГДА (НЕ ТаблицаСерии.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Период < ТаблицаСерии.Склад.ДатаНачалаОрдернойСхемыПриПоступлении)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Серии КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество,
| ТаблицаСерии.Склад,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка),
| &Партнер,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика),
| &Ссылка,
| &Период,
| &Ссылка,
| ВЫБОР
| КОГДА (НЕ ТаблицаСерии.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Период < ТаблицаСерии.Склад.ДатаНачалаОрдернойСхемыПриПоступлении)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДатыПоступленияТоваровОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Период КАК ДатаПоступления,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.НомерГТД КАК НомерГТД
|ИЗ
| ВтТаблицаТовары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ДатыПоступленияТоваровОрганизаций КАК ПоступленияТоваров
| ПО
| ТаблицаТовары.ВидЗапасов = ПоступленияТоваров.ВидЗапасов
| И ТаблицаТовары.Номенклатура = ПоступленияТоваров.Номенклатура
| И ТаблицаТовары.Характеристика = ПоступленияТоваров.Характеристика
| И ТаблицаТовары.Серия = ПоступленияТоваров.Серия
| И ТаблицаТовары.НомерГТД = ПоступленияТоваров.НомерГТД
|
|ГДЕ
| (ПоступленияТоваров.ДатаПоступления ЕСТЬ NULL
| ИЛИ ПоступленияТоваров.ДатаПоступления < &Период)
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаТовары.ВидЗапасов,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.НомерГТД
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК ОрганизацияОтгрузки,
| ИСТИНА КАК Первичное
|ИЗ
| ВтТаблицаТовары КАК ТаблицаТовары
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаПартииТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ПартииТоваровОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &Ссылка КАК ДокументПоступления,
|
| СУММА(ТаблицаТовары.Количество) КАК Количество,
|
| СУММА(ТаблицаТовары.СуммаСНДСУпр) КАК Стоимость,
| СУММА(ТаблицаТовары.СуммаБезНДСУпр) КАК СтоимостьБезНДС,
| СУММА(ТаблицаТовары.СуммаБезНДСРегл
| + ТаблицаТовары.СуммаНДСРегл) КАК СтоимостьРегл,
| 0 КАК НДСРегл,
|
| ТаблицаТовары.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
|
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИСТИНА КАК Первичное,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник
|ИЗ
| ВтТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| &ПартионныйУчетВерсии21
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.ВидЗапасов,
| ТаблицаТовары.АналитикаУчетаНоменклатуры,
| ТаблицаТовары.АналитикаУчетаПартий,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных = "
|ВЫБРАТЬ
| ""Товары"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ТаблицаДокумента.Ссылка.Дата КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.Сумма КАК СуммаБезНДС,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Функция ТекстЗапросаВтТаблицаАналитикУчетаПартий(Запрос, ТекстыЗапроса)
ТекстВыборкаПоляАналитик =
"ВЫБРАТЬ
| ""Товары"" КАК ИмяТабличнойЧасти,
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ДанныеДокумента.Партнер КАК Поставщик,
| ДанныеДокумента.Контрагент КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС,
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары) КАК ВидЦенности,
| 0 КАК КодСтроки
|ПОМЕСТИТЬ ВТПоляАналитикУчетаПартий
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемкаТоваровНаХранение КАК ДанныеДокумента
| ПО ДанныеДокумента.Ссылка = ТаблицаДокумента.Ссылка
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
|";
ТекстЗапроса = Справочники.КлючиАналитикиУчетаПартий.ТекстЗапросаВтТаблицаАналитикУчетаПартий(ТекстВыборкаПоляАналитик, Запрос, ТекстыЗапроса);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаТовары";
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаАналитикУчетаПартий", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаАналитикУчетаПартий(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
|
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
|
| ТаблицаТовары.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаТовары.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР КОГДА ТаблицаТовары.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Период >= ТаблицаТовары.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользоватьОрдернуюСхемуПриПоступлении,
| ТаблицаТовары.Сумма КАК Сумма,
| 0 КАК СуммаНДС,
| ТаблицаТовары.Сумма КАК СуммаСНДС,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
|
| ЕСТЬNULL(Суммы.СуммаСНДСУпр, 0) КАК СуммаСНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
|
| ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И ТаблицаТовары.ВидЗапасов.ТипЗапасов В (&ТипыЗапасовСобственные) КАК ЭтоТара,
|
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка) КАК СтавкаНДС,
| ТаблицаАналитикУчетаПартий.ВидЦенности КАК ВидЦенности,
| ТаблицаАналитикУчетаПартий.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаАналитикУчетаПартий.АналитикаУчетаПартий КАК АналитикаУчетаПартий
|
|ПОМЕСТИТЬ ВтТаблицаТовары
|
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО
| ТаблицаТовары.Ссылка = Суммы.Ссылка
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаАналитикУчетаПартий КАК ТаблицаАналитикУчетаПартий
| ПО ТаблицаАналитикУчетаПартий.НомерСтроки = ТаблицаТовары.НомерСтроки
| И ТаблицаАналитикУчетаПартий.ИмяТабличнойЧасти = ""Товары""
|
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнаяТаблицаКурсыВалют(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВременнаяТаблицаКурсыВалют";
ТекстЗапроса = "
|ВЫБРАТЬ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.КурсЧислитель КАК КурсЧислитель,
| КурсыВалютСрезПоследних.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ
| ВременнаяТаблицаКурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Период, БазоваяВалюта = &ВалютаРегламентированногоУчета) КАК КурсыВалютСрезПоследних
|ИНДЕКСИРОВАТЬ ПО
| Валюта
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнаяТаблицаТовары(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВременнаяТаблицаТовары";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВременнаяТаблицаКурсыВалют", ТекстыЗапроса) Тогда
ТекстЗапросаВременнаяТаблицаКурсыВалют(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| Товары.НоменклатураПартнера КАК НоменклатураПартнера,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| ВЫРАЗИТЬ(Товары.Цена
| * ВЫБОР
| КОГДА
| &Валюта <> &ВалютаСоглашения
| ТОГДА
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыСоглашения.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыСоглашения.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалюты.КурсЧислитель * КурсыВалютыСоглашения.КурсЗнаменатель)
| / (КурсыВалютыСоглашения.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| ИНАЧЕ
| 0
| КОНЕЦ
| ИНАЧЕ
| 1
| КОНЕЦ КАК ЧИСЛО(31,2))
| КАК Цена
|ПОМЕСТИТЬ
| ВременнаяТаблицаТовары
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалюты
|ПО
| КурсыВалюты.Валюта = &Валюта
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалютыСоглашения
|ПО
| КурсыВалютыСоглашения.Валюта = &ВалютаСоглашения
|ГДЕ
| Товары.Ссылка = &Ссылка
| И &РегистрироватьЦеныПоставщика
| И (Товары.КодСтроки = 0 ИЛИ НЕ Товары.ЗаказПоставщику.РегистрироватьЦеныПоставщика)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТоварыСРазличнымиУпаковкамиЦенами(Запрос, ТекстыЗапроса)
ИмяРегистра = "ТоварыСРазличнымиУпаковкамиЦенами";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВременнаяТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВременнаяТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| СРЕДНЕЕ(
| Товары.Цена / ВЫБОР
| КОГДА
| Товары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| &ТекстЗапросаКоэффициентУпаковки
| ИНАЧЕ
| 1
| КОНЕЦ
| ) КАК ЦенаЗаБазовуюЕдиницу,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары.Упаковка) КАК КоличествоРазличныхУпаковок
|ПОМЕСТИТЬ
| ТоварыСРазличнымиУпаковкамиЦенами
|ИЗ
| ВременнаяТаблицаТовары КАК Товары
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЦеныНоменклатурыПоставщиков";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВременнаяТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВременнаяТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ТоварыСРазличнымиУпаковкамиЦенами", ТекстыЗапроса) Тогда
ТекстЗапросаТоварыСРазличнымиУпаковкамиЦенами(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВременнаяТаблицаКурсыВалют", ТекстыЗапроса) Тогда
ТекстЗапросаВременнаяТаблицаКурсыВалют(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| МАКСИМУМ(Товары.НоменклатураПартнера) КАК НоменклатураПартнера,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| &ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| &ВалютаВидаЦеныПоставщика КАК Валюта,
| &Период КАК Период,
| &Партнер КАК Партнер,
| МИНИМУМ(ВЫБОР
| КОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИНАЧЕ
| Товары.Упаковка
| КОНЕЦ
| ) КАК Упаковка,
| ВЫРАЗИТЬ(СРЕДНЕЕ(ВЫБОР
| КОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.ЦенаЗаБазовуюЕдиницу
| ИНАЧЕ
| Товары.Цена
| КОНЕЦ
| * ВЫБОР
| КОГДА
| &Валюта <> &ВалютаВидаЦеныПоставщика
| ТОГДА
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыЦены.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыЦены.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалюты.КурсЧислитель * КурсыВалютыЦены.КурсЗнаменатель)
| / (КурсыВалютыЦены.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| ИНАЧЕ
| 0
| КОНЕЦ
| ИНАЧЕ
| 1
| КОНЕЦ) КАК ЧИСЛО(31,2)) КАК Цена
|ИЗ
| ВременнаяТаблицаТовары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
| ТоварыСРазличнымиУпаковкамиЦенами КАК ТоварыСРазличнымиУпаковкамиЦенами
|ПО
| Товары.Номенклатура = ТоварыСРазличнымиУпаковкамиЦенами.Номенклатура
| И Товары.Характеристика = ТоварыСРазличнымиУпаковкамиЦенами.Характеристика
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалюты
|ПО
| КурсыВалюты.Валюта = &Валюта
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалютыЦены
|ПО
| КурсыВалютыЦены.Валюта = &ВалютаВидаЦеныПоставщика
|ГДЕ
| &ВидЦеныПоставщика <> ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ПриемкаТоваровНаХранение";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("НомерВходящегоДокумента", """""");
ПереопределениеРасчетаПараметров.Вставить("Отправитель", "ТаблицаТовары.Ссылка.Партнер");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "ЗаказыПоставщикам" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &ДатаВходящегоДокумента КАК ДатаПервичногоДокумента,
| &НомерВходящегоДокумента КАК НомерПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &НаименованиеВходящегоДокумента КАК НаименованиеПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаТовары", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"
|ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаТовары.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаТовары.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &Партнер КАК Склад,
| ТаблицаТовары.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
|
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| &Склад КАК КорСклад,
| ТаблицаТовары.ВидЗапасов.ТипЗапасов КАК КорТипЗапасов,
| ТаблицаТовары.ВидЗапасов КАК КорВидЗапасов,
|
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Количество КАК КорКоличество,
|
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
|
| НЕОПРЕДЕЛЕНО КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаТовары.ВидЗапасов
| ИНАЧЕ ТаблицаТовары.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры
|
|ИЗ
| ВтТаблицаТовары КАК ТаблицаТовары
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка.ПоступлениеПоЗаказам И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
|
| ВЫБОР КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным)) ТОГДА
|
| ТабЧасть.Ссылка.Соглашение
|
| КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных)) ТОГДА
|
| ТабЧасть.Ссылка.Договор
|
| ИНАЧЕ
| ТабЧасть.ЗаказПоставщику
| КОНЕЦ КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| ИЛИ (НЕ ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении > ТабЧасть.Ссылка.Дата)
| И (ТабЧасть.Ссылка.Договор.ВариантОформленияЗакупок ЕСТЬ NULL
| ИЛИ ТабЧасть.Ссылка.Договор.ВариантОформленияЗакупок = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеРазделять))";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И (ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| ИЛИ ТабЧасть.Ссылка.Договор.ВариантОформленияЗакупок В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.ТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг)))";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ ТОГДА
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ
| ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным)) ТОГДА
|
| ТабЧасть.Ссылка.Соглашение
|
| КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных)) ТОГДА
|
| ТабЧасть.Ссылка.Договор
|
| КОГДА ТабЧасть.Ссылка.ПоступлениеПоЗаказам
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров
| <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным) ТОГДА
| ТабЧасть.ЗаказПоставщику
| ИНАЧЕ
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.ПриемкаТоваровНаХранение.ПустаяСсылка)
| ТОГДА ТабЧасть.Ссылка
| ИНАЧЕ ТабЧасть.Ссылка.ИсправляемыйДокумент
| КОНЕЦ
| КОНЕЦ КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ТабЧасть.Ссылка.ДатаПоступления
| ИНАЧЕ
| ТабЧасть.Ссылка.Дата
| КОНЕЦ КАК ДатаПоступления,
|
| ИСТИНА КАК ДоступенДляРасхода,
| ТабЧасть.Ссылка.ПоступлениеПоЗаказам И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
|
| ВЫБОР КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным)) ТОГДА
|
| ТабЧасть.Ссылка.Соглашение
|
| КОГДА ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Дата >= ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных)) ТОГДА
|
| ТабЧасть.Ссылка.Договор
|
| ИНАЧЕ
| ТабЧасть.ЗаказПоставщику
| КОНЕЦ КАК РаспоряжениеВГрафике,
|
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ТабЧасть
|ГДЕ
| (ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| ИЛИ ТабЧасть.Ссылка.Договор.ВариантОформленияЗакупок В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.ТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг)))
| И (ТабЧасть.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ТабЧасть.Ссылка.ПоступлениеПоЗаказам
| ИЛИ ТабЧасть.КодСтроки = 0)";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
УстановитьПараметрАналитикаУчетаПоПартнерам(Запрос);
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтТаблицаТовары");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТовары(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область ВнешнееПоступление_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаДокумента.Ссылка КАК Партия,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДСДокумента,
|
| ТаблицаВидыЗапасов.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| ТаблицаВидыЗапасов.АналитикаУчетаПартий КАК КорАналитикаУчетаПартий,
| ТаблицаДокумента.Партнер КАК Поставщик,
| ТаблицаДокумента.Контрагент КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
|
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК Менеджер,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ЭтоТара
| ТОГДА ТаблицаВидыЗапасов.СуммаСНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК Стоимость,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ЭтоТара
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьБезНДС,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ЭтоТара
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСРегл + ТаблицаВидыЗапасов.СуммаНДСРегл
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьРегл,
| 0 КАК НДСРегл,
| 0 КАК СтоимостьУпр,
| 0 КАК НДСУпр,
| ВЫБОР КОГДА НЕ ТаблицаВидыЗапасов.ЭтоТара
| ТОГДА ТаблицаВидыЗапасов.СуммаСНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьЗабалансовая,
| ВЫБОР КОГДА НЕ ТаблицаВидыЗапасов.ЭтоТара
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСРегл + ТаблицаВидыЗапасов.СуммаНДСРегл
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьЗабалансоваяРегл,
| 0 КАК ДопРасходы,
| 0 КАК ДопРасходыБезНДС,
| 0 КАК ДопРасходыРегл,
| 0 КАК ДопРасходыУпр,
| 0 КАК ПостояннаяРазница,
| 0 КАК ВременнаяРазница,
| 0 КАК СтоимостьНДД,
| 0 КАК КорСтоимость,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &ИдентификаторДокумента КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаТовары КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.ВнешнееПоступление,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.СкладыВТЧ = Истина;
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
Возврат ПравилаПечатиЗадания;
КонецФункции
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Накладная";
КомандаПечати.Представление = НСтр("ru = 'Приемка товаров на хранение'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПриходнаяНакладная";
КомандаПечати.Представление = НСтр("ru = 'Приходная накладная'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаРазмещение");
Если ПраваПользователяПовтИсп.ПечатьЭтикетокИЦенников() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокИЦенников";
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокИЦенников";
КомандаПечати.Идентификатор = "Ценники";
КомандаПечати.Представление = НСтр("ru = 'Ценники'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокИЦенников";
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокИЦенников";
КомандаПечати.Идентификатор = "Этикетки";
КомандаПечати.Представление = НСтр("ru = 'Этикетки'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
ПриемкаТоваровНаХранениеЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Накладная", НСтр("ru='Накладная'"), СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПриходнаяНакладная") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПриходнаяНакладная", НСтр("ru='Приходная накладная'"), СформироватьПечатнуюФормуПриходнаяНакладная(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
ПриемкаТоваровНаХранениеЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
Запрос = Новый Запрос("
|////////////////////////////////////////////////////////////////////////////
|// ЗАПРОС ПО ШАПКЕ
|
|ВЫБРАТЬ
| ПриемкаТоваровНаХранение.Ссылка КАК Ссылка,
| ПриемкаТоваровНаХранение.Номер КАК Номер,
| ПриемкаТоваровНаХранение.Дата КАК Дата,
| ПриемкаТоваровНаХранение.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ПриемкаТоваровНаХранение.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПриемкаТоваровНаХранение.Исправление КАК Исправление,
| ПриемкаТоваровНаХранение.Партнер КАК Партнер,
| ПриемкаТоваровНаХранение.Контрагент КАК Поставщик,
| ПриемкаТоваровНаХранение.Организация КАК Организация,
| ПриемкаТоваровНаХранение.Организация.Префикс КАК Префикс,
| ПриемкаТоваровНаХранение.Валюта КАК Валюта,
| ПриемкаТоваровНаХранение.Принял КАК Принял,
| ПриемкаТоваровНаХранение.ПринялДолжность КАК ПринялДолжность,
| ПриемкаТоваровНаХранение.Сдал КАК Сдал,
| ПриемкаТоваровНаХранение.СдалДолжность КАК СдалДолжность,
| ПриемкаТоваровНаХранение.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваровНаХранение
|
|ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В (&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////
|// ЗАПРОС ПО ТАБЛИЧНЫМ ЧАСТЯМ
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименованиеПолное,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.ЕдиницаИзмерения.Наименование КАК ЕдиницаЦены,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Характеристика.НаименованиеПолное КАК Характеристика,
| ВложенныйЗапрос.Серия.Наименование КАК Серия,
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ВложенныйЗапрос.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка) КАК СтавкаНДС,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.Сумма КАК Сумма,
| 0 КАК СуммаНДС,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки
|ИЗ (
| ВЫБРАТЬ
| ПриемкаТоваровНаХранение.Ссылка КАК Ссылка,
| ПриемкаТоваровНаХранение.Номенклатура КАК Номенклатура,
|
| ВЫБОР КОГДА ПриемкаТоваровНаХранение.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| 1
| ИНАЧЕ
| &ТекстЗапросаКоэффициентУпаковки2
| КОНЕЦ КАК Коэффициент,
|
| ВЫБОР КОГДА ПриемкаТоваровНаХранение.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПриемкаТоваровНаХранение.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ПриемкаТоваровНаХранение.Упаковка
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| ПриемкаТоваровНаХранение.Характеристика КАК Характеристика,
| ПриемкаТоваровНаХранение.Серия КАК Серия,
| ПриемкаТоваровНаХранение.Упаковка КАК Упаковка,
| ПриемкаТоваровНаХранение.Цена КАК Цена,
| ПриемкаТоваровНаХранение.КоличествоУпаковок КАК Количество,
| ПриемкаТоваровНаХранение.Сумма КАК Сумма,
| ПриемкаТоваровНаХранение.НомерСтроки КАК НомерСтроки
| ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ПриемкаТоваровНаХранение
| ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В(&МассивДокументов)
|) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Ссылка,
| НомерСтроки
|
|ИТОГИ
| СУММА(Сумма)
|
|ПО
| Ссылка
|");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВложенныйЗапрос.Упаковка",
"ВложенныйЗапрос.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ПриемкаТоваровНаХранение.Упаковка",
"ПриемкаТоваровНаХранение.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриемкаТоваровНаХранение_Накладная";
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатДанныеПечати = МассивРезультатов[0];
РезультатВыборкаПоДокументам = МассивРезультатов[1];
ДанныеПечати = РезультатДанныеПечати.Выбрать();
ВыборкаПоДокументам = РезультатВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать();
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПриемкаТоваровНаХранение.ПФ_MXL_ПриемкаТоваровНаХранение");
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
ТекстЗаголовка = НСтр("ru = 'Приемка товаров на хранение'");
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати,
ТекстЗаголовка));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
СтруктураДанныхПоставщик = Новый Структура;
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Поставщик, ДанныеПечати.Дата), "ПолноеНаименование");
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
СтруктураДанныхПоставщик.Вставить("Поставщик", ДанныеПечати.Поставщик);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
СтруктураДанныхПокупатель = Новый Структура;
ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата), "ПолноеНаименование");
СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
СтруктураДанныхПокупатель.Вставить("Получатель", ДанныеПечати.Организация);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 1.2;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомера = Макет.ПолучитьОбласть("СтрокаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("СтрокаТаблицы|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные");
Сумма = 0;
НомерСтроки = 0;
Пока ВыборкаПоТоварам.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", НомерСтроки);
ОбластьНомера.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[ИмяКолонкиКодов]);
ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ВыборкаПоТоварам);
ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.ТоварНаименованиеПолное,
ВыборкаПоТоварам.Характеристика,
,
ВыборкаПоТоварам.Серия,
ДополнительныеПараметрыПолученияНаименованияДляПечати);
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТовар.Параметры.Заполнить(СтруктураДанныхТовар);
ТабличныйДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьДанных);
Сумма = Сумма + ВыборкаПоТоварам.Сумма;
КонецЦикла;
ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицы|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицы|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанных);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьНомера = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Товар");
ОбластьДанных = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|Данные");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма;
ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Всего наименований %1, на сумму %2'", ОбщегоНазначения.КодОсновногоЯзыка()),
ВыборкаПоТоварам.Количество(),
ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
СтруктураДанныхИтоговаяСтрока = Новый Структура;
СтруктураДанныхИтоговаяСтрока.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
СтруктураДанныхИтоговаяСтрока.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхИтоговаяСтрока);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
СтруктураДанныхПринял = Новый Структура;
СтруктураДанныхПринял.Вставить("Принял", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Принял, ДанныеПечати.Дата));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПринял);
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция ДанныеДляПечатиЭтикеток(МассивДокументов) Экспорт
ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);
Запрос = Новый Запрос;
Если ИспользуетсяЦенообразование25 Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ПриемкаТоваровНаХранениеТовары.Номенклатура КАК Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика КАК Характеристика,
| ПриемкаТоваровНаХранениеТовары.Серия КАК Серия,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ КАК Упаковка,
|
| МИНИМУМ(ПриемкаТоваровНаХранениеТовары.НомерСтроки) КАК Порядок,
| СУММА(
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок * (ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1))
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ПриемкаТоваровНаХранениеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних КАК ЦеныНоменклатуры
| ПО ЦеныНоменклатуры.Номенклатура = ПриемкаТоваровНаХранениеТовары.Номенклатура
| И ЦеныНоменклатуры.ХарактеристикаЦО = ПриемкаТоваровНаХранениеТовары.Характеристика.ХарактеристикаНоменклатурыДляЦенообразования
| И ЦеныНоменклатуры.СерияЦО = ПриемкаТоваровНаХранениеТовары.Серия.СерияНоменклатурыДляЦенообразования
| И ЦеныНоменклатуры.ВидЦены = ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.РозничныйВидЦены
|
|ГДЕ
| ПриемкаТоваровНаХранениеТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПриемкаТоваровНаХранениеТовары.Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика,
| ПриемкаТоваровНаХранениеТовары.Серия,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемкаТоваровНаХранение.Организация КАК Организация,
| ПриемкаТоваровНаХранение.Склад КАК Склад,
| ПриемкаТоваровНаХранение.Склад.РозничныйВидЦены КАК ВидЦены
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваровНаХранение
|ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В(&МассивДокументов)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ПриемкаТоваровНаХранениеТовары.Номенклатура КАК Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ КАК Упаковка,
|
| МИНИМУМ(ПриемкаТоваровНаХранениеТовары.НомерСтроки) КАК Порядок,
| СУММА(
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок * (ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1))
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ПриемкаТоваровНаХранениеТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры
| ПО ЦеныНоменклатуры.Номенклатура = ПриемкаТоваровНаХранениеТовары.Номенклатура
| И ЦеныНоменклатуры.Характеристика = ПриемкаТоваровНаХранениеТовары.Характеристика
| И ЦеныНоменклатуры.ВидЦены = ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.РозничныйВидЦены
|
|ГДЕ
| ПриемкаТоваровНаХранениеТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПриемкаТоваровНаХранениеТовары.Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемкаТоваровНаХранение.Организация КАК Организация,
| ПриемкаТоваровНаХранение.Склад КАК Склад,
| ПриемкаТоваровНаХранение.Склад.РозничныйВидЦены КАК ВидЦены
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваровНаХранение
|ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В(&МассивДокументов)";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ПриемкаТоваровНаХранениеТовары.Упаковка",
"ПриемкаТоваровНаХранениеТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЦеныНоменклатуры.Упаковка",
"ЦеныНоменклатуры.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаРеквизитыДокументов = МассивРезультатов[1].Выгрузить();
МассивОрганизаций = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Организация");
МассивСкладов = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Склад");
МассивВидовЦен = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьОрганизацию", ?(МассивОрганизаций.Количество() = 1, МассивОрганизаций[0], Неопределено));
СтруктураДействий.Вставить("ЗаполнитьСклад", ?(МассивСкладов.Количество() = 1, МассивСкладов[0], МассивСкладов));
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ?(МассивВидовЦен.Количество() = 1, МассивВидовЦен[0], Неопределено));
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЭтикеток");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЭтикетокПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", МассивРезультатов[0].Выгрузить());
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
СтруктураРезультат.Вставить("Дата", ДатаЦенообразования);
Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
КонецФункции
Функция ДанныеДляПечатиЦенников(МассивДокументов) Экспорт
ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);
Запрос = Новый Запрос;
Если ИспользуетсяЦенообразование25 Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ПриемкаТоваровНаХранениеТовары.Номенклатура КАК Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика КАК Характеристика,
| ПриемкаТоваровНаХранениеТовары.Серия КАК Серия,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ КАК Упаковка,
|
| МИНИМУМ(ПриемкаТоваровНаХранениеТовары.НомерСтроки) КАК Порядок,
| СУММА(
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок * (ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1))
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ПриемкаТоваровНаХранениеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних КАК ЦеныНоменклатуры
| ПО ЦеныНоменклатуры.Номенклатура = ПриемкаТоваровНаХранениеТовары.Номенклатура
| И ЦеныНоменклатуры.ХарактеристикаЦО = ПриемкаТоваровНаХранениеТовары.Характеристика.ХарактеристикаНоменклатурыДляЦенообразования
| И ЦеныНоменклатуры.СерияЦО = ПриемкаТоваровНаХранениеТовары.Серия.СерияНоменклатурыДляЦенообразования
| И ЦеныНоменклатуры.ВидЦены = ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.РозничныйВидЦены
|
|ГДЕ
| ПриемкаТоваровНаХранениеТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПриемкаТоваровНаХранениеТовары.Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика,
| ПриемкаТоваровНаХранениеТовары.Серия,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемкаТоваровНаХранение.Организация КАК Организация,
| ПриемкаТоваровНаХранение.Склад КАК Склад,
| ПриемкаТоваровНаХранение.Склад.РозничныйВидЦены КАК ВидЦены
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваровНаХранение
|ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В(&МассивДокументов)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ПриемкаТоваровНаХранениеТовары.Номенклатура КАК Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ КАК Упаковка,
|
| МИНИМУМ(ПриемкаТоваровНаХранениеТовары.НомерСтроки) КАК Порядок,
| СУММА(
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок * (ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1))
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.КоличествоУпаковок
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК ПриемкаТоваровНаХранениеТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры
| ПО ЦеныНоменклатуры.Номенклатура = ПриемкаТоваровНаХранениеТовары.Номенклатура
| И ЦеныНоменклатуры.Характеристика = ПриемкаТоваровНаХранениеТовары.Характеристика
| И ЦеныНоменклатуры.ВидЦены = ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.РозничныйВидЦены
|
|ГДЕ
| ПриемкаТоваровНаХранениеТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПриемкаТоваровНаХранениеТовары.Номенклатура,
| ПриемкаТоваровНаХранениеТовары.Характеристика,
| ВЫБОР КОГДА ПриемкаТоваровНаХранениеТовары.Ссылка.Склад.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.РозничныйМагазин) ТОГДА
| ЦеныНоменклатуры.Упаковка
| ИНАЧЕ
| ПриемкаТоваровНаХранениеТовары.Упаковка
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемкаТоваровНаХранение.Организация КАК Организация,
| ПриемкаТоваровНаХранение.Склад КАК Склад,
| ПриемкаТоваровНаХранение.Склад.РозничныйВидЦены КАК ВидЦены
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваровНаХранение
|ГДЕ
| ПриемкаТоваровНаХранение.Ссылка В(&МассивДокументов)";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ПриемкаТоваровНаХранениеТовары.Упаковка",
"ПриемкаТоваровНаХранениеТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЦеныНоменклатуры.Упаковка",
"ЦеныНоменклатуры.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаРеквизитыДокументов = МассивРезультатов[1].Выгрузить();
МассивОрганизаций = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Организация");
МассивСкладов = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Склад");
МассивВидовЦен = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьОрганизацию", ?(МассивОрганизаций.Количество() = 1, МассивОрганизаций[0], Неопределено));
СтруктураДействий.Вставить("ЗаполнитьСклад", ?(МассивСкладов.Количество() = 1, МассивСкладов[0], МассивСкладов));
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ?(МассивВидовЦен.Количество() = 1, МассивВидовЦен[0], Неопределено));
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЦенников");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЦенниковПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", МассивРезультатов[0].Выгрузить());
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
СтруктураРезультат.Вставить("Дата", ДатаЦенообразования);
Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
КонецФункции
Функция СформироватьПечатнуюФормуПриходнаяНакладная(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриемкаТоваровНаХранение_ПриходнаяНакладная";
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов().ИмяКолонки;
ИспользованиеУпаковок = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемкаТоваров.Ссылка КАК Ссылка,
| ПриемкаТоваров.Организация КАК Организация,
| ПриемкаТоваров.Контрагент КАК Контрагент,
| ПриемкаТоваров.Номер КАК Номер,
| ПриемкаТоваров.Дата КАК Дата,
| ПриемкаТоваров.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ПриемкаТоваров.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПриемкаТоваров.Исправление КАК Исправление,
| ПриемкаТоваров.Организация.Префикс КАК Префикс,
| ПриемкаТоваров.Принял,
| ПриемкаТоваров.ПринялДолжность,
| ПриемкаТоваров.Сдал,
| ПриемкаТоваров.СдалДолжность
|ИЗ
| Документ.ПриемкаТоваровНаХранение КАК ПриемкаТоваров
|ГДЕ
| ПриемкаТоваров.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Склад КАК Склад,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| Товары.КоличествоУпаковок КАК КоличествоУпаковок,
| Товары.Количество КАК Количество,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| Товары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| Товары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| Товары.НомерСтроки
|ИТОГИ ПО
| Ссылка,
| Склад");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПриемкаТоваровНаХранение.ПФ_MXL_ПриходнаяНакладная");
Смещать = ТипСмещенияТабличногоДокумента.ПоВертикали;
ШиринаУдаленныхКолонок = 0;
Если КолонкаКодов <> "Артикул" Тогда
ШиринаУдаленныхКолонок = ШиринаУдаленныхКолонок + Макет.Область("Артикул").ШиринаКолонки;
Макет.УдалитьОбласть(Макет.Область("Артикул"), Смещать);
КонецЕсли;
Если КолонкаКодов<>"Код" Тогда
ШиринаУдаленныхКолонок = ШиринаУдаленныхКолонок + Макет.Область("Код").ШиринаКолонки;
Макет.УдалитьОбласть(Макет.Область("Код"), Смещать);
КонецЕсли;
Если Не ИспользованиеУпаковок Тогда
ШиринаУдаленныхКолонок = ШиринаУдаленныхКолонок + Макет.Область("УпаковкаКоличество").ШиринаКолонки;
Макет.УдалитьОбласть(Макет.Область("УпаковкаКоличество"), Смещать);
ШиринаУдаленныхКолонок = ШиринаУдаленныхКолонок + Макет.Область("УпаковкаПредставление").ШиринаКолонки;
Макет.УдалитьОбласть(Макет.Область("УпаковкаПредставление"), Смещать);
КонецЕсли;
ОбластьПервойКолонкиТоваров = Макет.Область("ПерваяКолонкаТовара");
ОбластьПервойКолонкиТоваров.ШиринаКолонки = ОбластьПервойКолонкиТоваров.ШиринаКолонки + ШиринаУдаленныхКолонок;
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатДанныеПечати = МассивРезультатов[0];
РезультатВыборкаПоДокументам = МассивРезультатов[1];
ДанныеПечати = РезультатДанныеПечати.Выбрать();
ВыборкаПоДокументам = РезультатВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
МассивПроверки = Новый Массив;
Для Каждого Ссылка Из МассивОбъектов Цикл
МассивПроверки.Добавить(Ссылка);
КонецЦикла;
РеквизитыДокумента = Новый Структура("Номер, Дата, НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента,
|Префикс, Представление, ПредставлениеРаспоряжения, ПредставлениеОрганизации,
|ПредставлениеПартнера, Сдал, СдалДолжность, Принял, ПринялДолжность");
РеквизитыДокумента.Вставить("ТекстЗаголовка", НСтр("ru='Приходная накладная'", ОбщегоНазначения.КодОсновногоЯзыка()));
ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл
Если НЕ ВыборкаПоДокументам.НайтиСледующий(Новый Структура("Ссылка", ДанныеПечати.Ссылка)) Тогда
Продолжить;
КонецЕсли;
МассивПроверки.Удалить(МассивПроверки.Найти(ДанныеПечати.Ссылка));
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
РеквизитыДокумента.ПредставлениеРаспоряжения = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
РеквизитыДокумента,
НСтр("ru='Поступление товаров'", ОбщегоНазначения.КодОсновногоЯзыка()));
РеквизитыДокумента.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Организация,
ДанныеПечати.Дата
),
"ПолноеНаименование");
РеквизитыДокумента.ПредставлениеПартнера = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Контрагент,
ДанныеПечати.Дата
),
"ПолноеНаименование");
ВыборкаПоСкладам = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСкладам.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
Область = Макет.ПолучитьОбласть("Заголовок");
Область.Параметры.Заполнить(РеквизитыДокумента);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, Область, ДанныеПечати.Ссылка);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.Заполнить(РеквизитыДокумента);
СтруктураДанныхШапка = Новый Структура;
СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ВыборкаПоСкладам.Склад);
Область.Параметры.Заполнить(СтруктураДанныхШапка);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Поставщик");
Область.Параметры.Заполнить(РеквизитыДокумента);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Покупатель");
Область.Параметры.Заполнить(РеквизитыДокумента);
ТабличныйДокумент.Вывести(Область);
ТабличныйДокумент.Вывести(Макет.ПолучитьОбласть("ШапкаТаблицы"));
СчетСтрок = 1;
ВыборкаПоТоварам = ВыборкаПоСкладам.Выбрать();
Пока ВыборкаПоТоварам.Следующий() Цикл
Область = Макет.ПолучитьОбласть("СтрокаТаблицы");
СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
Область.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
СчетСтрок = СчетСтрок + 1;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.Номенклатура,
ВыборкаПоТоварам.Характеристика,
,
,
ДопПараметрыПредставлениеНоменклатуры);
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
Область.Параметры.Заполнить(СтруктураДанныхТовар);
Область.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
Область = Макет.ПолучитьОбласть("ПодвалТаблицы");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Подписи");
ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", СчетСтрок-1);
РеквизитыДокумента.Вставить("ИтоговаяСтрока", ТекстИтоговойСтроки);
Область.Параметры.Заполнить(РеквизитыДокумента);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
Для Каждого Ссылка Из МассивПроверки Цикл
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
СтрЗаменить(
НСтр("ru = 'В документе %Ссылка% отсутствуют товары. Печать приходной накладной не требуется.'"),
"%Ссылка%",
Ссылка
),
Ссылка);
КонецЦикла;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ПолноеИмяОбъекта()
Возврат "Документ.ПриемкаТоваровНаХранение";
КонецФункции
Функция ПолучитьРезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, СкладПоступления = Неопределено,
МассивЗаказов = Неопределено)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Регистратор", ДанныеОтбора.Ссылка);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Партнер", ДанныеОтбора.Партнер);
Запрос.УстановитьПараметр("Контрагент", ДанныеОтбора.Контрагент);
Запрос.УстановитьПараметр("Соглашение", ДанныеОтбора.Соглашение);
Запрос.УстановитьПараметр("Организация", ДанныеОтбора.Организация);
Запрос.УстановитьПараметр("СкладПоступления", СкладПоступления);
Запрос.УстановитьПараметр("Договор", ДанныеОтбора.Договор);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ДанныеОтбора.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("НаправлениеДеятельности", ДанныеОтбора.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ВариантПриемкиТоваров", ДанныеОтбора.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", МассивЗаказов <> Неопределено);
Если ТипЗнч(ДанныеОтбора) = Тип("Структура")
И ДанныеОтбора.Свойство("ТоварыНакладной") Тогда
Запрос.УстановитьПараметр("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
Иначе
ТипыЗаказов = Новый Массив;
ТипыЗаказов.Добавить(Тип("ДокументСсылка.ЗаказПоставщику"));
ТоварыНакладной = Новый ТаблицаЗначений;
ТоварыНакладной.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
ТоварыНакладной.Колонки.Добавить("КодСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
ТоварыНакладной.Колонки.Добавить("НоменклатураПартнера", Новый ОписаниеТипов("СправочникСсылка.НоменклатураКонтрагентов"));
ТоварыНакладной.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТоварыНакладной.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТоварыНакладной.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТоварыНакладной.Колонки.Добавить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ТоварыНакладной.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТоварыНакладной.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
ТоварыНакладной.Колонки.Добавить("Цена", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТоварыНакладной.Колонки.Добавить("Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТоварыНакладной.Колонки.Добавить("СуммаВзаиморасчетов", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТоварыНакладной.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТоварыНакладной.Колонки.Добавить("ЗаказПоставщику", Новый ОписаниеТипов(ТипыЗаказов));
ТоварыНакладной.Колонки.Добавить("КоличествоВЗаказе", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
ТоварыНакладной.Колонки.Добавить("Сделка", Новый ОписаниеТипов("СправочникСсылка.СделкиСКлиентами"));
Запрос.УстановитьПараметр("ТоварыНакладной", ТоварыНакладной);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаЗаказы.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Склад КАК Склад,
| СУММА(ТаблицаЗаказы.КОформлению) КАК Количество
|ПОМЕСТИТЬ ТаблицаОстатки
|ИЗ
| (ВЫБРАТЬ
| ЗаказыОстатки.ЗаказПоставщику КАК ЗаказПоставщику,
| ЗаказыОстатки.Номенклатура КАК Номенклатура,
| ЗаказыОстатки.Характеристика КАК Характеристика,
| ЗаказыОстатки.КодСтроки КАК КодСтроки,
| ЗаказыОстатки.Склад КАК Склад,
| ЗаказыОстатки.КОформлениюОстаток КАК КОформлению
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Остатки(,
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказПоставщику В (&МассивЗаказов)
| ИНАЧЕ ЗаказПоставщику.Партнер = &Партнер
| И ЗаказПоставщику.Контрагент = &Контрагент
| И ЗаказПоставщику.Договор = &Договор
| И ЗаказПоставщику.Организация = &Организация
| И ЗаказПоставщику.ВариантПриемкиТоваров = &ВариантПриемкиТоваров
| И
| ЗаказПоставщику.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказПоставщику.Соглашение = &Соглашение
| КОНЕЦ
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ЭтоГруппа
| ТОГДА Склад В ИЕРАРХИИ (&СкладПоступления)
| ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &СкладПоступления)
| КОНЕЦ) КАК ЗаказыОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказыДвижения.ЗаказПоставщику,
| ЗаказыДвижения.Номенклатура,
| ЗаказыДвижения.Характеристика,
| ЗаказыДвижения.КодСтроки,
| ЗаказыДвижения.Склад,
| ВЫБОР
| КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТОГДА -ЗаказыДвижения.КОформлению
| ИНАЧЕ ЗаказыДвижения.КОформлению
| КОНЕЦ
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыДвижения
| ГДЕ
| ЗаказыДвижения.Регистратор = &Регистратор
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказыДвижения.ЗаказПоставщику В (&МассивЗаказов)
| ИНАЧЕ ЗаказыДвижения.ЗаказПоставщику.Партнер = &Партнер
| И ЗаказыДвижения.ЗаказПоставщику.Контрагент = &Контрагент
| И ЗаказыДвижения.ЗаказПоставщику.Договор = &Договор
| И ЗаказыДвижения.ЗаказПоставщику.Организация = &Организация
| И ЗаказыДвижения.ЗаказПоставщику.ВариантПриемкиТоваров = &ВариантПриемкиТоваров
| И
| ЗаказыДвижения.ЗаказПоставщику.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказыДвижения.ЗаказПоставщику.Соглашение = &Соглашение
| КОНЕЦ
| И ЗаказыДвижения.Активность
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ЭтоГруппа
| ТОГДА ЗаказыДвижения.Склад В ИЕРАРХИИ (&СкладПоступления)
| ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ЗаказыДвижения.Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &СкладПоступления)
| КОНЕЦ) КАК ТаблицаЗаказы
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказПоставщику,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Склад
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|;
|
|
|ВЫБРАТЬ
| &Регистратор КАК ЗаказПоставщику,
| ТоварыНакладной.НомерСтроки КАК НомерСтроки,
| ТоварыНакладной.КодСтроки КАК КодСтроки,
| ТоварыНакладной.НоменклатураПартнера КАК НоменклатураПартнера,
| ВЫРАЗИТЬ(ТоварыНакладной.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ТоварыНакладной.Характеристика КАК Характеристика,
| ТоварыНакладной.Назначение КАК Назначение,
| ВЫРАЗИТЬ(ТоварыНакладной.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ТоварыНакладной.Серия КАК Серия,
| ТоварыНакладной.Количество КАК Количество,
| ТоварыНакладной.Цена КАК Цена,
| ТоварыНакладной.Сумма КАК Сумма,
| ТоварыНакладной.Сумма КАК СуммаВзаиморасчетов,
| ВЫРАЗИТЬ(ТоварыНакладной.Склад КАК Справочник.Склады) КАК Склад,
| ТоварыНакладной.Количество КАК КоличествоВЗаказе,
| ТоварыНакладной.Сделка КАК Сделка
|ПОМЕСТИТЬ
| ВтТоварыНакладной
|ИЗ
| &ТоварыНакладной КАК ТоварыНакладной
|;
|
|
|ВЫБРАТЬ
| ТаблицаОстатки.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
| ТаблицаОстатки.Количество КАК Количество,
| ТаблицаОстатки.Склад КАК Склад,
| ЕСТЬNULL(НакладнаяТовары.Количество,0) КАК КоличествоВНакладной,
| ЗаказТовары.Количество КАК КоличествоВЗаказе,
| ЗаказТовары.НомерСтроки КАК НомерСтроки,
| ЗаказТовары.Ссылка.Сделка КАК Сделка,
| ЗаказТовары.ДатаПоступления КАК ДатаПоступления,
| ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) КАК Упаковка,
| ЗаказТовары.Количество КАК КоличествоПоЗаказу,
| ЗаказТовары.Цена КАК Цена,
| ЗаказТовары.Сумма КАК Сумма,
| ЗаказТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ЗаказТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ЗаказТовары.Назначение КАК Назначение,
| ВЫБОР
| КОГДА ТаблицаОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
| ТОГДА ВЫРАЗИТЬ(ТаблицаОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику).НалогообложениеНДС
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| КОНЕЦ КАК НалогообложениеНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2)
| КОНЕЦ КАК Коэффициент,
| ТаблицаОстатки.Количество / ЕСТЬNULL(ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2), 1) КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА ТаблицаОстатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении = ИСТИНА
| И ТаблицаОстатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
|ИЗ
| ТаблицаОстатки КАК ТаблицаОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказТовары
| ПО ТаблицаОстатки.Номенклатура = ЗаказТовары.Номенклатура
| И ТаблицаОстатки.Характеристика = ЗаказТовары.Характеристика
| И ТаблицаОстатки.КодСтроки = ЗаказТовары.КодСтроки
| И ТаблицаОстатки.ЗаказПоставщику = ЗаказТовары.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТоварыНакладной КАК НакладнаяТовары
| ПО ТаблицаОстатки.Номенклатура = НакладнаяТовары.Номенклатура
| И ТаблицаОстатки.Характеристика = НакладнаяТовары.Характеристика
| И ТаблицаОстатки.КодСтроки = НакладнаяТовары.КодСтроки
| И ТаблицаОстатки.ЗаказПоставщику = НакладнаяТовары.ЗаказПоставщику
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыНакладной.ЗаказПоставщику КАК ЗаказПоставщику,
| ТоварыНакладной.Номенклатура КАК Номенклатура,
| ТоварыНакладной.Характеристика КАК Характеристика,
| ТоварыНакладной.КодСтроки КАК КодСтроки,
| ТоварыНакладной.Количество КАК Количество,
| ТоварыНакладной.Склад КАК Склад,
| ЕСТЬNULL(ТоварыНакладной.Количество,0) КАК КоличествоВНакладной,
| 0 КАК КоличествоВЗаказе,
| ТоварыНакладной.НомерСтроки КАК НомерСтроки,
| ТоварыНакладной.Сделка КАК Сделка,
| НЕОПРЕДЕЛЕНО КАК ДатаПоступления,
| ТоварыНакладной.Упаковка КАК Упаковка,
| 0 КАК КоличествоПоЗаказу,
| ТоварыНакладной.Цена КАК Цена,
| ТоварыНакладной.Сумма КАК Сумма,
| ТоварыНакладной.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыНакладной.НоменклатураПартнера КАК НоменклатураПартнера,
| ТоварыНакладной.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| ВЫБОР
| КОГДА ТоварыНакладной.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ &ТекстЗапросаКоэффициентУпаковки3
| КОНЕЦ КАК Коэффициент,
| ТоварыНакладной.Количество / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1) КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА ТоварыНакладной.Склад.ИспользоватьОрдернуюСхемуПриПоступлении = ИСТИНА
| И ТоварыНакладной.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
|ИЗ
| ВтТоварыНакладной КАК ТоварыНакладной
|ГДЕ
| ТоварыНакладной.КодСтроки = 0
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаОстатки.ЗаказПоставщику,
| ЗаказТовары.НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"НакладнаяТовары.Упаковка",
"НакладнаяТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЗаказТовары.Упаковка",
"ЗаказТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки3",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыНакладной.Упаковка",
"ТоварыНакладной.Номенклатура"));
УстановитьПривилегированныйРежим(Истина);
Возврат Запрос.Выполнить();
КонецФункции
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли