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