Имя: Пароль:
1C
1С v8
Получение строк табличной части документа
0 ЯСтараюсь
 
28.05.18
12:41
Как получить строки табличной части документа, если по отбираемому полю есть в ТЧ есть дубли?

Есть массив из справочника ЛицевыеСчета
Есть документ в ТЧ которой есть колонка ЛицевойСчет
Необходимо получить строки с теми ЛицевымиСчетами, которые содержатся в массиве для дальнейшей обработки. Но в документе может быть несколько строк с одинаковым ЛицевымСчет-ом

Если делать цикл по массиву и воспользоваться функцией Найти(), можно получить только одну из строк с одинаковыми лицевыми счетами
СтрокаТЧ = ЛицевыеСчета.Найти(ЛС,"Объект");

Как получить все строки?
1 Timon1405
 
28.05.18
12:42
НайтиСтроки()
2 Михаил Козлов
 
28.05.18
12:43
Либо запросом к ТЧ, либо по каждому ЛС из массива - НайтиСтроки
3 ЯСтараюсь
 
28.05.18
12:58
Табличная часть (Tabular section)
НайтиСтроки (FindRows)
Синтаксис:

НайтиСтроки(<ПараметрыОтбора>)
Параметры:

<ПараметрыОтбора> (обязательный)

Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
Возвращаемое значение:

Тип: Массив.
4 ЯСтараюсь
 
28.05.18
12:59
НайтиСтроки() - возвращает массив, а мне нужно получить эти строки и далее с ними еще работать
5 ЯСтараюсь
 
28.05.18
13:00
т.е. изменить значения другого столбца
6 Ёпрст
 
28.05.18
13:01
(4) получает массив строк ТЧ.
7 Ёпрст
 
28.05.18
13:02
у тя будет доступ к  строке табличной части, если что -то меняешь, считай, меняешь в ТЧ.
8 Zmich
 
28.05.18
13:02
(4). Получаешь массив строк, потом циклом Для Каждого ... Из <Массив> обходишь и меняешь, что тебе нужно.
9 Ёпрст
 
28.05.18
13:02
фирштейн ?
10 ЯСтараюсь
 
28.05.18
13:07
(9) - Спасибо,щас попробую, отпишусь
11 Вася Теркин
 
28.05.18
13:08
(10) Нет!!! не пробуй!!!
Все, больше мы его не увидим.
12 ЯСтараюсь
 
28.05.18
13:15
А можно сделать отбор строк ТЧ по всем значением массива разом? Или нужно в цикле перебором?
13 ЯСтараюсь
 
28.05.18
13:15
МассивЛС =МС_СтрокаВМассивСтрокЛС(СтрокаТабличнойЧасти.СписокЛС, ",");
            ОтборЛС = Новый Структура;
            ОтборЛС.Вставить("Объект",МассивЛС);
            ТЧДок = ЛицевыеСчета.НайтиСтроки(ОтборЛС);
            Для каждого Стр из ТЧДок Цикл  
                Стр.ДокументОплаты = ДокументОплатыПлатежнойКартой.Ссылка;    
            КонецЦикла;
так не заработало...
14 ЯСтараюсь
 
28.05.18
13:17
Как сделать оптимально - с точки зрения производительности?
15 ЯСтараюсь
 
28.05.18
13:26
Сделал перебором. Спасибо большое всем!

            МассивЛС =МС_СтрокаВМассивСтрокЛС(СтрокаТабличнойЧасти.СписокЛС, ",");
            Для Каждого ЭлементМассива из МассивЛС Цикл
                ОтборЛС = Новый Структура;
                ОтборЛС.Вставить("Объект",ЭлементМассива);
                МассивТЧДок = ЛицевыеСчета.НайтиСтроки(ОтборЛС);
                Для каждого Стр из МассивТЧДок Цикл  
                    Стр.ДокументОплаты = ДокументОплатыПлатежнойКартой.Ссылка;    
                КонецЦикла;
            КонецЦикла;
16 yavasya
 
28.05.18
13:27
(15) Привыкай запросом, цикл в большинстве случаев некашерно
17 ЯСтараюсь
 
28.05.18
13:32
(16) т.е. запросом вытащить строки ТЧ документа (в параметр установить массив) и дальше перебором изменить нужный реестр?
И если менять в переборе, то в ТЧ тоже меняется?
18 ЯСтараюсь
 
28.05.18
13:33
*реквизит
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.