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