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