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