Изделия и затраты НЗП / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Формирует описание реквизитов объекта, заполняемых по статистике их использования.
//
// Параметры:
//  ОписаниеРеквизитов - Структура - описание реквизитов, для которых необходимо получить значения по статистике
//
//
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
	
	ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
		"Организация");
	
	Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
	Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Организация";
	ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(
		ОписаниеРеквизитов, "Ответственный", Параметры);
	
КонецПроцедуры

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

КонецПроцедуры

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Возвращает текстовое представление документа.
//
//	Параметры:
//		Объект - ДокументОбъект.ИзделияИЗатратыНЗП - документ, представление которого требуется получить.
//		ДатаДокумента - Дата - дата документа.
//
//	Возвращаемое значение:
//		Строка - представление в виде "Изделия и затраты НЗП на [день] [месяц строкой] [год] №%[номер]".
//
Функция ПредставлениеДокумента(Объект, ДатаДокумента = Неопределено) Экспорт
	
	Возврат ПредставлениеДокументаОбщее(Объект, ДатаДокумента);
	
КонецФункции

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	
	
КонецПроцедуры

// Добавляет команду создания документа "Изделия и затраты незавершенного производства".
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//
//	Возвращаемое значение:
//		Неопределено, СтрокаТаблицыЗначений - Добавленная команда создать на основании
//
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
	Если ПравоДоступа("Добавление", Метаданные.Документы.ИзделияИЗатратыНЗП) Тогда
		
		КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
		КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ИзделияИЗатратыНЗП.ПолноеИмя();
		КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ИзделияИЗатратыНЗП);
		КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
		
		Возврат КомандаСоздатьНаОсновании;
		
	КонецЕсли;
	
	Возврат Неопределено;
КонецФункции

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	Возврат; //В дальнейшем будет добавлен код команд
	
КонецПроцедуры

#Область Серии

// Имена реквизитов, от значений которых зависят параметры указания серий
//
//	Возвращаемое значение:
//		Строка - имена реквизитов, перечисленные через запятую.
//
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
	
	ИменаРеквизитов = "Дата, Спецификация";
	
	Возврат ИменаРеквизитов;
	
КонецФункции

// Возвращает параметры указания серий для материалов, указанных в документе.
//
//	Параметры:
//		Объект - Структура - структура значений реквизитов объекта, необходимых для заполнения параметров указания серий.
//
//	Возвращаемое значение:
//		см. НоменклатураКлиентСервер.ПараметрыУказанияСерий.
//
Функция ПараметрыУказанияСерий(Объект) Экспорт
	
	ПараметрыУказанияСерийМатериалов = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
	ПараметрыУказанияСерийМатериалов.ПолноеИмяОбъекта = "Документ.ИзделияИЗатратыНЗП";
	
	ПараметрыУказанияСерийМатериалов.ИмяПоляСклад = "Подразделение";
	ПараметрыУказанияСерийМатериалов.ИмяТЧТовары = "МатериалыИУслуги";
	ПараметрыУказанияСерийМатериалов.ИмяТЧСерии  = "МатериалыИУслуги";
	
	ПараметрыУказанияСерийМатериалов.ИмяПоляКоличество = "Количество";
	
	ПараметрыУказанияСерийМатериалов.УчитыватьСебестоимостьПоСериям = 
		ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямПроизводство", Новый Структура());
	ПараметрыУказанияСерийМатериалов.ИспользоватьСерииНоменклатуры  = 
		ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыПроизводство", Новый Структура());
	
	ПараметрыУказанияСерийМатериалов.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.СписаниеМатериаловНаЗатраты);
	ПараметрыУказанияСерийМатериалов.ПоляСвязи.Добавить("Назначение");
	ПараметрыУказанияСерийМатериалов.ПоляСвязи.Добавить("Подразделение");
	
	ПараметрыУказанияСерийМатериалов.ЭтоНакладная = Истина;
	
	ПараметрыУказанияСерийМатериалов.Дата = Объект.Дата;
	
	ПараметрыУказанияСерий = Новый Структура;
	ПараметрыУказанияСерий.Вставить("МатериалыИУслуги", ПараметрыУказанияСерийМатериалов);
	
	Возврат ПараметрыУказанияСерий;
	
КонецФункции

// Возвращает текст запроса для расчета статусов указания серий
//	Параметры:
//		ПараметрыУказанияСерий - Структура - состав полей задается в функции НоменклатураКлиентСервер.ПараметрыУказанияСерий
//	Возвращаемое значение:
//		Строка - текст запроса.
//
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Товары.Серия,
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	Товары.Подразделение,
	|	Товары.Назначение,
	|	Товары.Количество,
	|	Товары.СтатусУказанияСерий,
	|	Товары.НомерСтроки
	|ПОМЕСТИТЬ Товары
	|ИЗ
	|	&Товары КАК Товары
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Товары.Серия,
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	Товары.Подразделение,
	|	Товары.Назначение,
	|	СУММА(Товары.Количество) КАК Количество,
	|	ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
	|ПОМЕСТИТЬ ТоварыДляЗапроса
	|ИЗ
	|	Товары КАК Товары
	|
	|СГРУППИРОВАТЬ ПО
	|	Товары.Серия,
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	Товары.Подразделение,
	|	Товары.Назначение
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Товары.НомерСтроки КАК НомерСтроки,
	|	Товары.СтатусУказанияСерий КАК СтатусУказанияСерийСтарый,
	|	ВЫБОР
	|		КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL 
	|			ТОГДА 0
	|		КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
	|			ТОГДА ВЫБОР
	|					КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
	|						ТОГДА 14
	|					ИНАЧЕ 13
	|				КОНЕЦ
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК СтатусУказанияСерий
	|ПОМЕСТИТЬ Статусы
	|ИЗ
	|	Товары КАК Товары
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
	|			ПО (ТоварыДляЗапроса.Подразделение = ПолитикиУчетаСерий.Склад)
	|				И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
	|		ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
	|			И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
	|			И Товары.Подразделение = ТоварыДляЗапроса.Подразделение
	|			И Товары.Назначение = ТоварыДляЗапроса.Назначение
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Статусы.НомерСтроки КАК НомерСтроки,
	|	Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
	|ИЗ
	|	Статусы КАК Статусы
	|ГДЕ
	|	Статусы.СтатусУказанияСерий <> Статусы.СтатусУказанияСерийСтарый
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки";
	
	Возврат ТекстЗапроса;
	
