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