() CeHbKA, Спасибо за комментарий. Обработка относительно старая и забыл что кусок вынес в общий модуль (а перед публикацией проверял как раз на базе где он есть):
// Функция возвращает представление адреса собранного из полей значений Поле1..Поле9
Функция ПолучитьПредставлениеАдреса(Запись) Экспорт
ТекПредставление = "";
Если СокрЛП(Запись.Поле1) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле1);
КонецЕсли;
Если СокрЛП(Запись.Поле2) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле2);
КонецЕсли;
Если СокрЛП(Запись.Поле3) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле3);
КонецЕсли;
Если СокрЛП(Запись.Поле4) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле4);
КонецЕсли;
Если СокрЛП(Запись.Поле5) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле5);
КонецЕсли;
Если СокрЛП(Запись.Поле6) <> "" Тогда
ТекПредставление = ТекПредставление + ", " + СокрЛП(Запись.Поле6);
КонецЕсли;
Если СокрЛП(Запись.Поле7) <> "" Тогда
ТекПредставление = ТекПредставление + ", д. " + СокрЛП(Запись.Поле7);
КонецЕсли;
Если СокрЛП(Запись.Поле8) <> "" Тогда
ТекПредставление = ТекПредставление + ", кор. " + СокрЛП(Запись.Поле8);
КонецЕсли;
Если СокрЛП(Запись.Поле9) <> "" Тогда
ТекПредставление = ТекПредставление + ", кв. " + СокрЛП(Запись.Поле9);
КонецЕсли;
Если СтрДлина(ТекПредставление) > 2 Тогда
ТекПредставление = Сред(ТекПредставление, 3);
КонецЕсли;
Возврат ТекПредставление;
КонецФункции
// Функция возвращает строковое представление адреса (в формате через запятую), включая незаполненные поля
Функция ПолучитьПолныйАдрес(Запись) Экспорт
//Результат = "," +
//СокрЛП(Запись.Поле1) + ", " +
//СокрЛП(Запись.Поле2) + ", " +
//СокрЛП(Запись.Поле3) + ", " +
//СокрЛП(Запись.Поле4) + ", " +
//СокрЛП(Запись.Поле5) + ", " +
//СокрЛП(Запись.Поле6) + ", " +
//СокрЛП(Запись.Поле7) + ", " +
//СокрЛП(Запись.Поле8) + ", " +
//СокрЛП(Запись.Поле9);
//Если ПустаяСтрока(СтрЗаменить(Результат,",","")) Тогда Результат="" КонецЕсли;
//Возврат Результат;
КонецФункции
Функция ВидПоНомеру(Ном) Экспорт
//Возврат ?(Ном=0, "Регион", ?(Ном=1, "Район", ?(Ном=2, "Город", ?(Ном=3, "НасПункт", ?(Ном=4, "Улица", "Дом")))));
КонецФункции
Функция НомерПоВиду(Вид) Экспорт
Возврат ?(Вид="Регион", 0, ?(Вид="Район", 1, ?(Вид="Город", 2, ?(Вид="НасПункт", 3, ?(Вид="Улица", 4, 5)))));
КонецФункции
// Служебная функция, предназначенная для получения описания типов строки, заданной длины.
//
// Параметры:
// ДлинаСтроки - число, длина строки.
//
// Возвращаемое значение:
// Объект "ОписаниеТипов" для строки указанной длины.
//
Функция ПолучитьОписаниеТиповСтроки(ДлинаСтроки) Экспорт
//Массив = Новый Массив;
//Массив.Добавить(Тип("Строка"));
//КвалификаторСтроки = Новый КвалификаторыСтроки(ДлинаСтроки, ДопустимаяДлина.Переменная);
//Возврат Новый ОписаниеТипов(Массив, , КвалификаторСтроки);
КонецФункции
// Функция определяет входимость числа в заданный диапазон
// При этом диапазон задается как это описано в комментарии к функции ЧислоВИнтервале
//
// Параметры:
// Номер - (число, строка) номер дома с корпусом
// Интервал - (строка), интервал чисел (домов)
// ТочноеСоответствие - (булево) номер дома должен точно соответствовать номеру в интервале
// или допускается наличие дробей и произвольных букв после номера дома
//
// Возвращаемое значение:
// Истина - если заданное число входит в диапазон,
// Ложь - если не входит
//
Функция ВходитВИнтервал(Знач Номер, Интервал, ТочноеСоответствие)
КонецФункции
// Функция определяет входимость:
// 1. Номера дома (представленного в виде строки)
// где Номер дома, это строка вида:
// <СтрокаДом> пример: 58А, 32/1, 50А/8
//
// 2. Номера дома и номера корпуса (строения), в виде строки:
// <СтрокаДом>к<СтрокаКорпус>, пример: 32к1 это дом 32 корпус 1,
// <СтрокаДом>/<СтрокаКорпус>, пример: 32/1 это дом 32 корпус 1,
// <СтрокаДом>стр<СтрокаКорпус>, пример: 32стр1 это дом 32 корпус 1,
//
// 3. Числа (номера дома) в заданный интервал чисел
// При этом интервал задается строкой вида:
// <Диапазон>[,<Диапазон>]
// где Диапазон, это строка вида:
// [Ч/Н]<Число>[-<Число>]
// Префикс Ч или Н диапазона обозначает четность и нечетность входящих в него чисел
// Пример: в интервал Ч12-14,Н1-5,20-29 входят числа 1,3,5,12,14 и все с 20 по 29
//
// Параметры:
// Номер - (число, строка) номер дома с корпусом
// Интервал - (строка), интервал чисел (домов)
// ТочноеСоответствие - (булево) номер дома должен точно соответствовать номеру в интервале
// или допускается наличие дробей и произвольных букв после номера дома
//
// Истина - если заданное число входит в диапазон,
// Ложь - если не входит
//
Функция НомерДомаВИнтервале(Номер, Знач Интервал, ТочноеСоответствие = Ложь) Экспорт
Пока НЕ ПустаяСтрока(Интервал) Цикл
Позиция = Найти(Интервал, ",");
Если Позиция = 0 Тогда
Возврат ВходитВИнтервал(Номер, Интервал, ТочноеСоответствие);
Иначе
Если ВходитВИнтервал(Номер, СокрЛП(Лев(Интервал, Позиция - 1)), ТочноеСоответствие) Тогда
Возврат Истина;
Иначе
Интервал = Сред(Интервал, Позиция + 1);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Показать