Функция ПерегрузитьТЗ(пТЗ,пУсловие,пЗначение,пНомКол) // пУсловие "=" или ">" или "<" или "<>" или "in,=К" // nНомКол - номер колонки в которой nЗначение должно удовлетворять условию // "=К" - сравнение значений в двух колонках, в этом случае nЗначение номер второй колоки //--- возвращает ТЗ отфильтрованную по условиию в заданной колонке //-- пример вызова: ТЗ.Загрузить(ПерегрузитьТЗ(ТЗ,"in",5,1)); Nil=ПолучитьПустоеЗначение(); Контроль="=,<,>,<>,in,=К"; Контроль=СтрЗаменить(Контроль,",",РазделительСтрок); Ошибка=1; Для А=1 По СтрКоличествоСтрок(Контроль) Цикл ТС=СокрЛП(СтрПолучитьСтроку(Контроль,А)); Если ТС=пУсловие Тогда Ошибка=0; Прервать; КонецЕсли; КонецЦикла; Если Ошибка=1 Тогда Сообщить("неверное условие "+пУсловие,"!"); Возврат Nil; КонецЕсли; вТЗ=СоздатьОбъект("ТаблицаЗначений"); пУсловие=СокрЛП(пУсловие); вТЗ.Загрузить(пТЗ); вТЗ.УдалитьСтроки(); Для А=1 По пТЗ.КоличествоСтрок() Цикл Если пУсловие="=К" Тогда Если пТЗ.ПолучитьЗначение(А,пНомКол)=пТЗ.ПолучитьЗначение(А,пЗначение) Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; ИначеЕсли пУсловие="=" Тогда Если пТЗ.ПолучитьЗначение(А,пНомКол)=пЗначение Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; ИначеЕсли пУсловие=">" Тогда Если пТЗ.ПолучитьЗначение(А,пНомКол)>пЗначение Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; ИначеЕсли пУсловие="<" Тогда Если пТЗ.ПолучитьЗначение(А,пНомКол)<пЗначение Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; ИначеЕсли пУсловие="<>" Тогда Если пТЗ.ПолучитьЗначение(А,пНомКол)<>пЗначение Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; ИначеЕсли пУсловие="in" Тогда ТекСтр=Строка(пТЗ.ПолучитьЗначение(А,пНомКол)); Если Найти(ТекСтр,пЗначение)>0 Тогда вТЗ.НоваяСтрока(); Для Кол=1 по вТЗ.КоличествоКолонок() Цикл вТЗ.УстановитьЗначение(вТЗ.КоличествоСтрок(),Кол,пТЗ.ПолучитьЗначение(А,Кол)); КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; Возврат вТЗ; КонецФункции
Функция перезагрузки Таблицы Значений по условиям
06.11.08
Разработка - Универсальные функции
Возвращает таблицу значений, отфильтрованную по условию в заданной колонке (равно, не равно, больше, меньше, содержит, равны две указанные колонки)