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