#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ВнутреннееТовародвижение");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетДоходовРасходов");
МеханизмыДокумента.Добавить("ТМЦВЭксплуатации");
МеханизмыДокумента.Добавить("УчетРабот");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
ВнутреннееПотреблениеЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ВнутреннееПотребление") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаЗаказыНаВнутреннееПотребление(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаДвиженияНоменклатураДоходыРасходы(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(ТекстыЗапроса, Регистры);
ВнутреннееПотреблениеЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(
Запрос, ТекстыЗапроса, Регистры, Метаданные.Документы.ВнутреннееПотребление);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(
ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.ПрочееОприходованиеТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КомандаИсправление = ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
Если КомандаИсправление <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаИсправление,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КомандаСторно = ИсправлениеДокументов.ДобавитьКомандуСторно(
КомандыСозданияНаОсновании,
ПустаяСсылка().Метаданные());
Если КомандаСторно <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаСторно,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
ВнутреннееПотреблениеЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ВнутреннееПотребление) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ВнутреннееПотребление.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ВнутреннееПотребление);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьВнутреннееПотребление";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ВнутреннееПотребление) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ВнутреннееПотреблениеСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ВнутреннееПотребление.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ВнутреннееПотребление);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьВнутреннееПотребление";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииСписаниеНаРасходыАктивы(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ВнутреннееПотребление) И ПолучитьФункциональнуюОпцию("ИспользоватьВнутреннееПотребление") Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СписаниеНаРасходыАктивыНаОсновании";
КомандаСоздатьНаОсновании.Идентификатор = "СписаниеНаРасходыАктивыНаОсновании";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Списание на расходы / активы'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "НеБазоваяВерсия";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииПередачаВЭксплуатацию(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ВнутреннееПотребление)
И ПолучитьФункциональнуюОпцию("ИспользоватьВнутреннееПотребление") Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ПередачаВЭксплуатациюНаОсновании";
КомандаСоздатьНаОсновании.Идентификатор = "ПередачаВЭксплуатациюНаОсновании";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача в эксплуатацию'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "НеБазоваяВерсия";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ОстаткиТоваровОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияВнутреннихРаспоряжений(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
ВнутреннееПотреблениеЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ФормаОбъекта", Неопределено);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Неопределено);
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("Организация", Справочники.Организации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("Подразделение", Справочники.СтруктураПредприятия.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ОтборПоСкладу", Истина);
ПараметрыЗаполнения.Вставить("ИмяДокумента", "ВнутреннееПотребление");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыНаВнутреннееПотребление");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "ЗаказНаВнутреннееПотребление");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Номенклатура, Характеристика, Серия, Назначение");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
Если НЕ ЗначениеЗаполнено(ПараметрыЗаполнения.Склад) Тогда
ПараметрыЗаполнения.Склад = РеквизитыШапки.Склад;
КонецЕсли;
ПараметрыЗаполнения.Организация = РеквизитыШапки.Организация;
ПараметрыЗаполнения.Подразделение = РеквизитыШапки.Подразделение;
ПараметрыЗаполнения.ХозяйственнаяОперация = РеквизитыШапки.ХозяйственнаяОперация;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Неопределено Тогда
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = НакладныеСервер.ЗаполнятьПоОрдеру(ПараметрыЗаполнения.Склад);
КонецЕсли;
КонецПроцедуры
Функция РезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, КонтекстВызова) Экспорт
ПараметрыЗапросов = Новый Структура("ОтобратьПоЗаказу, МассивЗаказов,
|Организация, Склад, ХозяйственнаяОперация, Сделка,
|Регистратор, ТоварыНакладной, НакладнаяПоЗаказам");
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Ложь);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Ложь);
СписокЗапросов = Новый СписокЗначений();
ИменаПодзапросов = Новый Массив();
Если КонтекстВызова = "СозданиеНаОсновании" Тогда
ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "Подбор" Тогда
ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ПерезаполнениеПоОрдерам" Тогда
ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ЗаполнениеПоЗаказам" Тогда
ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
КонецЕсли;
ТекстыЗапросов = Новый Соответствие();
ТекстыЗапросов.Вставить("ВтЗаказыОтбор", ТекстЗапросаВременнойТаблицыРаспоряжений());
ТекстыЗапросов.Вставить("ВтНакладная", ТекстЗапросаВременнойТаблицыНакладной());
ТекстыЗапросов.Вставить("ТаблицаОтгружено", ТекстЗапросаОтгруженоПоОрдерам());
ТекстыПодзапросов = Новый Соответствие();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ТекстыПодзапросов.Вставить("БлокРегистрЗаказы", ТекстЗапросаОстаткиРегистраЗаказы());
ТекстыПодзапросов.Вставить("БлокСторноНакладная", ТекстЗапросаСторноНакладная());
КонецЕсли;
ТекстыПодзапросов.Вставить("БлокНовыеДвиженияНакладная", ТекстЗапросаНовыеДвиженияНакладная());
Для Каждого Элемент Из СписокЗапросов Цикл
Элемент.Представление = ТекстыЗапросов[Элемент.Значение];
КонецЦикла;
Элемент = СписокЗапросов.НайтиПоЗначению("ТаблицаОформить");
Если Элемент <> Неопределено Тогда
Элемент.Представление = ТекстЗапросаОбъединения(ИменаПодзапросов, ТекстыПодзапросов);
КонецЕсли;
Запрос = Новый Запрос();
Для Каждого Параметр Из ПараметрыЗапросов Цикл
Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Для Каждого Элемент Из СписокЗапросов Цикл
Запрос.Текст = Запрос.Текст + Элемент.Представление;
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
СтруктураРезультата = Новый Структура();
Для Каждого Элемент Из СписокЗапросов Цикл
СтруктураРезультата.Вставить(Элемент.Значение, РезультатЗапроса[СписокЗапросов.Индекс(Элемент)].Выгрузить());
КонецЦикла;
Возврат СтруктураРезультата;
КонецФункции
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Текст =
"ВЫБРАТЬ
| Заказ.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Заказ.Организация КАК Организация,
| Заказ.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА ЗаказТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ Заказ.Склад
| КОНЕЦ) = 1
| ТОГДА МАКСИМУМ(Заказ.Склад)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| Заказ.Сделка КАК Сделка,
| Заказ.ПотреблениеДляДеятельности КАК ПотреблениеДляДеятельности,
| Заказ.НаправлениеДеятельности КАК НаправлениеДеятельности
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление КАК Заказ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление.Товары КАК ЗаказТовары
| ПО Заказ.Ссылка = ЗаказТовары.Ссылка
|
|ГДЕ
| Заказ.Ссылка = &Заказ
|
|СГРУППИРОВАТЬ ПО
| Заказ.ХозяйственнаяОперация,
| Заказ.Организация,
| Заказ.Подразделение,
| Заказ.Сделка,
| Заказ.ПотреблениеДляДеятельности,
| Заказ.НаправлениеДеятельности
|";
ТекстыЗапроса.Добавить(Текст);
КонецЕсли;
Запрос = Новый Запрос();
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
Запрос.УстановитьПараметр("Заказ", МассивСсылок[0]);
РеквизитыШапки = Новый Структура("ХозяйственнаяОперация, Организация, Склад, Сделка, Подразделение,
|ПотреблениеДляДеятельности, НаправлениеДеятельности");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Выборка);
КонецЕсли;
Возврат РеквизитыШапки;
КонецФункции
Функция ДанныеДляПроверкиВводаНаОсновании(Распоряжения, ХозяйственнаяОперация = Неопределено) Экспорт
ДанныеДляВвода = Новый Структура("Основание, Статус, ЕстьОтгрузить, РаспоряженияКОформлению, МожноСгруппировать");
ДанныеДляВвода.ЕстьОтгрузить = Ложь;
ДанныеДляВвода.МожноСгруппировать = Ложь;
ДанныеДляВвода.Вставить("Склад");
ДанныеДляВвода.Вставить("ХозяйственнаяОперация");
ТекстыЗапросов = Новый Массив;
Тексты = Новый Массив();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Текст =
"ВЫБРАТЬ
| ЗаказНаВнутреннееПотребление.Ссылка КАК Основание,
| ЗаказНаВнутреннееПотребление.Статус КАК Статус,
| ЗаказНаВнутреннееПотребление.Склад КАК Склад,
| ЗаказНаВнутреннееПотребление.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление
|ГДЕ
| ЗаказНаВнутреннееПотребление.Ссылка В(&Распоряжения)";
Тексты.Добавить(Текст);
КонецЕсли;
Текст = СтрСоединить(Тексты, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапросов.Добавить(Текст);
Тексты = Новый Массив();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&Распоряжения)
| И НЕ ТоварыЗаказа.Отменено";
Тексты.Добавить(Текст);
КонецЕсли;
Текст = СтрСоединить(Тексты, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапросов.Добавить(Текст);
ТекстыЗапросов.Добавить(РегистрыНакопления.ЗаказыНаВнутреннееПотребление.ТекстЗапросаОстатки("ВтОстаткиКОформлению"));
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиКОформлению.ЗаказНаВнутреннееПотребление КАК РаспоряженияКОформлению
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| МАКСИМУМ(ОстаткиКОформлению.Склад) КАК Склад,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОстаткиКОформлению.Склад) > 1 КАК РазныеСклады
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению");
Запрос = Новый Запрос(СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов()));
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("Регистратор", Неопределено);
Запрос.УстановитьПараметр("ОтборПоСкладу", Ложь);
Запрос.УстановитьПараметр("Склад", Неопределено);
Результат = Запрос.ВыполнитьПакет();
Выборка = Результат[0].Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеДляВвода.Основание = Выборка.Основание;
ДанныеДляВвода.Статус = Выборка.Статус;
ДанныеДляВвода.ЕстьОтгрузить = Не Результат[1].Пустой();
ДанныеДляВвода.ХозяйственнаяОперация = Выборка.ХозяйственнаяОперация;
КонецЕсли;
Если Не Результат[3].Пустой() Тогда
ДанныеДляВвода.РаспоряженияКОформлению = Результат[3].Выгрузить().ВыгрузитьКолонку("РаспоряженияКОформлению");
Выборка = Результат[4].Выбрать();
Если Выборка.Следующий() Тогда
ДанныеДляВвода.МожноСгруппировать = Не Выборка.РазныеСклады;
ДанныеДляВвода.Склад = Выборка.Склад;
КонецЕсли;
КонецЕсли;
Возврат ДанныеДляВвода;
КонецФункции
Функция ПараметрыОткрытияФормыРабочегоМеста(ХозяйственнаяОперация = Неопределено) Экспорт
ОтборХозяйственныеОперации = Новый СписокЗначений;
Если ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ОтборХозяйственныеОперации.Добавить(ХозяйственнаяОперация);
Иначе
ОтборХозяйственныеОперации.ЗагрузитьЗначения(ХозяйственныеОперацииДокумента());
КонецЕсли;
ОтборТипыДокументов = Новый СписокЗначений;
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.ВнутреннееПотребление));
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборХозяйственныеОперации", ОтборХозяйственныеОперации);
ПараметрыОтбора.Вставить("ОтборТипыДокументов", ОтборТипыДокументов);
ПараметрыОткрытия = Новый Структура("ИмяФормы, ПараметрыФормы");
ПараметрыОткрытия.ИмяФормы = "Обработка.ЖурналДокументовВнутреннегоТовародвижения.Форма.СписокДокументовКОформлению";
ПараметрыОткрытия.ПараметрыФормы = Новый Структура;
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ВнутренниеПотребления");
ПараметрыОткрытия.ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Возврат ПараметрыОткрытия;
КонецФункции
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения, МассивЗаказов) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Объект.Склад = ПараметрыЗаполнения.Склад;
Объект.ПотреблениеПоЗаказам = Истина;
Объект.Дата = ТекущаяДатаСеанса();
Если МассивЗаказов.Количество() = 1 Тогда
Объект.ЗаказНаВнутреннееПотребление = МассивЗаказов[0];
Иначе
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(
Объект.ЗаказНаВнутреннееПотребление,
Объект.Товары,
ПараметрыЗаполнения.ИмяПоляЗаказ);
КонецЕсли;
КонецПроцедуры
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Товары, ПараметрыЗаполнения) Экспорт
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
Если ПараметрыЗаполнения.ФормаОткрыта Тогда
ФормаИлиПараметрыВыбора = ПараметрыЗаполнения.ФормаОбъекта;
Иначе
ФормаИлиПараметрыВыбора = Документы.ВнутреннееПотребление.ПараметрыВыбораСтатейИАналитик(ПараметрыЗаполнения.ХозяйственнаяОперация);
КонецЕсли;
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ФормаИлиПараметрыВыбора,
ПараметрыЗаполнения.ХозяйственнаяОперация,
ПараметрыЗаполнения.Организация,
ПараметрыЗаполнения.Подразделение);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий);
КонецПроцедуры
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Регистратор", Накладная);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("Склад", РеквизитыШапки.Склад);
Запрос.УстановитьПараметр("Сделка", РеквизитыШапки.Сделка);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", РеквизитыШапки.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("НаправлениеДеятельности", РеквизитыШапки.НаправлениеДеятельности);
ТекстыЗапроса = Новый Массив();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказНаВнутреннееПотребление.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление
|ГДЕ
| ЗаказНаВнутреннееПотребление.Организация = &Организация
| И ЗаказНаВнутреннееПотребление.Склад = &Склад
| И ЗаказНаВнутреннееПотребление.Сделка = &Сделка
| И ЗаказНаВнутреннееПотребление.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказНаВнутреннееПотребление.НаправлениеДеятельности = &НаправлениеДеятельности
| И ЗаказНаВнутреннееПотребление.Проведен";
ТекстыЗапроса.Добавить(Текст);
КонецЕсли;
Текст =
"ВЫБРАТЬ
| &Регистратор КАК Заказ";
ТекстыЗапроса.Добавить(Текст);
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Заказ");
КонецФункции
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнутреннееПотреблениеПоНесколькимЗаказам") Тогда
Возврат "Организация, НаправлениеДеятельности, Подразделение, ПотреблениеДляДеятельности";
Иначе
Возврат "Ссылка";
КонецЕсли;
КонецФункции
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок) Экспорт
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
ТекстыЗапроса = Новый Массив();
ТекстЗапросаРегистраЗаказы = РегистрыНакопления.ЗаказыНаВнутреннееПотребление.ТекстЗапросаОстатки("ВтДанныеУчета");
ТекстыЗапроса.Добавить(ТекстЗапросаРегистраЗаказы);
Тексты = Новый Массив();
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ТекстЗапросаЗаказ = Документы.ЗаказНаВнутреннееПотребление.ТекстЗапросаТоварыДокумента();
Тексты.Добавить(ТекстЗапросаЗаказ);
КонецЕсли;
Текст = СтрСоединить(Тексты, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(Текст);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
Запрос.УстановитьПараметр("ОтборПоСкладу", ПараметрыЗаполнения.ОтборПоСкладу);
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
ТаблицаЗаказы.Колонки.КОформлению.Имя = "КоличествоВЗаказе";
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ТаблицаЗаказы.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Назначение КАК Назначение,
| ТаблицаЗаказы.Серия КАК Серия,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.КоличествоВЗаказе КАК Количество
|ПОМЕСТИТЬ ТаблицаЗаказы
|ИЗ
| &ТаблицаЗаказы КАК ТаблицаЗаказы
|");
Отбор = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Склад", "&Склад");
ТекстыЗапросаОстатки = Новый Массив;
ТекстыЗапросаОстатки.Добавить(РегистрыНакопления.ТоварыКОтгрузке.ТекстЗапросаОсталосьОформить(Отбор));
ТекстыЗапросаОстатки.Добавить(
"ВЫБРАТЬ
| ТаблицаЗаказы.ЗаказНаВнутреннееПотребление КАК Распоряжение,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Назначение КАК Назначение,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.Серия КАК Серия,
| ТаблицаЗаказы.Количество КАК Количество,
| 0 КАК Собирается
|ИЗ
| ТаблицаЗаказы КАК ТаблицаЗаказы
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = ТаблицаЗаказы.Номенклатура
|
|ГДЕ
| СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|");
ТекстыЗапроса.Добавить(СтрСоединить(ТекстыЗапросаОстатки, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()));
Запрос = Новый Запрос();
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Склад);
Запрос.УстановитьПараметр("ТаблицаЗаказы", ТаблицаЗаказы);
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
ТаблицаОрдера.Колонки.Количество.Имя = "КоличествоВОрдере";
ТаблицаОрдера.Колонки.Распоряжение.Имя = "ЗаказНаВнутреннееПотребление";
ТаблицаОрдера.Колонки.Собирается.Имя = "КоличествоСобирается";
Товары.Индексы.Добавить("ЗаказНаВнутреннееПотребление, " + ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "ЗаказНаВнутреннееПотребление, КодСтроки, " + ПараметрыЗаполнения.КлючевыеПоля;
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = "ЗаказНаВнутреннееПотребление, " + ПараметрыЗаполнения.КлючевыеПоля;
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоСобирается", Ключ, "", Истина);
Если РаспоряженияДляОрдеров <> Неопределено Тогда
ВнутреннееПотреблениеЛокализация.ЗаполнитьШтрихКодыУпаковок(РаспоряженияДляОрдеров, Товары, ШтрихкодыУпаковок);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,Дата,ХозяйственнаяОперация,Статус";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = ПолноеИмяОбъекта();
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Ложь);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию Тогда
ВозможенУчетСерийВЭксплуатации = ТМЦВЭксплуатацииПовтИсп.ВозможенУчетСерийВЭксплуатации();
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры =
ВозможенУчетСерийВЭксплуатации
ИЛИ ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям =
ВозможенУчетСерийВЭксплуатации
ИЛИ ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
Иначе
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
КонецЕсли;
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаНаВнутренниеНужды);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию
И Объект.Статус = Перечисления.СтатусыВнутреннихПотреблений.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаТМЦВЭксплуатацию);
КонецЕсли;
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийОтправитель");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПолучатель");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказНаВнутреннееПотребление");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_КодСтроки");
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| &Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад
|;
|
|
|ВЫБРАТЬ
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(Товары.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад
|;
|
|
|ВЫБРАТЬ
| &Склад КАК Склад,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Количество КАК Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Склад КАК Склад,
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| Товары.СтатусУказанияСерийОтправитель КАК СтарыйСтатусУказанияСерийОтправитель,
| Товары.СтатусУказанияСерийПолучатель КАК СтарыйСтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА
| ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 6
| ИНАЧЕ 5
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриОтгрузкеНаВнутренниеНужды
| ТОГДА
| ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ &ПриемкаТМЦВЭксплуатацию
| ТОГДА 0
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчитыватьСерииТМЦВЭксплуатации
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 20
| ИНАЧЕ 19
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
|
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.Склад = ТоварыДляЗапроса.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.Склад = СерииДляЗапроса.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И ТоварыДляЗапроса.Склад = ПолитикиУчетаСерий.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ТоварыДляЗапроса.Склад = Склады.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| Статусы.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель > 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ Статусы.СтатусУказанияСерийОтправитель
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерийОтправитель <> Статусы.СтарыйСтатусУказанияСерийОтправитель
| ИЛИ Статусы.СтатусУказанияСерийПолучатель <> Статусы.СтарыйСтатусУказанияСерийПолучатель
| ИЛИ ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель > 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ Статусы.СтатусУказанияСерийОтправитель
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначенияПолейДляОпределенияРаспоряжения.Товары_КодСтроки <> 0 Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_ЗаказНаВнутреннееПотребление;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура ЗаполнитьСерииПоОтгрузке(Объект) Экспорт
ПараметрыИспользованияСерийНаСкладе = Новый Структура("Склад", Объект.Склад);
УстановитьПривилегированныйРежим(Истина);
ВозможенУчетСерийВЭксплуатации = Ложь;
ИспользоватьСерииНоменклатурыСклад = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад",
ПараметрыИспользованияСерийНаСкладе);
ИспользоватьОрдернуюСхемуПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.Склад, Объект.Дата);
УстановитьПривилегированныйРежим(Ложь);
ЗаполнятьСерии = ВозможенУчетСерийВЭксплуатации
И ИспользоватьСерииНоменклатурыСклад
И ИспользоватьОрдернуюСхемуПриОтгрузке;
Если Не ЗаполнятьСерии Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПотребленияТоваров.ЗаказНаВнутреннееПотребление КАК Ссылка
|ПОМЕСТИТЬ Распоряжения
|ИЗ
| &Товары КАК ПотребленияТоваров
|ГДЕ
| ПотребленияТоваров.ЗаказНаВнутреннееПотребление <> &РаспоряжениеПоУмолчанию
|;
|
|
|ВЫБРАТЬ
| РасходныеОрдера.Ссылка КАК Ссылка
|ПОМЕСТИТЬ РасходныеОрдера
|ИЗ
| Документ.РасходныйОрдерНаТовары КАК РасходныеОрдера
|
|ГДЕ
| РасходныеОрдера.Проведен
| И РасходныеОрдера.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРасходныхОрдеров.Отгружен)
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК Товары
| ГДЕ
| Товары.Ссылка = РасходныеОрдера.Ссылка
| И ВЫБОР
| КОГДА &ПотреблениеПоЗаказам
| ТОГДА Товары.Распоряжение В
| (ВЫБРАТЬ
| Распоряжения.Ссылка КАК Ссылка
| ИЗ
| Распоряжения КАК Распоряжения)
| ИНАЧЕ Товары.Распоряжение = &Ссылка
| КОНЕЦ
| )
|;
|
|
|ВЫБРАТЬ
| ПотребленияТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ПотребленияТоваров
|ИЗ
| Документ.ВнутреннееПотребление КАК ПотребленияТоваров
|
|ГДЕ
| ПотребленияТоваров.Проведен
| И ПотребленияТоваров.Ссылка <> &Ссылка
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.ВнутреннееПотребление.Товары КАК Товары
| ГДЕ
| Товары.Ссылка = ПотребленияТоваров.Ссылка
| И НЕ Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И Товары.ЗаказНаВнутреннееПотребление В
| (ВЫБРАТЬ
| Распоряжения.Ссылка КАК Ссылка
| ИЗ
| Распоряжения КАК Распоряжения)
| )
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| РасходныеОрдера КАК РасходныеОрдера
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК Товары
| ПО Товары.Ссылка = РасходныеОрдера.Ссылка
| И НЕ ВЫБОР
| КОГДА &ПотреблениеПоЗаказам
| ТОГДА Товары.Распоряжение В
| (ВЫБРАТЬ
| Распоряжения.Ссылка КАК Ссылка
| ИЗ
| Распоряжения КАК Распоряжения)
| ИНАЧЕ Товары.Распоряжение = &Ссылка
| КОНЕЦ
|
|ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| ПотребленияТоваров КАК ПотребленияТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление.Товары КАК Товары
| ПО ПотребленияТоваров.Ссылка = Товары.Ссылка
| И НЕ Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И НЕ Товары.ЗаказНаВнутреннееПотребление В
| (ВЫБРАТЬ
| Распоряжения.Ссылка КАК Ссылка
| ИЗ
| Распоряжения КАК Распоряжения)
|
|ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL";
РаспоряжениеПоУмолчанию = Документы.ЗаказНаВнутреннееПотребление.ПустаяСсылка();
ВыгружаемыеКолонки = "НомерСтроки, Номенклатура ,Характеристика, Назначение, Количество,
|ЗаказНаВнутреннееПотребление";
Товары = Объект.Товары.Выгрузить(, ВыгружаемыеКолонки);
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("ПотреблениеПоЗаказам", Объект.ПотреблениеПоЗаказам);
Запрос.УстановитьПараметр("РаспоряжениеПоУмолчанию", РаспоряжениеПоУмолчанию);
Запрос.УстановитьПараметр("Товары", Товары);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
Если Не РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.Назначение КАК Назначение,
| Остатки.Серия КАК Серия,
| СУММА(Остатки.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| Товары.Количество КАК Количество
| ИЗ
| РасходныеОрдера КАК РасходныеОрдера
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ОтгружаемыеТовары КАК Товары
| ПО Товары.Ссылка = РасходныеОрдера.Ссылка
| И Товары.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить)
| И Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| -Товары.Количество КАК Количество
| ИЗ
| ПотребленияТоваров КАК ПотребленияТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление.Товары КАК Товары
| ПО ПотребленияТоваров.Ссылка = Товары.Ссылка
| И Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.Серия КАК Серия,
| -Серии.Количество КАК Количество
| ИЗ
| ПотребленияТоваров КАК ПотребленияТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление.Серии КАК Серии
| ПО ПотребленияТоваров.Ссылка = Серии.Ссылка
| ГДЕ
| НЕ Серии.Ссылка ЕСТЬ NULL
|
| ) КАК Остатки
|
|СГРУППИРОВАТЬ ПО
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.Назначение,
| Остатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(Остатки.Количество) <> 0
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|
|ГДЕ
| Товары.Количество > 0
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ВсяНоменклатура
| ПО Товары.Номенклатура = ВсяНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ПО ВсяНоменклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
| И (ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УчитыватьСерииТМЦВЭксплуатации, ЛОЖЬ))
|
|ГДЕ
| НЕ ВидыНоменклатуры.Ссылка ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ВсяНоменклатура
| ПО Товары.Номенклатура = ВсяНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ПО ВсяНоменклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка
| И (ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВидыНоменклатуры.ПолитикаУчетаСерий.УчитыватьСерииТМЦВЭксплуатации, ЛОЖЬ))
|
|ГДЕ
| ВидыНоменклатуры.Ссылка ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение";
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ТаблицаСерийОрдера = РезультатЗапроса[0].Выгрузить();
ПоляПоискаБезСерий = "Номенклатура, Характеристика, Назначение";
ПоляПоискаССерией = "Номенклатура, Характеристика, Назначение, Серия";
ОтборСтрокБезСерий = Новый Структура(ПоляПоискаБезСерий);
ОтборСтрокССерией = Новый Структура(ПоляПоискаССерией);
ТаблицаСерийОрдера.Индексы.Добавить(ПоляПоискаБезСерий);
ТаблицаСерийОрдера.Индексы.Добавить(ПоляПоискаССерией);
СтрокиКОбработке = Новый Массив;
ДействияСоСтрокой = Новый Структура("ПересчитатьКоличествоУпаковок");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ВыборкаНомеровСтрокССериями = РезультатЗапроса[2].Выбрать();
Пока ВыборкаНомеровСтрокССериями.Следующий() Цикл
СтрокаТоваров = Объект.Товары[ВыборкаНомеровСтрокССериями.НомерСтроки - 1];
ОстатокПоТовару = СтрокаТоваров.Количество;
ОстатокПоТоваруИсходный = ОстатокПоТовару;
ОтборСтрок = ?(ЗначениеЗаполнено(СтрокаТоваров.Серия), ОтборСтрокССерией, ОтборСтрокБезСерий);
ЗаполнитьЗначенияСвойств(ОтборСтрок, СтрокаТоваров);
СтрокиССериями = ТаблицаСерийОрдера.НайтиСтроки(ОтборСтрок);
Если СтрокиССериями.Количество() Тогда
ПерваяСтрока = Истина;
Для Каждого СтрокаССерией Из СтрокиССериями Цикл
Если СтрокаССерией.Количество <= 0 Тогда
Продолжить;
КонецЕсли;
Если Не ПерваяСтрока Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТоваров);
СтрокаТоваров = НоваяСтрока;
КонецЕсли;
ПерваяСтрока = Ложь;
КоличествоЗаполнения = Мин(ОстатокПоТовару, СтрокаССерией.Количество);
СтрокаТоваров.Серия = СтрокаССерией.Серия;
СтрокаТоваров.Количество = КоличествоЗаполнения;
СтрокиКОбработке.Добавить(СтрокаТоваров);
СтрокаССерией.Количество = СтрокаССерией.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если ОстатокПоТовару <= 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОстатокПоТовару > 0 Тогда
Если ОстатокПоТоваруИсходный > ОстатокПоТовару Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТоваров);
СтрокаТоваров = НоваяСтрока;
СтрокаТоваров.Количество = ОстатокПоТовару;
СтрокиКОбработке.Добавить(СтрокаТоваров);
КонецЕсли;
СтрокаТоваров.Серия = Неопределено;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
СтрокиКОбработке,
ДействияСоСтрокой,
Объект.Товары,
КэшированныеЗначения);
Объект.Серии.Очистить();
ОтборСтрок = ОтборСтрокБезСерий;
ВыборкаТовары = РезультатЗапроса[3].Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОстатокПоТовару = ВыборкаТовары.Количество;
ЗаполнитьЗначенияСвойств(ОтборСтрок, ВыборкаТовары);
СтрокиССериями = ТаблицаСерийОрдера.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаССерией Из СтрокиССериями Цикл
Если СтрокаССерией.Количество = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТовары);
КоличествоЗаполнения = Мин(ОстатокПоТовару,СтрокаССерией.Количество);
НоваяСтрока.Серия = СтрокаССерией.Серия;
НоваяСтрока.Количество = КоличествоЗаполнения;
СтрокаССерией.Количество = СтрокаССерией.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СменаСтатуса
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыВнутреннихПотреблений[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ТаблицаДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ВнутреннееПотребление КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
ЗначениеНовогоСтатуса = Перечисления.СтатусыВнутреннихПотреблений[НовыйСтатус];
Если ВыборкаПроверки.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию Тогда
ТекстОшибки = НСтр("ru='У документа %1 статус ""%2"" не установлен, т.к. статусы не используются для операции, выбранной в документе'");
ТекстОшибки = СтрШаблон(ТекстОшибки, ВыборкаПроверки.Ссылка, ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка,,, Отказ);
КонецЕсли;
Возврат НЕ Отказ;
КонецФункции
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыВнутреннихПотреблений") Тогда
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыВнутреннихПотреблений.Отгружено);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыВнутреннихПотреблений.Принято);
КонецЕсли;
Возврат Таблица;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ХозяйственныеОперацииДокумента() Экспорт
СписокОпераций = Новый Массив;
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию);
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию);
Возврат СписокОпераций;
КонецФункции
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация
|ИЗ
| Документ.ВнутреннееПотребление КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Иначе
Дата = Дата(1,1,1);
Организация = Неопределено;
КонецЕсли;
СтруктураРеквизитов = Новый Структура("Дата, Организация",
Дата,
Организация,);
Возврат СтруктураРеквизитов;
КонецФункции
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
МассивВсехРеквизитов.Добавить("Товары.ФизическоеЛицо");
МассивВсехРеквизитов.Добавить("Товары.КатегорияЭксплуатации");
МассивВсехРеквизитов.Добавить("Товары.ИнвентарныйНомер");
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию Тогда
МассивРеквизитовОперации.Добавить("Товары.ФизическоеЛицо");
МассивРеквизитовОперации.Добавить("Товары.КатегорияЭксплуатации");
КонецЕсли;
КонецПроцедуры
Процедура УстановитьУсловноеОформлениеСписка(Список) Экспорт
ОформляемоеПоле = "Тип";
Элемент = Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы.Добавить();
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ОформляемоеПоле);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тип");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Тип("ДокументСсылка.ВнутреннееПотребление");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru='Списание на расходы'"));
#Область ПередачаВЭксплуатацию
Элемент = Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы.Добавить();
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Тип");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Тип");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Тип("ДокументСсылка.ВнутреннееПотребление");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru='Передача в эксплуатацию'"));
#КонецОбласти
КонецПроцедуры
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Склад = Объект.Склад;
ПараметрыЗаполнения.Договор = Неопределено;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию Тогда
ПараметрыЗаполнения.СписаниеТоваровИРаботНаСтатьи = Истина;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию Тогда
ПараметрыЗаполнения.ПередачаВЭксплуатацию = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 1);
СтруктураСостояние.Вставить("ЭтоНакладная", Истина);
СтруктураСостояние.Вставить("СкладВШапке", Истина);
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ИмяПоляНакладнаяПоЗаказам", "ПотреблениеПоЗаказам");
Возврат СтруктураСостояние;
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляЗаполненияНазначения = "Товары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
ПорядокОбработкиДокумента.ИмяЭлементаФормыОбособленно = "ТоварыОбособленно";
ПорядокОбработкиДокумента.ИмяГруппыЭлементовКомандыОбособленно = "ТоварыГруппаКомандыОбособленно";
ПорядокОбработкиДокумента.ИмяРеквизитаПоЗаказу = "ПотреблениеПоЗаказам";
Возврат ПорядокОбработкиДокумента;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(Склад)";
КонецПроцедуры
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
Возврат ПравилаПечатиЗадания;
КонецФункции
#КонецОбласти
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ЗаполнениеДокументаПоЗаказамОрдерам
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Количество КАК Количество,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.СтатьяРасходов КАК СтатьяРасходов,
| Таблица.АналитикаРасходов КАК АналитикаРасходов,
| ВЫБОР КОГДА Таблица.Ссылка.ПотреблениеПоЗаказам
| ТОГДА Таблица.ЗаказНаВнутреннееПотребление
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК ЗаказНаВнутреннееПотребление,
| Таблица.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Таблица.Серия КАК Серия,
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| Таблица.Назначение КАК Назначение,
| Таблица.ФизическоеЛицо КАК ФизическоеЛицо,
| Таблица.КатегорияЭксплуатации КАК КатегорияЭксплуатации,
| Таблица.Партия КАК Партия,
| Таблица.ИнвентарныйНомер КАК ИнвентарныйНомер
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Накладная";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
#КонецОбласти
Функция ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация) Экспорт
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.Товары";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ПараметрыВыбора.ЭлементыФормы.Статья.Добавить("ТоварыСтатьяРасходов");
ПараметрыВыбора.ЭлементыФормы.АналитикаРасходов.Добавить("ТоварыАналитикаРасходов");
ПараметрыВыбора.ЭлементыФормы.АналитикаАктивовПассивов.Добавить("ТоварыАналитикаАктивовПассивов");
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию Тогда
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Ложь;
СписокУсловий = Новый Структура;
СписокУсловий.Вставить("АналитикаРасходовОбязательна", Истина);
СписокУсловий.Вставить("УчитыватьВВидеГрупповогоОС", Ложь);
ПараметрыВыбора.УсловияОбязательногоЗаполненияАналитикиВСтроках = СписокУсловий;
КонецЕсли;
Возврат ПараметрыВыбора;
КонецФункции
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Ссылка");
Поля.Добавить("Номер");
Поля.Добавить("Дата");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Если ПолучитьФункциональнуюОпцию("БазоваяВерсия") Тогда
СтандартнаяОбработка = Ложь;
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Списание товаров на хознужды %1 от %2'"),
Данные.Номер,
Данные.Дата);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.СтрокаПоиска) Тогда
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("Номенклатура");
СтруктураПолей.Вставить("Характеристика");
СтруктураПолей.Вставить("ФизическоеЛицо");
СтруктураПолей.Вставить("СтатьяРасходов");
СтруктураПолей.Вставить("АналитикаРасходов");
УсловиеОтбора = "ИСТИНА";
Для Каждого КлючИЗначениеОтбора Из Параметры.Отбор Цикл
Если СтруктураПолей.Свойство(КлючИЗначениеОтбора.Ключ) Тогда
УсловиеОтбора = УсловиеОтбора + "
| И Строки." + КлючИЗначениеОтбора.Ключ + " = &" + КлючИЗначениеОтбора.Ключ;
Запрос.УстановитьПараметр(КлючИЗначениеОтбора.Ключ, КлючИЗначениеОтбора.Значение);
КонецЕсли;
КонецЦикла;
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 50
| Документы.Ссылка,
| Документы.Номер,
| Документы.Дата,
| Документы.ПометкаУдаления
|ИЗ
| Документ.ВнутреннееПотребление КАК Документы";
Если УсловиеОтбора <> "ИСТИНА" Тогда
ТекстЗапроса = ТекстЗапроса + "
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление.Товары КАК Строки
| ПО Строки.Ссылка = Документы.Ссылка";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ГДЕ
| Документы.Номер ПОДОБНО &СтрокаПоиска
| И &УсловиеОтбора
|";
Запрос.УстановитьПараметр("СтрокаПоиска", Параметры.СтрокаПоиска + "%");
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&УсловиеОтбора", УсловиеОтбора);
ДанныеВыбора = Новый СписокЗначений;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ТекстЗначения = СокрЛП(Выборка.Номер) + " (" + Выборка.Дата + ")";
ЗначениеСписка = Новый Структура;
ЗначениеСписка.Вставить("Значение", Выборка.Ссылка);
ЗначениеСписка.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
ДанныеВыбора.Добавить(ЗначениеСписка, ТекстЗначения);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
Функция ПолноеИмяОбъекта()
Возврат "Документ.ВнутреннееПотребление";
КонецФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Если ИмяРегистра = "ТоварыКОтгрузке" Тогда
ИсточникиДанных.Вставить("Товары.ЗаказНаВнутреннееПотребление");
КонецЕсли;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Дата КАК Период,
| Таблица.Номер КАК Номер,
| Таблица.Организация КАК Организация,
| Таблица.Склад КАК Склад,
| Таблица.Ссылка КАК Ссылка,
| Таблица.Подразделение КАК Подразделение,
| ЕСТЬNULL(Таблица.Подразделение.ВариантОбособленногоУчетаТоваров, ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| Таблица.Дата КАК ДатаРаспоряжения,
| Таблица.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Таблица.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление,
| Таблица.ПотреблениеПоЗаказам КАК ПоЗаказуНаВнутреннееПотребление,
| Таблица.ПотреблениеДляДеятельности КАК ПотреблениеДляДеятельности,
| Таблица.НаправлениеДеятельности КАК НаправлениеДеятельности,
| Таблица.Ответственный КАК Менеджер,
| Таблица.Сделка КАК Сделка,
| ЕСТЬNULL(Таблица.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ВЫБОР
| КОГДА Таблица.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Таблица.Дата >= Таблица.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| Таблица.Ответственный КАК Ответственный,
| Таблица.Комментарий КАК Комментарий,
| Таблица.Исправление КАК Исправление,
| Таблица.СторнируемыйДокумент КАК СторнируемыйДокумент,
| Таблица.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| Таблица.ПометкаУдаления КАК ПометкаУдаления,
| Таблица.Проведен КАК Проведен,
| Таблица.Статус КАК Статус,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ВнутреннееПотребление КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО Таблица.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| Таблица.Ссылка = &Ссылка";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Склад", Реквизиты.Склад);
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("ДатаРаспоряжения", Реквизиты.ДатаРаспоряжения);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("ОрдернаяСхемаПриОтгрузке", Реквизиты.ОрдернаяСхемаПриОтгрузке);
Запрос.УстановитьПараметр("ЗаказНаВнутреннееПотребление", Реквизиты.ЗаказНаВнутреннееПотребление);
Запрос.УстановитьПараметр("ПоЗаказуНаВнутреннееПотребление", Реквизиты.ПоЗаказуНаВнутреннееПотребление);
Запрос.УстановитьПараметр("Сделка", Реквизиты.Сделка);
Запрос.УстановитьПараметр("ОбособленныйУчетТоваровПоСделке", Реквизиты.ОбособленныйУчетТоваровПоСделке);
Запрос.УстановитьПараметр("ВариантОбособленногоУчетаТоваров", Реквизиты.ВариантОбособленногоУчетаТоваров);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("ПотреблениеДляДеятельности", Реквизиты.ПотреблениеДляДеятельности);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Реквизиты.НаправлениеДеятельности);
Запрос.УстановитьПараметр("Менеджер", Реквизиты.Менеджер);
Запрос.УстановитьПараметр("Валюта", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета", ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
Запрос.УстановитьПараметр("ПустойКлючСвязи", Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));
Запрос.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
Запрос.УстановитьПараметр("СкладскаяОперация", Перечисления.СкладскиеОперации.ОтгрузкаНаВнутренниеНужды);
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("Ответственный", Реквизиты.Ответственный);
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
Запрос.УстановитьПараметр("Исправление", Реквизиты.Исправление);
Запрос.УстановитьПараметр("СторнируемыйДокумент", Реквизиты.СторнируемыйДокумент);
Запрос.УстановитьПараметр("ИсправляемыйДокумент", Реквизиты.ИсправляемыйДокумент);
Запрос.УстановитьПараметр("НастройкаХозяйственнойОперации", Реквизиты.НастройкаХозяйственнойОперации);
Запрос.УстановитьПараметр("Статус", Реквизиты.Статус);
ЗначенияПараметровПроведения = ЗначенияПараметровПроведения(Реквизиты);
Для каждого КлючИЗначение Из ЗначенияПараметровПроведения Цикл
Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)
ЗначенияПараметровПроведения = Новый Структура;
ЗначенияПараметровПроведения.Вставить("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяОбъекта()));
ЗначенияПараметровПроведения.Вставить("НазваниеДокумента", НСтр("ru='Внутреннее потребление'"));
ЗначенияПараметровПроведения.Вставить("ДатаНачалаДействияФСБУ5", '000101010000');
ЗначенияПараметровПроведения.Вставить("СписатьСтоимостьТМЦВЭксплуатации", Ложь);
Если Реквизиты <> Неопределено Тогда
ЗначенияПараметровПроведения.Вставить("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
ЗначенияПараметровПроведения.Вставить(
"ИспользоватьУчетПрослеживаемыхИмпортныхТоваров",
УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Реквизиты.Период));
КонецЕсли;
ВнутреннееПотреблениеЛокализация.ДополнитьЗначенияПараметровПроведения(ЗначенияПараметровПроведения, Реквизиты);
Возврат ЗначенияПараметровПроведения;
КонецФункции
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос("
|ВЫБРАТЬ
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| &ПустаяСерия КАК Серия
| ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| &ПустаяСерия КАК Серия
| ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасовВладельца.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| &ПустаяСерия КАК Серия
| ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.ВидыЗапасов КАК ВидыЗапасовВладельца
| ПО
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца = ВидыЗапасовВладельца.Ссылка
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ВидыЗапасовВладельца.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасовВладельца.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| &ПустаяСерия КАК Серия
| ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.ВидыЗапасов КАК ВидыЗапасовВладельца
| ПО
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца = ВидыЗапасовВладельца.Ссылка
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ВидыЗапасовВладельца.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Серия КАК Серия
| ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
| ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.АналитикаУчетаНоменклатуры.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
| ) КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО
| ТаблицаТовары.Номенклатура = Аналитика.Номенклатура
| И ТаблицаТовары.Характеристика = Аналитика.Характеристика
| И ТаблицаТовары.Назначение = Аналитика.Назначение
| И ТаблицаТовары.Серия = Аналитика.Серия
| И ТаблицаТовары.Склад = Аналитика.МестоХранения
|ГДЕ
| Аналитика.Номенклатура ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Склад,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.Серия
|");
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("Подразделение", Запрос.Параметры.Подразделение);
ЗапросАналитик.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям",
Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка)
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыНаВнутреннееПотребление(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыНаВнутреннееПотребление";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийОтправитель В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| КОНЕЦ КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА &Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.КодСтроки <> 0
| И &ПоЗаказуНаВнутреннееПотребление
|
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| &Склад КАК Отправитель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК ПомещениеОтправителя,
| НЕОПРЕДЕЛЕНО КАК ПомещениеПолучателя,
| &СкладскаяОперация КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| &Период КАК Период,
| &Ссылка КАК Регистратор,
| НЕ &ОрдернаяСхемаПриОтгрузке КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ВнутреннееПотребление.Серии КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| &Склад,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО,
| &СкладскаяОперация,
| &Ссылка,
| &Период,
| &Ссылка,
| НЕ &ОрдернаяСхемаПриОтгрузке
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "МатериалыИРаботыВПроизводстве";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ВтТовары.Номенклатура КАК Номенклатура,
| ВтТовары.Характеристика КАК Характеристика,
| ВтТовары.Назначение КАК Назначение,
| ВтТовары.Количество КАК Количество
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ВтТовары
|ГДЕ
| ВтТовары.Ссылка = &Ссылка
| И ВтТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И НЕ ВтТовары.Номенклатура.ПрослеживаемыйТовар
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса) Экспорт
ИмяРегистра = "ВтВидыЗапасов";
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| Справочник.ВидЗапасовВладельца КАК ВидЗапасовВладельца,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ АналитикаСебестоимости.КлючАналитики
| КОНЕЦ КАК АналитикаУчетаСебестоимости,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Назначение КАК Назначение,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС В (ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС), ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА))
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаздельногоУчетаНДС = ЗНАЧЕНИЕ(Перечисление.ВариантыРаздельногоУчетаНДС.Распределение)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ВводОСВэксплуатацию)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаздельногоУчетаНДС = ЗНАЧЕНИЕ(Перечисление.ВариантыРаздельногоУчетаНДС.Распределение)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОпределяетсяРаспределением)
| ИНАЧЕ
| &ПотреблениеДляДеятельности
| КОНЕЦ КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК КорВидЗапасов,
| КлючиКомитента.КлючАналитики КАК АналитикаКомитента,
| КлючиКомитентаБезНазначения.КлючАналитики КАК АналитикаКомитентаБезНазначения,
| ВЫБОР КОГДА Справочник.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ КАК АналитикаРасчетовСКомитентом,
| КлючиКомитента.МестоХранения КАК Комитент,
| ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| КлючиПроизводства.КлючАналитики КАК АналитикаПроизводства,
| Аналитика.СкладскаяТерритория.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПрослеживаемаяРабота
|
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.ВидыЗапасов КАК Справочник
| ПО
| ТаблицаВидыЗапасов.ВидЗапасов = Справочник.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиКомитента
| ПО
| Аналитика.Номенклатура = КлючиКомитента.Номенклатура
| И Аналитика.Характеристика = КлючиКомитента.Характеристика
| И Аналитика.Назначение = КлючиКомитента.Назначение
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиКомитента.Серия
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = КлючиКомитента.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиКомитентаБезНазначения
| ПО
| КлючиКомитента.Номенклатура = КлючиКомитентаБезНазначения.Номенклатура
| И КлючиКомитента.Характеристика = КлючиКомитентаБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиКомитентаБезНазначения.Назначение
| И КлючиКомитента.Серия = КлючиКомитентаБезНазначения.Серия
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = КлючиКомитентаБезНазначения.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводства
| ПО
| Аналитика.Номенклатура = КлючиПроизводства.Номенклатура
| И Аналитика.Характеристика = КлючиПроизводства.Характеристика
| И Аналитика.Назначение = КлючиПроизводства.Назначение
| И ТаблицаВидыЗапасов.Серия = КлючиПроизводства.Серия
| И &Подразделение = КлючиПроизводства.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаСебестоимости
| ПО Аналитика.Номенклатура = АналитикаСебестоимости.Номенклатура
| И Аналитика.Характеристика = АналитикаСебестоимости.Характеристика
| И Аналитика.Серия = АналитикаСебестоимости.Серия
| И Аналитика.МестоХранения = АналитикаСебестоимости.МестоХранения
| И &ПустоеНазначение = АналитикаСебестоимости.Назначение
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Организация = &Организация
| И АналитикаРасчетов.Партнер = Справочник.ВладелецТовара
| И АналитикаРасчетов.Контрагент = Справочник.Контрагент
| И АналитикаРасчетов.Договор = Справочник.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = ТаблицаВидыЗапасов.Назначение.НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = &Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = Справочник.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = Справочник.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = ТаблицаВидыЗапасов.Назначение.НаправлениеДеятельности
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасовВладельца,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасов,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаТовары.АналитикаУчетаНоменклатуры
| ИНАЧЕ АналитикаСебестоимости.КлючАналитики
| КОНЕЦ КАК АналитикаУчетаСебестоимости,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| И ТаблицаТовары.СтатьяРасходов.ВидЦенностиНДС В (ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС), ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА))
| И ТаблицаТовары.СтатьяРасходов.ВариантРаздельногоУчетаНДС = ЗНАЧЕНИЕ(Перечисление.ВариантыРаздельногоУчетаНДС.Распределение)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ВводОСВэксплуатацию)
| КОГДА ТаблицаТовары.СтатьяРасходов.ВариантРаздельногоУчетаНДС = ЗНАЧЕНИЕ(Перечисление.ВариантыРаздельногоУчетаНДС.Распределение)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОпределяетсяРаспределением)
| ИНАЧЕ &ПотреблениеДляДеятельности
| КОНЕЦ КАК НалогообложениеНДС,
| ТаблицаТовары.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТовары.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТовары.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК АналитикаКомитента,
| НЕОПРЕДЕЛЕНО КАК АналитикаКомитентаБезНазначения,
| НЕОПРЕДЕЛЕНО КАК АналитикаРасчетовСКомитентом,
| НЕОПРЕДЕЛЕНО КАК Комитент,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПустаяСсылка) КАК ТипЗапасов,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| КлючиПроизводства.КлючАналитики КАК АналитикаПроизводства,
| Аналитика.СкладскаяТерритория.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ЛОЖЬ КАК ПрослеживаемаяРабота
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаТовары.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводства
| ПО Аналитика.Номенклатура = КлючиПроизводства.Номенклатура
| И Аналитика.Характеристика = КлючиПроизводства.Характеристика
| И Аналитика.Назначение = КлючиПроизводства.Назначение
| И ТаблицаТовары.Серия = КлючиПроизводства.Серия
| И &Подразделение = КлючиПроизводства.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаСебестоимости
| ПО Аналитика.Номенклатура = АналитикаСебестоимости.Номенклатура
| И Аналитика.Характеристика = АналитикаСебестоимости.Характеристика
| И Аналитика.Серия = АналитикаСебестоимости.Серия
| И Аналитика.МестоХранения = АналитикаСебестоимости.МестоХранения
| И &ПустоеНазначение = АналитикаСебестоимости.Назначение
|
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТовары.АналитикаУчетаНоменклатуры НЕ В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасов.АналитикаУчетаНоменклатуры
| ИЗ
| Документ.ВнутреннееПотребление.ВидыЗапасов КАК ВидыЗапасов
| ГДЕ
| ВидыЗапасов.Ссылка = &Ссылка)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТоварыОрганизаций(Запрос, ТекстыЗапроса) Экспорт
ИмяТаблицы = "ВтТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| &Организация КАК ОрганизацияОтгрузки,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ &Организация
| КОНЕЦ КАК Организация,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.НомерГТД.ТипНомераГТД КАК НомерГТДТипНомераГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| ТОГДА ВЫБОР ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОбъектыНезавершенногоСтроительства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставНМА)
| КОНЕЦ
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаПрочиеАктивы)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиАктивовПассивов
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
|
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)
| ИНАЧЕ &ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.СтатьяРасходов.ТипРасходов КАК СтатьяРасходовТипРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА ТаблицаВидыЗапасов.АналитикаКомитента
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТаблицаВидыЗапасов.КорВидЗапасов
| КОНЕЦ КАК КорВидЗапасов
|ПОМЕСТИТЬ ВтТоварыОрганизаций
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаВидыЗапасов.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| СправочникНоменклатура.ТипНоменклатуры В(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| &Организация КАК ОрганизацияОтгрузки,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.НомерГТД.ТипНомераГТД КАК НомерГТДТипНомераГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| ТОГДА ВЫБОР ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОбъектыНезавершенногоСтроительства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставНМА)
| КОНЕЦ
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаПрочиеАктивы)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиАктивовПассивов
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
|
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)
| ИНАЧЕ &ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.СтатьяРасходов.ТипРасходов КАК СтатьяРасходовТипРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.ПрослеживаемаяРабота
|
|ИНДЕКСИРОВАТЬ ПО
| НомерГТДТипНомераГТД";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяТаблицы);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры) Экспорт
ИмяРегистра = "ТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТоварыОрганизаций", ТекстыЗапроса) Тогда
ТекстЗапросаВтТоварыОрганизаций(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВтТоварыОрганизаций.НомерСтроки КАК НомерСтроки,
| ВтТоварыОрганизаций.ВидДвижения КАК ВидДвижения,
| ВтТоварыОрганизаций.Период КАК Период,
| ВтТоварыОрганизаций.Склад КАК Склад,
| ВтТоварыОрганизаций.ОрганизацияОтгрузки КАК ОрганизацияОтгрузки,
| ВтТоварыОрганизаций.Организация КАК Организация,
| ВтТоварыОрганизаций.ВидЗапасов КАК ВидЗапасов,
| ВтТоварыОрганизаций.Номенклатура КАК Номенклатура,
| ВтТоварыОрганизаций.Характеристика КАК Характеристика,
| ВтТоварыОрганизаций.НомерГТД КАК НомерГТД,
| ВтТоварыОрганизаций.Количество КАК Количество,
| ВтТоварыОрганизаций.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВтТоварыОрганизаций.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВтТоварыОрганизаций.НалогообложениеНДС КАК НалогообложениеНДС,
| ВтТоварыОрганизаций.СтатьяРасходов КАК СтатьяРасходов,
| ВтТоварыОрганизаций.АналитикаРасходов КАК АналитикаРасходов,
| ВтТоварыОрганизаций.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ВтТоварыОрганизаций.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВтТоварыОрганизаций.КорАналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ВтТоварыОрганизаций.КорВидЗапасов КАК КорВидЗапасов
|ИЗ
| ВтТоварыОрганизаций КАК ВтТоварыОрганизаций
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизацийКПередаче";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация КАК ОрганизацияВладелец,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасовПродавца,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаКомитентаБезНазначения КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов.Валюта КАК Валюта,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| 0 КАК Количество,
| 0 КАК СуммаВыручки,
| 0 КАК СуммаВыручкиРегл,
| 0 КАК СуммаВыручкиУпр,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписано,
| 0 КАК КоличествоКОформлению,
| 0 КАК КоличествоКОформлениюПоРНПТ,
| 0 КАК СуммаВыручкиКОформлению,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписаноКОформлению,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоСписаноКОформлениюПоРНПТ,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.СписаниеКомиссионныхТоваров) КАК НастройкаХозяйственнойОперации,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДвиженияНоменклатураДоходыРасходы(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураДоходыРасходы";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| &Период КАК Период,
|
| ВЫБОР
|
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)
|
| КОГДА Строки.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И Строки.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| ТОГДА
| ВЫБОР
| КОГДА Строки.СтатьяРасходов.ВидЦенностиНДС В (
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС),
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОбъектыНезавершенногоСтроительства))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА Строки.СтатьяРасходов.ВидЦенностиНДС = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставНМА)
| КОНЕЦ
|
| КОГДА Строки.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И Строки.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаПрочиеАктивы)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
|
| КОГДА Строки.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиАктивовПассивов
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
|
| ИНАЧЕ &ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
|
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
|
| ВЫБОР КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| Строки.АналитикаКомитентаБезНазначения
| ИНАЧЕ
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА Строки.АналитикаУчетаНоменклатуры
| ИНАЧЕ Строки.АналитикаУчетаСебестоимости
| КОНЕЦ
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА Строки.Комитент
| КОГДА Строки.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА &Подразделение
| ИНАЧЕ &Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ВЫБОР
| КОГДА Строки.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА
| ВЫБОР КОГДА Строки.Номенклатура.ПрослеживаемыйТовар
| ТОГДА Строки.ВидЗапасов.ТипЗапасов
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОНЕЦ КАК ТипЗапасов,
|
| Строки.СтатьяРасходов КАК СтатьяДоходовРасходов,
| Строки.АналитикаРасходов КАК АналитикаРасходов,
| Строки.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
|
| ВЫБОР КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ВидыЗапасов.Договор.НаправлениеДеятельности
| ИНАЧЕ
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА Строки.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности
| ИНАЧЕ Строки.АналитикаУчетаСебестоимости.Назначение.НаправлениеДеятельности
| КОНЕЦ
| КОНЕЦ КАК НаправлениеДеятельностиНоменклатуры,
| &НаправлениеДеятельности КАК НаправлениеДеятельностиСтатьи,
|
| Строки.Количество КАК Количество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
|
| ВЫБОР
| КОГДА Строки.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА Строки.Номенклатура
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА Строки.ВидЗапасов
| ИНАЧЕ Строки.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры
|
|ИЗ
| ВтВидыЗапасов КАК Строки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО Строки.ВидЗапасов = ВидыЗапасов.Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Партнер,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Комментарий КАК Комментарий,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| """" КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И НЕ ТоварыДокумента.ЗаказНаВнутреннееПотребление В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказНаВнутреннееПотребление.ПустаяСсылка))
| ТОГДА ТоварыДокумента.ЗаказНаВнутреннееПотребление
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И НЕ ТоварыДокумента.ЗаказНаВнутреннееПотребление В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказНаВнутреннееПотребление.ПустаяСсылка))
| ТОГДА ТоварыДокумента.ЗаказНаВнутреннееПотребление.Подразделение
| ИНАЧЕ ДанныеШапки.Подразделение
| КОНЕЦ КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
|";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И НЕ ТоварыДокумента.ЗаказНаВнутреннееПотребление В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказНаВнутреннееПотребление.ПустаяСсылка))
| ТОГДА ТоварыДокумента.ЗаказНаВнутреннееПотребление
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И НЕ ТоварыДокумента.ЗаказНаВнутреннееПотребление В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказНаВнутреннееПотребление.ПустаяСсылка))
| ТОГДА ТоварыДокумента.ЗаказНаВнутреннееПотребление.Подразделение
| ИНАЧЕ ДанныеШапки.Подразделение
| КОНЕЦ КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ВЫБОР
| КОГДА ДанныеШапки.ПотреблениеПоЗаказам
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0";
ОбъектМетаданных = Метаданные.Документы.ВнутреннееПотребление;
ИмяТЧСерии = "Серии";
СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ИмяТЧСерии);
КонецПроцедуры
Функция ТекстЗапросаТаблицаВтИсходныеПрочиеРасходы(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтИсходныеПрочиеРасходы";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Период КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ТаблицаРасходы.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаРасходы.АналитикаРасходов КАК АналитикаРасходов,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
|
| 0 КАК СуммаСНДС,
| 0 КАК СуммаБезНДС,
| 0 КАК СуммаБезНДСУпр,
| 0 КАК СуммаСНДСРегл,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК ПостояннаяРазница,
| 0 КАК ВременнаяРазница,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК АналитикаУчетаНоменклатуры,
| ТаблицаРасходы.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ПОМЕСТИТЬ ВтИсходныеПрочиеРасходы
|ИЗ
| ВтВидыЗапасов КАК ТаблицаРасходы
|ГДЕ
| ТаблицаРасходы.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаВтПрочиеРасходы(Запрос, ТекстыЗапроса) Экспорт
ИмяРегистра = "ВтПрочиеРасходы";
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтИсходныеПрочиеРасходы", ТекстыЗапроса) Тогда
ТекстЗапросаТаблицаВтИсходныеПрочиеРасходы(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = РегистрыНакопления.ПрочиеРасходы.ТекстЗапросаТаблицаВтПрочиеРасходы();
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ВнутреннееПотребление";
ВЗапросеЕстьИсточник = Истина;
ЗначенияПараметров = ЗначенияПараметровПроведения();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриОтгрузке",
"ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ПоЗаказуНаВнутреннееПотребление",
"ТаблицаТовары.Ссылка.ПотреблениеПоЗаказам");
Если ИмяРегистра = "РаспределениеЗапасовДвижения" Тогда
ТекстыЗапроса = Новый СписокЗначений();
СинонимТаблицыДокумента = "ТабЧасть";
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса.ВыгрузитьЗначения(), ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ИначеЕсли ИмяРегистра = "ЗаказыНаВнутреннееПотребление" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыНаВнутреннееПотребление(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Ложь;
КонецЕсли;
Если ТекстЗапроса = Неопределено Тогда
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов"
ИЛИ ИмяРегистра = "ДокументыПоОС"
ИЛИ ИмяРегистра = "ДокументыПоНМА" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ ТабЧасть.Ссылка.Склад
| КОНЕЦ КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.КодСтроки = 0";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
ДополнительныеТаблицы.Добавить("ВтПрочиеРасходы");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[1], ТекстыЗапроса) Тогда
ТекстЗапросаТаблицаВтПрочиеРасходы(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область СписаниеНаРасходыАктивы_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаДокумента.ПотреблениеДляДеятельности КАК ВидДеятельностиНДСДокумента,
|
| ЕСТЬNULL(ПрочиеРасходы.ОрганизацияПолучатель, НЕОПРЕДЕЛЕНО) КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходовАктивов,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| ТОГДА ТаблицаВидыЗапасов.АналитикаРасходов
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаАктивовПассивов
| КОНЕЦ КАК АналитикаРасходовАктивов,
| &НаправлениеДеятельности КАК КорНаправлениеДеятельности,
|
| НЕОПРЕДЕЛЕНО КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Ответственный КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
|
|
| ВЫБОР
|
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)
|
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| ТОГДА
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС В (
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС),
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОбъектыНезавершенногоСтроительства))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставНМА)
| КОНЕЦ
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаПрочиеАктивы)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиАктивовПассивов
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели)
| ИНАЧЕ
| ТаблицаДокумента.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
|
| ВЫБОР
|
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
|
| ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.СписаниеТоваровПоТребованию)
|
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы)
| ТОГДА
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС В (
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОС),
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ОбъектыНезавершенногоСтроительства))
| ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПередачаВСоставОС)
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов.ВидЦенностиНДС = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.НМА)
| ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПередачаВСоставНМА)
| КОНЕЦ
|
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиРасходов
| И ТаблицаВидыЗапасов.СтатьяРасходов.ВариантРаспределенияРасходовРегл = ЗНАЧЕНИЕ(Перечисление.ВариантыРаспределенияРасходов.НаПрочиеАктивы)
|
| ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПередачаНаПрочиеЦели)
|
| КОГДА ТаблицаВидыЗапасов.СтатьяРасходов ССЫЛКА ПланВидовХарактеристик.СтатьиАктивовПассивов
|
| ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ПередачаНаПрочиеЦели)
|
| ИНАЧЕ &НастройкаХозяйственнойОперации
| КОНЕЦ КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ВнутреннееПотребление КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ ВтПрочиеРасходы КАК ПрочиеРасходы
| ПО ПрочиеРасходы.СтатьяРасходов = ТаблицаВидыЗапасов.СтатьяРасходов
| И ПрочиеРасходы.АналитикаРасходов = ТаблицаВидыЗапасов.АналитикаРасходов
| И ПрочиеРасходы.ИдентификаторФинЗаписи = ТаблицаВидыЗапасов.ИдентификаторФинЗаписи
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.СписаниеНаРасходыАктивы,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.ВнутреннееПотребление))
И (ПравоДоступа("Добавление", Метаданные.Документы.ВнутреннееПотребление)
ИЛИ ПравоДоступа("Изменение", Метаданные.Документы.ВнутреннееПотребление))
И ПравоДоступа("Просмотр", Метаданные.Документы.ЗаказНаВнутреннееПотребление)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыНаВнутреннееПотребление)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ТоварыКОтгрузке)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыНаВнутреннееПотребление");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
ВнутренниеПотребленияТоваровКОформлению = Обработки.ЖурналДокументовВнутреннегоТовародвижения.КоличествоСтрокКОформлению(
ХозяйственныеОперацииДокумента());
ДелоРодитель = ТекущиеДела.Найти("ВнутреннееТовародвижение", "Идентификатор");
Если ДелоРодитель = Неопределено Тогда
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ВнутреннееТовародвижение";
ДелоРодитель.Представление = НСтр("ru = 'Внутреннее товародвижение'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Склад;
КонецЕсли;
ДелоРодитель.ЕстьДела = ДелоРодитель.ЕстьДела Или ВнутренниеПотребленияТоваровКОформлению > 0;
ПараметрыОткрытия = ПараметрыОткрытияФормыРабочегоМеста();
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ВнутренниеПотребленияКОформлению";
Дело.ЕстьДела = ВнутренниеПотребленияТоваровКОформлению > 0;
Дело.Представление = НСтр("ru = 'Внутренние потребления к оформлению'");
Дело.Количество = ВнутренниеПотребленияТоваровКОформлению;
Дело.Важное = Ложь;
Дело.Форма = ПараметрыОткрытия.ИмяФормы;
Дело.ПараметрыФормы = ПараметрыОткрытия.ПараметрыФормы;
Дело.Владелец = "ВнутреннееТовародвижение";
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура ОбработатьДокументПослеДобавленияСтрок(Объект) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.ВнутреннееПотребление) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ВнутреннееПотребление";
КомандаПечати.Представление = ?(ПолучитьФункциональнуюОпцию("БазоваяВерсия"),НСтр("ru = 'Списание товаров на хознужды'"),НСтр("ru = 'Внутреннее потребление'"));
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор");
ВнутреннееПотреблениеЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВнутреннееПотребление") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ВнутреннееПотребление",
НСтр("ru = 'Внутреннее потребление'"),
ПечатьВнутреннееПотребление(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
ВнутреннееПотреблениеЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Функция ПечатьВнутреннееПотребление(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьДопКолонку = ЗначениеЗаполнено(ИмяКолонкиКодов);
ЗапросПоДокументам = Новый Запрос;
ЗапросПоДокументам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
ЗапросПоДокументам.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка,
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| Документ.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Документ.Склад) КАК Склад,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Документ.Подразделение) КАК Подразделение,
| Документ.Организация КАК Организация,
| Документ.Организация.Префикс КАК Префикс,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| &ДопКолонка КАК ДопКолонка,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК Количество
|ИЗ
| Документ.ВнутреннееПотребление КАК Документ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
| ПО ТаблицаТовары.Ссылка = Документ.Ссылка
|
|ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Дата, Ссылка, НомерСтроки
|
|ИТОГИ
| МАКСИМУМ(Номер),
| МАКСИМУМ(Дата),
| МАКСИМУМ(НомерИсправляемогоДокумента),
| МАКСИМУМ(ДатаИсправляемогоДокумента),
| МАКСИМУМ(Склад),
| МАКСИМУМ(Подразделение),
| МАКСИМУМ(Организация),
| МАКСИМУМ(Префикс)
|ПО
| Ссылка
|";
ПодстановкаДопКолонка = "0";
Если ВыводитьДопКолонку Тогда
ПодстановкаДопКолонка = "ТаблицаТовары.Номенклатура." + ИмяКолонкиКодов;
КонецЕсли;
ЗапросПоДокументам.Текст = СтрЗаменить(ЗапросПоДокументам.Текст, "&ДопКолонка", ПодстановкаДопКолонка);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВнутреннееПотребление";
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
Если ПолучитьФункциональнуюОпцию("БазоваяВерсия") Тогда
СинонимДокумента = НСтр("ru = 'Списание товаров и работ на хознужды'");
Иначе
СинонимДокумента = Метаданные.Документы.ВнутреннееПотребление.Синоним;
КонецЕсли;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ВнутреннееПотребление.ПФ_MXL_ВнутреннееПотребление");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
Если ВыводитьДопКолонку Тогда
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаДопКолонка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыДопКолонка");
Иначе
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
КонецЕсли;
ПервыйДокумент = Истина;
ВыборкаДокументы = ЗапросПоДокументам.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Пока ВыборкаДокументы.Следующий() Цикл
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаДокументы);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДокументы);
ДанныеОбласти = Новый Структура;
ДанныеОбласти.Вставить("ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента));
НаименованияНаДату = ОрганизацииПовтИсп.НаименованияНаДату(ВыборкаДокументы.Организация, ВыборкаДокументы.Дата);
ДанныеОбласти.Вставить("Организация", НаименованияНаДату.НаименованиеСокращенное);
ОбластьЗаголовок.Параметры.Заполнить(ДанныеОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаДокументы.Ссылка);
ТабДокумент.Вывести(ОбластьЗаголовок);
Если ВыводитьДопКолонку Тогда
ОбластьШапкаТаблицы.Параметры.ДопКолонка = ПредставлениеКолонкиКодов;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
ВыборкаСтроки = ВыборкаДокументы.Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(ВыборкаСтроки);
ОбластьСтрока.Параметры.Номенклатура = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаСтроки.Номенклатура,
ВыборкаСтроки.Характеристика,
,
,
ДопПараметрыПредставлениеНоменклатуры);
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДокумент.Вывести(ОбластьПодписи);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Функция ДанныеДляПечатиЭтикеток(МассивДокументов) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ИнвентарныйНомер КАК ИнвентарныйНомер,
| ТаблицаТовары.ФизическоеЛицо КАК ФизическоеЛицо,
| ТаблицаТовары.Партия КАК Партия
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивДокументов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию)
| И ТаблицаТовары.Ссылка.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
РезультатЗапроса = Запрос.Выполнить();
ДанныеДляПечати = РезультатЗапроса.Выгрузить();
Возврат ДанныеДляПечати;
КонецФункции
#КонецОбласти
#Область ЗаполнениеДокумента
Процедура ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("НаправлениеДеятельности", ДанныеОтбора.РеквизитыШапки.НаправлениеДеятельности);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
КонецЕсли;
КонецПроцедуры
Процедура ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("ХозяйственнаяОперация", ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация);
ПараметрыЗапросов.Вставить("Сделка", ДанныеОтбора.РеквизитыШапки.Сделка);
ПараметрыЗапросов.Вставить("НаправлениеДеятельности", ДанныеОтбора.РеквизитыШапки.НаправлениеДеятельности);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("НакладнаяПоЗаказам", ДанныеОтбора.НакладнаяПоЗаказам);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладная");
КонецПроцедуры
Процедура ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("НакладнаяПоЗаказам", ДанныеОтбора.НакладнаяПоЗаказам);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладная");
КонецПроцедуры
Процедура ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("ХозяйственнаяОперация", ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация);
ПараметрыЗапросов.Вставить("Сделка", ДанныеОтбора.РеквизитыШапки.Сделка);
ПараметрыЗапросов.Вставить("НаправлениеДеятельности", ДанныеОтбора.РеквизитыШапки.НаправлениеДеятельности);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОформить");
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаВременнойТаблицыНакладной()
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Количество КАК Количество,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.СтатьяРасходов КАК СтатьяРасходов,
| Таблица.АналитикаРасходов КАК АналитикаРасходов,
| Таблица.ФизическоеЛицо КАК ФизическоеЛицо,
| Таблица.КатегорияЭксплуатации КАК КатегорияЭксплуатации,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
|
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Упаковка КАК Упаковка,
|
| ВЫБОР КОГДА НЕ &НакладнаяПоЗаказам ТОГДА
| &Регистратор
| ИНАЧЕ
| Таблица.ЗаказНаВнутреннееПотребление
| КОНЕЦ КАК Заказ
|
|ПОМЕСТИТЬ ВТНакладная
|ИЗ
| &ТоварыНакладной КАК Таблица
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнойТаблицыРаспоряжений()
ТекстыЗапроса = Новый Массив();
Текст =
"ВЫБРАТЬ
| &Регистратор КАК Заказ
|ПОМЕСТИТЬ ВТЗаказыОтбор";
ТекстыЗапроса.Добавить(Текст);
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Текст =
"ВЫБРАТЬ
| ЗаказНаВнутреннееПотребление.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказНаВнутреннееПотребление КАК ЗаказНаВнутреннееПотребление
|ГДЕ
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказНаВнутреннееПотребление.Ссылка В (&МассивЗаказов)
| ИНАЧЕ
| ЗаказНаВнутреннееПотребление.Организация = &Организация
| И ЗаказНаВнутреннееПотребление.Склад = &Склад
| И ЗаказНаВнутреннееПотребление.Сделка = &Сделка
| И ЗаказНаВнутреннееПотребление.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказНаВнутреннееПотребление.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И ЗаказНаВнутреннееПотребление.Проведен";
ТекстыЗапроса.Добавить(Текст);
КонецЕсли;
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстЗапроса = ТекстЗапроса + "
|
|;
|
|//////////////////////////////////////////////////
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединения(Имена, Тексты)
ТекстОбъединения = "";
ЭтоПервыйБлок = Истина;
Для Каждого Имя Из Имена Цикл
Если ЭтоПервыйБлок Тогда
ЭтоПервыйБлок = Ложь;
Иначе
ТекстОбъединения = ТекстОбъединения + "
|
| ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
ТекстОбъединения = ТекстОбъединения + Тексты[Имя];
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| Набор.Заказ КАК ЗаказНаВнутреннееПотребление,
| Набор.КодСтроки КАК КодСтроки,
|
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| МАКСИМУМ(Набор.Назначение) КАК Назначение,
| Набор.Серия КАК Серия,
| МАКСИМУМ(Набор.Дата) КАК Дата,
| МАКСИМУМ(Набор.НомерСтроки) КАК НомерСтроки,
| МАКСИМУМ(Набор.ДатаОтгрузки) КАК ДатаОтгрузки,
| МАКСИМУМ(Набор.СтатьяРасходов) КАК СтатьяРасходов,
| МАКСИМУМ(Набор.АналитикаРасходов) КАК АналитикаРасходов,
| МАКСИМУМ(Набор.ГруппаПродукции) КАК ГруппаПродукции,
| МАКСИМУМ(Набор.ПрисутствуетВДокументе) КАК ПрисутствуетВДокументе,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.Упаковка
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладной,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.Упаковка
| КОНЕЦ) КАК УпаковкаЗаказа,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.УпаковкаКоэффициент
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладнойКоэффициент,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.УпаковкаКоэффициент
| КОНЕЦ) КАК УпаковкаЗаказаКоэффициент,
|
|
| СУММА(Набор.КоличествоВЗаказе) КАК КоличествоВЗаказе,
| СУММА(Набор.КоличествоВНакладной) КАК КоличествоВНакладной,
|
| МАКСИМУМ(Набор.ФизическоеЛицо) КАК ФизическоеЛицо,
| МАКСИМУМ(Набор.КатегорияЭксплуатации) КАК КатегорияЭксплуатации
|
|ИЗ ТекстОбъединения КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Заказ, Набор.КодСтроки,
| Набор.Номенклатура, Набор.Характеристика, Набор.Серия,
| ВЫБОР КОГДА Набор.КодСтроки <> 0 ТОГДА
| 0
| ИНАЧЕ
| Набор.НомерСтроки
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(Набор.КоличествоВЗаказе) > 0 ИЛИ СУММА(Набор.КоличествоВНакладной) > 0
|
|УПОРЯДОЧИТЬ ПО
| Дата, Заказ, НомерСтроки
|;
|
|
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТекстОбъединения", "(" + ТекстОбъединения + ")");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказы()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.ЗаказНаВнутреннееПотребление КАК Заказ,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА Таблица.Обособленно ТОГДА
|
| Таблица.Ссылка.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ТаблицаОстатки.Серия КАК Серия,
| Таблица.Ссылка.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.ДатаОтгрузки КАК ДатаОтгрузки,
| Таблица.СтатьяРасходов КАК СтатьяРасходов,
| Таблица.АналитикаРасходов КАК АналитикаРасходов,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент,
|
| Таблица.ФизическоеЛицо КАК ФизическоеЛицо,
| Таблица.КатегорияЭксплуатации КАК КатегорияЭксплуатации
| ИЗ
| РегистрНакопления.ЗаказыНаВнутреннееПотребление.Остатки(,
| (ЗаказНаВнутреннееПотребление, Склад) В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ,
| &Склад КАК Склад
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление.Товары КАК Таблица
| ПО ТаблицаОстатки.ЗаказНаВнутреннееПотребление = Таблица.Ссылка
| И ТаблицаОстатки.КодСтроки = Таблица.КодСтроки";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСторноНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаСторно.ЗаказНаВнутреннееПотребление КАК Заказ,
| ТаблицаСторно.КодСтроки КАК КодСтроки,
|
| ТаблицаСторно.КОформлению КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА Таблица.Обособленно ТОГДА
|
| Таблица.Ссылка.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ТаблицаСторно.Серия КАК Серия,
| Таблица.Ссылка.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.ДатаОтгрузки КАК ДатаОтгрузки,
| Таблица.СтатьяРасходов КАК СтатьяРасходов,
| Таблица.АналитикаРасходов КАК АналитикаРасходов,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент,
|
| Таблица.ФизическоеЛицо КАК ФизическоеЛицо,
| Таблица.КатегорияЭксплуатации КАК КатегорияЭксплуатации
| ИЗ
| РегистрНакопления.ЗаказыНаВнутреннееПотребление КАК ТаблицаСторно
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление.Товары КАК Таблица
| ПО Таблица.Ссылка = ТаблицаСторно.ЗаказНаВнутреннееПотребление
| И Таблица.КодСтроки = ТаблицаСторно.КодСтроки
|
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И (ТаблицаСторно.ЗаказНаВнутреннееПотребление, ТаблицаСторно.Склад) В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ,
| &Склад КАК Склад
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТаблицаСторно.Активность";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОтгруженоПоОрдерам()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК ЗаказНаВнутреннееПотребление,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Серия КАК Серия,
| ТаблицаОстатки.Назначение КАК Назначение,
| 1 КАК УпаковкаКоэффициент,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументОтгрузки
| И &Склад = ТаблицаОстатки.Склад
| И ТаблицаОстатки.Активность
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Серия, ТаблицаОстатки.Назначение
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ + ТаблицаОстатки.Собрано) > 0
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаНовыеДвиженияНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| Таблица.Заказ КАК Заказ,
| Таблица.КодСтроки КАК КодСтроки,
| 0 КАК КоличествоВЗаказе,
| Таблица.Количество КАК КоличествоВНакладной,
|
|
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| Таблица.СтатьяРасходов КАК СтатьяРасходов,
| Таблица.АналитикаРасходов КАК АналитикаРасходов,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| ИСТИНА КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент,
|
| Таблица.ФизическоеЛицо КАК ФизическоеЛицо,
| Таблица.КатегорияЭксплуатации КАК КатегорияЭксплуатации
| ИЗ
| ВтНакладная КАК Таблица";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВЫРАЗИТЬ(Таблица.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения)",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли