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