Имя: Пароль:
1C
1С v8
Процедура "СинхронизироватьСтроки", для отбора по нескольким полям?
0 SkillUp
 
03.08.21
11:43
Здравствуйте, есть такая процедура - "СинхронизироватьСтроки", подскажите пож., есть ли возможность использовать ее не по одному полю, а по нескольким (допустим делать отбор по: контрагенту, складу и организации в других ТЧ объекта)? Или нет такой возможности?

Сама процедура:

// процедура устанавливает текущую строку в табличных полях формы
// объекта, связанных с табличными частями объекта
// предположения:
// все табличные части и соответсвующие им табличные поля - одноименны
// все "синхронизируемые" табличные части имеют колонку с одинаковым
// именем по которой ведется синхронизация
//
// Параметры:
//     Форма - форма объекта
//  Объект - объект данных
//  Элемент - элемнт формы в котором возникла активизация строки
//  СинхронизируемыеТабличныеЧасти - соответствие с
//              элементами, соответствующими синхронизируемым табличным полям
//  ИмяКолонки - имя колонки синхронизации

Процедура СинхронизироватьСтроки(Форма, Объект, Элемент, СинхронизируемыеТабличныеЧасти, ИмяКолонки) Экспорт

    Если Элемент.ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Имя = Элемент.Имя;
    Если СинхронизируемыеТабличныеЧасти[Имя] = Неопределено Тогда
        Возврат;
    КонецЕсли;    
    Если СинхронизируемыеТабличныеЧасти[Имя] Тогда
        СинхронизируемыеТабличныеЧасти[Имя] = Ложь;
        Возврат;
    КонецЕсли;
    
    Для Каждого ЭлементСоответствия Из СинхронизируемыеТабличныеЧасти Цикл
        
        Если ЭлементСоответствия.Ключ = Имя Тогда
            Продолжить;
        КонецЕсли;
        
        Попытка
            СтрокаТЧ = Объект[ЭлементСоответствия.Ключ].Найти(Элемент.ТекущиеДанные[ИмяКолонки], ИмяКолонки);
        Исключение
            СтрокаТЧ = Форма[ЭлементСоответствия.Ключ].Найти(Элемент.ТекущиеДанные[ИмяКолонки], ИмяКолонки);
        КонецПопытки;
        
        Если СтрокаТЧ <> Неопределено Тогда
            
            СинхронизируемыеТабличныеЧасти[ЭлементСоответствия.Ключ]    = Истина;
            Форма.ЭлементыФормы[ЭлементСоответствия.Ключ].ТекущаяСтрока = СтрокаТЧ;
            
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры  //  СинхронизироватьСтроки
1 SkillUp
 
03.08.21
11:50
Может скопировать эту процедуру в общий модуль, и модифицировать?
2 SkillUp
 
03.08.21
11:53
Пардон:

Кажется вот решение:

Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)
Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всей табличной части.
Значение по умолчанию: Пустая строка.
3 SkillUp
 
03.08.21
11:54
Блин, нет, это просто список колонок, где будет поиск ОДНОГО значения...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан