Этапы ресурсной спецификации / Модуль менеджера

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

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

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

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

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

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

// Возвращает новый номер этапа.
//
// Параметры:
//   Спецификация - СправочникСсылка.РесурсныеСпецификации - спецификация.
//
// Возвращаемое значение:
//   Число        - Новый номер этапа.
//
Функция НовыйНомерЭтапа(Спецификация) Экспорт

	Если Спецификация.Пустая() Тогда
		
		Возврат 1;
		
	КонецЕсли;
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	ЭтапыПроизводства.НомерЭтапа КАК НомерЭтапа
	|ИЗ
	|	Справочник.ЭтапыПроизводства КАК ЭтапыПроизводства
	|ГДЕ
	|	ЭтапыПроизводства.Владелец = &Спецификация
	|	И НЕ ЭтапыПроизводства.ПометкаУдаления
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерЭтапа УБЫВ");
	
	Запрос.УстановитьПараметр("Спецификация", Спецификация);
	
	Результат = Запрос.Выполнить();
	
	Если Результат.Пустой() Тогда
		
		Возврат 1;
		
	КонецЕсли;
	
	Выборка = Результат.Выбрать();
	Выборка.Следующий();

	Возврат Выборка.НомерЭтапа + 1;

КонецФункции

// Возвращает список предшественников
// Этапы должны принадлежать одной спецификации.
//
// Параметры:
//  МассивСсылок - Массив из СправочникСсылка.ЭтапыПроизводства - этап.
// 
// Возвращаемое значение:
//   - Соответствие - соответствие предшественников.
//
Функция Предшественники(МассивСсылок) Экспорт
	
	Запрос = Новый Запрос("
		|ВЫБРАТЬ
		|	ЭтапыПроизводства.Ссылка               КАК Этап,
		|	ЭтапыПроизводства.НомерЭтапа           КАК НомерЭтапа,
		|	ЭтапыПроизводства.НомерСледующегоЭтапа КАК НомерСледующегоЭтапа
		|ИЗ
		|	Справочник.ЭтапыПроизводства КАК ЭтапыПроизводства
		|ГДЕ
		|	ЭтапыПроизводства.Владелец В (
		|		ВЫБРАТЬ ПЕРВЫЕ 1
		|			Т.Владелец
		|		ИЗ
		|			Справочник.ЭтапыПроизводства КАК Т
		|		ГДЕ
		|			Т.Ссылка В (&МассивСсылок)
		|	)
		|	И НЕ ЭтапыПроизводства.ПометкаУдаления");
	
	Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
	
	ТаблицаЭтапов = Запрос.Выполнить().Выгрузить();
	ТаблицаЭтапов.Индексы.Добавить("НомерСледующегоЭтапа");
	
	Предшественники = Новый Соответствие;
	
	Для каждого Ссылка Из МассивСсылок Цикл
		
		Предшественники.Вставить(Ссылка, Новый Массив);
		
		Отбор = Новый Структура("Этап", Ссылка); 
		
		ЭтапыРасчета = ТаблицаЭтапов.НайтиСтроки(Отбор);
		
		Пока ЭтапыРасчета.Количество() > 0 Цикл
			
			ТекущаяСтрока = ЭтапыРасчета[0];
			
			Отбор = Новый Структура("НомерСледующегоЭтапа", ТекущаяСтрока.НомерЭтапа);
			
			Для каждого НайденнаяСтрока Из ТаблицаЭтапов.НайтиСтроки(Отбор) Цикл
				
				ПредшественникиМассив = Предшественники[Ссылка]; // Массив
				ПредшественникиМассив.Добавить(НайденнаяСтрока.Этап);
				
				ЭтапыРасчета.Добавить(НайденнаяСтрока);
				
			КонецЦикла;
			
			ЭтапыРасчета.Удалить(0);
			
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат Предшественники;
	
КонецФункции

// Возвращает основную единицу измерения времени этапа.
//
// Возвращаемое значение:
//   ПеречислениеСсылка.ЕдиницыИзмеренияВремени - основная единица измерения времени этапа.
//
Функция ОсновнаяЕдиницаВремени() Экспорт

	Возврат Перечисления.ЕдиницыИзмеренияВремени.Минута;

КонецФункции

// Возвращает основную единицу измерения времени буфера.
//
// Возвращаемое значение:
//   ПеречислениеСсылка.ЕдиницыИзмеренияВремени - основная единица измерения времени буфера.
//
Функция ОсновнаяЕдиницаВремениБуфера() Экспорт

	Возврат Перечисления.ЕдиницыИзмеренияВремени.День;

КонецФункции

// Возвращает основную единицу измерения времени длительности этапа УББВ.
//
// Возвращаемое значение:
//   ПеречислениеСсылка.ЕдиницыИзмеренияВремени - основная единица измерения времени этапа УББВ.
//
Функция ОсновнаяЕдиницаВремениДлительностиЭтапаУББВ() Экспорт
	
	Возврат Перечисления.ЕдиницыИзмеренияВремени.День;
	
КонецФункции


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

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


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

#КонецЕсли

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