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