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