|
v7: Индексированная таблица НайтиСтроку | ☑ | ||
---|---|---|---|---|
0
OnePrg
26.07.21
✎
11:27
|
тбОст = СоздатьОбъект("ИндексированнаяТаблица");
RS.ВыполнитьИнструкцию(ТекстЗапроса,тбОст,1); тбОст.ДобавитьИндекс("Индекс","Товар,Склад"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл сп = СоздатьОбъект("СписокЗначений"); сп.ДобавитьЗначение(Товар,"Товар"); сп.ДобавитьЗначение(Склад,"Склад"); Если тбОст.НайтиСтроку("Индекс",сп,,1) = 1 Тогда Ост = тбОст.ОстатокТовара; Иначе Ост = 0; КонецЕсли; НайтиСтроку срабатывает только один раз. Что не так в коде? |
|||
1
Mikeware
26.07.21
✎
11:31
|
что значит "только один раз"?
|
|||
2
OnePrg
26.07.21
✎
11:34
|
В документе 400 строк, тбОст.НайтиСтроку("Индекс",сп,,1) = 1 срабатывает только один раз
|
|||
3
Ёпрст
26.07.21
✎
11:37
|
(2) И ? он находит первую строку из индексного выражения.
НайтиСтрокУ и не строкИ |
|||
4
OnePrg
26.07.21
✎
11:38
|
Сорян - кажись вопрос учётный. Отбой. Спасибо.
|
|||
5
ADirks
26.07.21
✎
11:56
|
(0) НайтиСтроку() возвращает номер строки или 0, а не флаг найдено/ненайдено
|
|||
6
8 bit
26.07.21
✎
11:57
|
НайтиСтроку / FindRow
Синтаксис: НайтиСтроку(Индекс, Ключ, [чНайтиПоследнюю = 0], [чСпозиционироваться = 0]) Параметры: Индекс - тип: Строка, Число. Идентификатор или номер индекса. Ключ - тип: любой. Если индекс построен по одной колонке - то значение поиска. Если же индекс по нескольким колонкам, то это должен быть СписокЗначений, содержащий значения ключевых колонок, заданных в методе ДобавитьИндекс(). чНайтиПоследнюю - тип: Число. Если 1, то будет найдена последняя строк с совпадающим значением ключа. чСпозиционироваться - тип: Число. Если 1, то при успешном поиске индекс будет спозиционирован на найденной строке. Если перед выполнением метода была открыта выборка (методом ВыбратьСтроки), то она перепозиционируется на найденное значение. Если выборка не была открыта, то она открывается, и после успешного поиска могут быть использованы методы ПолучитьСтроку(), СледующаяСтрока() и ПредыдущаяСтрока(). Основной индекс также перепозиционируется. Возвращает: тип: Число. Номер найденной строки. Если ничего не найдено, то 0. Описание: Найти строку, точно соответствующую ключу. ----- Если тбОст.НайтиСтроку("Индекс",сп,,1) <> 0 Тогда // так попробуй |
|||
7
Salimbek
26.07.21
✎
13:40
|
(0) Если тебе надо все строки, то лучше УстановитьФильтр, потом перебрать строки ИТЗ с учетом фильтра.
|
|||
8
OnePrg
26.07.21
✎
14:08
|
(5) Да, точно. Спасибо.
|
|||
9
Sserj
26.07.21
✎
14:31
|
(2) Если у тебя 400 строк то получается ты создаешь 400 объектов СписокЗначений.
Может лучше использовать один а не создавать каждый раз новый: сп = СоздатьОбъект("СписокЗначений"); Пока ПолучитьСтроку()=1 Цикл сп.УстановитьЗначение("Товар", Товар); сп.УстановитьЗначение("Склад", Склад); Если тбОст.НайтиСтроку("Индекс",сп,,1) = 1 Тогда ... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |