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