Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Поиск и замена в табличной части документа

Поиск и замена в табличной части документа
Я
   cry_san
 
25.09.17 - 10:18
Здравствуйте!
На форме есть элемент со ссылкой на документ. Далее перебираю всю табличную часть для изменения одной ячейки

Док = НужныйДокумент.ПолучитьОбъект();
Для Каждого Строка Из Док.Взаиморасчеты Цикл        
   Если (Найти(Строка(Строка.ЛицевойСчет), Строка("№ ") + Строка(НомерЛСчета))>0) Тогда
      Строка.СуммаПриход = Число(ОстатокТело);
   КонецЕсли;
КонецЦикла;    
Док.Записать();

Вопрос в том, есть ли более быстрый поиск в табличной части?
Делал так:

Табл1 = Док.Взаиморасчеты .Найти(Строка("№ ") + Строка(НомерЛСчета), "ЛицевойСчет");
Если Табл1 <> Неопределено Тогда
   Сообщить("Не найдено");
Иначе
   Табл1.СуммаПриход = 200;
КонецЕсли;

Ругается:
Значение не является значением объектного типа (СуммаПриход) Табл1.СуммаПриход = 200;

Что я делаю не так?
Прошу вашей помощи.
 
 
   Lexey_
 
1 - 25.09.17 - 10:22
Если Табл1 = Неопределено Тогда
   Сообщить("Не найдено");
   Denis_CFO
 
2 - 25.09.17 - 10:22
(0) По-поводу "быстроты" не скажу, а во-втором примере ошибка простая: там "Табл1" - это массив строк. Поэтому,  либо по-индексу - Табл1[0].СуммаПриход = 200;, либо циклом перебирай весь массив.
   Lexey_
 
3 - 25.09.17 - 10:23
(2) "это массив строк" - нет
   Denis_CFO
 
4 - 25.09.17 - 10:23
(3) Точно, я спутал Найти и НайтиСтроки.
   perester
 
5 - 25.09.17 - 10:25
строчкапоиска = Строка("№ ") + Строка(НомерЛСчета))>0;

Док.Взаиморасчеты.Найти(строчкапоиска ,"ЛицевойСчет")
   perester
 
6 - 25.09.17 - 10:28
строчкапоиска = Строка("№ ") + Строка(НомерЛСчета);
Если НЕ Док.Взаиморасчеты.Найти(строчкапоиска ,"ЛицевойСчет") = Неопределено тогда
ок.Взаиморасчеты.Найти(строчкапоиска ,"ЛицевойСчет").СуммаПриход =  Число(ОстатокТело);
КонецЕсли;
   h-sp
 
7 - 25.09.17 - 10:31
(6) таки наверно
строчкапоиска = Справочники.ЛицевыеСчета.НайтиПоНаименованию("№ " + НомерЛСчета);
   cry_san
 
8 - 25.09.17 - 10:38
Нет. Строчка поиска именно строка. Произвольная.
   1dvd
 
9 - 25.09.17 - 10:41
(8) пробовал (1)?
   h-sp
 
10 - 25.09.17 - 10:43
(8) строкапоиска здесь это не строка поиска. в вашем смысле. Это название переменной такое в программе.
 
 Рекламное место пустует
   cry_san
 
11 - 25.09.17 - 10:43
(9) Да, поправил. Теперь выдает Не найдено, хотя такая строка там есть.
Полностью выглядит так:
Лицевой счет № 46600 от 27.08.2016 г.
А ищем
№ 46600
   cry_san
 
12 - 25.09.17 - 10:44
(10) Это понятно.
   1dvd
 
13 - 25.09.17 - 10:44
(11) так тебе часть строки надо? тогда только первый вариант или запрос
   cry_san
 
14 - 25.09.17 - 10:44
Или ищет не по части строки а по полному значению?
   1dvd
 
15 - 25.09.17 - 10:45
(14) по полному
   cry_san
 
16 - 25.09.17 - 10:45
(13) Блин
А запрос быстрее будет или от также перебирает все строки?
   1dvd
 
17 - 25.09.17 - 10:46
(16) запрос будет быстрее, но он не вернет тебе ссылку на строку. Надо будет позиционироваться опять же через НайтиСтроки или найти
   Конь в пальто
 
18 - 25.09.17 - 10:47
(16) быстрее
   Конь в пальто
 
19 - 25.09.17 - 10:47
(17) зачем?
   Конь в пальто
 
20 - 25.09.17 - 10:49
не прочел смысл (0)
   cry_san
 
21 - 25.09.17 - 10:51
(20) Смысл найти и изменить одно значение в 100500 строках табличной части
   Конь в пальто
 
22 - 25.09.17 - 10:53
(21) да понял уже)
   cry_san
 
23 - 25.09.17 - 10:55
Всем спасибо!
Принцип понятен. Дальше я сам.
Благодарю!
   h-sp
 
24 - 25.09.17 - 10:55
(21) тогда (7) находите сначала элемент в справочнике Лицевые счета. А потом уже в ТЧ ищете элемент справочника через НайтиСтроки
   cry_san
 
25 - 25.09.17 - 10:58
Все получилось именно так.
Спасибо! (24)
   perester
 
26 - 25.09.17 - 11:15
(17) Запрос найдет номер строки, а со знанием номера получить строку много ума не надо
   AlvlSpb
 
27 - 25.09.17 - 11:21
(26) Не совсем понимаю зачем искать номер строки, если запросом выбрать ссылки на документ из Док.Взаиморасчеты по условию Где ДокВзаиморасчеты.ЛицевойСчет = &ЛицевойСчет
установить Параметр ЛицевойСчет =  Справочники.ЛицевыеСчета.НайтиПоНаименованию//наше наименование)
Вынрузить результат в массив и перебором массива установить нужные значения (можно и в ТЗ). Никакого поиска в 100500 строк. Должно работать быстрее


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует