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