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


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

Поиск в многомерном массиве

Поиск в многомерном массиве
Я
   ildary
 
10.11.16 - 15:02
Уважаемые специалисты, подскажите пожалуйста новичку - я правильно понимаю, что в двумерном массиве оператор Найти() - не работает? Если да, по получается проще всего выгрузить массив в ТЗ и там уже искать?
 
 
   Lexey_
 
1 - 10.11.16 - 15:45
(0) Неправильно понимаешь, Найти() работает, только ищет по первому уровню.
А зачем эти извращения с двумерными массивами?
   Жан Пердежон
 
2 - 10.11.16 - 15:49
в 1 с нет многомерных массивов, в СП об этом прямо написано
   ildary
 
3 - 10.11.16 - 15:51
(1) На сервере выполнил запрос, назад на клиент возвращаю результат через массив, в котором потом надо искать значения по ключевому полю.

(2) А что тогда получится в результате этой строки?

ОбщегоНазначения.ТаблицаЗначенийВМассив( лЗапрос.Выполнить().Выгрузить() );
   Basilio
 
4 - 10.11.16 - 15:53
(3) получится массив структур.
   Basilio
 
5 - 10.11.16 - 15:54
Преобразует таблицу значений в массив.
//    Может использоваться для передачи на клиента данных, полученных

//    на сервере в виде таблицы значений в том случае, если таблица
//    значений содержит только такие значения, которые могут

//  быть переданы на клиента.
//

//    Полученный массив содержит структуры, каждая из которых повторяет
//    структуру колонок таблицы значений.

//
//    Не рекомендуется использовать для преобразования таблиц значений

//    с большим количеством строк.
//

//    Параметры: 
//    ТаблицаЗначений - ТаблицаЗначений.

//
//    Возвращаемое значение: 

//    Массив
//

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

КонецФункции
   butterbean
 
6 - 10.11.16 - 15:55
(4) в СП написано про массив массивов
   Basilio
 
7 - 10.11.16 - 15:56
(6) в СП есть описание для "ОбщегоНазначения.ТаблицаЗначенийВМассив"??
   ildary
 
8 - 10.11.16 - 15:58
(5) извините, а не могли бы Вы подсказать, а как потом правильно в массиве структур искать?
   Basilio
 
9 - 10.11.16 - 15:59
а что искать то? значение конкретного поля или что? Циклом обходи массив и смотри в каждую структуру.
   Ёпрст
 
10 - 10.11.16 - 16:00
(8) только перебором, в лучшем случае, или, если тз  небольшая, то выгрузить её в строку и искать в ней, но это - для редкостных извращенцев
 
 Рекламное место пустует
   ildary
 
11 - 10.11.16 - 16:02
(9) Допустим у меня была ТЗ Номенклатура и Остаток. Я ее выгрузил в массив структур, как потом в этом массиве искать по номенклатуре?

(10) Я потому извращаюсь с поиском, что не хочу перебором искать. Начинаю склоняться к тому, что на сервере выгрузил ТЗ в массив, а на клиенте массив опять в ТЗ, где снова можно выполнять Найти().
   Жан Пердежон
 
12 - 10.11.16 - 16:17
(11) на случай 2х колонок есть соответствие
   Basilio
 
13 - 10.11.16 - 16:20
(11) ищи в цикле и не парься. ТЗ не доступна на ТонкомКлиенте.
   ildary
 
14 - 10.11.16 - 16:27
(13) а через поле формы?
   Basilio
 
15 - 10.11.16 - 16:28
(14) а смысл? Чем перебор не нравится?
   FIXXXL
 
16 - 10.11.16 - 16:31
(11) а сразу на сервере найти и вернуть на клиента?
поискНаКлиенте можно же переписать?
   ildary
 
17 - 10.11.16 - 16:33
(15) прошу не смеяться, но перебор у меня ассоциируется с копанием лопатой, в то время как Найти() - применение комбайна (при этом я понимаю расход памяти).

(16) думал уже об этом, но для этого пока ума не хватает, делаю по старинке.
   FIXXXL
 
18 - 10.11.16 - 16:33
(16) + ну или отправляй на сервер сразу всю ТЧ и там ищи-присваивай
   FIXXXL
 
19 - 10.11.16 - 16:34
(17) опиши задачку
   ildary
 
20 - 10.11.16 - 16:41
(19) попросили сделать ацкую простыню по продажам (для анализа сторонней фирмой в ОЛАП-ах), в которой чего только нет, я как новичок побаиваюсь запросов-простынь, поэтому некоторые данные (типа остатков и резервов) получаю на сервере отдельно и потом отдельно выгружаю в Access. По уму надо все сделать одним запросом, вернуть его на клиент, не ломая голову с ТЗ, но я еще не дорос.
   Filin
 
21 - 10.11.16 - 16:57
(20) Выгружай в Access на сервере.
   ildary
 
22 - 10.11.16 - 17:07
(21) эта простая мысль не пришла мне в голову, надо будет попробовать.
   FIXXXL
 
23 - 10.11.16 - 17:14
(22) ну если не получится Access на сервере, приделай ТЧ - копию данных, ее гоняй с клиента, заполняй на сервере
обратно она приедет заполненная
   ildary
 
24 - 10.11.16 - 17:16
(23) тоже вариант, спасибо!


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