Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
отрывки:для_умного_гашения [2019/03/25 12:06]
kotik создано
отрывки:для_умного_гашения [2019/03/26 09:30] (текущий)
asp
Строка 1: Строка 1:
 ======= Для умного гашения ======= ======= Для умного гашения =======
 +
 +===== Убрать Префиксы и лидирующие нули в обработке на ФормаУмногоГашенияУФ =====
 +
 +<1c>
 +&​НаКлиенте
 +Функция НайтиВДереве(Имя,​Колонка,​Значение)
 + Рез = Новый Массив;​  ​       ​
 + Если ТипЗнч(Колонка) = Тип("​Строка"​) Тогда
 + Для Каждого Стр Из ЭтаФорма["​Таб"​+Имя+"​Дерево"​].ПолучитьЭлементы() Цикл
 + ПодСтр = Стр.ПолучитьЭлементы();​
 + Если ПодСтр.Количество()=0 Тогда
 + Если Стр[Колонка] = Значение Тогда ​
 + Рез.Добавить(Стр);​
 + КонецЕсли;​
 + Иначе
 + Для Каждого пСтр Из ПодСтр Цикл
 + Если пСтр[Колонка] = Значение Тогда ​
 + Рез.Добавить(пСтр);​
 + КонецЕсли;​
 + КонецЦикла;​
 + КонецЕсли;​
 + КонецЦикла;​
 + Иначе
 + Для Каждого Стр Из ЭтаФорма["​Таб"​+Имя+"​Дерево"​].ПолучитьЭлементы() Цикл
 + ПодСтр = Стр.ПолучитьЭлементы();​
 + Если ПодСтр.Количество()=0 Тогда
 + Буф = Истина;​
 + Для каждого ТекКолонка из Колонка цикл
 + Если Стр[ТекКолонка.Ключ] <> ТекКолонка.Значение Тогда ​
 + Буф = Ложь;
 + КонецЕсли;​
 + КонецЦикла;​
 + Если Буф Тогда
 + Рез.Добавить(Стр);​
 + КонецЕсли;​
 + Иначе
 + Для Каждого пСтр Из ПодСтр Цикл
 + Для каждого ТекКолонка из Колонка цикл
 + Буф = Истина;​
 + Для каждого ТекКолонка из Колонка цикл
 + Если пСтр[ТекКолонка.Ключ] <> ТекКолонка.Значение Тогда ​
 + Если ТекКолонка.Ключ = "​НомерТТН"​ Тогда
 + ЛевЗнч = пСтр[ТекКолонка.Ключ];​
 + ПравЗнч = ТекКолонка.Значение;​
 + Если СтрокуВЧисло(ЛевЗнч) <> СтрокуВЧисло(ПравЗнч) Тогда
 + Буф = Ложь;
 + КонецЕсли;​
 + Иначе
 + Буф = Ложь;
 + КонецЕсли;​
 + КонецЕсли;​
 + КонецЦикла;​
 + Если Буф Тогда
 + Рез.Добавить(пСтр);​
 + КонецЕсли;​
 + КонецЦикла;​
 + КонецЦикла;​
 + КонецЕсли;​
 + КонецЦикла;​
 +
 + КонецЕсли;​
 + Возврат Рез;
 +КонецФункции
 +
 +&​НаКлиенте
 +Функция СтрокуВЧисло(СтрокаСЧислом)
 + МассивСтрок = СтрРазделить(СтрокаСЧислом,​ "​0123456789",​ Ложь);
 + Для Каждого ТекСтрока из МассивСтрок Цикл ​
 +     СтрокаСЧислом = СтрЗаменить(СтрокаСЧислом,​ ТекСтрока,​ ""​);​
 + КонецЦикла;​
 + СтрокаСЧислом = УбратьЛидирующиеНули(СтрокаСЧислом);​
 + Возврат СтрокаСЧислом;​
 +КонецФункции
 +
 +&​НаКлиенте
 +Функция УбратьЛидирующиеНули(Код) Экспорт ​   ​
 +    _Код = СтрЗаменить(Код,​ "​УТ",​ ""​); ​   ​
 +    Если Лев(_Код,​ 1) = "​0"​ Тогда
 +        Возврат УбратьЛидирующиеНули(Прав(_Код,​ СтрДлина(_Код) - 1)); 
 +    Иначе
 +        Возврат _Код;
 +    КонецЕсли; ​    
 +КонецФункции ​
 +</1c>