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