|
Поиск строк в массиве. | ☑ | ||
---|---|---|---|---|
0
Svetlana_Kazan
10.10.17
✎
10:42
|
Поиск строк в массиве.
Подскажите, пожалуйста, как правильно организавать поиск в массиве? Мне необходимо из массива получить строки по номенклатуре. Я использую метод Найти(). Массив СообщенияМассив получаем &НаСервере и передаем &НаКлиент. &НаСервере Функция ПроверитьПараметрСеансаНаСервере() Попытка Если ЗначениеЗаполнено(ПараметрыСеанса.ПараметрСеансаДляПечати) Тогда //СообщенияТЗ - таблица значений с колонками Номенклатура, ТекстыСообщений. СообщенияТЗ = ОбщегоНазначения.ЗначениеИзСтрокиXML(ПараметрыСеанса.ПараметрСеансаДляПечати.СообщенияТЗ); ПараметрыСеанса.ПараметрСеансаДляПечати = Новый ФиксированнаяСтруктура; СообщенияМассив = Новый Массив; Для каждого ЭлементТЗ Из СообщенияТЗ Цикл Стр = Новый Структура("Номенклатура, ТекстыСообщений"); ЗаполнитьЗначенияСвойств(Стр,ЭлементТЗ); СообщенияМассив.Добавить(Стр); КонецЦикла; Возврат СообщенияМассив; КонецЕсли; Исключение КонецПопытки; Возврат Ложь; КонецФункции &НаКлиента Процедура Дерево(ЭлементыДерева) ... Для каждого ЭлементДерева Из ЭлементыДерева Цикл ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Номенклатура", ТЗ.Номенклатура); НайденныеЗначения = СообщенияМассив.Найти(ПараметрыОтбора); ... НаименованиеПроцедуры(ЭлементДерева.ПолучитьЭлементы()); КонецЦикла; ... КонецПроцедуры Найденные строки при этом Неопределено всегда. |
|||
1
Svetlana_Kazan
10.10.17
✎
10:46
|
Массив СообщенияМассив:
http://pastenow.ru/f9f5c921304cf48932bd5523641e8c08 |
|||
2
igork1966
10.10.17
✎
10:46
|
(0) метод найти у массива ожидает параметр = значению в массиве которое надо найти
|
|||
3
igork1966
10.10.17
✎
10:47
|
(1) СП украли?
|
|||
4
Svetlana_Kazan
10.10.17
✎
10:50
|
(3) , но ТЗ.Номенклатура ведь значение, которое есть в массиве или надо чтобы полное было совпадение и по Номенклатуре и по ТекстыСообщений?
|
|||
5
igork1966
10.10.17
✎
10:51
|
Как вариант делай ТЗ а не массив
Или реализую свою процедуру поиска перебором значений массива |
|||
6
Svetlana_Kazan
10.10.17
✎
10:51
|
ТЗ НаКлиенте я могу использовать?
|
|||
7
igork1966
10.10.17
✎
10:52
|
(4) И че? Метод найти у массива ищет по значению, он и не обязан искать по твоим фантазиям.
|
|||
8
igork1966
10.10.17
✎
10:53
|
(6) Нет
|
|||
9
Svetlana_Kazan
10.10.17
✎
10:54
|
Я, используя метод Найти(), хотела сначала уменьшить количество строк в массиве. Так как и так обхожу дерево значений и там еще делать обход массива каждый раз? А дерево большое.
|
|||
10
Филиал-msk
10.10.17
✎
10:58
|
(9) Используй вместо массива другую структуру данных, которая подходит под твоё использование
|
|||
11
igork1966
10.10.17
✎
11:01
|
(10) + например соответствие
|
|||
12
Svetlana_Kazan
10.10.17
✎
11:12
|
(11) , я об этом думала, но соответствие мне не подходит, так как у меня номенклатура может повторяться и однозначного ключа не будет.
Может есть какой-то еще вариант? |
|||
13
Филиал-msk
10.10.17
✎
11:14
|
(12) Да. Используй соответствие. Ищи по частям.
|
|||
14
h-sp
10.10.17
✎
11:17
|
(12) сделай два массива: номенклатуры и сообщения. Согласованных по индексу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |