Имя: Пароль:
1C
1С v8
Проверить строкуТЧ на Отбор
0 famnam
 
06.04.15
09:48
Всем привет. Есть процедура, которая принимает в качестве параметра строку табличной части и работает с ней. На форме вынесен элемент Отборы, для настройки разных условий (по полям ТЧ). Как проверить, что текущая строка ТЧ удовлетворяет условиям отборов?
1 famnam
 
06.04.15
10:24
походу никак...
2 Nuobu
 
06.04.15
10:27
(0) Если твоё поле отбор связано с нужной тебе ТЧ, то любая строка из выведенных в таблицу уже соответствует отбору.
А вообще - пробежаться по отбору и сравнить все поля, которые там есть с теми, которые есть в строкеТЧ.
3 famnam
 
06.04.15
10:34
связать с тч нельзя, так было бы просто :)
на самом деле, я описал простую задачу для понимания. в реале, коллекция представлена не только конкретно одной ТЧ, а выборками, разными ТЗ. Состав колонок у них одинаковый, и процедура написана как универсальная, и вызывается из разных мест конфигурации.
Отбор с условиями - это новое требование заказчика. Соответственно, прикрутить проверку условий нужно уже в самой процедуре, дабы код не размазывать.
4 Nuobu
 
06.04.15
10:37
(3) УФ?
5 famnam
 
06.04.15
10:44
нет. обычное приложение
6 famnam
 
06.04.15
11:34
нашел в интернете код, который можно использовать

// Функция проверки значения
// Проверяемое - значение которое проверяем
// ТипСравнения - значение типа ВидСравнения
// Сравниваемое - значение с которым сравниваем
Функция СоответствиеОтбора(Проверяемое, ТипСравнения, Сравниваемое)
    Результат = Истина;

    Если ТипСравнения = ВидСравнения.Равно тогда
        Результат = (Проверяемое = Сравниваемое);
    ИначеЕсли ТипСравнения = ВидСравнения.НеРавно тогда
        Результат = (Проверяемое <> Сравниваемое);
    ИначеЕсли ТипСравнения = ВидСравнения.БольшеИлиРавно тогда
        Результат = Проверяемое  >= Сравниваемое;
    ИначеЕсли ТипСравнения = ВидСравнения.Больше тогда
        Результат = Проверяемое  > Сравниваемое;
    ИначеЕсли ТипСравнения = ВидСравнения.Меньше тогда
        Результат = Проверяемое  < Сравниваемое;
    ИначеЕсли ТипСравнения = ВидСравнения.ВСписке тогда
        Результат = (Сравниваемое.НайтиПоЗначению(Проверяемое) <> Неопределено);
    ИначеЕсли ТипСравнения = ВидСравнения.НеВСписке тогда
        Результат = (Сравниваемое.НайтиПоЗначению(Проверяемое) = Неопределено);
    ИначеЕсли ТипСравнения = ВидСравнения.Содержит тогда
        Результат = Найти(Сравниваемое,Проверяемое) > 0;
    ИначеЕсли ТипСравнения = ВидСравнения.НеСодержит тогда
        Результат = Найти(Сравниваемое,Проверяемое) = 0;
    КонецЕсли;

    Возврат Результат;
КонецФункции

функция используется для каждого строки отбора.
Всем спасибо.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.