#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Закупки");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
АктОРасхожденияхПослеПриемкиЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.АктОРасхожденияхПослеПриемки") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолучитьДанныеДокумента(Запрос, ДокументСсылка);
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры);
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ОформитьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры);
ЗарегистрироватьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыАктаОРасхождениях.НеСогласовано);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыАктаОРасхождениях.Согласовано);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыАктаОРасхождениях.КВыполнению);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыАктаОРасхождениях.Отработано);
Возврат Таблица;
КонецФункции
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "ТипОснованияАктаОРасхождении,Дата,ХозяйственнаяОперация";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.АктОРасхожденияхПослеПриемки";
ПараметрыСерийСклада = Новый Структура;
ПараметрыСерийСклада.Вставить("ИспользоватьСерииНоменклатуры", ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры"));
ПараметрыСерийСклада.Вставить("УчитыватьСебестоимостьПоСериям",ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад"));
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента
Или Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера
Или РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента);
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг
Или Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаОтПоставщика);
Иначе
ТекстИслючения = НСтр("ru = 'Не поддерживается получение параметров серий для акта с типом основания %ТипАкта%.'");
ТекстИслючения = СтрЗаменить(ТекстИслючения, "%ТипАкта%", Объект.ТипОснованияАктаОРасхождении);
ВызватьИсключение ТекстИслючения;
КонецЕсли;
ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
ПараметрыУказанияСерий.ПоляСвязи.Добавить("ЗаполненоПоОснованию");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("ДокументОснование");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Склад");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Действие");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Ложь;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ОперацииВПути = Новый Массив();
ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути);
ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
ОперацииНеотфактуровки = Новый Массив();
ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ХозОперацияТоварыВПутиИНеотфактуровка = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииНеотфактуровки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
ЭтоТоварыВПути = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ЭтоТоварыВПути", ЭтоТоварыВПути);
ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ИспользуетсяДокументПоступлениеТоваров", ХозОперацияТоварыВПутиИНеотфактуровка);
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПолучатель");
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.ЗаполненоПоОснованию,
| Товары.ДокументОснование,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.СтатусУказанияСерийПолучатель,
| Товары.Действие,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Склад,
| Товары.ЗаполненоПоОснованию,
| Товары.ДокументОснование,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Действие,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Склад,
| Товары.ЗаполненоПоОснованию,
| Товары.ДокументОснование,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Действие,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.ЗаполненоПоОснованию,
| Серии.ДокументОснование,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Действие,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.ЗаполненоПоОснованию,
| Серии.ДокументОснование,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Действие,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Склад,
| Серии.ЗаполненоПоОснованию,
| Серии.ДокументОснование,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Действие
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| Товары.СтатусУказанияСерийПолучатель КАК СтарыйСтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И (ТоварыДляЗапроса.Количество > 0
| ИЛИ ТоварыДляЗапроса.ЗаполненоПоОснованию)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И (ТоварыДляЗапроса.Количество > 0
| ИЛИ ТоварыДляЗапроса.ЗаполненоПоОснованию)
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И (НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении)
| И (ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеПоВозвратуОтКлиента
| И &ПриемкаПоВозвратуОтКлиента
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеОтПоставщика
| И &ПриемкаОтПоставщика)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И (ТоварыДляЗапроса.Количество > 0
| ИЛИ ТоварыДляЗапроса.ЗаполненоПоОснованию)
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И (ТоварыДляЗапроса.Количество > 0
| ИЛИ ТоварыДляЗапроса.ЗаполненоПоОснованию)
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке
| И ТоварыДляЗапроса.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерийОтправитель,
| ВЫБОР КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| И (НЕ Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриОтгрузке)
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| И ТоварыДляЗапроса.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийТоварыПриПриемки,
| ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| И &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА
| ВЫБОР
| КОГДА ((ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВНеотфактурованныхПоставкахТоваров
| И НЕ &ЭтоТоварыВПути)
| ИЛИ (ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетТоваровВПутиОтПоставщикаПоСериям)
| И &ЭтоТоварыВПути)
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 18
| ИНАЧЕ 17
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерийТоварыУПартнеров
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.Склад = СерииДляЗапроса.Склад
| И ТоварыДляЗапроса.ДокументОснование = СерииДляЗапроса.ДокументОснование
| И ТоварыДляЗапроса.ЗаполненоПоОснованию = СерииДляЗапроса.ЗаполненоПоОснованию
| И ТоварыДляЗапроса.Действие = СерииДляЗапроса.Действие
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = ТоварыДляЗапроса.Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.Склад = ТоварыДляЗапроса.Склад
| И Товары.ДокументОснование = ТоварыДляЗапроса.ДокументОснование
| И Товары.ЗаполненоПоОснованию = ТоварыДляЗапроса.ЗаполненоПоОснованию
| И Товары.Действие = ТоварыДляЗапроса.Действие
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА Статусы.СтатусУказанияСерийТоварыУПартнеров
| ИНАЧЕ Статусы.СтатусУказанияСерийПолучатель
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА Статусы.СтатусУказанияСерийТоварыУПартнеров
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (13, 14)
| И Статусы.СтатусУказанияСерийПолучатель = 0
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийТоварыПриПриемки В (3, 4)
| И Статусы.СтатусУказанияСерийПолучатель = 0
| ТОГДА Статусы.СтатусУказанияСерийТоварыПриПриемки
| ИНАЧЕ Статусы.СтатусУказанияСерийПолучатель
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| ВЫБОР
| КОГДА &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА Статусы.СтатусУказанияСерийТоварыУПартнеров
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (13, 14)
| И Статусы.СтатусУказанияСерийПолучатель = 0
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийТоварыПриПриемки В (3, 4)
| И Статусы.СтатусУказанияСерийПолучатель = 0
| ТОГДА Статусы.СтатусУказанияСерийТоварыПриПриемки
| ИНАЧЕ Статусы.СтатусУказанияСерийПолучатель
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерий
| ИЛИ
| ВЫБОР
| КОГДА &ИспользуетсяДокументПоступлениеТоваров
| ТОГДА Статусы.СтатусУказанияСерийТоварыУПартнеров
| ИНАЧЕ Статусы.СтатусУказанияСерийПолучатель
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерийПолучатель
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КомандаСоздатьНаОсновании = Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(
КомандыСозданияНаОсновании);
Если КомандаСоздатьНаОсновании <> Неопределено Тогда
СтатусыАкта = Новый Массив;
СтатусыАкта.Добавить(Перечисления.СтатусыАктаОРасхождениях.КВыполнению);
СтатусыАкта.Добавить(Перечисления.СтатусыАктаОРасхождениях.Отработано);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздатьНаОсновании,
"Статус",
СтатусыАкта,
ВидСравнения.ВСписке);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздатьНаОсновании,
"СпособОтраженияРасхождений",
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления,
ВидСравнения.Равно);
КонецЕсли;
АктОРасхожденияхПослеПриемкиЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.АктОРасхожденияхПослеПриемки) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.АктОРасхожденияхПослеПриемки);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции =
"ИспользоватьАктыРасхожденийПослеПриемки,
|ИспользоватьАктыРасхожденийПослеПриемкиПоПоступлениямОтПереработчика2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
АктОРасхожденияхПослеПриемкиЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Товары.Склад";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовРаботами", Истина, "Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.Товары.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Подразделение = "Объект.Товары.Подразделение";
Возврат МакетФормы;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.Подразделение = Объект.Подразделение;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента Или
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ПараметрыЗаполнения.ВозвратТоваровОтКлиента = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ПараметрыЗаполнения.ВозвратТоваровОтКомиссионера = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСЗакупки();
ПараметрыЗаполнения.Контрагент = Объект.Контрагент;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.Период = Объект.Дата;
ХозОперацииЗакупкаУПоставщика = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ХозОперацииЗакупкаВСтранахЕАЭС = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ХозОперацииЗакупкаПоИмпорту = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
Если ХозОперацииЗакупкаУПоставщика.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ИначеЕсли ХозОперацииЗакупкаВСтранахЕАЭС.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ПараметрыЗаполнения.ВвозТоваровИзТаможенногоСоюза = Истина;
ИначеЕсли ХозОперацииЗакупкаПоИмпорту.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ПараметрыЗаполнения.ИмпортТоваров = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
ПараметрыЗаполнения.ПриемНаКомиссию = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
ПараметрыЗаполнения.ЗакупкаЧерезПодотчетноеЛицо = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация) Экспорт
МассивПараметровВыбора = Новый Массив;
#Область ПрочиеРасходыСтатьяРасходов
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.Товары";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ДоступностьПоОперации = (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ЭлементыФормы.Статья.Добавить("ТоварыСтатьяРасходов");
ПараметрыВыбора.ЭлементыФормы.АналитикаРасходов.Добавить("ТоварыАналитикаРасходов");
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("СписатьНаРасходы", Истина);
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("ЗаполненоПоОснованию", Ложь);
МассивПараметровВыбора.Добавить(ПараметрыВыбора);
#КонецОбласти
Возврат МассивПараметровВыбора;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(ТипОснованияАктаОРасхождении)";
КонецПроцедуры
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечати = Новый Массив;
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.СкладыВТЧ = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.ОтражениеИзлишков = Истина;
ПравилаПечатиЗадания.СкладыВТЧ = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
Возврат ПравилаПечати;
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("ТипОснованияАктаОРасхождении");
Поля.Добавить("Дата");
Поля.Добавить("Номер");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после возврата от клиента %1 от %2'");
ИначеЕсли Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после приемки товаров на хранение %1 от %2'");
ИначеЕсли Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтХранителя Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после поступления товаров от хранителя %1 от %2'");
ИначеЕсли Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПоступлениеТоваровОтПереработчика Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после поступления от переработчика %1 от %2'");
ИначеЕсли Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтПереработчика Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после возврата сырья от переработчика %1 от %2'");
ИначеЕсли Данные.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера Тогда
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после поступления товаров от комиссионера %1 от %2'");
Иначе
ШаблонПредставления = НСтр("ru = 'Акт о расхождениях после поступления %1 от %2'");
КонецЕсли;
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления,
Данные.Номер,
Данные.Дата);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)
СписокЗапросов = Новый Массив;
ТекстЗапросаДанныеДокумента(СписокЗапросов);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Выполнить();
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокумента(СписокЗапросов) Экспорт
ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
ТекстЗапросаДанныеДокументаДанныеДокументаТаблицаТоварыДляСоединенияССериями(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаШапка(СписокЗапросов)
ТекстЗапросаШапка =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.ВерсияДанных КАК ВерсияДанных,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.Дата КАК Дата,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Валюта КАК Валюта,
| ДанныеШапки.Партнер КАК Партнер,
| ДанныеШапки.Контрагент КАК Контрагент,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.КонтактноеЛицо КАК КонтактноеЛицо,
| ДанныеШапки.Соглашение КАК Соглашение,
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.Менеджер КАК Менеджер,
| ДанныеШапки.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеШапки.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.Договор КАК Договор,
| ДанныеШапки.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ДанныеШапки.СпособОтраженияРасхождений КАК СпособОтраженияРасхождений,
| ДанныеШапки.ТипОснованияАктаОРасхождении КАК ТипОснованияАктаОРасхождении,
| ДанныеШапки.Подразделение КАК Подразделение,
| ДанныеШапки.ОснованиеДляСоставленияАкта КАК ОснованиеДляСоставленияАкта,
| ДанныеШапки.МестоПриемкиТовара КАК МестоПриемкиТовара,
| ДанныеШапки.ДатаДоставкиТоваров КАК ДатаДоставкиТоваров,
| ДанныеШапки.ПереченьСопроводительныхДокументов КАК ПереченьСопроводительныхДокументов,
| ДанныеШапки.ВызываемыйПредставительПартнера КАК ВызываемыйПредставительПартнера,
| ДанныеШапки.ВидДокументаВызоваПредставителяПартнера КАК ВидДокументаВызоваПредставителяПартнера,
| ДанныеШапки.НомерДокументаОВызовеПредставителяПартнера КАК НомерДокументаОВызовеПредставителяПартнера,
| ДанныеШапки.Грузоотправитель КАК Грузоотправитель,
| ДанныеШапки.Производитель КАК Производитель,
| ДанныеШапки.СтраховаяКомпания КАК СтраховаяКомпания,
| ДанныеШапки.КонтрагентСтраховойКомпании КАК КонтрагентСтраховойКомпании,
| ДанныеШапки.НомерДоговораПоставки КАК НомерДоговораПоставки,
| ДанныеШапки.ДатаДоговораПоставки КАК ДатаДоговораПоставки,
| ДанныеШапки.НомерКоммерческогоАкта КАК НомерКоммерческогоАкта,
| ДанныеШапки.ДатаКоммерческогоАкта КАК ДатаКоммерческогоАкта,
| ДанныеШапки.НомерУдостоверенияОКачестве КАК НомерУдостоверенияОКачестве,
| ДанныеШапки.ДатаУдостоверенияОКачестве КАК ДатаУдостоверенияОКачестве,
| ДанныеШапки.НомерВетеринарногоСвидетельства КАК НомерВетеринарногоСвидетельства,
| ДанныеШапки.ДатаВетеринарногоСвидетельства КАК ДатаВетеринарногоСвидетельства,
| ДанныеШапки.НомерЖелезнодорожнойНакладной КАК НомерЖелезнодорожнойНакладной,
| ДанныеШапки.ДатаЖелезнодорожнойНакладной КАК ДатаЖелезнодорожнойНакладной,
| ДанныеШапки.НомерКоносамента КАК НомерКоносамента,
| ДанныеШапки.ДатаКоносамента КАК ДатаКоносамента,
| ДанныеШапки.СпособДоставки КАК СпособДоставки,
| ДанныеШапки.НомерТранспортногоСредства КАК НомерТранспортногоСредства,
| ДанныеШапки.СкладОтправителяТовара КАК СкладОтправителяТовара,
| ДанныеШапки.СведенияОСостоянииТранспортаПоСопроводительнымДокументам КАК СведенияОСостоянииТранспортаПоСопроводительнымДокументам,
| ДанныеШапки.СведенияОСостоянииТранспортаПоФакту КАК СведенияОСостоянииТранспортаПоФакту,
| ДанныеШапки.УсловияХраненияТовараДоВскрытияНаСкладеПолучателя КАК УсловияХраненияТовараДоВскрытияНаСкладеПолучателя,
| ДанныеШапки.СведенияОТемпературеПриРазгрузке КАК СведенияОТемпературеПриРазгрузке,
| ДанныеШапки.СостояниеТарыИУпаковки КАК СостояниеТарыИУпаковки,
| ДанныеШапки.СодержаниеНаружнойМаркировки КАК СодержаниеНаружнойМаркировки,
| ДанныеШапки.ДатаВскрытияТары КАК ДатаВскрытияТары,
| ДанныеШапки.ОрганизацияВзвесившаяИОпломбировавшаяТовар КАК ОрганизацияВзвесившаяИОпломбировавшаяТовар,
| ДанныеШапки.ПорядокОтбораТовараДляВыборочнойПроверки КАК ПорядокОтбораТовараДляВыборочнойПроверки,
| ДанныеШапки.СпособОпределенияКоличества КАК СпособОпределенияКоличества,
| ДанныеШапки.МестоОпределенияКоличества КАК МестоОпределенияКоличества,
| ДанныеШапки.СведенияОбИсправностиВесоизмерительныхПриборов КАК СведенияОбИсправностиВесоизмерительныхПриборов,
| ДанныеШапки.ПрочиеДанные КАК ПрочиеДанные,
| ДанныеШапки.ПодробноеОписаниеДефектов КАК ПодробноеОписаниеДефектов,
| ДанныеШапки.ЗаключениеКомиссии КАК ЗаключениеКомиссии,
| ДанныеШапки.Приложение КАК Приложение,
| ДанныеШапки.ДокументУдостоверяющийПолномочияПредставителяПартнера КАК ДокументУдостоверяющийПолномочияПредставителяПартнера,
| ДанныеШапки.НомерДокументаУдостоверяющегоПолномочияПредставителяПартнера КАК НомерДокументаУдостоверяющегоПолномочияПредставителяПартнера,
| ДанныеШапки.ДатаВыдачиДокументаУдостоверяющегоПолномочияПредставителяПартнера КАК ДатаВыдачиДокументаУдостоверяющегоПолномочияПредставителяПартнера,
| ДанныеШапки.КоличествоЛистовПриложения КАК КоличествоЛистовПриложения,
| ДанныеШапки.РешениеРуководителя КАК РешениеРуководителя,
| ДанныеШапки.КладовщикПринявшийТовар КАК КладовщикПринявшийТовар,
| ДанныеШапки.МассаБруттоПоДаннымПроизводителя КАК МассаБруттоПоДаннымПроизводителя,
| ДанныеШапки.ДатаОтправленияТоваров КАК ДатаОтправленияТоваров,
| ДанныеШапки.МассаБруттоВПунктеОтправления КАК МассаБруттоВПунктеОтправления,
| ДанныеШапки.МассаБруттоВПунктеНазначения КАК МассаБруттоВПунктеНазначения,
| ДанныеШапки.КоличествоМестПоДокументамГрузоотправителя КАК КоличествоМестПоДокументамГрузоотправителя,
| ДанныеШапки.КоличествоМестПоФакту КАК КоличествоМестПоФакту,
| ДанныеШапки.МассаБруттоПоДокументамГрузоотправителя КАК МассаБруттоПоДокументамГрузоотправителя,
| ДанныеШапки.МассаБруттоПоФакту КАК МассаБруттоПоФакту,
| ДанныеШапки.МассаНеттоПоДокументамГрузоотправителя КАК МассаНеттоПоДокументамГрузоотправителя,
| ДанныеШапки.МассаНеттоПоФакту КАК МассаНеттоПоФакту,
| ДанныеШапки.МассаТарыПоДокументамГрузоотправителя КАК МассаТарыПоДокументамГрузоотправителя,
| ДанныеШапки.МассаТарыПоФакту КАК МассаТарыПоФакту,
| ДанныеШапки.СтепеньЗаполненияПоДокументамГрузоотправителя КАК СтепеньЗаполненияПоДокументамГрузоотправителя,
| ДанныеШапки.СтепеньЗаполненияПоФакту КАК СтепеньЗаполненияПоФакту,
| ДанныеШапки.ПредседательКомиссии КАК ПредседательКомиссии,
| ДанныеШапки.ДолжностьПредседателяКомиссии КАК ДолжностьПредседателяКомиссии,
| ДанныеШапки.ЧленКомиссии1 КАК ЧленКомиссии1,
| ДанныеШапки.ДолжностьЧленаКомиссии1 КАК ДолжностьЧленаКомиссии1,
| ДанныеШапки.ЧленКомиссии2 КАК ЧленКомиссии2,
| ДанныеШапки.ДолжностьЧленаКомиссии2 КАК ДолжностьЧленаКомиссии2,
| ДанныеШапки.ЧленКомиссии3 КАК ЧленКомиссии3,
| ДанныеШапки.ДолжностьЧленаКомиссии3 КАК ДолжностьЧленаКомиссии3,
| ДанныеШапки.Руководитель КАК Руководитель,
| ДанныеШапки.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ДанныеШапки.ТемператураВТолщеМясаРыбы КАК ТемператураВТолщеМясаРыбы,
| ДанныеШапки.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ДанныеШапки.ДатаДокументаОВызовеПредставителяПартнера КАК ДатаДокументаОВызовеПредставителяПартнера,
| ДанныеШапки.ПунктОтправления КАК ПунктОтправления,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.НомерОснования КАК НомерОснования,
| ДанныеШапки.ДатаОснования КАК ДатаОснования,
| ДанныеШапки.Автор КАК Автор,
| ДанныеШапки.Представление КАК Представление,
| ДанныеШапки.МоментВремени КАК МоментВремени,
| ДанныеШапки.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуПоступлениеИзТоваровВПути)
| ) КАК РаздельнаяЗакупкаТоваров,
| ДанныеШапки.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки))
| И ЕСТЬNULL(ДанныеШапки.Договор.ВариантОформленияЗакупок = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг),
| ЛОЖЬ) КАК РаздельнаяЗакупкаУслуг
|ПОМЕСТИТЬ ДанныеДокументаШапка
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки КАК ДанныеШапки
|ГДЕ
| ДанныеШапки.Ссылка В(&Ссылка)";
СписокЗапросов.Добавить(ТекстЗапросаШапка);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов)
ТекстЗапросаТаблицаТовары =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.НоменклатураПартнера КАК НоменклатураПартнера,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Упаковка КАК Упаковка,
| Товары.КоличествоУпаковок КАК КоличествоУпаковок,
| Товары.Количество КАК Количество,
| Товары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.СуммаНДС КАК СуммаНДС,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.ЗаказПоставщику КАК ЗаказПоставщику,
| Товары.КодСтроки КАК КодСтроки,
| Товары.Склад КАК Склад,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| Товары.ДокументОснование КАК ДокументОснование,
| Товары.ЗаполненоПоОснованию КАК ЗаполненоПоОснованию,
| Товары.КоличествоУпаковокПоДокументу КАК КоличествоУпаковокПоДокументу,
| Товары.КоличествоПоДокументу КАК КоличествоПоДокументу,
| Товары.СуммаПоДокументу КАК СуммаПоДокументу,
| Товары.СуммаНДСПоДокументу КАК СуммаНДСПоДокументу,
| Товары.СуммаСНДСПоДокументу КАК СуммаСНДСПоДокументу,
| Товары.НомерПаспорта КАК НомерПаспорта,
| Товары.Действие КАК Действие,
| Товары.КомментарийПоставщика КАК КомментарийПоставщика,
| Товары.КомментарийМенеджера КАК КомментарийМенеджера,
| Товары.ДокументРеализации КАК ДокументРеализации,
| Товары.ПоВинеСтороннейКомпании КАК ПоВинеСтороннейКомпании,
| Товары.СписатьНаРасходы КАК СписатьНаРасходы,
| Товары.СтатьяРасходов КАК СтатьяРасходов,
| Товары.АналитикаРасходов КАК АналитикаРасходов,
| Товары.Подразделение КАК Подразделение,
| Товары.Сделка КАК Сделка,
| Товары.НомерГТД КАК НомерГТД,
| Товары.Сертификат КАК Сертификат,
| НЕ Товары.ЗаказПоставщику В(
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаказПереработчику2_5.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)) КАК ПоступлениеПоЗаказам,
| ЕСТЬNULL(Товары.Склад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач, ЛОЖЬ) КАК ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| ЕСТЬNULL(Товары.Склад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач, ДАТАВРЕМЯ(1,1,1)) КАК ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач,
| ЕСТЬNULL(Товары.Склад.ИспользоватьОрдернуюСхемуПриПоступлении, ЛОЖЬ) КАК ИспользоватьОрдернуюСхемуПриПоступлении,
| ЕСТЬNULL(Товары.Склад.ДатаНачалаОрдернойСхемыПриПоступлении, ДАТАВРЕМЯ(1,1,1)) КАК ДатаНачалаОрдернойСхемыПриПоступлении,
| ЕСТЬNULL(Товары.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке, ЛОЖЬ) КАК ИспользоватьОрдернуюСхемуПриОтгрузке,
| ЕСТЬNULL(Товары.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке, ДАТАВРЕМЯ(1,1,1)) КАК ДатаНачалаОрдернойСхемыПриОтгрузке,
| Товары.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) КАК ЭтоТовар,
| Товары.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)) КАК ЭтоУслуга
|ПОМЕСТИТЬ ДанныеДокументаТаблицаТовары
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&Ссылка)
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаДанныеДокументаТаблицаТоварыДляСоединенияССериями(СписокЗапросов)
ТекстЗапросаТаблицаТовары =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Склад КАК Склад,
| Товары.ДокументОснование КАК ДокументОснование,
| Товары.ЗаполненоПоОснованию КАК ЗаполненоПоОснованию,
| Товары.Действие КАК Действие,
| МАКСИМУМ(Товары.СтатусУказанияСерий) КАК СтатусУказанияСерий,
| МАКСИМУМ(Товары.ЭтоТовар) КАК ЭтоТовар,
| МАКСИМУМ(Товары.ИспользоватьОрдернуюСхемуПриПоступлении) КАК ИспользоватьОрдернуюСхемуПриПоступлении,
| МАКСИМУМ(Товары.ДатаНачалаОрдернойСхемыПриПоступлении) КАК ДатаНачалаОрдернойСхемыПриПоступлении,
| МАКСИМУМ(Товары.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач) КАК ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| МАКСИМУМ(Товары.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач) КАК ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач,
| МАКСИМУМ(Товары.ИспользоватьОрдернуюСхемуПриОтгрузке) КАК ИспользоватьОрдернуюСхемуПриОтгрузке,
| МАКСИМУМ(Товары.ДатаНачалаОрдернойСхемыПриОтгрузке) КАК ДатаНачалаОрдернойСхемыПриОтгрузке
|ПОМЕСТИТЬ ДанныеДокументаТаблицаТоварыДляСоединенияССериями
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Склад,
| Товары.ДокументОснование,
| Товары.ЗаполненоПоОснованию,
| Товары.Действие
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов)
ТекстЗапросаТаблицаСерии =
"ВЫБРАТЬ
| Серии.Ссылка КАК Ссылка,
| Серии.НомерСтроки КАК НомерСтроки,
| Серии.Серия КАК Серия,
| Серии.Количество КАК Количество,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Склад КАК Склад,
| Серии.КоличествоПоДокументу КАК КоличествоПоДокументу,
| Серии.ДокументОснование КАК ДокументОснование,
| Серии.ЗаполненоПоОснованию КАК ЗаполненоПоОснованию,
| Серии.Действие КАК Действие
|ПОМЕСТИТЬ ДанныеДокументаТаблицаСерии
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Серии КАК Серии
|ГДЕ
| Серии.Ссылка В(&Ссылка)
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаСерии);
КонецПроцедуры
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.Партнер КАК Партнер,
| ДанныеШапки.Контрагент КАК Контрагент,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Валюта КАК Валюта,
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.Договор КАК Договор,
| ДанныеШапки.Подразделение КАК Подразделение,
| ДанныеШапки.Менеджер КАК Менеджер,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.СпособОтраженияРасхождений КАК СпособОтраженияРасхождений,
| ДанныеШапки.ТипОснованияАктаОРасхождении КАК ТипОснованияАктаОРасхождении,
| ДанныеШапки.Автор КАК Автор,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки КАК ДанныеШапки
|ГДЕ
| ДанныеШапки.Ссылка = &Ссылка";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
Запрос.УстановитьПараметр("Партнер", Реквизиты.Партнер);
Запрос.УстановитьПараметр("Контрагент", Реквизиты.Контрагент);
Запрос.УстановитьПараметр("Валюта", Реквизиты.Валюта);
Запрос.УстановитьПараметр("Статус", Реквизиты.Статус);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Реквизиты.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("Договор", Реквизиты.Договор);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("Менеджер", Реквизиты.Менеджер);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.АктОРасхожденияхПослеПриемки"));
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("СпособОтраженияРасхождений", Реквизиты.СпособОтраженияРасхождений);
Запрос.УстановитьПараметр("СкладскаяОперация", СкладскаяОперацияПоТипуОснования(Реквизиты.ТипОснованияАктаОРасхождении));
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("Автор", Реквизиты.Автор);
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
Если ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Реквизиты.ВариантПриемкиТоваров) Тогда
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", Истина);
Иначе
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", Ложь);
КонецЕсли;
ОперацииДвухходовки = ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупкиБезОтборов();
Запрос.УстановитьПараметр("ОперацииДвухходовки", ОперацииДвухходовки);
КонецПроцедуры
Процедура ОформитьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.КоличествоПоДокументу - Товары.Количество КАК Количество
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В(&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата
| И (Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы))
| ИЛИ Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)))";
СкладыСервер.ОформитьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыПоставщикам";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Регистратор,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) ТОГДА
| ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ТаблицаТовары.КоличествоПоДокументу - ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.КоличествоПоДокументу - ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
| И ТаблицаТовары.КодСтроки <> 0
| И ТаблицаТовары.ЗаказПоставщику НЕ В (
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)
| )
|
| И ТаблицаТовары.КоличествоПоДокументу <> ТаблицаТовары.Количество
| И ТаблицаТовары.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
|
| И ТаблицаТовары.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТаблицаТовары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))
|
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуПоступлениеИзТоваровВПути))
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Договор КАК Договор,
| Шапка.Соглашение КАК Соглашение,
| Шапка.Партнер КАК Отправитель,
| Шапка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Шапка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Товары.ДокументОснование КАК Накладная,
| Товары.ЗаказПоставщику КАК Заказ,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Склад КАК Склад,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.ПоступлениеПоЗаказам КАК СверхЗаказа,
| ИСТИНА КАК ЭтоНакладная,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| Товары.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И(
| НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И (Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления))
| ИЛИ Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Договор КАК Договор,
| Шапка.Соглашение КАК Соглашение,
| Шапка.Партнер КАК Отправитель,
| Шапка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Шапка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| Товары.ЗаказПоставщику КАК Заказ,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Склад КАК Склад,
| Товары.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| 0 КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК ЭтоНакладная,
| Товары.КоличествоПоДокументу - Товары.Количество КАК Количество,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И (Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| ИЛИ Шапка.РаздельнаяЗакупкаУслуг И Товары.ЭтоУслуга)
| И ТИПЗНАЧЕНИЯ(Товары.ЗаказПоставщику) = ТИП(Документ.ЗаказПоставщику)
| И Товары.ЗаказПоставщику <> ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
| И Товары.КодСтроки <> 0
| И Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)";
СкладыСервер.ЗапланироватьПоступлениеТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"Товары");
КонецПроцедуры
Процедура ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКПоступлению";
Если ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Договор КАК Договор,
| Шапка.Соглашение КАК Соглашение,
| Шапка.Партнер КАК Отправитель,
| Шапка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Шапка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Товары.ДокументОснование КАК Накладная,
| Товары.ЗаказПоставщику КАК Заказ,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Склад КАК Склад,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| Товары.ПоступлениеПоЗаказам КАК СверхЗаказа,
| ИСТИНА КАК ЭтоНакладная,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| Товары.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоКорректировкаВнутриНакладной
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И (Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления))
| ИЛИ Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)))";
ДополнительныеПоляСоединенияССериями = Новый Массив();
ДополнительныеПоляСоединенияССериями.Добавить("ЗаполненоПоОснованию");
ДополнительныеПоляСоединенияССериями.Добавить("ДокументОснование");
ДополнительныеПоляСоединенияССериями.Добавить("Действие");
ДополнительныеПоляСоединенияССериями.Добавить("Назначение");
ПодменаПолейСерий = Новый Соответствие();
ПодменаПолейСерий.Вставить("ДанныеСерий.Количество",
"(ДанныеСерий.Количество - ДанныеСерий.КоличествоПоДокументу)");
ПараметрыМодульногоПроведения = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМодульногоПроведения.ИмяТЧСерии = "Серии";
ПараметрыМодульногоПроведения.СинонимТаблицыДокумента = "Товары";
ПараметрыМодульногоПроведения.ДополнительныеПоляСоединенияССериями = ДополнительныеПоляСоединенияССериями;
ПараметрыМодульногоПроведения.ПодменаПолейСерий = ПодменаПолейСерий;
СкладыСервер.ОформитьПоступлениеТоваровПоОдноходовкеСНастройкойСоединенияСерий(Запрос,
ТекстыЗапроса,
ИмяРегистра,
ТекстЗапросаДокумента,
Метаданные.Документы.АктОРасхожденияхПослеПриемки,
ПараметрыМодульногоПроведения);
КонецЕсли;
ИмяРегистра = "ТоварыНаСкладах";
Если ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Договор КАК Договор,
| Шапка.Соглашение КАК Соглашение,
| Шапка.Партнер КАК Отправитель,
| Шапка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Шапка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Товары.ДокументОснование КАК Накладная,
| Товары.ЗаказПоставщику КАК Заказ,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Склад КАК Склад,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| ИСТИНА КАК ЭтоНакладная,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоКорректировкаВнутриНакладной
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И НЕ (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата)
| И Товары.ИспользоватьОрдернуюСхемуПриОтгрузке И Товары.ДатаНачалаОрдернойСхемыПриОтгрузке <= Шапка.Дата
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)";
ДополнительныеПоляСоединенияССериями = Новый Массив();
ДополнительныеПоляСоединенияССериями.Добавить("ЗаполненоПоОснованию");
ДополнительныеПоляСоединенияССериями.Добавить("ДокументОснование");
ДополнительныеПоляСоединенияССериями.Добавить("Действие");
ДополнительныеПоляСоединенияССериями.Добавить("Назначение");
ПодменаПолейСерий = Новый Соответствие();
ПодменаПолейСерий.Вставить("ДанныеСерий.Количество",
"(ДанныеСерий.Количество - ДанныеСерий.КоличествоПоДокументу)");
ПараметрыМодульногоПроведения = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМодульногоПроведения.ИмяТЧСерии = "Серии";
ПараметрыМодульногоПроведения.СинонимТаблицыДокумента = "Товары";
ПараметрыМодульногоПроведения.ДополнительныеПоляСоединенияССериями = ДополнительныеПоляСоединенияССериями;
ПараметрыМодульногоПроведения.ПодменаПолейСерий = ПодменаПолейСерий;
СкладыСервер.ОформитьПоступлениеТоваровПоОдноходовкеСНастройкойСоединенияСерий(Запрос,
ТекстыЗапроса,
ИмяРегистра,
ТекстЗапросаДокумента,
Метаданные.Документы.АктОРасхожденияхПослеПриемки,
ПараметрыМодульногоПроведения);
КонецЕсли;
КонецПроцедуры
Процедура ЗарегистрироватьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| ИСТИНА КАК ИзменяетсяОстаток,
| НЕОПРЕДЕЛЕНО КАК Помещение,
| НЕОПРЕДЕЛЕНО КАК Ячейка,
| 0 КАК КоличествоУпаковок,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И НЕ (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата)
| И (Товары.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач И Товары.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач <= Шапка.Дата)
| И Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))
| И Товары.СтатусУказанияСерий В(0,14)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Серии.Склад КАК Склад,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Серии.Количество - Серии.КоличествоПоДокументу КАК Количество,
| ИСТИНА КАК ИзменяетсяОстаток,
| НЕОПРЕДЕЛЕНО КАК Помещение,
| НЕОПРЕДЕЛЕНО КАК Ячейка,
| 0 КАК КоличествоУпаковок,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка
|ИЗ
| ДанныеДокументаТаблицаСерии КАК Серии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаТоварыДляСоединенияССериями КАК Товары
| ПО Товары.Ссылка = Серии.Ссылка
| И Товары.Номенклатура = Серии.Номенклатура
| И Товары.Характеристика = Серии.Характеристика
| И Товары.Назначение = Серии.Назначение
| И Товары.Склад = Серии.Склад
| И Товары.ДокументОснование = Серии.ДокументОснование
| И Товары.ЗаполненоПоОснованию = Серии.ЗаполненоПоОснованию
| И Товары.Действие = Серии.Действие
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В (&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И НЕ (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата)
| И Товары.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач И Товары.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач <= Шапка.Дата
| И Шапка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И Шапка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И НЕ Товары.СтатусУказанияСерий В(0,14)
| И Товары.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))";
СкладыСервер.ЗарегистрироватьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Период,
| Шапка.Ссылка КАК Заказ,
| Шапка.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Шапка.Партнер КАК Получатель,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В(&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата
| ИЛИ (Товары.ИспользоватьОрдернуюСхемуПриОтгрузке И Товары.ДатаНачалаОрдернойСхемыПриОтгрузке <= Шапка.Дата)
| И Товары.СтатусУказанияСерий <> 10)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Период,
| Шапка.Ссылка КАК Заказ,
| Шапка.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Шапка.Партнер КАК Получатель,
| Серии.Склад КАК Склад,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Серии.Количество - Серии.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаСерии КАК Серии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаТоварыДляСоединенияССериями КАК Товары
| ПО Товары.Ссылка = Серии.Ссылка
| И Товары.Номенклатура = Серии.Номенклатура
| И Товары.Характеристика = Серии.Характеристика
| И Товары.Назначение = Серии.Назначение
| И Товары.Склад = Серии.Склад
| И Товары.ДокументОснование = Серии.ДокументОснование
| И Товары.ЗаполненоПоОснованию = Серии.ЗаполненоПоОснованию
| И Товары.Действие = Серии.Действие
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В(&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И НЕ (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата)
| И (Товары.ИспользоватьОрдернуюСхемуПриОтгрузке И Товары.ДатаНачалаОрдернойСхемыПриОтгрузке <= Шапка.Дата)
| И Товары.СтатусУказанияСерий = 10";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Период,
| Шапка.Ссылка КАК Заказ,
| Шапка.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Шапка.Партнер КАК Получатель,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.Количество - Товары.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В(&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата
| ИЛИ (Товары.ИспользоватьОрдернуюСхемуПриОтгрузке И Товары.ДатаНачалаОрдернойСхемыПриОтгрузке <= Шапка.Дата)
| И Товары.СтатусУказанияСерий <> 10)";
ПодменаПолейСерий = Новый Соответствие();
ПодменаПолейСерий.Вставить("ДанныеСерий.Количество",
"(ДанныеСерий.Количество - ДанныеСерий.КоличествоПоДокументу)");
ПараметрыМодульногоПроведения = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМодульногоПроведения.ИмяТЧСерии = "Серии";
ПараметрыМодульногоПроведения.СинонимТаблицыДокумента = "Товары";
ПараметрыМодульногоПроведения.ПодменаПолейСерий = ПодменаПолейСерий;
ПараметрыМодульногоПроведения.ОбъектМетаданных = Документы.АктОРасхожденияхПослеПриемки.ПустаяСсылка().Метаданные();
СкладыСервер.ОформитьОтгрузкуТоваровСНастройкойСоединенияСерий(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
ПараметрыМодульногоПроведения);
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Период,
| Шапка.Ссылка КАК Заказ,
| Шапка.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| Шапка.Партнер КАК Получатель,
| Серии.Склад КАК Склад,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Серии.Количество - Серии.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаСерии КАК Серии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаТоварыДляСоединенияССериями КАК Товары
| ПО Товары.Ссылка = Серии.Ссылка
| И Товары.Номенклатура = Серии.Номенклатура
| И Товары.Характеристика = Серии.Характеристика
| И Товары.Назначение = Серии.Назначение
| И Товары.Склад = Серии.Склад
| И Товары.ДокументОснование = Серии.ДокументОснование
| И Товары.ЗаполненоПоОснованию = Серии.ЗаполненоПоОснованию
| И Товары.Действие = Серии.Действие
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК Шапка
| ПО Шапка.Ссылка = Товары.Ссылка
|ГДЕ
| Шапка.Ссылка В(&Ссылка)
| И Шапка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ Шапка.РаздельнаяЗакупкаТоваров И Товары.ЭтоТовар
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И НЕ (Товары.ИспользоватьОрдернуюСхемуПриПоступлении И Товары.ДатаНачалаОрдернойСхемыПриПоступлении <= Шапка.Дата)
| И (Товары.ИспользоватьОрдернуюСхемуПриОтгрузке И Товары.ДатаНачалаОрдернойСхемыПриОтгрузке <= Шапка.Дата)
| И Товары.СтатусУказанияСерий = 10";
СкладыСервер.ОформитьОтгрузкуТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента);
КонецПроцедуры
Функция ТекстЗапросаВТСерии(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВТСерии";
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Склад КАК Склад,
| ТаблицаСерии.Действие КАК Действие,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| &СкладскаяОперация КАК СкладскаяОперация,
| ВЫБОР
| КОГДА СпрСклад.ИспользоватьОрдернуюСхемуПриПоступлении
| И СпрСклад.ДатаНачалаОрдернойСхемыПриПоступлении <= &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПриемке,
| ВЫБОР
| КОГДА СпрСклад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| И СпрСклад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач <= &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтраженииИзлишковНедостач,
| ВЫБОР
| КОГДА НЕ СпрСклад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ СпрСклад.ДатаНачалаОрдернойСхемыПриПоступлении > &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоСкладскоеДвижение,
| ТаблицаСерии.Количество - ТаблицаСерии.КоличествоПоДокументу КАК Расхождения
|ПОМЕСТИТЬ ВТСерии
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Серии КАК ТаблицаСерии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклад
| ПО (СпрСклад.Ссылка = ТаблицаСерии.Склад)
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> ТаблицаСерии.КоличествоПоДокументу
| И НЕ ТаблицаСерии.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И НЕ ТаблицаСерии.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОжидатьДопоставкуБезОформления)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению), ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Склад,
| ТаблицаТовары.Действие,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| &СкладскаяОперация,
| ВЫБОР
| КОГДА СпрСклад.ИспользоватьОрдернуюСхемуПриПоступлении
| И СпрСклад.ДатаНачалаОрдернойСхемыПриПоступлении <= &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА СпрСклад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| И СпрСклад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач <= &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НЕ СпрСклад.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ СпрСклад.ДатаНачалаОрдернойСхемыПриПоступлении > &Период
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ТаблицаТовары.Количество - ТаблицаТовары.КоличествоПоДокументу
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклад
| ПО (СпрСклад.Ссылка = ТаблицаТовары.Склад)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.КоличествоПоДокументу <> ТаблицаТовары.Количество
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И НЕ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И НЕ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОжидатьДопоставкуБезОформления)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению), ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТСерии", ТекстыЗапроса) Тогда
ТекстЗапросаВТСерии(Запрос, ТекстыЗапроса)
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| НЕОПРЕДЕЛЕНО КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтражениеНедостач) КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
|
| ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И НЕ ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| НЕОПРЕДЕЛЕНО КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтражениеНедостач) КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| НЕ ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И &СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика)
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))
|
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| НЕОПРЕДЕЛЕНО КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтражениеНедостач) КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И НЕ ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И &СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика)
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку))
|
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| &Партнер КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| &СкладскаяОперация КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| &Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
|
| И ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И НЕ ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы)
|
| ИЛИ ((&СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика))
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть))))
|
|
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| &Партнер КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| &СкладскаяОперация КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| НЕ ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И &СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика)
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть))
|
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| НЕОПРЕДЕЛЕНО КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтражениеНедостач) КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И (
| (&СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика)
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)))
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы)
| )
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Ссылка КАК Документ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Склад КАК Отправитель,
| &Партнер КАК Получатель,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЭтоСкладскоеДвижение КАК ЭтоСкладскоеДвижение,
| &СкладскаяОперация КАК СкладскаяОперация,
| ТаблицаТовары.Расхождения КАК Количество
|ИЗ
| ВтСерии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.ОрдернаяСхемаПриПриемке
| И ТаблицаТовары.ОрдернаяСхемаПриОтраженииИзлишковНедостач
| И (
| (&СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И НЕ &СкладскаяОперация = ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаОтПоставщика)
| И (ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное)
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть)))
| ИЛИ ТаблицаТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы)
| )";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция СкладскаяОперацияПоТипуОснования(ТипОснованияАктаОРасхождении)
Если ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг
Или ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
СкладскаяОперация = Перечисления.СкладскиеОперации.ПриемкаОтПоставщика;
ИначеЕсли ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента
Или ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера
Или РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(ТипОснованияАктаОРасхождении) Тогда
СкладскаяОперация = Перечисления.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента;
Иначе
СкладскаяОперация = Неопределено;
КонецЕсли;
Возврат СкладскаяОперация;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ВЫБОР
| КОГДА ДанныеДокумента.КоличествоНаправленийДеятельности = 1
| ТОГДА ДанныеДокумента.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА ДанныеДокумента.КоличествоМестХранения = 1
| ТОГДА ДанныеДокумента.МестоХранения
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Автор КАК Автор,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| ВтОснований КАК ДанныеДокумента";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| МАКСИМУМ(
| ЕСТЬNULL(ТаблицаТовары.ДокументОснование.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
| МАКСИМУМ(ТаблицаТовары.Склад) КАК МестоХранения,
| КОЛИЧЕСТВО(
| РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.ДокументОснование.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаТовары.Склад) КАК КоличествоМестХранения
|ПОМЕСТИТЬ ВтОснований
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.АктОРасхожденияхПослеПриемки";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество - ТабЧасть.КоличествоПоДокументу КАК Количество,
| ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным)) ТОГДА
|
| ТабЧасть.Ссылка.Соглашение
|
| КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных)) ТОГДА
|
| ТабЧасть.Ссылка.Договор
|
| ИНАЧЕ
| ТабЧасть.ЗаказПоставщику
| КОНЕЦ КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть))
| И ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТабЧасть.КоличествоПоДокументу - ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть))
| И ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.КоличествоПоДокументу - ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| И НЕ ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути))
| И (ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы))
| ИЛИ (ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг))
| И ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть)))
| И (НЕ ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| ИЛИ ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач > ТабЧасть.Ссылка.Дата)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество - ТабЧасть.КоличествоПоДокументу КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И НЕ(ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата)
| И ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач <= ТабЧасть.Ссылка.Дата
| И НЕ ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути))
| И ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть))";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| -(ТабЧасть.Количество - ТабЧасть.КоличествоПоДокументу) КАК Количество,
| ВЫБОР КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным)) ТОГДА
|
| ТабЧасть.Ссылка.Соглашение
|
| КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных)) ТОГДА
|
| ТабЧасть.Ссылка.Договор
|
| КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ ТабЧасть.ЗаказПоставщику В(
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка),
| ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)) ТОГДА
| ТабЧасть.ДокументОснование
| ИНАЧЕ
| ТабЧасть.ЗаказПоставщику
| КОНЕЦ КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И (ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиПерепоставленноеНаПрочиеДоходы),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления))
| ИЛИ (ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг))
| И ТабЧасть.Действие В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачу),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленное),
| ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть)))
| И (ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| И НЕ ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути)))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество - ТабЧасть.КоличествоПоДокументу КАК Количество,
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.НеРазделенаПоНакладным))
| ТОГДА ТабЧасть.Ссылка.Соглашение
| КОГДА ТабЧасть.Ссылка.ВариантПриемкиТоваров В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных))
| ТОГДА ТабЧасть.Ссылка.Договор
| ИНАЧЕ ТабЧасть.ЗаказПоставщику
| КОНЕЦ КАК РаспоряжениеВГрафике
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И ТабЧасть.Ссылка.СпособОтраженияРасхождений = ЗНАЧЕНИЕ(Перечисление.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления)
| И ТабЧасть.Ссылка.ТипОснованияАктаОРасхождении = ЗНАЧЕНИЕ(Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг)
| И ТабЧасть.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)
| И ТИПЗНАЧЕНИЯ(ТабЧасть.ЗаказПоставщику) = ТИП(Документ.ЗаказПоставщику)
| И ТабЧасть.ЗаказПоставщику <> ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
| И ТабЧасть.КодСтроки <> 0
| И(
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути))
| ИЛИ ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки))
| И ЕСТЬNULL(ТабЧасть.Ссылка.Договор.ВариантОформленияЗакупок = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг),
| ЛОЖЬ))";
РаспределениеЗапасовДвижения.ОтменитьЗапланированныйПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ВЫБОР КОГДА ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам ТОГДА
| ТабЧасть.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТабЧасть.Количество - ТабЧасть.КоличествоПоДокументу КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ЛОЖЬ КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| И ТабЧасть.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| И ТабЧасть.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#КонецОбласти
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ИмяДокумента", "АктОРасхожденияхПослеПриемки");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыПоставщикам");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "ЗаказПоставщику");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Распоряжение, Номенклатура, Характеристика, Серия, Склад, Назначение");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ОбновитьЗависимыеРеквизитыПослеЗаполненияФактаПоПриемке(Объект) Экспорт
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТовары.СтавкаНДС) Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецЕсли;
Суффикс = "ПоДокументу";
СтруктураДействий = Новый Структура;
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение") Тогда
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
КонецЕсли;
СтруктураДействий.Вставить(
"ПересчитатьКоличествоУпаковок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаКоличестваУпаковок());
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокСуффикс", Суффикс);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСуффикс", Суффикс);
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураПересчетаСуммы.Вставить("Суффикс", Суффикс);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДССуффикс", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДССуффикс", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПризнакНаличиеКомментарияПриемка");
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары,СтруктураДействий, Неопределено);
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
СтатусыАкта = Новый Массив;
СтатусыАкта.Добавить(Перечисления.СтатусыАктаОРасхождениях.КВыполнению);
СтатусыАкта.Добавить(Перечисления.СтатусыАктаОРасхождениях.Отработано);
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати,
"ЗаданиеНаРазмещение");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"Статус",
СтатусыАкта,
ВидСравнения.ВСписке);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"СпособОтраженияРасхождений",
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления,
ВидСравненияКомпоновкиДанных.Равно);
АктОРасхожденияхПослеПриемкиЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
АктОРасхожденияхПослеПриемкиЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("КонтактноеЛицо");
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область ИзменениеСтатуса
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыАктаОРасхождениях[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В (&МассивДокументов)
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Возврат Истина;
КонецФункции
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "Документы.АктОРасхожденияхПослеПриемки.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Версия = "11.5.25.42";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("fa677e44-2598-49a2-824b-75b3fe7952c0");
Обработчик.Многопоточный = Истина;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.АктОРасхожденияхПослеПриемки.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Акт о расхождениях после приемки"":'"));
СписокОписаний.Добавить(НСтр("ru = '- заполняет ""Статус указания серии для склада приёма"".'"));
Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
Читаемые = Новый Массив;
Читаемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
Изменяемые = Новый Массив;
Изменяемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
Блокируемые = Новый Массив;
Блокируемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
КонецПроцедуры
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПараметрыВыборки = Параметры.ПараметрыВыборки;
ПараметрыВыборки.ПолныеИменаОбъектов = "Документ.АктОРасхожденияхПослеПриемки";
ПараметрыВыборки.ПоляУпорядочиванияПриРаботеПользователей.Добавить("Дата УБЫВ");
ПараметрыВыборки.ПоляУпорядочиванияПриОбработкеДанных.Добавить("Дата УБЫВ");
ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыДляЗапроса.Ссылка КАК Ссылка
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК ТоварыДляЗапроса
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураАкта
| ПО ТоварыДляЗапроса.Номенклатура = НоменклатураАкта.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ТоварыДляЗапроса.Склад = Склады.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО ПолитикиУчетаСерий.Склад = ТоварыДляЗапроса.Склад
| И НоменклатураАкта.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки КАК ДанныеДокумента
| ПО ТоварыДляЗапроса.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТоварыДляЗапроса.Действие <> ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)
| И ТоварыДляЗапроса.СтатусУказанияСерий <> ТоварыДляЗапроса.СтатусУказанияСерийПолучатель
| И (ДанныеДокумента.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки))
| ИЛИ НЕ ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ИЛИ НЕ(ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| И Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеДокумента.Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке
| И ТоварыДляЗапроса.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления)))";
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПолноеИмяОбъекта = "Документ.АктОРасхожденияхПослеПриемки";
ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
Если ОбновляемыеДанные.Количество() = 0 Тогда
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбновляемыеДанные.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ОбновляемыеДанные
|ИЗ
| &ОбновляемыеДанные КАК ОбновляемыеДанные
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ОбновляемыеДанные.Ссылка КАК Ссылка,
| РеквизитыДокумента.ВерсияДанных КАК ВерсияДанных
|ИЗ
| ОбновляемыеДанные КАК ОбновляемыеДанные
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки КАК РеквизитыДокумента
| ПО ОбновляемыеДанные.Ссылка = РеквизитыДокумента.Ссылка
|";
Запрос.УстановитьПараметр("ОбновляемыеДанные", ОбновляемыеДанные);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить(ПолноеИмяОбъекта).УстановитьЗначение("Ссылка", Выборка.Ссылка);
Блокировка.Заблокировать();
ДокументОбъект = ОбновлениеИнформационнойБазыУТ.ПроверитьПолучитьОбъект(Выборка.Ссылка, Выборка.ВерсияДанных, Параметры.Очередь);
ОбъектИзменен = Ложь;
Если ДокументОбъект <> Неопределено Тогда
Для Каждого Строка Из ДокументОбъект.Товары Цикл
Строка.СтатусУказанияСерийПолучатель = Строка.СтатусУказанияСерий;
КонецЦикла;
ОбъектИзменен = Истина;
КонецЕсли;
Если ОбъектИзменен Тогда
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), Выборка.Ссылка);
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли