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