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