Для умного гашения: различия между версиями
Перейти к навигации
Перейти к поиску
Shihov (обсуждение | вклад) Нет описания правки |
Shihov (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
===== Убрать Префиксы и лидирующие нули в обработке на ФормаУмногоГашенияУФ ===== | ===== Убрать Префиксы и лидирующие нули в обработке на ФормаУмногоГашенияУФ ===== | ||
<1c> | <syntaxhighlight lang='1c'> | ||
&НаКлиенте | &НаКлиенте | ||
Функция НайтиВДереве(Имя,Колонка,Значение) | Функция НайтиВДереве(Имя,Колонка,Значение) | ||
Строка 83: | Строка 83: | ||
КонецЕсли; | КонецЕсли; | ||
КонецФункции | КонецФункции | ||
</ | </syntaxhighlight> | ||
[[Category:Отрывки]] | [[Category:Отрывки]] | ||
<vote type=1 /> | <vote type=1 /> |
Версия от 13:04, 2 апреля 2025
Для умного гашения
Убрать Префиксы и лидирующие нули в обработке на ФормаУмногоГашенияУФ
&НаКлиенте
Функция НайтиВДереве(Имя,Колонка,Значение)
Рез = Новый Массив;
Если ТипЗнч(Колонка) = Тип("Строка") Тогда
Для Каждого Стр Из ЭтаФорма["Таб"+Имя+"Дерево"].ПолучитьЭлементы() Цикл
ПодСтр = Стр.ПолучитьЭлементы();
Если ПодСтр.Количество()=0 Тогда
Если Стр[Колонка] = Значение Тогда
Рез.Добавить(Стр);
КонецЕсли;
Иначе
Для Каждого пСтр Из ПодСтр Цикл
Если пСтр[Колонка] = Значение Тогда
Рез.Добавить(пСтр);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого Стр Из ЭтаФорма["Таб"+Имя+"Дерево"].ПолучитьЭлементы() Цикл
ПодСтр = Стр.ПолучитьЭлементы();
Если ПодСтр.Количество()=0 Тогда
Буф = Истина;
Для каждого ТекКолонка из Колонка цикл
Если Стр[ТекКолонка.Ключ] <> ТекКолонка.Значение Тогда
Буф = Ложь;
КонецЕсли;
КонецЦикла;
Если Буф Тогда
Рез.Добавить(Стр);
КонецЕсли;
Иначе
Для Каждого пСтр Из ПодСтр Цикл
Для каждого ТекКолонка из Колонка цикл
Буф = Истина;
Для каждого ТекКолонка из Колонка цикл
Если пСтр[ТекКолонка.Ключ] <> ТекКолонка.Значение Тогда
Если ТекКолонка.Ключ = "НомерТТН" Тогда
ЛевЗнч = пСтр[ТекКолонка.Ключ];
ПравЗнч = ТекКолонка.Значение;
Если СтрокуВЧисло(ЛевЗнч) <> СтрокуВЧисло(ПравЗнч) Тогда
Буф = Ложь;
КонецЕсли;
Иначе
Буф = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Буф Тогда
Рез.Добавить(пСтр);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Рез;
КонецФункции
&НаКлиенте
Функция СтрокуВЧисло(СтрокаСЧислом)
МассивСтрок = СтрРазделить(СтрокаСЧислом, "0123456789", Ложь);
Для Каждого ТекСтрока из МассивСтрок Цикл
СтрокаСЧислом = СтрЗаменить(СтрокаСЧислом, ТекСтрока, "");
КонецЦикла;
СтрокаСЧислом = УбратьЛидирующиеНули(СтрокаСЧислом);
Возврат СтрокаСЧислом;
КонецФункции
&НаКлиенте
Функция УбратьЛидирующиеНули(Код) Экспорт
_Код = СтрЗаменить(Код, "УТ", "");
Если Лев(_Код, 1) = "0" Тогда
Возврат УбратьЛидирующиеНули(Прав(_Код, СтрДлина(_Код) - 1));
Иначе
Возврат _Код;
КонецЕсли;
КонецФункции