КонецФункции

#КонецОбласти

// Возвращает параметры выбора спецификаций для изделий, указанных в документе.
//
// Параметры:
//   Объект - Структура - структура значений реквизитов объекта, необходимых для заполнения параметров выбора спецификаций.
//
// Возвращаемое значение:
//   Структура - Структура, переопределяющая умолчания, заданные в функции УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыВыбораСпецификаций().
//
Функция ПараметрыВыбораСпецификаций(Объект) Экспорт
	
	ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыВыбораСпецификаций();
	
	ПараметрыВыбораСпецификаций.ДоступныеТипы.Добавить(Перечисления.ТипыПроизводственныхПроцессов.Сборка);
	ПараметрыВыбораСпецификаций.ДоступныеСтатусы.Добавить(Перечисления.СтатусыСпецификаций.Действует);
	
	СвязиПараметровВыбора = Новый Структура(УправлениеДаннымиОбИзделияхКлиентСервер.ПоляСтруктурыДанныхОбИзделииДляВыбораСпецификации());
	
	СвязиПараметровВыбора.Номенклатура           = "Объект.Номенклатура";
	СвязиПараметровВыбора.Характеристика         = "Объект.Характеристика";
	СвязиПараметровВыбора.НачалоПроизводства     = "Объект.Дата";
	
	ПараметрыВыбораСпецификаций.СвязиПараметровВыбора.Вставить("Объект.Спецификация", СвязиПараметровВыбора);
	
	Возврат ПараметрыВыбораСпецификаций;
	
КонецФункции

// Имена реквизитов, от значений которых зависят параметры выбора спецификаций
//
//	Возвращаемое значение:
//		Строка - имена реквизитов, перечисленные через запятую.
//
Функция ИменаРеквизитовДляЗаполненияПараметровВыбораСпецификаций() Экспорт
	
	ИменаРеквизитов = "";
	Возврат ИменаРеквизитов;
	
КонецФункции

#КонецОбласти

#КонецЕсли

#Область ОбработчикиСобытий

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Представление = ПредставлениеДокументаОбщее(Данные);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПредставлениеДокументаОбщее(Объект, ДатаДокумента = Неопределено)
	
	ДатаПредставления = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ДатаДокумента);
	
	МесяцДокумента = Месяц(ДатаПредставления);
	
	Если МесяцДокумента = 1 Тогда
		МесяцСтрокой = Нстр("ru = 'Января'");
	ИначеЕсли МесяцДокумента = 2 Тогда
		МесяцСтрокой = Нстр("ru = 'Февраля'");
	ИначеЕсли МесяцДокумента = 3 Тогда
		МесяцСтрокой = Нстр("ru = 'Марта'");
	ИначеЕсли МесяцДокумента = 4 Тогда
		МесяцСтрокой = Нстр("ru = 'Апреля'");
	ИначеЕсли МесяцДокумента = 5 Тогда
		МесяцСтрокой = Нстр("ru = 'Мая'");
	ИначеЕсли МесяцДокумента = 6 Тогда
		МесяцСтрокой = Нстр("ru = 'Июня'");
	ИначеЕсли МесяцДокумента = 7 Тогда
		МесяцСтрокой = Нстр("ru = 'Июля'");
	ИначеЕсли МесяцДокумента = 8 Тогда
		МесяцСтрокой = Нстр("ru = 'Августа'");
	ИначеЕсли МесяцДокумента = 9 Тогда
		МесяцСтрокой = Нстр("ru = 'Сентября'");
	ИначеЕсли МесяцДокумента = 10 Тогда
		МесяцСтрокой = Нстр("ru = 'Октября'");
	ИначеЕсли МесяцДокумента = 11 Тогда
		МесяцСтрокой = Нстр("ru = 'Ноября'");
	ИначеЕсли МесяцДокумента = 12 Тогда
		МесяцСтрокой = Нстр("ru = 'Декабря'");
	КонецЕсли;
	
	ШаблонПредставления = НСтр("ru = 'Изделия и затраты НЗП на %1 %2 %3 №%4'");
	
	Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		ШаблонПредставления,
		День(КонецМесяца(ДатаПредставления)),
		МесяцСтрокой,
		Формат(ДатаПредставления,"ДФ=гггг"),
		Объект.Номер);
	
	Возврат Представление;
	
КонецФункции

#КонецОбласти

Связанные материалы