#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗаполнитьУсловияЗакупок(Знач УсловияЗакупок) Экспорт
Если УсловияЗакупок = Неопределено Тогда
Возврат;
КонецЕсли;
Валюта = УсловияЗакупок.Валюта;
ВалютаВзаиморасчетов = УсловияЗакупок.ВалютаВзаиморасчетов;
Если ЗначениеЗаполнено(УсловияЗакупок.Организация) И УсловияЗакупок.Организация <> Организация Тогда
Организация = УсловияЗакупок.Организация;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияЗакупок.Склад) Тогда
Склад = УсловияЗакупок.Склад;
СтруктураОтветственного = ЗакупкиСервер.ПолучитьОтветственногоПоСкладу(Склад, Менеджер);
Если СтруктураОтветственного <> Неопределено Тогда
Принял = СтруктураОтветственного.Ответственный;
ПринялДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
КонецЕсли;
НаправлениеДеятельности = УсловияЗакупок.НаправлениеДеятельности;
Если ЗначениеЗаполнено(УсловияЗакупок.Контрагент) И УсловияЗакупок.Контрагент <> Контрагент Тогда
Контрагент = УсловияЗакупок.Контрагент;
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Если ЗначениеЗаполнено(УсловияЗакупок.ХозяйственнаяОперация) Тогда
ОперацияПоСоглашению = ХозяйственнаяОперация;
ОперацииРаздельнойЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(УсловияЗакупок.ХозяйственнаяОперация);
Если ОперацииРаздельнойЗакупки.Найти(ХозяйственнаяОперация) = Неопределено
И Не (ОперацияПоСоглашению = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо
И УсловияЗакупок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика) Тогда
ОперацияПоСоглашению = УсловияЗакупок.ХозяйственнаяОперация;
КонецЕсли;
ХозяйственнаяОперация = ОперацияПоСоглашению;
КонецЕсли;
ХозяйственнаяОперацияДоговора = ?(ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо,
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика,
ХозяйственнаяОперация);
ХозяйственнаяОперацияДоговора = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(ХозяйственнаяОперацияДоговора);
Если УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов <> Неопределено
И УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
ДопПараметры.Налогообложение = НалогообложениеНДС;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект, ХозяйственнаяОперацияДоговора, ДопПараметры);
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчетОрганизации, БанковскийСчетКонтрагента);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
Или ПолучитьФункциональнуюОпцию("ИспользоватьУчетРасчетовСПоставщикамиПоНаправлениямДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(НаправлениеДеятельности, Соглашение, Договор);
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов)
Или Не УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов Тогда
ОплатаВВалюте = УсловияЗакупок.ОплатаВВалюте;
Иначе
ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ОплатаВВалюте");
КонецЕсли;
ЗаполнитьУсловияРасчетов(УсловияЗакупок);
Если ЗначениеЗаполнено(УсловияЗакупок.ГруппаФинансовогоУчета) Тогда
ГруппаФинансовогоУчета = УсловияЗакупок.ГруппаФинансовогоУчета;
КонецЕсли;
ЦенаВключаетНДС = УсловияЗакупок.ЦенаВключаетНДС;
ВернутьМногооборотнуюТару = УсловияЗакупок.ВозвращатьМногооборотнуюТару;
ТребуетсяЗалогЗаТару = УсловияЗакупок.ТребуетсяЗалогЗаТару;
ДатаВозвратаМногооборотнойТары = МногооборотнаяТараСервер.РассчитатьДатуВозвратаМногооборотнойТары(ЭтотОбъект,
УсловияЗакупок.СрокВозвратаМногооборотнойТары,
УсловияЗакупок.РассчитыватьДатуВозвратаТарыПоКалендарю,
УсловияЗакупок.КалендарьВозвратаТары);
РегистрироватьЦеныПоставщика = УсловияЗакупок.РегистрироватьЦеныПоставщика;
РаботаСКурсамиВалютУТ.ЗаполнитьКурсДокументаПоУмолчанию(КурсЧислитель, КурсЗнаменатель, Валюта, ВалютаВзаиморасчетов, Организация, , Договор);
КонецПроцедуры
Процедура ЗаполнитьУсловияЗакупокПоУмолчанию(ПересчитатьЦены = Истина) Экспорт
Если ЗначениеЗаполнено(Партнер) Тогда
КлючиУсловийЗакупок = "УчитыватьГруппыСкладов, ИсключитьГруппыСкладовДоступныеВЗаказах, ВыбранноеСоглашение";
ОтборУсловийЗакупок = Новый Структура(КлючиУсловийЗакупок, Истина, Истина, Соглашение);
УсловияЗакупокПоУмолчанию = ЗакупкиСервер.ПолучитьУсловияЗакупокПоУмолчанию(Партнер, ОтборУсловийЗакупок);
Если УсловияЗакупокПоУмолчанию <> Неопределено Тогда
Если Соглашение <> УсловияЗакупокПоУмолчанию.Соглашение
И ЗначениеЗаполнено(УсловияЗакупокПоУмолчанию.Соглашение) Тогда
Соглашение = УсловияЗакупокПоУмолчанию.Соглашение;
ЗаполнитьУсловияЗакупок(УсловияЗакупокПоУмолчанию);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(НалогообложениеНДС, ПараметрыЗаполнения);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
Если ПересчитатьЦены
И ЗначениеЗаполнено(Соглашение) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПересчитатьСуммуСУчетомРучнойСкидки = Новый Структура("Очищать", Ложь);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", ПересчитатьСуммуСУчетомРучнойСкидки);
ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Товары,
Неопределено,
ПараметрыЗаполнения,
СтруктураДействий);
КонецЕсли;
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Соглашение = УсловияЗакупокПоУмолчанию.Соглашение;
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчетОрганизации;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
СтруктураПараметров);
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Соглашение = Неопределено;
ХозяйственнаяОперацияДоговора = ?(ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо,
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика,
ХозяйственнаяОперация);
ХозяйственнаяОперацияДоговора = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(ХозяйственнаяОперацияДоговора);
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект, ХозяйственнаяОперацияДоговора, ДопПараметры);
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Договор,
БанковскийСчетОрганизации,
БанковскийСчетКонтрагента);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(НалогообложениеНДС, ПараметрыЗаполнения);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
КонецЕсли;
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьУсловияЗакупокПоСоглашению(ПересчитатьЦены = Истина) Экспорт
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(Соглашение, Истина, Истина);
ЗаполнитьУсловияЗакупок(УсловияЗакупок);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(НалогообложениеНДС, ПараметрыЗаполнения);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
Если ПересчитатьЦены Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Дата);
ПараметрыЗаполнения.Вставить("Валюта", Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", НалогообложениеНДС);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
Если НЕ ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Товары,
Неопределено,
ПараметрыЗаполнения,
СтруктураДействий) Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий, Неопределено);
КонецЕсли;
КонецЕсли;
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчетОрганизации;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
КонецПроцедуры
Процедура ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ДокументОбъект, РежимЗаписи = Неопределено) Экспорт
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ИспользоватьРаздельноеОформлениеЗакупок = ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ХозяйственнаяОперация);
ПараметрыЗаполнения.ИспользоватьРаздельноеОформлениеЗакупок = ИспользоватьРаздельноеОформлениеЗакупок;
ДокументОбъект.ДополнительныеСвойства.Вставить("ПараметрыЗаполненияВидовЗапасов", ПараметрыЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьВидыЗапасовПриОбмене(Отказ, ТаблицыДокумента) Экспорт
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
ЗаполнитьВидыЗапасов(Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
Если (Не ЗначениеЗаполнено(Соглашение)
Или Не ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Соглашение, "ИспользуютсяДоговорыКонтрагентов"))
И Не ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ХозяйственнаяОперация)
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
МассивНепроверяемыхРеквизитов.Добавить("Договор");
КонецЕсли;
НоменклатураСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ПриобретениеТоваровУслуг));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий);
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьМассивНепроверяемыхРеквизитов(
МассивВсехРеквизитов,
МассивРеквизитовОперации,
МассивНепроверяемыхРеквизитов);
СписокЗаказов = Новый массив();
ИспользоватьАгентскуюЗакупку = ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке");
Для ТекИндекс = 0 По Товары.Количество()-1 Цикл
СтрокаТовары = Товары[ТекИндекс];
АдресОшибки = " " + НСтр("ru='в строке %НомерСтроки% списка ""Товары""'");
АдресОшибки = СтрЗаменить(АдресОшибки, "%НомерСтроки%", СтрокаТовары.НомерСтроки);
Если ПоступлениеПоЗаказам И
Не ЗначениеЗаполнено(ЗаказПоставщику) И
Не ЗначениеЗаполнено(СтрокаТовары.ЗаказПоставщику) Тогда
ТекстОшибки = НСтр("ru='Не заполнено поле ""Заказ поставщику""'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", СтрокаТовары.НомерСтроки, "ЗаказПоставщику"),
,
Отказ);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТовары.ЗаказПоставщику)
И СписокЗаказов.Найти(СтрокаТовары.ЗаказПоставщику) = Неопределено Тогда
СписокЗаказов.Добавить(СтрокаТовары.ЗаказПоставщику);
КонецЕсли;
Если ИспользоватьАгентскуюЗакупку
И ЗначениеЗаполнено(СтрокаТовары.Назначение) Тогда
ТипНазначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТовары.Назначение, "ТипНазначения");
Если ТипНазначения = Перечисления.ТипыНазначений.ПоставкаПодПринципала Тогда
ПроверитьПараметрыЗаписиДляЗакупкиПодПринципала(СтрокаТовары.НомерСтроки, АдресОшибки,
СтрокаТовары.Назначение, Отказ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам")
И СписокЗаказов.Количество() > 1
И ЗакупкиВызовСервера.ПроверитьСовместимостьЗаказовВОдномДокументе(СписокЗаказов,"ПриобретениеТоваровУслуг") Тогда
Отказ = Истина;
КонецЕсли;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(ВариантПриемкиТоваров);
ИспользуетсяНеотфактурованнаяПоставка = ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
ИспользуетсяНеотфактурованнаяПоставка = ИспользуетсяНеотфактурованнаяПоставка
И ?(ЗначениеЗаполнено(Договор),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВариантОформленияЗакупок") = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров,
Ложь);
ОперацииНеотфактурованнойПоставки = Новый Массив;
ОперацииНеотфактурованнойПоставки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ОперацииНеотфактурованнойПоставки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
Если НакладнаяЯвляетсяРаспоряжением
И ИспользуетсяНеотфактурованнаяПоставка Тогда
Если ОперацииНеотфактурованнойПоставки.Найти(ХозяйственнаяОперация) <> Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Использование варианта приемки ""по накладным"" не поддерживается для операций неотфактурованной поставки.
|Рекомендуется использовать вариант приемки по договорам или по заказам.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, , , Отказ);
КонецЕсли;
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("Товары.Подразделение");
МассивНепроверяемыхРеквизитов.Добавить("Товары.КоличествоПоРНПТ");
ВариантОформленияЗакупокДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВариантОформленияЗакупок");
ПроверятьАналитикуРасходов = НЕ (ОперацииНеотфактурованнойПоставки.Найти(ХозяйственнаяОперация) <> Неопределено
И ВариантОформленияЗакупокДоговора = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг);
Если ПроверятьАналитикуРасходов Тогда
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
ТекстОшибки = НСтр("ru = 'Не указан получатель услуг в строке %1 списка Товары'");
СписокХозяйственныхОперацийИсключающихУслуги = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслуги();
Если СписокХозяйственныхОперацийИсключающихУслуги.НайтиПоЗначению(ХозяйственнаяОперация) = Неопределено Тогда
ЗапасыСервер.ПроверитьЗаполнениеПодразделенияВТабличнойЧасти(ЭтотОбъект, ТипыНоменклатуры, ТекстОшибки, Отказ);
КонецЕсли;
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ТекстОшибки = НСтр("ru = 'Не указан получатель работ в строке %1 списка Товары'");
СписокХозяйственныхОперацийИсключающихРаботы = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихРаботы();
Если СписокХозяйственныхОперацийИсключающихРаботы.НайтиПоЗначению(ХозяйственнаяОперация) = Неопределено Тогда
ЗапасыСервер.ПроверитьЗаполнениеПодразделенияВТабличнойЧасти(ЭтотОбъект, ТипыНоменклатуры, ТекстОшибки, Отказ);
КонецЕсли;
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ТекстОшибки = НСтр("ru='Не указан получатель товаров в строке %1 списка Товары'");
ЗапасыСервер.ПроверитьЗаполнениеПодразделенияВТабличнойЧасти(ЭтотОбъект, ТипыНоменклатуры, ТекстОшибки, Отказ);
Иначе
МассивНепроверяемыхРеквизитов.Добавить("Товары.АналитикаРасходов");
КонецЕсли;
Если Не ВернутьМногооборотнуюТару Тогда
МассивНепроверяемыхРеквизитов.Добавить("ДатаВозвратаМногооборотнойТары");
КонецЕсли;
ХозОперацииЗакупкаВСтранахЕАЭС = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС"));
ХозОперацииЗакупкаПоИмпорту = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
МассивНепроверяемыхРеквизитов.Добавить("Партнер");
МассивНепроверяемыхРеквизитов.Добавить("Контрагент");
Если НалогообложениеНДС <> Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС Тогда
Если Не ЗначениеЗаполнено(Партнер) Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru='Поле ""Поставщик"" не заполнено. При закупке через подотчетное лицо указание поставщика обязательно для режима налогообложения ""%1"".'"),
НалогообложениеНДС);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,,
"Объект.Партнер",,
Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Контрагент) И ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru='Поле ""Контрагент"" не заполнено. При закупке через подотчетное лицо указание контрагента обязательно для режима налогообложения ""%1"".'"),
НалогообложениеНДС);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,,
"Объект.Контрагент",,
Отказ);
КонецЕсли;
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьДокументыЗакупкиАвансовогоОтчета(ЭтотОбъект, Отказ);
ИначеЕсли ХозОперацииЗакупкаПоИмпорту.Найти(ХозяйственнаяОперация) <> Неопределено
Или ХозОперацииЗакупкаВСтранахЕАЭС.Найти(ХозяйственнаяОперация) <> Неопределено Тогда
МассивНепроверяемыхРеквизитов.Добавить("НалогообложениеНДС");
КонецЕсли;
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);
НоменклатураСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ПриобретениеТоваровУслуг),
Отказ,
МассивНепроверяемыхРеквизитов);
ЭтоПрослеживаемыйДокумент = УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(Товары, Дата);
ХозяйственныеОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
МассивНепроверяемыхРеквизитов.Добавить("Товары.НомерГТД");
Если (ЭтоПрослеживаемыйДокумент
Или ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД"))
И ХозяйственныеОперацииИмпорта.Найти(ХозяйственнаяОперация) = Неопределено Тогда
ПараметрыПроверки = ЗапасыСервер.ПараметрыПроверкиЗаполненияНомеровГТД();
ПараметрыПроверки.ХозяйственнаяОперация = ХозяйственнаяОперация;
ПараметрыПроверки.ПроверятьРаботы = Истина;
ЗапасыСервер.ПроверитьЗаполнениеНомеровГТД(ЭтотОбъект, Отказ, ПараметрыПроверки);
КонецЕсли;
Если ЭтоПрослеживаемыйДокумент Тогда
УчетПрослеживаемыхТоваровЛокализация.ПроверитьКорректностьНастроекТоваровРНПТ(ЭтотОбъект, Товары, Дата);
КонецЕсли;
Если Не ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ХозяйственнаяОперация) Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.ВидЦеныПоставщика");
КонецЕсли;
ДоставкаТоваров.ПроверитьЗаполнениеРеквизитовДоставки(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ, ПоступлениеПоЗаказам);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
ПроверитьИзменениеХозяйственнойОперации(Отказ);
ЗакупкиСервер.ПроверитьКорректностьЗаполненияДокументаЗакупки(ЭтотОбъект,Отказ);
ОбщегоНазначенияУТ.ПроверитьПравильностьУказанияХозяйственнойОперации(ЭтотОбъект, Отказ);
Если ЗначениеЗаполнено("ДатаВозвратаМногооборотнойТары") И ВернутьМногооборотнуюТару И ДатаВозвратаМногооборотнойТары < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата возврата многооборотной тары не должна быть меньше даты документа.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
,
"Объект.ДатаВозвратаМногооборотнойТары",
,
Отказ);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихДоходовРасходов")
И ПроверятьАналитикуРасходов Тогда
ПараметрыВыбораСтатейИАналитик = Документы.ПриобретениеТоваровУслуг.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
КонецЕсли;
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполнениеДокументаПоНалогообложениюНДСЗакупки();
ПараметрыПроверки.ИмяТабличнойЧасти = "Товары";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
УчетНДСУП.ПроверитьЗаполнениеДокументаЗакупкиПоНалогообложениюНДС(ЭтотОбъект, НалогообложениеНДС, ПараметрыПроверки, Отказ);
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполненияДокументаПоВидуДеятельностиНДС();
ПараметрыПроверки.ИмяТабличнойЧасти = "Товары";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
УчетНДСУП.ПроверитьЗаполнениеДокументаПоВидуДеятельностиНДС(ЭтотОбъект, ЗакупкаПодДеятельность, ПараметрыПроверки, Отказ);
ПриобретениеТоваровУслугЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Перем РеквизитыШапки;
Перем СкладПоступления;
Перем ХозяйственнаяОперацияПриемки;
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("ДокументОснование")
И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказПоставщику")
Или ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("Массив")) Тогда
ДанныеЗаполнения.Свойство("СкладПоступления", СкладПоступления);
ДанныеЗаполнения.Свойство("РеквизитыШапки", РеквизитыШапки);
ЗаполнитьДокументНаОснованииЗаказаПоставщику(ДанныеЗаполнения.ДокументОснование, СкладПоступления, РеквизитыШапки);
ИначеЕсли ДанныеЗаполнения.Свойство("АктОРасхождениях")
И ДанныеЗаполнения.Свойство("ОснованиеАкта") Тогда
Если ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
ЗаполнитьДокументНаОснованииАктаПриемкиПослеОтгрузки(ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
ЗаполнитьДокументНаОснованииАктаПриемкиПослеПоступления(ДанныеЗаполнения);
КонецЕсли;
ИначеЕсли ДанныеЗаполнения.Свойство("ДокументОснование")
И ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ДанныеЗаполнения.Свойство("СкладПоступления", СкладПоступления);
ДанныеЗаполнения.Свойство("ХозяйственнаяОперацияПриемки", ХозяйственнаяОперацияПриемки);
ЗаполнитьДокументНаОснованииСоглашенияСПоставщиком(ДанныеЗаполнения.ДокументОснование,
СкладПоступления,
ХозяйственнаяОперацияПриемки);
ИначеЕсли ДанныеЗаполнения.Свойство("ДокументОснование")
И ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ДанныеЗаполнения.Свойство("СкладПоступления", СкладПоступления);
ЗаполнитьДокументНаОснованииДоговораСКонтрагентом(ДанныеЗаполнения.ДокументОснование, СкладПоступления);
Иначе
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
КонецЕсли;
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
ЗаполнитьДокументНаОснованииЗаказаПоставщику(ДанныеЗаполнения, СкладПоступления);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
ЗаполнитьДокументНаОснованииВозвратаТоваровПоставщику(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ЗаполнитьДокументНаОснованииСоглашенияСПоставщиком(ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
ЗаполнитьДокументНаОснованииОтчетаПереработчика2_5(ДанныеЗаполнения);
КонецЕсли;
Автор = Пользователи.ТекущийПользователь();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ЭтотОбъект, Ложь);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
ДокументОснование = ЗакупкиСервер.ДокументОснование(ЭтотОбъект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику");
ОтветственныеЛицаСервер.УстановитьМенеджера(ЭтотОбъект, ДокументОснование);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(ЭтотОбъект, "Менеджер",, Истина);
ПараметрыВыбораСтатейИАналитик = Документы.ПриобретениеТоваровУслуг.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным И НЕ ПоступлениеПоЗаказам
ИЛИ ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным Тогда
Если ЗначениеЗаполнено(Соглашение) Тогда
РеквизитыСоглашения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Соглашение,"ИспользуютсяДоговорыКонтрагентов,ГруппаФинансовогоУчета");
Если РеквизитыСоглашения.ИспользуютсяДоговорыКонтрагентов
И ЗначениеЗаполнено(Договор) Тогда
ГруппаФинансовогоУчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор,"ГруппаФинансовогоУчета");
Иначе
ГруппаФинансовогоУчета = РеквизитыСоглашения.ГруппаФинансовогоУчета;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Договор) Тогда
ГруппаФинансовогоУчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор,"ГруппаФинансовогоУчета");
КонецЕсли;
КонецЕсли;
ПриобретениеТоваровУслугЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
ИнициализироватьДокумент(ДанныеЗаполнения);
ЕстьКорректировки = Ложь;
ЕстьСФ = Ложь;
ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСФ);
ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Склад);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Склад, СкладГруппа, Товары, Ложь, "СписатьНаРасходы");
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
ЕстьКорректировки = Ложь;
ЕстьСФ = Ложь;
ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСФ);
Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения И ЕстьКорректировки Тогда
ЗакупкиСервер.СообщитьОбОшибкахОтменаПроведенияЕстьКорректировки(Ссылка,Отказ);
КонецЕсли;
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи);
ДополнительныеСвойства.Вставить("АвансовыйОтчет", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "АвансовыйОтчет"));
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(
ЭтотОбъект,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
Если (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или Не ВернутьМногооборотнуюТару)
И ТребуетсяЗалогЗаТару Тогда
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СуммаДокумента = ПолучитьСуммуДокумента();
Если ПоступлениеПоЗаказам И ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Для Каждого ТекСтрока Из Товары Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику) Тогда
ТекСтрока.ЗаказПоставщику = ЗаказПоставщику;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо
И ЗначениеЗаполнено(Контрагент) Тогда
Для каждого СтрокаТЧ Из Товары Цикл
СтрокаТЧ.НомерВходящегоДокумента = Неопределено;
СтрокаТЧ.ДатаВходящегоДокумента = Неопределено;
СтрокаТЧ.НаименованиеВходящегоДокумента = Неопределено;
КонецЦикла;
КонецЕсли;
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект,
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ПриобретениеТоваровУслуг));
ОбщегоНазначенияУТ.ИзменитьПризнакСогласованностиДокумента(ЭтотОбъект, РежимЗаписи);
ПараметрыРегистрации = Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПередЗаписью(ПараметрыРегистрации, РежимЗаписи, ПометкаУдаления, Проведен);
ПараметрыВыбораСтатейИАналитик = Документы.ПриобретениеТоваровУслуг.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
Если Не ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
УчетПрослеживаемыхТоваровЛокализация.ОчиститьНомераГТДУПрослеживаемыхРабот(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.ОчиститьНомерГТДУПрослеживаемыхТоваровВДокументеПриобретениеТоваровУслуг(ЭтотОбъект);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Тогда
ВзаиморасчетыСервер.ЗаполнитьСуммуРасшифровкиПлатежаПоСуммеДокумента(
СуммаДокумента,
РасшифровкаПлатежа);
ВзаиморасчетыСервер.ЗаполнитьСуммуВзаиморасчетовВТабличнойЧасти(
Валюта,
Дата,
РасшифровкаПлатежа,
Организация);
ДополненныеПараметры = ВзаиморасчетыСервер.ДополненныеПараметрыМеханизма(ЭтотОбъект);
Для Каждого СтруктураПараметров Из ДополненныеПараметры.МассивПараметров Цикл
Если СтруктураПараметров.Организация <> Справочники.Организации.УправленческаяОрганизация Тогда
Продолжить;
КонецЕсли;
Если ЭтоНовый() Тогда
СсылкаНового = ПолучитьСсылкуНового();
Если Не ЗначениеЗаполнено(СсылкаНового) Тогда
СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Ссылка).ПолучитьСсылку();
УстановитьСсылкуНового(СсылкаНового);
КонецЕсли;
СтруктураПараметров.Вставить("СсылкаНового", СсылкаНового);
КонецЕсли;
РеквизитыОбъектаРасчетов = ОбъектыРасчетовСервер.РеквизитыОбъектаРасчетовПоСтруктуре(ЭтотОбъект,Ссылка,СтруктураПараметров, РежимЗаписи);
ОбъектРасчетовПоУпрОрганизации = ОбъектыРасчетовСервер.ПроверитьСоздатьОбъектРасчетов(РеквизитыОбъектаРасчетов);
Если ОбъектыРасчетовСервер.ЕстьОбъектыРасчетовПоУпрОрганизации(Ссылка, РасшифровкаПлатежа) Тогда
Для Каждого Стр Из РасшифровкаПлатежа Цикл
Если НЕ ЗначениеЗаполнено(Стр.ОбъектРасчетов) Тогда
Стр.ОбъектРасчетов = ОбъектРасчетовПоУпрОрганизации;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ОбъектРасчетовУпр) Тогда
ОбъектРасчетовУпр = Справочники.ОбъектыРасчетов.ПустаяСсылка();
КонецЕсли;
ИначеЕсли Не ЗначениеЗаполнено(ОбъектРасчетовУпр) Тогда
Счетчик = РасшифровкаПлатежа.Количество();
Пока Счетчик > 0 Цикл
Счетчик = Счетчик - 1;
Если РасшифровкаПлатежа[Счетчик].ОбъектРасчетов = ОбъектРасчетовПоУпрОрганизации Тогда
РасшифровкаПлатежа.Удалить(Счетчик);
КонецЕсли;
КонецЦикла;
ОбъектРасчетовУпр = ОбъектРасчетовПоУпрОрганизации;
КонецЕсли;
КонецЦикла;
ИначеЕсли Организация <> Справочники.Организации.УправленческаяОрганизация Тогда
Если ЗначениеЗаполнено(ОбъектРасчетовУпр) Тогда
ОбъектРасчетовУпр = Справочники.ОбъектыРасчетов.ПустаяСсылка();
КонецЕсли;
ОбъектРасчетовПоУпрОрганизации = ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(Ссылка,
Справочники.Организации.УправленческаяОрганизация, Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом);
Если ЗначениеЗаполнено(ОбъектРасчетовПоУпрОрганизации) Тогда
ОбъектыРасчетовСервер.ПроверитьУдалитьОбъектРасчетов(ОбъектРасчетовПоУпрОрганизации, Отказ, Истина);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
ЗаполнитьВидыЗапасов(Отказ);
НоменклатураПартнеровСервер.ЗаполнитьПустоеСопоставлениеВНоменклатуреПартнераПоНоменклатуреИБ(Товары, Отказ);
ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
ВидыЗапасов.Очистить();
КонецЕсли;
ТекущийИтог = 0;
Для каждого СтрокаТЧ Из Товары Цикл
ТекущийИтог = ТекущийИтог + СтрокаТЧ.СуммаСНДС;
СтрокаТЧ.СуммаИтог = ТекущийИтог;
КонецЦикла;
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "Товары,ВидыЗапасов");
ПриобретениеТоваровУслугЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ЭтотОбъект);
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриПроведении(ПараметрыРегистрации);
ДоставкаТоваров.ОтразитьСостояниеДоставки(Ссылка, Отказ);
ПриобретениеТоваровУслугЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ЭтотОбъект);
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриУдаленииПроведения(ПараметрыРегистрации);
ДоставкаТоваров.ОтразитьСостояниеДоставки(Ссылка, Отказ, Истина);
ПриобретениеТоваровУслугЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
Согласован = Ложь;
ПоступлениеПоЗаказам = Ложь;
ЗаказПоставщику = Документы.ЗаказПоставщику.ПустаяСсылка();
ДатаВходящегоДокумента = Дата(1,1,1);
НомерВходящегоДокумента = "";
СостояниеЗаполненияМногооборотнойТары = Перечисления.СостоянияЗаполненияМногооборотнойТары.ПустаяСсылка();
АвансовыйОтчет = Неопределено;
НоваяМеханикаСозданияЗаявленийОВвозе = Истина;
Если ЗначениеЗаполнено(Соглашение) Тогда
РеквизитыСоглашения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Соглашение, "СрокВозвратаМногооборотнойТары, РассчитыватьДатуВозвратаТарыПоКалендарю, КалендарьВозвратаТары");
ДатаВозвратаМногооборотнойТары = МногооборотнаяТараСервер.РассчитатьДатуВозвратаМногооборотнойТары(
ЭтотОбъект,
РеквизитыСоглашения.СрокВозвратаМногооборотнойТары,
РеквизитыСоглашения.РассчитыватьДатуВозвратаТарыПоКалендарю,
РеквизитыСоглашения.КалендарьВозвратаТары);
Иначе
ДатаВозвратаМногооборотнойТары = Дата(1,1,1);
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьВыплатыСамозанятым") Тогда
ОперацияССамозанятым = Ложь;
КонецЕсли;
Для Каждого ТекСтрока Из Товары Цикл
ТекСтрока.ЗаказПоставщику = Документы.ЗаказПоставщику.ПустаяСсылка();
ТекСтрока.КодСтроки = 0;
ТекСтрока.ВидЗапасов = Справочники.ВидыЗапасов.ПустаяСсылка();
ТекСтрока.ИдентификаторСтроки = "";
ТекСтрока.НомерВходящегоДокумента = "";
ТекСтрока.ДатаВходящегоДокумента = Неопределено;
ТекСтрока.НаименованиеВходящегоДокумента = "";
КонецЦикла;
Серии.Очистить();
ВидыЗапасов.Очистить();
ИнициализироватьДокумент();
ПересчитатьКоличествоРНПТ();
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "Товары,ВидыЗапасов");
ПриобретениеТоваровУслугЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
Автор = Пользователи.ТекущийПользователь();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
Если ЗначениеЗаполнено(АвансовыйОтчет)
И Не ДополнительныеСвойства.Свойство("НеОбновлятьАвансовыйОтчет") Тогда
ТаблицыДляДвижений = ПроведениеДокументов.ДанныеДокументаДляПроведения(АвансовыйОтчет, "РеестрДокументов");
РегистрыСведений.РеестрДокументов.ЗаписатьДанные(ТаблицыДляДвижений, АвансовыйОтчет, Неопределено, Отказ);
КонецЕсли;
Если ДополнительныеСвойства.Свойство("АвансовыйОтчет")
И Не ДополнительныеСвойства.Свойство("НеОбновлятьАвансовыйОтчет")
И ЗначениеЗаполнено(ДополнительныеСвойства.АвансовыйОтчет)
И ДополнительныеСвойства.АвансовыйОтчет <> АвансовыйОтчет Тогда
ТаблицыДляДвижений = ПроведениеДокументов.ДанныеДокументаДляПроведения(
ДополнительныеСвойства.АвансовыйОтчет, "РеестрДокументов");
РегистрыСведений.РеестрДокументов.ЗаписатьДанные(
ТаблицыДляДвижений,
ДополнительныеСвойства.АвансовыйОтчет,
Неопределено,
Отказ);
КонецЕсли;
ПриобретениеТоваровУслугЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ПроверитьПараметрыЗаписиДляЗакупкиПодПринципала(НомерСтроки, АдресОшибки, Назначение, Отказ)
УстановитьПривилегированныйРежим(Истина);
Если Не ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru='Для номенклатуры %1, закупаемой по агентской схеме, можно использовать только операцию ""Закупка у поставщика""'"),
АдресОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки ,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары",НомерСтроки, "Назначение"),
,
Отказ);
КонецЕсли;
ВалютаДоговораНазначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Назначение, "Договор.ВалютаВзаиморасчетов");
Если ВалютаДоговораНазначения <> Валюта Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru='Для номенклатуры %1, закупаемой по агентской схеме, валюта, указанная в договоре назначения, должна совпадать с валютой документа'"),
АдресОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки ,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", НомерСтроки, "Назначение"),
,
Отказ);
КонецЕсли;
ОрганизацияДоговораНазначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Назначение, "Договор.Организация");
Если ОрганизацияДоговораНазначения <> Организация Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru='Для номенклатуры %1, закупаемой по агентской схеме, организация, указанная в договоре назначения, должна совпадать с организацией документа'"),
АдресОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки ,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", НомерСтроки, "Назначение"),
,
Отказ);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьДокументНаОснованииЗаказаПоставщику(Знач ДокументОснование, Знач СкладПоступления = Неопределено, РеквизитыЗаказа = Неопределено)
ТипОснования = ТипЗнч(ДокументОснование);
ЗаполнятьПоОстаткам = Ложь;
ПоступлениеПоЗаказам = Истина;
Если ТипОснования = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПоставщику.Сделка КАК Сделка,
| ЗаказПоставщику.Соглашение.РегистрироватьЦеныПоставщика КАК РегистрироватьЦеныПоставщика,
| ЗаказПоставщику.Ссылка КАК ЗаказПоставщику,
| ЗаказПоставщику.Партнер КАК Партнер,
| ЗаказПоставщику.Контрагент КАК Контрагент,
| ЗаказПоставщику.Договор КАК Договор,
| ЗаказПоставщику.Организация КАК Организация,
| ЗаказПоставщику.Соглашение КАК Соглашение,
| ЗаказПоставщику.Валюта КАК Валюта,
| ЗаказПоставщику.Валюта КАК ВалютаВзаиморасчетов,
| ВЫБОР
| КОГДА ЗаказПоставщику.Склад.ЭтоГруппа
| И ЗаказПоставщику.Склад.ВыборГруппы = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ЗаказПоставщику.Склад
| КОНЕЦ КАК Склад,
| ВЫБОР
| КОГДА ЗаказПоставщику.Склад.ЭтоГруппа
| И ЗаказПоставщику.Склад.ВыборГруппы = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноВыбиратьГруппуСкладов,
| ЗаказПоставщику.ФормаОплаты КАК ФормаОплаты,
| ЗаказПоставщику.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказПоставщику.НалогообложениеНДС КАК НалогообложениеНДС,
| ЗаказПоставщику.ЗакупкаПодДеятельность КАК ЗакупкаПодДеятельность,
| ЗаказПоставщику.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаказПоставщику.Статус КАК СтатусДокумента,
| ЗаказПоставщику.Подразделение КАК Подразделение,
| ЗаказПоставщику.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ЗаказПоставщику.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ЗаказПоставщику.СрокВозвратаМногооборотнойТары КАК СрокВозвратаМногооборотнойТары,
| ЗаказПоставщику.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| ЕСТЬNULL(ЗаказПоставщику.Соглашение.РассчитыватьДатуВозвратаТарыПоКалендарю,Ложь) КАК РассчитыватьДатуВозвратаТарыПоКалендарю,
| ЕСТЬNULL(ЗаказПоставщику.Соглашение.КалендарьВозвратаТары,ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)) КАК КалендарьВозвратаТары,
| НЕ ЗаказПоставщику.Проведен КАК ЕстьОшибкиПроведен,
| ВЫБОР
| КОГДА ЗаказПоставщику.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Подтвержден)
| ИЛИ ЗаказПоставщику.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| ЗаказПоставщику.БанковскийСчет КАК БанковскийСчетОрганизации,
| ЗаказПоставщику.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказПоставщику.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ЗаказПоставщику.ОплатаВВалюте КАК ОплатаВВалюте,
| ЗаказПоставщику.РегистрироватьЦеныПоставщика,
| ЗаказПоставщику.ОперацияССамозанятым КАК ОперацияССамозанятым
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаказыОстатки.Склад КАК Склад
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Остатки(, ЗаказПоставщику = &ДокументОснование) КАК ЗаказыОстатки";
РезультатЗапроса = Запрос.ВыполнитьПакет();
РеквизитыЗаказа = РезультатЗапроса[0].Выбрать();
РеквизитыЗаказа.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
РеквизитыЗаказа.ЗаказПоставщику,
РеквизитыЗаказа.СтатусДокумента,
РеквизитыЗаказа.ЕстьОшибкиПроведен,
РеквизитыЗаказа.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыЗаказа);
ДатаВозвратаМногооборотнойТары = МногооборотнаяТараСервер.РассчитатьДатуВозвратаМногооборотнойТары(
ЭтотОбъект,
РеквизитыЗаказа.СрокВозвратаМногооборотнойТары,
РеквизитыЗаказа.РассчитыватьДатуВозвратаТарыПоКалендарю,
РеквизитыЗаказа.КалендарьВозвратаТары);
Если РеквизитыЗаказа.ЗапрещеноВыбиратьГруппуСкладов Тогда
МассивСкладов = РезультатЗапроса[1].Выгрузить().ВыгрузитьКолонку("Склад");
КонецЕсли;
ИначеЕсли ТипОснования = Тип("Массив") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыЗаказа);
Валюта = ВалютаВзаиморасчетов;
ДатаВозвратаМногооборотнойТары = МногооборотнаяТараСервер.РассчитатьДатуВозвратаМногооборотнойТары(
ЭтотОбъект,
РеквизитыЗаказа.СрокВозвратаМногооборотнойТары,
РеквизитыЗаказа.РассчитыватьДатуВозвратаТарыПоКалендарю,
РеквизитыЗаказа.КалендарьВозвратаТары);
Если РеквизитыЗаказа.ЗапрещеноВыбиратьГруппуСкладов Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивДокументов", ДокументОснование);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаказыОстатки.Склад КАК Склад
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Остатки(
| ,
| ЗаказПоставщику В (&МассивДокументов)
|) КАК ЗаказыОстатки
|";
РезультатЗапросаПоСкладам = Запрос.Выполнить();
МассивСкладов = РезультатЗапросаПоСкладам.Выгрузить().ВыгрузитьКолонку("Склад");
Склад = РеквизитыЗаказа.СкладПоступления;
КонецЕсли;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчетОрганизации, БанковскийСчетКонтрагента);
КонецЕсли;
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
Если ИспользоватьНаправленияДеятельности И НЕ (ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам) Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(НаправлениеДеятельности, Соглашение, Договор);
КонецЕсли;
Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным Тогда
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(Соглашение);
ЗаполнитьУсловияРасчетов(УсловияЗакупок);
КонецЕсли;
Если Не ЗначениеЗаполнено(СкладПоступления) Тогда
Если РеквизитыЗаказа.ЗапрещеноВыбиратьГруппуСкладов Тогда
Если МассивСкладов.Количество() = 0 Тогда
ЗаполнятьПоОстаткам = Истина;
ИначеЕсли МассивСкладов.Количество() = 1 Тогда
СкладПоступления = МассивСкладов[0];
Склад = СкладПоступления;
ЗаполнятьПоОстаткам = Истина;
ИначеЕсли МассивСкладов.Количество() = 2 Тогда
Если ЗначениеЗаполнено(МассивСкладов[0]) Или
ЗначениеЗаполнено(МассивСкладов[1]) Тогда
СкладПоступления = ?(ЗначениеЗаполнено(МассивСкладов[0]), МассивСкладов[0], МассивСкладов[1]);
Склад = СкладПоступления;
ЗаполнятьПоОстаткам = Истина;
КонецЕсли;
КонецЕсли;
Иначе
ЗаполнятьПоОстаткам = Истина;
СкладПоступления = Склад;
КонецЕсли;
Иначе
Если РеквизитыЗаказа.ЗапрещеноВыбиратьГруппуСкладов Тогда
Склад = СкладПоступления;
Иначе
СкладПоступления = Склад;
КонецЕсли;
ЗаполнятьПоОстаткам = Истина;
КонецЕсли;
Если ЗаполнятьПоОстаткам Тогда
Если ТипОснования = Тип("Массив") Тогда
МассивЗаказов = ДокументОснование;
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(ЗаказПоставщику);
КонецЕсли;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьПоОстаткамЗаказов(
ЭтотОбъект,
Товары,
?(СкладПоступления=Неопределено, Справочники.Склады.ПустаяСсылка(), СкладПоступления),
МассивЗаказов);
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(ЗаказПоставщику, Товары, "ЗаказПоставщику");
Если Не ЗначениеЗаполнено(ЗаказПоставщику)
И МассивЗаказов.Количество() = 1
И ТипЗнч(МассивЗаказов[0]) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
ЗаказПоставщику = МассивЗаказов[0];
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам") Тогда
Сделка = Справочники.СделкиСКлиентами.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииВозвратаТоваровПоставщику(Знач ДокументОснование)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("КорректировкаОстатковРНПТ", КорректировкаОстатковРНПТ);
Запрос.Текст =
"ВЫБРАТЬ
| ВозвратТоваровПоставщику.Ссылка КАК Ссылка,
| ВозвратТоваровПоставщику.Организация КАК Организация,
| ВозвратТоваровПоставщику.Партнер КАК Партнер,
| ВозвратТоваровПоставщику.Контрагент КАК Контрагент,
| ВозвратТоваровПоставщику.Подразделение КАК Подразделение,
| ВозвратТоваровПоставщику.Валюта КАК Валюта,
| ВозвратТоваровПоставщику.Валюта КАК ВалютаВзаиморасчетов,
| ВозвратТоваровПоставщику.СуммаДокумента КАК СуммаДокумента,
| ВозвратТоваровПоставщику.СуммаДокумента КАК СуммаВзаиморасчетов,
| ВозвратТоваровПоставщику.Склад КАК Склад,
| ВозвратТоваровПоставщику.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ВозвратТоваровПоставщику.НалогообложениеНДС КАК НалогообложениеНДС,
| ВозвратТоваровПоставщику.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ВозвратТоваровПоставщику.Грузоотправитель КАК Грузоотправитель,
| ВозвратТоваровПоставщику.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя,
| ВозвратТоваровПоставщику.Договор КАК Договор,
| ВозвратТоваровПоставщику.Соглашение КАК Соглашение,
| ВЫБОР
| КОГДА
| ВозвратТоваровПоставщику.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровКомитенту)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика)
| КОНЕЦ КАК ХозяйственнаяОперация,
| ВозвратТоваровПоставщику.ВозвратПринятойМногооборотнойТары КАК ВернутьМногооборотнуюТару,
| ВозвратТоваровПоставщику.ПредусмотренЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| ВозвратТоваровПоставщику.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВозвратТоваровПоставщику.ОплатаВВалюте КАК ОплатаВВалюте,
|
| НЕ ВозвратТоваровПоставщику.Проведен КАК ЕстьОшибкиПроведен,
|
| ВозвратТоваровПоставщику.Товары.(
| НоменклатураПартнера КАК НоменклатураПартнера,
| Номенклатура КАК Номенклатура,
| Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА &КорректировкаОстатковРНПТ
| ТОГДА Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА &КорректировкаОстатковРНПТ
| ТОГДА СтатусУказанияСерий
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК СтатусУказанияСерий,
| ВЫБОР
| КОГДА &КорректировкаОстатковРНПТ
| ТОГДА Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Упаковка КАК Упаковка,
| КоличествоУпаковок КАК КоличествоУпаковок,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| СуммаСНДС КАК СуммаСНДС,
| Ссылка.Склад КАК Склад
| ) КАК Товары,
|
| ВозвратТоваровПоставщику.Серии.(
| Номенклатура КАК Номенклатура,
| Характеристика КАК Характеристика,
| Серия КАК Серия,
| ВЫБОР
| КОГДА &КорректировкаОстатковРНПТ
| ТОГДА Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ВЫБОР
| КОГДА &КорректировкаОстатковРНПТ
| ТОГДА Ссылка.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| Количество КАК Количество
| ) КАК Серии
|
|ИЗ
| Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
|ГДЕ
| ВозвратТоваровПоставщику.Ссылка = &ДокументОснование";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.Ссылка,
,
Выборка.ЕстьОшибкиПроведен,);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Товары.Загрузить(Выборка.Товары.Выгрузить());
Серии.Загрузить(Выборка.Серии.Выгрузить());
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииСоглашенияСПоставщиком(Знач ДокументОснование,
Знач СкладПоступления = Неопределено,
Знач ХозяйственнаяОперацияПриемки = Неопределено)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СоглашениеСПоставщиком.Ссылка КАК Соглашение,
| СоглашениеСПоставщиком.Партнер КАК Партнер,
| СоглашениеСПоставщиком.Статус КАК СтатусДокумента,
| ВЫБОР
| КОГДА СоглашениеСПоставщиком.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| ВЫБОР
| КОГДА СоглашениеСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоАгентскиеУслуги,
| СоглашениеСПоставщиком.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СоглашениеСПоставщиком.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Справочник.СоглашенияСПоставщиками КАК СоглашениеСПоставщиком
|ГДЕ
| СоглашениеСПоставщиком.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТоварыКОформлениюПоступленияОстатки.Склад,
| ТоварыКОформлениюПоступленияОстатки.ДокументПоступления,
| ТоварыКОформлениюПоступленияОстатки.Номенклатура,
| ТоварыКОформлениюПоступленияОстатки.Характеристика,
| ТоварыКОформлениюПоступленияОстатки.Назначение,
| ТоварыКОформлениюПоступленияОстатки.Серия,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток КАК Количество,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток КАК КоличествоУпаковок
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(
| ,
| ДокументПоступления = &ДокументОснование
| И ВЫБОР
| КОГДА &СкладУказан
| ТОГДА Склад = &СкладПоступления
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И (НЕ &ОтборПоХозяйственнойОперации
| ИЛИ ХозяйственнаяОперация В(&ХозяйственнаяОперация))) КАК ТоварыКОформлениюПоступленияОстатки
|ГДЕ
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток > 0";
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("СкладПоступления", СкладПоступления);
Запрос.УстановитьПараметр("СкладУказан", ЗначениеЗаполнено(СкладПоступления));
Запрос.УстановитьПараметр("ОтборПоХозяйственнойОперации", ЗначениеЗаполнено(ХозяйственнаяОперацияПриемки));
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперацияПриемки);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив;
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыСоглашенийСПоставщиками.Действует);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(Выборка.Соглашение,
Выборка.СтатусДокумента,
,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСоглашения(Ложь, Выборка.ЭтоАгентскиеУслуги);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Если ЗначениеЗаполнено(ХозяйственнаяОперацияПриемки) Тогда
ХозяйственнаяОперация = ХозяйственнаяОперацияПриемки;
КонецЕсли;
Если ЗначениеЗаполнено(СкладПоступления) Тогда
Склад = СкладПоступления;
КонецЕсли;
Товары.Загрузить(РезультатЗапроса[1].Выгрузить());
ЗаполнитьУсловияЗакупокПоСоглашению();
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииАктаПриемкиПослеОтгрузки(Знач ДанныеЗаполнения)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВозвратТоваровПоставщику.Ссылка КАК Ссылка,
| ВозвратТоваровПоставщику.Соглашение КАК Соглашение,
| ВозвратТоваровПоставщику.Организация КАК Организация,
| ВозвратТоваровПоставщику.Партнер КАК Партнер,
| ВозвратТоваровПоставщику.Контрагент КАК Контрагент,
| ВозвратТоваровПоставщику.Валюта КАК Валюта,
| ВозвратТоваровПоставщику.Сделка КАК Сделка,
| ВозвратТоваровПоставщику.Подразделение КАК Подразделение,
| ВозвратТоваровПоставщику.Склад КАК Склад,
| ВЫБОР
| КОГДА ВозвратТоваровПоставщику.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровПоставщику) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика)
| КОГДА ВозвратТоваровПоставщику.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровКомитенту) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| КОНЕЦ КАК ХозяйственнаяОперация,
| ВозвратТоваровПоставщику.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ВозвратТоваровПоставщику.НалогообложениеНДС КАК НалогообложениеНДС,
| ВозвратТоваровПоставщику.Договор КАК Договор,
| ВозвратТоваровПоставщику.ВозвратПринятойМногооборотнойТары КАК ВозвратПринятойМногооборотнойТары,
| ВозвратТоваровПоставщику.ПредусмотренЗалогЗаТару КАК ПредусмотренЗалогЗаТару,
| НЕ ВозвратТоваровПоставщику.Проведен КАК ЕстьОшибкиПроведен,
| ВозвратТоваровПоставщику.НаправлениеДеятельности КАК НаправлениеДеятельности
|ИЗ
| Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
|ГДЕ
| ВозвратТоваровПоставщику.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| АктОРасхожденияхПослеОтгрузкиТовары.Номенклатура КАК Номенклатура,
| АктОРасхожденияхПослеОтгрузкиТовары.Характеристика КАК Характеристика,
| АктОРасхожденияхПослеОтгрузкиТовары.Серия КАК Серия,
| АктОРасхожденияхПослеОтгрузкиТовары.Упаковка КАК Упаковка,
| АктОРасхожденияхПослеОтгрузкиТовары.Реализация КАК ДокументРеализации,
| АктОРасхожденияхПослеОтгрузкиТовары.Цена КАК Цена,
| АктОРасхожденияхПослеОтгрузкиТовары.СтавкаНДС КАК СтавкаНДС,
| СУММА(АктОРасхожденияхПослеОтгрузкиТовары.Количество - АктОРасхожденияхПослеОтгрузкиТовары.КоличествоПоДокументу) КАК Количество,
| СУММА(АктОРасхожденияхПослеОтгрузкиТовары.КоличествоУпаковок - АктОРасхожденияхПослеОтгрузкиТовары.КоличествоУпаковокПоДокументу) КАК КоличествоУпаковок,
| СУММА(АктОРасхожденияхПослеОтгрузкиТовары.Сумма - АктОРасхожденияхПослеОтгрузкиТовары.СуммаПоДокументу) КАК Сумма,
| СУММА(АктОРасхожденияхПослеОтгрузкиТовары.СуммаНДС - АктОРасхожденияхПослеОтгрузкиТовары.СуммаНДСПоДокументу) КАК СуммаНДС,
| СУММА(АктОРасхожденияхПослеОтгрузкиТовары.СуммаСНДС - АктОРасхожденияхПослеОтгрузкиТовары.СуммаСНДСПоДокументу) КАК СуммаСНДС
|ИЗ
| Документ.АктОРасхожденияхПослеОтгрузки.Товары КАК АктОРасхожденияхПослеОтгрузкиТовары
|ГДЕ
| АктОРасхожденияхПослеОтгрузкиТовары.Ссылка = &АктОРасхождениях
| И АктОРасхожденияхПослеОтгрузкиТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеОтгрузки.ВозвратПерепоставленного)
| И АктОРасхожденияхПослеОтгрузкиТовары.Реализация = &ДокументОснование
| И АктОРасхожденияхПослеОтгрузкиТовары.КоличествоУпаковок - АктОРасхожденияхПослеОтгрузкиТовары.КоличествоУпаковокПоДокументу > 0
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия,
| Упаковка,
| Цена,
| СтавкаНДС,
| Реализация
|;
|
|
|ВЫБРАТЬ
| АктОРасхожденияхПослеОтгрузкиСерии.Номенклатура КАК Номенклатура,
| АктОРасхожденияхПослеОтгрузкиСерии.Характеристика КАК Характеристика,
| АктОРасхожденияхПослеОтгрузкиСерии.Серия КАК Серия,
| АктОРасхожденияхПослеОтгрузкиСерии.Назначение КАК Назначение,
| АктОРасхожденияхПослеОтгрузкиСерии.Склад КАК Склад,
| СУММА(АктОРасхожденияхПослеОтгрузкиСерии.Количество - АктОРасхожденияхПослеОтгрузкиСерии.КоличествоПоДокументу) КАК Количество
|ИЗ
| Документ.АктОРасхожденияхПослеОтгрузки.Серии КАК АктОРасхожденияхПослеОтгрузкиСерии
|ГДЕ
| АктОРасхожденияхПослеОтгрузкиСерии.Ссылка = &АктОРасхождениях
| И АктОРасхожденияхПослеОтгрузкиСерии.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеОтгрузки.ВозвратПерепоставленного)
| И АктОРасхожденияхПослеОтгрузкиСерии.Реализация = &ДокументОснование
| И АктОРасхожденияхПослеОтгрузкиСерии.Количество - АктОРасхожденияхПослеОтгрузкиСерии.КоличествоПоДокументу > 0
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия,
| Склад,
| Назначение
|;");
Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения.ОснованиеАкта);
Запрос.УстановитьПараметр("АктОРасхождениях", ДанныеЗаполнения.АктОРасхождениях);
ПакетЗапросов = Запрос.ВыполнитьПакет();
ВыборкаШапка = ПакетЗапросов[0].Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.Ссылка,
,
ВыборкаШапка.ЕстьОшибкиПроведен,
,
);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
ДопоступлениеПоДокументу = ДанныеЗаполнения.ОснованиеАкта;
ТаблицаТоваров = ПакетЗапросов[1].Выгрузить();
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтроке(
НоваяСтрока,
Ложь,
Ложь,
Ложь,
ВыборкаШапка.ЦенаВключаетНДС);
КонецЦикла;
Серии.Загрузить(ПакетЗапросов[2].Выгрузить());
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииАктаПриемкиПослеПоступления(ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ПриобретениеТоваровУслуг.Ссылка КАК ДокументПоступления,
| АктОРасхожденияхПослеПриемки.Ссылка КАК АктОРасхождениях,
| ПриобретениеТоваровУслуг.Соглашение КАК Соглашение,
| ПриобретениеТоваровУслуг.Организация КАК Организация,
| ПриобретениеТоваровУслуг.Партнер КАК Партнер,
| ПриобретениеТоваровУслуг.Контрагент КАК Контрагент,
| ПриобретениеТоваровУслуг.Валюта КАК Валюта,
| ПриобретениеТоваровУслуг.Сделка КАК Сделка,
| ПриобретениеТоваровУслуг.Подразделение КАК Подразделение,
| ПриобретениеТоваровУслуг.Склад КАК Склад,
| ПриобретениеТоваровУслуг.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПриобретениеТоваровУслуг.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ПриобретениеТоваровУслуг.НалогообложениеНДС КАК НалогообложениеНДС,
| ПриобретениеТоваровУслуг.Договор КАК Договор,
| ПриобретениеТоваровУслуг.Менеджер КАК Менеджер,
| ПриобретениеТоваровУслуг.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ПриобретениеТоваровУслуг.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| НЕ АктОРасхожденияхПослеПриемки.Проведен КАК ЕстьОшибкиПроведенАктОРасхождениях,
| АктОРасхожденияхПослеПриемки.СпособОтраженияРасхождений КАК СпособОтраженияРасхождений,
| АктОРасхожденияхПослеПриемки.Статус КАК СтатусАктаОРасхождениях,
| НЕ АктОРасхожденияхПослеПриемки.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению), ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано)) КАК ЕстьОшибкиСтатусАкт,
| НЕ ПриобретениеТоваровУслуг.Проведен КАК ЕстьОшибкиПроведенДокументПоступления
|ИЗ
| Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки КАК АктОРасхожденияхПослеПриемки
| ПО (ИСТИНА)
|ГДЕ
| ПриобретениеТоваровУслуг.Ссылка = &ДокументОснование
| И АктОРасхожденияхПослеПриемки.Ссылка = &АктОРасхождениях
|;
|
|
|ВЫБРАТЬ
| АктОРасхожденияхПослеПриемки.Номенклатура КАК Номенклатура,
| АктОРасхожденияхПослеПриемки.НоменклатураПартнера КАК НоменклатураПартнера,
| АктОРасхожденияхПослеПриемки.Характеристика КАК Характеристика,
| АктОРасхожденияхПослеПриемки.Назначение КАК Назначение,
| АктОРасхожденияхПослеПриемки.Серия КАК Серия,
| АктОРасхожденияхПослеПриемки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| АктОРасхожденияхПослеПриемки.Упаковка КАК Упаковка,
| АктОРасхожденияхПослеПриемки.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| АктОРасхожденияхПослеПриемки.Цена КАК Цена,
| АктОРасхожденияхПослеПриемки.СтавкаНДС КАК СтавкаНДС,
| АктОРасхожденияхПослеПриемки.ЗаказПоставщику КАК ЗаказПоставщику,
| АктОРасхожденияхПослеПриемки.КодСтроки КАК КодСтроки,
| АктОРасхожденияхПослеПриемки.Склад КАК Склад,
| АктОРасхожденияхПослеПриемки.СтатьяРасходов КАК СтатьяРасходов,
| АктОРасхожденияхПослеПриемки.АналитикаРасходов КАК АналитикаРасходов,
| АктОРасхожденияхПослеПриемки.Подразделение КАК Подразделение,
| АктОРасхожденияхПослеПриемки.Сделка КАК Сделка,
| АктОРасхожденияхПослеПриемки.НомерГТД КАК НомерГТД,
| АктОРасхожденияхПослеПриемки.Действие КАК ТоварыДействие,
|
| СУММА(АктОРасхожденияхПослеПриемки.КоличествоПоДокументу - АктОРасхожденияхПослеПриемки.Количество) КАК Количество,
| СУММА(АктОРасхожденияхПослеПриемки.КоличествоУпаковокПоДокументу - АктОРасхожденияхПослеПриемки.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(АктОРасхожденияхПослеПриемки.СуммаПоДокументу - АктОРасхожденияхПослеПриемки.Сумма) КАК Сумма,
| СУММА(АктОРасхожденияхПослеПриемки.СуммаНДСПоДокументу - АктОРасхожденияхПослеПриемки.СуммаНДС) КАК СуммаНДС,
| СУММА(АктОРасхожденияхПослеПриемки.СуммаСНДСПоДокументу - АктОРасхожденияхПослеПриемки.СуммаСНДС) КАК СуммаСНДС
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Товары КАК АктОРасхожденияхПослеПриемки
|ГДЕ
| АктОРасхожденияхПослеПриемки.Ссылка = &АктОРасхождениях
| И АктОРасхожденияхПослеПриемки.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)
| И АктОРасхожденияхПослеПриемки.ДокументОснование = &ДокументОснование
| И АктОРасхожденияхПослеПриемки.КоличествоУпаковокПоДокументу - АктОРасхожденияхПослеПриемки.КоличествоУпаковок > 0
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| НоменклатураПартнера,
| Характеристика,
| Назначение,
| Серия,
| СтатусУказанияСерий,
| Упаковка,
| ВидЦеныПоставщика,
| Цена,
| СтавкаНДС,
| ЗаказПоставщику,
| КодСтроки,
| Склад,
| СтатьяРасходов,
| АналитикаРасходов,
| Подразделение,
| Сделка,
| НомерГТД,
| Действие
|
|;
|
|
|ВЫБРАТЬ
| АктОРасхожденияхПослеПриемкиСерии.Номенклатура КАК Номенклатура,
| АктОРасхожденияхПослеПриемкиСерии.Характеристика КАК Характеристика,
| АктОРасхожденияхПослеПриемкиСерии.Серия КАК Серия,
| АктОРасхожденияхПослеПриемкиСерии.Назначение КАК Назначение,
| АктОРасхожденияхПослеПриемкиСерии.Склад КАК Склад,
| СУММА( АктОРасхожденияхПослеПриемкиСерии.КоличествоПоДокументу - АктОРасхожденияхПослеПриемкиСерии.Количество) КАК Количество
|ИЗ
| Документ.АктОРасхожденияхПослеПриемки.Серии КАК АктОРасхожденияхПослеПриемкиСерии
|ГДЕ
| АктОРасхожденияхПослеПриемкиСерии.Ссылка = &АктОРасхождениях
| И АктОРасхожденияхПослеПриемкиСерии.Действие = ЗНАЧЕНИЕ(Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку)
| И АктОРасхожденияхПослеПриемкиСерии.ДокументОснование = &ДокументОснование
| И АктОРасхожденияхПослеПриемкиСерии.КоличествоПоДокументу - АктОРасхожденияхПослеПриемкиСерии.Количество > 0
|
|СГРУППИРОВАТЬ ПО
| АктОРасхожденияхПослеПриемкиСерии.Номенклатура,
| АктОРасхожденияхПослеПриемкиСерии.Характеристика,
| АктОРасхожденияхПослеПриемкиСерии.Серия,
| АктОРасхожденияхПослеПриемкиСерии.Склад,
| АктОРасхожденияхПослеПриемкиСерии.Назначение
|;
|
|
|";
Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения.ОснованиеАкта);
Запрос.УстановитьПараметр("АктОРасхождениях", ДанныеЗаполнения.АктОРасхождениях);
УстановитьПривилегированныйРежим(Истина);
ПакетЗапросов = Запрос.ВыполнитьПакет();
ВыборкаШапка = ПакетЗапросов[0].Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.ДокументПоступления,
,
ВыборкаШапка.ЕстьОшибкиПроведенДокументПоступления,
,
);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.АктОРасхождениях,
ВыборкаШапка.СтатусАктаОРасхождениях,
ВыборкаШапка.ЕстьОшибкиПроведенАктОРасхождениях,
ВыборкаШапка.ЕстьОшибкиСтатусАкт,
РасхожденияСервер.МассивДопустимыхСтатусовАктовОРасхожденияхПриСозданииНаОсновании());
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВыборкаШапка);
ДопоступлениеПоДокументу = ДанныеЗаполнения.ОснованиеАкта;
ТаблицаТоваров = ПакетЗапросов[1].Выгрузить();
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
Ценообразование.ПересчитатьСуммыВСтроке(
НоваяСтрока,
Ложь,
Ложь,
Ложь,
ВыборкаШапка.ЦенаВключаетНДС);
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику) Тогда
ПоступлениеПоЗаказам = Истина;
КонецЕсли;
ЭтоДвухходовка = ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупкиБезОтборов().Найти(ХозяйственнаяОперация) <> Неопределено;
Если ВыборкаШапка.СпособОтраженияРасхождений = Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления
И ТекСтрока.ТоварыДействие = Перечисления.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьНедостачуИОжидатьДопоставку
И Не ЭтоДвухходовка Тогда
НоваяСтрока.КодСтроки = 0;
КонецЕсли;
КонецЦикла;
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(ЗаказПоставщику, Товары, "ЗаказПоставщику");
Серии.Загрузить(ПакетЗапросов[2].Выгрузить());
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииОтчетаПереработчика2_5(ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетПереработчика.Организация КАК Организация,
| ОтчетПереработчика.Валюта КАК Валюта,
| ОтчетПереработчика.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ОтчетПереработчика.Менеджер КАК Менеджер,
| ОтчетПереработчика.Контрагент КАК Контрагент,
| ОтчетПереработчика.Партнер КАК Партнер,
| ОтчетПереработчика.Договор КАК Договор,
| ОтчетПереработчика.Подразделение КАК Подразделение,
| ОтчетПереработчика.ЗакупкаПодДеятельность КАК ЗакупкаПодДеятельность,
| ОтчетПереработчика.ОплатаВВалюте КАК ОплатаВВалюте,
| ОтчетПереработчика.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтчетПереработчика2_5 КАК ОтчетПереработчика
|ГДЕ
| ОтчетПереработчика.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Шапка = Результат.Выбрать();
Шапка.Следующий();
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Шапка, , "ХозяйственнаяОперация");
Если Шапка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5 Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументПоОтбору(Знач ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("Склад") Тогда
Склад = ДанныеЗаполнения.Склад;
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Партнер") Тогда
Партнер = ДанныеЗаполнения.Партнер;
ЗаполнитьУсловияЗакупокПоУмолчанию();
КонецЕсли;
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
Подразделение = ЗначениеНастроекПовтИсп.ПодразделениеПользователя(Менеджер, Подразделение);
Если НЕ ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчетОрганизации;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад, ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки"), Истина);
СтруктураОтветственного = ЗакупкиСервер.ПолучитьОтветственногоПоСкладу(Склад, Менеджер);
Если СтруктураОтветственного <> Неопределено Тогда
Принял = СтруктураОтветственного.Ответственный;
ПринялДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
РаботаСКурсамиВалютУТ.ЗаполнитьКурсДокументаПоУмолчанию(КурсЧислитель, КурсЗнаменатель, Валюта, ВалютаВзаиморасчетов, Организация, , Договор);
Распоряжение = ДокументОснованиеПриЗаполнении(ДанныеЗаполнения);
ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Распоряжение, Договор);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(НалогообложениеНДС, ПараметрыЗаполнения);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект, Ложь, ВернутьМногооборотнуюТару);
СтруктураЗаполненияСтавкиНДС.ИнициализацияВходящегоДокумента = Истина;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",СтруктураЗаполненияСтавкиНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Товары,
КэшированныеЗначения);
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииДоговораСКонтрагентом(Знач ДокументОснование, Знач СкладПоступления = Неопределено)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорСПоставщиком.Ссылка КАК Договор,
| ДоговорСПоставщиком.Партнер КАК Партнер,
| ДоговорСПоставщиком.Контрагент КАК Контрагент,
| ДоговорСПоставщиком.Организация КАК Организация,
| &СкладПоступления КАК Склад,
| ДоговорСПоставщиком.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДоговорСПоставщиком.Статус КАК СтатусДокумента,
| ВЫБОР
| КОГДА ДоговорСПоставщиком.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| ВЫБОР
| КОГДА
| ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоАгентскиеУслуги,
| ДоговорСПоставщиком.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДоговорСПоставщиком.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДоговорСПоставщиком.ДоговорССамозанятым КАК ОперацияССамозанятым
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорСПоставщиком
|ГДЕ
| ДоговорСПоставщиком.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТоварыКОформлениюПоступленияОстатки.Склад,
| ТоварыКОформлениюПоступленияОстатки.ДокументПоступления,
| ТоварыКОформлениюПоступленияОстатки.Номенклатура,
| ТоварыКОформлениюПоступленияОстатки.Характеристика,
| ТоварыКОформлениюПоступленияОстатки.Назначение,
| ТоварыКОформлениюПоступленияОстатки.Серия,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток КАК Количество,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток КАК КоличествоУпаковок
|ПОМЕСТИТЬ ТаблицаРезультат
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления = &ДокументОснование
| И ВЫБОР
| КОГДА &СкладУказан
| ТОГДА Склад = &СкладПоступления
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК ТоварыКОформлениюПоступленияОстатки
|ГДЕ
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКОформлениюПоступленияОстатки.Склад,
| ТоварыКОформлениюПоступленияОстатки.ДокументПоступления,
| ТоварыКОформлениюПоступленияОстатки.Номенклатура,
| ТоварыКОформлениюПоступленияОстатки.Характеристика,
| ТоварыКОформлениюПоступленияОстатки.Назначение,
| ТоварыКОформлениюПоступленияОстатки.Серия,
| -ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток КАК Количество,
| -ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток КАК КоличествоУпаковок
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления = &ДокументОснование
| И Склад = &СкладПоступления) КАК ТоварыКОформлениюПоступленияОстатки
|ГДЕ
| &СкладУказан
| И НЕ (ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ИспользоватьОрдернуюСхемуПриПоступлении
| И &ДатаДокумента >= ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ДатаНачалаОрдернойСхемыПриПоступлении)
| И ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток < 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКОформлениюПоступленияОстатки.Склад,
| ТоварыКОформлениюПоступленияОстатки.ДокументПоступления,
| ТоварыКОформлениюПоступленияОстатки.Номенклатура,
| ТоварыКОформлениюПоступленияОстатки.Характеристика,
| ТоварыКОформлениюПоступленияОстатки.Назначение,
| ТоварыКОформлениюПоступленияОстатки.Серия,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток,
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления = &ДокументОснование
| И (Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ИЛИ Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))) КАК
| ТоварыКОформлениюПоступленияОстатки
|ГДЕ
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоОрдерамОстаток > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыКОформлениюПоступленияОстатки.Склад,
| ТоварыКОформлениюПоступленияОстатки.ДокументПоступления,
| ТоварыКОформлениюПоступленияОстатки.Номенклатура,
| ТоварыКОформлениюПоступленияОстатки.Характеристика,
| ТоварыКОформлениюПоступленияОстатки.Назначение,
| ТоварыКОформлениюПоступленияОстатки.Серия,
| -ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток,
| -ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления = &ДокументОснование
| И (Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ИЛИ Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))) КАК
| ТоварыКОформлениюПоступленияОстатки
|ГДЕ
| ТоварыКОформлениюПоступленияОстатки.КОформлениюПоступленийПоНакладнымОстаток < 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаРезультат.Склад КАК Склад,
| ТаблицаРезультат.ДокументПоступления КАК ДокументПоступления,
| ТаблицаРезультат.Номенклатура КАК Номенклатура,
| ТаблицаРезультат.Характеристика КАК Характеристика,
| ТаблицаРезультат.Назначение КАК Назначение,
| ТаблицаРезультат.Серия КАК Серия,
| ТаблицаРезультат.Количество КАК Количество,
| ТаблицаРезультат.КоличествоУпаковок КАК КоличествоУпаковок
|ИЗ
| ТаблицаРезультат КАК ТаблицаРезультат
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| Характеристика,
| Склад,
| ДокументПоступления";
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("СкладПоступления", СкладПоступления);
Запрос.УстановитьПараметр("СкладУказан", ЗначениеЗаполнено(СкладПоступления));
Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДатаСеанса());
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыДоговоровКонтрагентов.Действует);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.Договор,
Выборка.СтатусДокумента,,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Товары.Загрузить(РезультатЗапроса[РезультатЗапроса.ВГраница()].Выгрузить());
ЗаполнитьУсловияЗакупокПоСоглашению();
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
КонецПроцедуры
Функция ДокументОснованиеПриЗаполнении(ДанныеЗаполнения)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ДокументОснование")
И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказПоставщику")
Или ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("СправочникСсылка.СоглашенияСПоставщиками")) Тогда
Возврат ДанныеЗаполнения.ДокументОснование;
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ДокументОснование")
И ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("Массив") Тогда
Возврат ДанныеЗаполнения.ДокументОснование[0];
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("АктОРасхождениях")
И ДанныеЗаполнения.Свойство("ОснованиеАкта")
И (ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.ВозвратТоваровПоставщику")
Или ТипЗнч(ДанныеЗаполнения.ОснованиеАкта) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг")) Тогда
Возврат ДанныеЗаполнения.ОснованиеАкта;
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПоставщику")
Или ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВозвратТоваровПоставщику")
Или ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
Возврат ДанныеЗаполнения;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область ВидыЗапасов
Процедура ПроверитьИзменениеХозяйственнойОперации(Отказ)
Если Не ЭтоНовый()
И (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо) Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ
| РасчетыСПоставщиками.СуммаПриход КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСПоставщиками.Обороты(,,Период,
| ОбъектРасчетов.Объект = &Объект
| ) КАК РасчетыСПоставщиками
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ПриобретениеТоваровУслуг КАК ДанныеДокумента
| ПО
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> &ХозяйственнаяОперация
|ГДЕ
| РасчетыСПоставщиками.СуммаПриход > 0
|");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Объект", ?(ЗначениеЗаполнено(ЗаказПоставщику), ЗаказПоставщику, Ссылка));
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Поступление оплачено. Нельзя устанавливать операцию %1'"),
ХозяйственнаяОперация);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ЭтотОбъект,
"ХозяйственнаяОперация",
,
Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьВидыЗапасов(Отказ)
УстановитьПривилегированныйРежим(Истина);
ИспользоватьРаздельноеОформлениеЗакупок = ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ХозяйственнаяОперация);
МенеджерВременныхТаблиц = ВременныеТаблицыДанныхДокумента(ИспользоватьРаздельноеОформлениеЗакупок);
Если Не ИспользоватьРаздельноеОформлениеЗакупок Тогда
ЗапасыСервер.ЗаполнитьВидыЗапасовПоУмолчанию(МенеджерВременныхТаблиц, Товары);
Иначе
ЗапасыСервер.ЗаполнитьВидыЗапасовПоУмолчанию(МенеджерВременныхТаблиц, Неопределено);
ЗаполнитьВидЗапасовПрослеживаемыхРабот();
КонецЕсли;
ПерезаполнитьВидыЗапасов = Не Проведен
Или ЗапасыСервер.ПроверитьНеобходимостьПерезаполненияВидовЗапасовДокумента(ЭтотОбъект)
Или ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц)
Или ПроверитьИзменениеТоваров(МенеджерВременныхТаблиц);
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
И ПерезаполнитьВидыЗапасов Тогда
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(ИспользоватьРаздельноеОформлениеЗакупок);
ЗапасыСервер.ЗаполнитьВидыЗапасовПоТоварамОрганизаций(ЭтотОбъект,
МенеджерВременныхТаблиц,
Отказ,
ПараметрыЗаполнения);
ВидыЗапасов.Свернуть("АналитикаУчетаНоменклатуры, ВидЗапасов, НомерГТД", "Количество, КоличествоПоРНПТ");
ЗаполнитьВидЗапасовОприходование();
ЗаполнитьДопКолонкиВидовЗапасов("АналитикаУчетаНоменклатуры");
ИначеЕсли ИспользоватьРаздельноеОформлениеЗакупок
И ПерезаполнитьВидыЗапасов Тогда
ЭтоНеотфактуровка = ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки;
Если Не ЭтоНеотфактуровка Тогда
ДополнительныеСвойства.Вставить("КонтролироватьНомераГТД", Ложь);
КонецЕсли;
МенеджерВременныхТаблиц = ВременныеТаблицыДанныхДокумента(ИспользоватьРаздельноеОформлениеЗакупок, Ложь);
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(ИспользоватьРаздельноеОформлениеЗакупок);
ЗапасыСервер.ЗаполнитьВидыЗапасовПоОстаткамКОформлению(ЭтотОбъект,
МенеджерВременныхТаблиц,
Отказ,
ПараметрыЗаполнения);
ВидыЗапасов.Свернуть("АналитикаУчетаНоменклатуры, ВидЗапасов, НомерГТД, СтавкаНДС",
"Количество, КоличествоПоРНПТ, СуммаСНДС, СуммаНДС");
Если ЭтоНеотфактуровка Тогда
ЗаполнитьАналитикамиСУчетомСерий();
КонецЕсли;
ЗаполнитьДопКолонкиВидовЗапасов("АналитикаУчетаНоменклатуры", ЭтоНеотфактуровка);
ИначеЕсли Не ИспользоватьРаздельноеОформлениеЗакупок
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Тогда
ВидыЗапасов.Очистить();
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьАналитикамиСУчетомСерий()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий = 18 КАК ТребуетсяОтборПоСерии
|ПОМЕСТИТЬ ВтТоварыИсходная
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(ВидыЗапасов.АналитикаУчетаНоменклатуры КАК Справочник.КлючиАналитикиУчетаНоменклатуры) КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВтВидыЗапасовИсходная
|ИЗ
| &ВидыЗапасов КАК ВидыЗапасов
|;
|
|
|ВЫБРАТЬ
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ЕСТЬNULL(Товары.ТребуетсяОтборПоСерии, ЛОЖЬ) КАК ТребуетсяОтборПоСерии,
| ЕСТЬNULL(Товары.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| ВтВидыЗапасовИсходная КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТоварыИсходная КАК Товары
| ПО ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Товары.Номенклатура
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Товары.Характеристика
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение = Товары.Назначение
|СГРУППИРОВАТЬ ПО
| ВидыЗапасов.АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов,
| ЕСТЬNULL(Товары.ТребуетсяОтборПоСерии, ЛОЖЬ),
| ЕСТЬNULL(Товары.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры,
| ВидЗапасов,
| ТребуетсяОтборПоСерии,
| Серия
|;
|
|
|ВЫБРАТЬ
| Аналитика.КлючАналитики КАК Аналитика,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВТОтборАналитик
|ИЗ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Аналитика.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Аналитика.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Аналитика.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Аналитика.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Аналитика.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
|;
|
|
|ВЫБРАТЬ
| Набор.Приоритет КАК Приоритет,
| Набор.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Набор.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| Набор.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| Набор.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| Набор.СерияПодобранаКорректно КАК СерияПодобранаКорректно,
| СУММА(Набор.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| Остатки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| -Остатки.КоличествоОстаток КАК Количество,
| НЕ ВидыЗапасов.ТребуетсяОтборПоСерии
| ИЛИ ВидыЗапасов.ТребуетсяОтборПоСерии
| И Остатки.АналитикаУчетаНоменклатуры.Серия = ВидыЗапасов.Серия КАК СерияПодобранаКорректно,
| 2 КАК Приоритет
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(
| &ДатаДокумента,
| (АналитикаУчетаНоменклатуры, ВидЗапасов) В
| (ВЫБРАТЬ
| Таблица.Аналитика,
| Таблица.ВидЗапасов
| ИЗ
| ВТОтборАналитик КАК Таблица)
| И Организация = &Организация) КАК Остатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Остатки.АналитикаУчетаНоменклатуры.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Остатки.АналитикаУчетаНоменклатуры.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Остатки.АналитикаУчетаНоменклатуры.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Остатки.АналитикаУчетаНоменклатуры.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Остатки.АналитикаУчетаНоменклатуры.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
| И (НЕ ВидыЗапасов.ТребуетсяОтборПоСерии
| ИЛИ ВидыЗапасов.ТребуетсяОтборПоСерии
| И Остатки.АналитикаУчетаНоменклатуры.Серия = ВидыЗапасов.АналитикаУчетаНоменклатуры.Серия)
| ГДЕ
| Остатки.КоличествоОстаток < 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Движения.АналитикаУчетаНоменклатуры,
| Движения.Количество,
| НЕ ВидыЗапасов.ТребуетсяОтборПоСерии
| ИЛИ ВидыЗапасов.ТребуетсяОтборПоСерии
| И Движения.АналитикаУчетаНоменклатуры.Серия = ВидыЗапасов.Серия КАК СерияПодобранаКорректно,
| 1 КАК Приоритет
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК Движения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Движения.АналитикаУчетаНоменклатуры.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Движения.АналитикаУчетаНоменклатуры.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Движения.АналитикаУчетаНоменклатуры.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Движения.АналитикаУчетаНоменклатуры.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Движения.АналитикаУчетаНоменклатуры.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
| И (НЕ ВидыЗапасов.ТребуетсяОтборПоСерии
| ИЛИ ВидыЗапасов.ТребуетсяОтборПоСерии
| И Движения.АналитикаУчетаНоменклатуры.Серия = ВидыЗапасов.АналитикаУчетаНоменклатуры.Серия)
| ГДЕ
| Движения.Регистратор = &Ссылка
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Приоритет,
| Набор.АналитикаУчетаНоменклатуры,
| Набор.СерияПодобранаКорректно
|
|УПОРЯДОЧИТЬ ПО
| Приоритет,
| СерияПодобранаКорректно УБЫВ
|";
ТаблицаВидыЗапасов = ВидыЗапасов.Выгрузить();
ТаблицаВидыЗапасов.Колонки.Добавить("АналитикаУчетаНоменклатурыПоРегистру", Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаВидыЗапасов.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТаблицаВидыЗапасов.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоПоРегистру", Новый ОписаниеТипов("Число"));
ТаблицаВидыЗапасов.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
ТаблицаВидыЗапасов.Колонки.Добавить("СерияПодобранаКорректно", Новый ОписаниеТипов("Булево"));
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Строка.АналитикаУчетаНоменклатуры, "Номенклатура, Характеристика, Назначение, Серия");
ЗаполнитьЗначенияСвойств(Строка, ЗначенияРеквизитов);
Если Строка.Количество > 0 Тогда
Если ЦенаВключаетНДС Тогда
Строка.Цена = Окр(Строка.СуммаСНДС / Строка.Количество, 2, РежимОкругления.Окр15как20);
Иначе
Строка.Цена = Окр((Строка.СуммаСНДС - Строка.СуммаНДС) / Строка.Количество, 2, РежимОкругления.Окр15как20);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос.УстановитьПараметр("ВидыЗапасов", ТаблицаВидыЗапасов);
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(Неопределено, "Номенклатура, Характеристика, Назначение, Серия, СтатусУказанияСерий"));
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ДатаДокумента", КонецДня(Дата));
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Количество.Имя = "КоличествоПоРегистру";
Результат.Колонки.АналитикаУчетаНоменклатуры.Имя = "АналитикаУчетаНоменклатурыПоРегистру";
Ключ = "Номенклатура, Характеристика, Назначение";
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(Результат, ТаблицаВидыЗапасов, "КоличествоПоРегистру", Ключ, Условие, Ложь, "АналитикаУчетаНоменклатурыПоРегистру,СерияПодобранаКорректно");
СтрокиСОшибками = Новый Массив();
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
Если ЗначениеЗаполнено(Строка.АналитикаУчетаНоменклатурыПоРегистру)
И Строка.СерияПодобранаКорректно Тогда
Строка.АналитикаУчетаНоменклатуры = Строка.АналитикаУчетаНоменклатурыПоРегистру;
Строка.Количество = Строка.КоличествоПоРегистру;
ИначеЕсли ЗначениеЗаполнено(Строка.АналитикаУчетаНоменклатурыПоРегистру)
И Не Строка.СерияПодобранаКорректно Тогда
ПредставлениеНоменклатуры = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(Строка.Номенклатура,
Строка.Характеристика,
Неопределено,
Неопределено,
Строка.Назначение);
СтрокиСОшибками.Добавить(ПредставлениеНоменклатуры);
КонецЕсли;
Строка.КоличествоУпаковок = Строка.Количество;
КонецЦикла;
ШаблонСообщения = НСтр("ru = 'Не удалось получить серию для номенклатуры ""%1"" с отбором по серии из табличной части ""Товары"". Серия была подобрана по остаткам.
|Проверьте, что указанный товар с серией отражены в документе ""Поступление товаров на склад"".'");
СтрокиСОшибками = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СтрокиСОшибками);
Для Каждого ПредставлениеНоменклатуры Из СтрокиСОшибками Цикл
ТекстСообщения = СтрШаблон(ШаблонСообщения, ПредставлениеНоменклатуры);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Ссылка);
КонецЦикла;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаВидыЗапасов, СтруктураДействий, Неопределено);
ВидыЗапасов.Загрузить(ТаблицаВидыЗапасов);
КонецПроцедуры
Процедура ЗаполнитьВидЗапасовОприходование()
ТаблицаТовары = Товары.Выгрузить();
ТаблицаТовары.Свернуть("АналитикаУчетаНоменклатуры, ВидЗапасов", "Количество");
СтруктураПоиска = Новый Структура("АналитикаУчетаНоменклатуры");
Для Каждого СтрокаТоваров Из ТаблицаТовары Цикл
КоличествоТоваровВСтроке = СтрокаТоваров.Количество;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТоваров);
Для Каждого СтрокаЗапасов Из ВидыЗапасов.НайтиСтроки(СтруктураПоиска) Цикл
Если СтрокаЗапасов.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Количество = Мин(КоличествоТоваровВСтроке, СтрокаЗапасов.Количество);
НоваяСтрока = ВидыЗапасов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЗапасов);
НоваяСтрока.ВидЗапасовПолучателя = СтрокаТоваров.ВидЗапасов;
НоваяСтрока.Количество = Количество;
НоваяСтрока.КоличествоПоРНПТ = Количество * СтрокаЗапасов.КоличествоПоРНПТ / СтрокаЗапасов.Количество;
СтрокаЗапасов.Количество = СтрокаЗапасов.Количество - НоваяСтрока.Количество;
СтрокаЗапасов.КоличествоПоРНПТ = СтрокаЗапасов.КоличествоПоРНПТ - НоваяСтрока.КоличествоПоРНПТ;
КоличествоТоваровВСтроке = КоличествоТоваровВСтроке - НоваяСтрока.Количество;
Если КоличествоТоваровВСтроке = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПараметрыПоиска = Новый Структура("Количество", 0);
МассивУдаляемыхСтрок = ВидыЗапасов.НайтиСтроки(ПараметрыПоиска);
Для Каждого СтрокаТаблицы Из МассивУдаляемыхСтрок Цикл
ВидыЗапасов.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьВидЗапасовПрослеживаемыхРабот()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ВТТовары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура
|ИЗ
| ВТТовары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО Товары.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И СправочникНоменклатура.ПрослеживаемыйТовар";
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(, "Номенклатура"));
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
ОтборСтрок = Новый Структура("Номенклатура");
НалогообложениеОрганизации = УчетНДСУП.ПараметрыУчетаПоОрганизации(Организация, Дата).ОсновноеНалогообложениеНДСПродажи;
ИменаРеквизитовДокумента = "Организация, ТипЗапасов, ВладелецТовара, Контрагент, Соглашение, Договор, Валюта,
|НалогообложениеНДС, НалогообложениеОрганизации, ВидЗапасов, ГруппаФинансовогоУчета,
|ГруппаПродукции, ХозяйственнаяОперация, ВидЦены, СохраняемыйВидЗапасов";
РеквизитыДокумента = Новый Структура(ИменаРеквизитовДокумента);
РеквизитыДокумента.Организация = Организация;
РеквизитыДокумента.ТипЗапасов = Перечисления.ТипыЗапасов.Работа;
РеквизитыДокумента.НалогообложениеОрганизации = НалогообложениеОрганизации;
ВидЗапасовПрослеживаемыхРабот = Справочники.ВидыЗапасов.ВидЗапасовДокумента(
Организация,
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика,
РеквизитыДокумента);
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОтборСтрок, Выборка);
НайденныеСтроки = Товары.НайтиСтроки(ОтборСтрок);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НайденнаяСтрока.ВидЗапасов = ВидЗапасовПрослеживаемыхРабот;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьДопКолонкиВидовЗапасов(Измерения, ДораспределятьБезАналитик = Ложь)
ТаблицаВидыЗапасов = ВидыЗапасов.Выгрузить();
Если ДораспределятьБезАналитик Тогда
ТаблицаВидыЗапасов.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаВидыЗапасов.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Строка.АналитикаУчетаНоменклатуры, "Номенклатура, Характеристика, Назначение");
ЗаполнитьЗначенияСвойств(Строка, ЗначенияРеквизитов);
КонецЦикла;
КонецЕсли;
ПереченьИзвлекаемыхПолей = "АналитикаУчетаНоменклатуры, Номенклатура, Характеристика, Назначение, ЗаказПоставщику, Цена, СтавкаНДС, ОбъектРасчетов,
|СписатьНаРасходы, СтатьяРасходов, АналитикаРасходов, Подразделение, НомерГТД";
ПереченьЗаполняемыхПолей = "ЗаказПоставщику, Цена, СтавкаНДС, ОбъектРасчетов,
|СписатьНаРасходы, СтатьяРасходов, АналитикаРасходов, Подразделение";
Ресурсы = "Количество, КоличествоПоРНПТ, СуммаВзаиморасчетов, СуммаНДСВзаиморасчетов, СуммаСНДС, СуммаНДС, СуммаРучнойСкидки";
СтруктураПоиска = Новый Структура(Измерения);
СтруктураРесурсов = Новый Структура(Ресурсы);
МассивРесурсов = СтрРазделить(Ресурсы, ", ", Ложь);
ТаблицаТовары = Товары.Выгрузить(, ПереченьИзвлекаемыхПолей + ", " + Ресурсы);
ТаблицаТовары.Свернуть(ПереченьИзвлекаемыхПолей, Ресурсы);
Для Каждого СтрокаТоваров Из ТаблицаТовары Цикл
ЗаполнитьЗначенияСвойств(СтруктураРесурсов, СтрокаТоваров);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТоваров);
НайденныеСтроки = ТаблицаВидыЗапасов.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0
И ДораспределятьБезАналитик Тогда
ИзмеренияБезАналитик = СтрЗаменить(Измерения, "АналитикаУчетаНоменклатуры", "Номенклатура, Характеристика, Назначение");
СтруктураПоискаБезАналитик = Новый Структура(ИзмеренияБезАналитик);
ЗаполнитьЗначенияСвойств(СтруктураПоискаБезАналитик, СтрокаТоваров);
НайденныеСтроки = ТаблицаВидыЗапасов.НайтиСтроки(СтруктураПоискаБезАналитик);
КонецЕсли;
Для Каждого СтрокаЗапасов Из НайденныеСтроки Цикл
Если СтрокаЗапасов.Количество = 0
И СтрокаЗапасов.СуммаСНДС = 0 Тогда
Продолжить;
КонецЕсли;
КоличествоПоСтроке = Мин(СтруктураРесурсов.Количество, СтрокаЗапасов.Количество);
НоваяСтрока = ТаблицаВидыЗапасов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЗапасов);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТоваров, ПереченьЗаполняемыхПолей);
НоваяСтрока.Количество = КоличествоПоСтроке;
НоваяСтрока.КоличествоПоРНПТ = КоличествоПоСтроке * СтрокаЗапасов.КоличествоПоРНПТ / СтрокаЗапасов.Количество;
Если СтруктураРесурсов.Количество Тогда
Для Каждого ЭлементРесурс Из МассивРесурсов Цикл
НоваяСтрока[ЭлементРесурс] = КоличествоПоСтроке * СтруктураРесурсов[ЭлементРесурс] / СтруктураРесурсов.Количество;
КонецЦикла;
КонецЕсли;
Для Каждого ЭлементРесурс Из МассивРесурсов Цикл
СтруктураРесурсов[ЭлементРесурс] = СтруктураРесурсов[ЭлементРесурс] - НоваяСтрока[ЭлементРесурс];
КонецЦикла;
СтароеКоличество = СтрокаЗапасов.Количество;
СтрокаЗапасов.Количество = СтрокаЗапасов.Количество - НоваяСтрока.Количество;
СтрокаЗапасов.КоличествоПоРНПТ = СтрокаЗапасов.КоличествоПоРНПТ - НоваяСтрока.КоличествоПоРНПТ;
Если СтароеКоличество Тогда
Для Каждого ЭлементРесурс Из МассивРесурсов Цикл
Если ЭлементРесурс <> "Количество"
И ЭлементРесурс <> "КоличествоПоРНПТ" Тогда
СтрокаЗапасов[ЭлементРесурс] = СтрокаЗапасов.Количество * СтрокаЗапасов[ЭлементРесурс]
/ СтароеКоличество;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если СтруктураРесурсов.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ВидыЗапасов.Загрузить(ТаблицаВидыЗапасов);
ОтборСтрок = Новый Структура("Количество, СуммаСНДС", 0, 0);
МассивУдаляемыхСтрок = ВидыЗапасов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаТаблицы Из МассивУдаляемыхСтрок Цикл
ВидыЗапасов.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров(ТаблицыДокумента = Неопределено)
Если ТаблицыДокумента = Неопределено Тогда
ТаблицыДокумента = Документы.ПриобретениеТоваровУслуг.КоллекцияТабличныхЧастейТоваров();
ЗаполнитьЗначенияСвойств(ТаблицыДокумента, ЭтотОбъект);
КонецЕсли;
ТаблицаТовары = ТаблицыДокумента.Товары;
МестаУчета = РегистрыСведений.АналитикаУчетаНоменклатуры.МестаУчета(ХозяйственнаяОперация,
Склад,
Подразделение,
Партнер,
Договор);
ОперацииВПутиИФактуровка = Новый Массив;
ОперацииВПутиИФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
ОперацииВПутиИФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути);
ОперацииВПутиИФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
ОперацииВПутиИФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ОперацииВПутиИФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ИменаПолей = РегистрыСведений.АналитикаУчетаНоменклатуры.ИменаПолейКоллекцииПоУмолчанию();
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
Если ОперацииФактуровка.Найти(ХозяйственнаяОперация) <> Неопределено
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВариантОформленияЗакупок") = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг Тогда
МестаУчета.Работа = Договор;
МестаУчета.Вставить("Услуга", Договор);
Иначе
ИменаПолей.Вставить("Работа", "Подразделение");
КонецЕсли;
ТекстПоляСкладТовар = "
|ВЫБОР
| КОГДА Коллекция.СписатьНаРасходы
| ТОГДА Коллекция.Подразделение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
|КОНЕЦ";
Если ЗначениеЗаполнено(Склад) Тогда
РеквизитыСклада = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Склад, "ЭтоГруппа, ВыборГруппы");
Иначе
РеквизитыСклада = Новый Структура;
РеквизитыСклада.Вставить("ЭтоГруппа", Ложь);
РеквизитыСклада.Вставить("ВыборГруппы", Неопределено);
КонецЕсли;
Если РеквизитыСклада.ЭтоГруппа
И ОперацииВПутиИФактуровка.Найти(ХозяйственнаяОперация) = Неопределено
И РеквизитыСклада.ВыборГруппы = Перечисления.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных Тогда
ИменаПолей.Вставить("Произвольный", "Склад");
ТекстПоляСкладТовар = "
|ВЫБОР
| КОГДА Коллекция.СписатьНаРасходы
| ТОГДА Коллекция.Подразделение
| ИНАЧЕ Коллекция.Склад
|КОНЕЦ";
КонецЕсли;
ИменаПолей.Вставить("Товар", Новый Структура("ТекстПоля", ТекстПоляСкладТовар));
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТаблицаТовары, МестаУчета, ИменаПолей);
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ПолучитьСуммуДокумента() Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВернутьМногооборотнуюТару
| ИЛИ &ТребуетсяЗалогЗаТару
|");
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(,"Номенклатура,СуммаСНДС"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаИтого = Выгрузка[0].СуммаСНДС;
Возврат СуммаИтого;
КонецФункции
Процедура ЗаполнитьУсловияРасчетов(Знач УсловияЗакупок)
ФормаОплаты = УсловияЗакупок.ФормаОплаты;
Если ЗначениеЗаполнено(УсловияЗакупок.Организация) И УсловияЗакупок.Организация = Организация Тогда
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчетОрганизации;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
КонецПроцедуры
Функция ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц)
ИменаРеквизитов = "Дата, Организация, ХозяйственнаяОперация";
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
ИменаРеквизитов = ИменаРеквизитов + ",Партнер,Контрагент,Соглашение,Валюта,НалогообложениеНДС";
КонецЕсли;
Возврат ЗапасыСервер.ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц, Ссылка, ИменаРеквизитов);
КонецФункции
Функция ПроверитьИзменениеТоваров(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов,
| ТаблицаТоваров.НомерГТД
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаТоваров.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаТоваров.СуммаРучнойСкидки КАК СуммаРучнойСкидки
| ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ЗаказПоставщику,
| ТаблицаВидыЗапасов.ОбъектРасчетов,
| ТаблицаВидыЗапасов.НомерГТД,
| -ТаблицаВидыЗапасов.Количество,
| -ТаблицаВидыЗапасов.КоличествоПоРНПТ,
| -ТаблицаВидыЗапасов.Цена,
| -ТаблицаВидыЗапасов.СуммаНДС,
| -ТаблицаВидыЗапасов.СуммаСНДС,
| -ТаблицаВидыЗапасов.СуммаВзаиморасчетов,
| -ТаблицаВидыЗапасов.СуммаНДСВзаиморасчетов,
| -ТаблицаВидыЗапасов.СуммаРучнойСкидки
| ИЗ
| ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов) КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов,
| ТаблицаТоваров.НомерГТД
|
|ИМЕЮЩИЕ
| (СУММА(ТаблицаТоваров.Количество) <> 0
| ИЛИ СУММА(ТаблицаТоваров.КоличествоПоРНПТ) <> 0
| ИЛИ СУММА(ТаблицаТоваров.Цена) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаНДС) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаСНДС) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаВзаиморасчетов) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаНДСВзаиморасчетов) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаРучнойСкидки) <> 0)";
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РезультатЗапрос = Запрос.Выполнить();
Возврат (Не РезультатЗапрос.Пустой());
КонецФункции
Функция ВременныеТаблицыДанныхДокумента(ИспользоватьРаздельноеОформлениеЗакупок, ВключатьПрослеживаемыеРаботы = Истина)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &Дата КАК Дата,
| &Организация КАК Организация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Соглашение КАК Соглашение,
| &Договор КАК Договор,
| &Валюта КАК Валюта,
| &НалогообложениеНДС КАК НалогообложениеНДС,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЛОЖЬ КАК ЕстьСделкиВТабличнойЧасти,
| &ТипЗапасов КАК ТипЗапасов
|ПОМЕСТИТЬ ТаблицаДанныхДокумента
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ВидЦеныПоставщика КАК ВидЦены,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваров.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаТоваров.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаТоваров.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаТоваров.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов,
| ВЫРАЗИТЬ(ТаблицаТоваров.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(ТаблицаТоваров.Назначение КАК Справочник.Назначения) КАК Назначение,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВТТаблицаТоваров
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ВидЦены КАК ВидЦены,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаТоваров.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаТоваров.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаТоваров.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| ВТТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваров.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| СправочникНоменклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ВидЦены КАК ВидЦены,
| Аналитика.МестоХранения КАК Склад,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаТоваров.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаТоваров.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаТоваров.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.ВидЗапасов КАК ВидЗапасов
|ИЗ
| ВТТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваров.Номенклатура = СправочникНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаТоваров.Номенклатура = Аналитика.Ссылка
|ГДЕ
| &ВключатьПрослеживаемыеРаботы
| И &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар
|;
|
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаВидыЗапасов.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.Цена КАК Цена,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС,
| ТаблицаВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаВидыЗапасов.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаВидыЗапасов.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаВидыЗапасов.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| &ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|;
|
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Серия КАК Серия,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.Цена КАК Цена,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС,
| ТаблицаВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаВидыЗапасов.СуммаНДСВзаиморасчетов КАК СуммаНДСВзаиморасчетов,
| ТаблицаВидыЗапасов.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаВидыЗапасов.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| Аналитика.МестоХранения КАК Склад
|ПОМЕСТИТЬ ТаблицаВидыЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|
|ВЫБРАТЬ
| &ОрганизацияИсхТаб КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) КАК ТипЗапасов,
| &Соглашение КАК Соглашение,
| &ВалютаВзаиморасчетов КАК Валюта,
| &НалогообложениеНДС КАК НалогообложениеНДС,
| &НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| &Партнер КАК ВладелецТовара,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор
|ПОМЕСТИТЬ РеквизитыДокумента
|ГДЕ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &ОрганизацияИсхТаб,
| &ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Справочник.СоглашенияСПоставщиками.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка),
| ВЫБОР
| КОГДА &ИспользоватьРаздельныйУчетПоНалогообложению
| И НЕ &ПартионныйУчетВерсии22
| ТОГДА &ЗакупкаПодДеятельность
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| КОНЕЦ,
| &НалогообложениеОрганизации,
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|ГДЕ
| &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА &Проведен
| ТОГДА ТаблицаТоваров.ВидЗапасов
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| КОНЕЦ КАК ТекущийВидЗапасов,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| РеквизитыВидаЗапасов.Организация КАК Организация,
| РеквизитыВидаЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
| ИНАЧЕ РеквизитыВидаЗапасов.ТипЗапасов
| КОНЕЦ КАК ТипЗапасов,
| РеквизитыВидаЗапасов.Соглашение КАК Соглашение,
| РеквизитыВидаЗапасов.Валюта КАК Валюта,
| РеквизитыВидаЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| РеквизитыВидаЗапасов.НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Партнер
| ИНАЧЕ РеквизитыВидаЗапасов.ВладелецТовара
| КОНЕЦ КАК ВладелецТовара,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор.Контрагент
| ИНАЧЕ РеквизитыВидаЗапасов.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор
| ИНАЧЕ РеквизитыВидаЗапасов.Договор
| КОНЕЦ КАК Договор
|ПОМЕСТИТЬ ИсходнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваров.Номенклатура = СправочникНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО ТаблицаТоваров.ВидЗапасов = ВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РеквизитыДокумента КАК РеквизитыВидаЗапасов
| ПО ИСТИНА
|ГДЕ
| СправочникНоменклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И (ТаблицаТоваров.ВидЗапасов = ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| ИЛИ ВидыЗапасов.ТипЗапасов <> ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| ИНАЧЕ ВЫБОР
| КОГДА &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
| ИНАЧЕ &ТипЗапасов
| КОНЕЦ
| КОНЕЦ
| ИЛИ ВидыЗапасов.Организация <> &ОрганизацияИсхТаб
| ИЛИ &ПерезаполнитьВидыЗапасов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА &Проведен
| ТОГДА ТаблицаТоваров.ВидЗапасов
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| КОНЕЦ КАК ТекущийВидЗапасов,
| ЛОЖЬ КАК ЭтоВозвратнаяТара,
| РеквизитыВидаЗапасов.Организация КАК Организация,
| РеквизитыВидаЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Работа) КАК ТипЗапасов,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| РеквизитыВидаЗапасов.Валюта КАК Валюта,
| РеквизитыВидаЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| РеквизитыВидаЗапасов.НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| НЕОПРЕДЕЛЕНО КАК ВладелецТовара,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК Договор
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваров.Номенклатура = СправочникНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО ТаблицаТоваров.ВидЗапасов = ВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РеквизитыДокумента КАК РеквизитыВидаЗапасов
| ПО ИСТИНА
|ГДЕ
| СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И (ТаблицаТоваров.ВидЗапасов = ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| ИЛИ ВидыЗапасов.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Работа)
| ИЛИ ВидыЗапасов.Организация <> &ОрганизацияИсхТаб
| ИЛИ &ПерезаполнитьВидыЗапасов)
|;
|
|
|УНИЧТОЖИТЬ РеквизитыДокумента
|;
|
|
|УНИЧТОЖИТЬ ВТТаблицаТоваров";
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ТаблицаТоваров = Товары.Выгрузить();
Если Не ИспользоватьРаздельноеОформлениеЗакупок Тогда
ТаблицаТоваров.ЗаполнитьЗначения(Справочники.ВидыЦенПоставщиков.ПустаяСсылка(), "ВидЦеныПоставщика");
КонецЕсли;
Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаТоваров);
Запрос.УстановитьПараметр("ТаблицаВидыЗапасов", ВидыЗапасов);
Запрос.УстановитьПараметр("ОрганизацияИсхТаб", Организация);
Запрос.УстановитьПараметр("Организация",
?(ХозяйственнаяОперация =
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет,
Справочники.Организации.УправленческаяОрганизация,
Организация));
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Партнер", Партнер);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Соглашение", Соглашение);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("НалогообложениеНДС", НалогообложениеНДС);
Запрос.УстановитьПараметр("ЗакупкаПодДеятельность", ЗакупкаПодДеятельность);
Запрос.УстановитьПараметр("НалогообложениеОрганизации", УчетНДСУП.ПараметрыУчетаПоОрганизации(Организация, Дата).ОсновноеНалогообложениеНДСПродажи);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Запрос.УстановитьПараметр("ТипЗапасов", ТипЗапасовПоХозОперации());
Запрос.УстановитьПараметр("ПоступлениеПоЗаказам", ПоступлениеПоЗаказам);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ИспользоватьРаздельныйУчетПоНалогообложению",
НастройкиНалоговУчетныхПолитикПовтИсп.РаздельныйУчетТоваровПоНалогообложениюНДС(Организация, Дата));
Запрос.УстановитьПараметр("ПартионныйУчетВерсии22",
РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(НачалоМесяца(Дата)));
Запрос.УстановитьПараметр("Проведен", Проведен);
Запрос.УстановитьПараметр("ВключатьПрослеживаемыеРаботы", ВключатьПрослеживаемыеРаботы);
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
ЗапасыСервер.ДополнитьВременныеТаблицыОбязательнымиКолонками(Запрос);
ЗапасыСервер.ПроверитьНеобходимостьПерезаполненияВидовЗапасовДокумента(ЭтотОбъект, Запрос);
Запрос.Выполнить();
Возврат МенеджерВременныхТаблиц;
КонецФункции
Функция ПараметрыЗаполненияВидовЗапасов(ИспользоватьРаздельноеОформлениеЗакупок)
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.ПодбиратьВТЧТоварыПринятыеНаОтветственноеХранение.Вставить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи, "Никогда");
Если ИспользоватьРаздельноеОформлениеЗакупок Тогда
ПараметрыЗаполнения.ПриНехваткеТоваровОрганизацииЗаполнятьВидамиЗапасовПоУмолчанию = Истина;
ПараметрыЗаполнения.ТаблицаРеквизитовВидовЗапасовПоУмолчанию = ТаблицаРеквизитовВидовЗапасовПоУмолчанию();
ПараметрыЗаполнения.ИмяТаблицыОстатков = "ТоварыУПартнеровОтрицательныйОстаток";
ПараметрыЗаполнения.БезОтбораПоНомерамГТД = Истина;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Очистить();
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(ТипЗапасовПоХозОперации());
ПараметрыЗаполнения.ОтборыВидовЗапасов.Организация = Организация;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ВидЦены = Товары.ВыгрузитьКолонку("ВидЦеныПоставщика");
Иначе
ПараметрыЗаполнения.ДокументДелаетИПриходИРасход = Истина;
ПараметрыЗаполнения.ПриНехваткеТоваровОрганизацииЗаполнятьВидамиЗапасовПоУмолчанию = Ложь;
ПараметрыЗаполнения.ИмяПоляОрганизация = "";
ПараметрыЗаполнения.ОтборыВидовЗапасов.Организация = Справочники.Организации.УправленческаяОрганизация;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(Перечисления.ТипыЗапасов.Работа);
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ТаблицаРеквизитовВидовЗапасовПоУмолчанию()
ТаблицаРеквизитовВидовЗапасовПоУмолчанию = Товары.Выгрузить(, "НомерСтроки, АналитикаУчетаНоменклатуры, ВидЦеныПоставщика");
ТаблицаРеквизитовВидовЗапасовПоУмолчаниюКолонкиВидЦеныПоставщика = ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.ВидЦеныПоставщика;
ТаблицаРеквизитовВидовЗапасовПоУмолчаниюКолонкиВидЦеныПоставщика.Имя = "ВидЦены";
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ВладелецТовара", Новый ОписаниеТипов("СправочникСсылка.Партнеры"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ТипЗапасов", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыЗапасов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ВидЗапасов", Новый ОписаниеТипов("СправочникСсылка.ВидыЗапасов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"НомерГТД", Новый ОписаниеТипов("СправочникСсылка.НомераГТД"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Партнер, "ВладелецТовара");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Договор, "Договор");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Организация, "Организация");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(ТипЗапасовПоХозОперации(), "ТипЗапасов");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Контрагент, "Контрагент");
Возврат ТаблицаРеквизитовВидовЗапасовПоУмолчанию;
КонецФункции
Функция ТипЗапасовПоХозОперации()
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути Тогда
Возврат Перечисления.ТипыЗапасов.СобственныйТоварВПути;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки Тогда
Возврат Перечисления.ТипыЗапасов.СобственныйТоварПоНеотфактурованнойПоставке;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Возврат Перечисления.ТипыЗапасов.КомиссионныйТовар;
Иначе
Возврат Перечисления.ТипыЗапасов.Товар;
КонецЕсли;
КонецФункции
Функция ПолучитьСуммуВзаиморасчетовПоТаре() Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаВзаиморасчетов),0) КАК СуммаВзаиморасчетов
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ТребуетсяЗалогЗаТару
|");
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(,"Номенклатура,СуммаВзаиморасчетов"));
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаИтого = Выгрузка[0].СуммаВзаиморасчетов;
Возврат СуммаИтого;
КонецФункции
Процедура ПересчитатьКоличествоРНПТ()
ХозОперацииЗакупкаПоИмпорту = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
Если ХозОперацииЗакупкаПоИмпорту.Найти(ХозяйственнаяОперация) = Неопределено Тогда
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
ЭтотОбъект,
"Склад",
Истина);
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Товары);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли