|
Как найти элемент в сложном массиве? | ☑ | ||
---|---|---|---|---|
0
pro3ri
21.01.16
✎
14:42
|
Добрый день!
Есть массив https://s.mail.ru/2zNS7Bbx6uWw/img-2016-01-21-16-36-12.png как из него вытащить значение с определенным Идентификатором сообщения (оно уникально)? |
|||
1
pro3ri
21.01.16
✎
14:42
|
Массив.Найти() неопределено дает
|
|||
2
Nuobu
21.01.16
✎
14:44
|
(1) Потому что в твоём массиве хранятся структуры.
Только перебором. Можно метнуться кабанчиком по массиву, вытянуть уникальные идентификаторы, загнать их в другой массив и там искать. Но "на один раз" можно перебором. |
|||
3
pro3ri
21.01.16
✎
14:47
|
(2) благодарю
|
|||
4
Волшебник
модератор
21.01.16
✎
14:51
|
Выгрузи в таблицу значений, там проиндексируй колонку и ищи
|
|||
5
pro3ri
22.01.16
✎
07:22
|
(4) https://s.mail.ru/2QDy9Fdayd7E/img-2016-01-22-09-12-20.png передаю с Клиента на сервер,
&НаКлиенте Процедура ПисьмаПриАктивизацииСтроки(Элемент) Если Не ЗначениеЗаполнено(СообщенияФорма) Тогда Возврат; КонецЕсли; ИД = Элемент.ТекущиеДанные.ИД; Массив =СообщенияФорма; ИндексМассива = СерверТЗ(Массив, ИД); КонецПроцедуры &НаСервере функция СерверТЗ(Массив, ИД) Тз = Новый ТаблицаЗначений; Тз.Колонки.Добавить("ИД"); КонецФункции Выводит ошибку {Форма.Форма.Форма(136)}: Ошибка при вызове метода контекста (СерверТЗ) ИндексМассива = СерверТЗ(Массив, ИД); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'Value': форма: Элемент имя: {http://v8.1c.ru/8.1/data/core}Value по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ИнтернетПочтовоеСообщение' Что поправить? |
|||
6
НЕА123
22.01.16
✎
07:47
|
видимо веб-клиент. убирай ИнтернетПочтовоеСообщение.
|
|||
7
Mort
22.01.16
✎
07:50
|
Что-то мне подсказывает, тут надо всю схему решения менять на корню. Только меня вот этот вопрос "что поправить?" смущает.
|
|||
8
pro3ri
22.01.16
✎
07:59
|
(6) да нет, приложение Тонкий клиент
|
|||
9
Trotter
22.01.16
✎
08:17
|
Может так ?
РеквизитФормыВЗначение() |
|||
10
pro3ri
22.01.16
✎
09:01
|
(9) я так понимаю что проблема в том, что переменнная СообщенияФорма клиентская.
собственно весь код: &НаКлиенте Перем СообщенияФорма; &НаКлиенте Процедура Получение(Команда) Почта = Новый ИнтернетПочта; Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераIMAP = "imap.yandex.ru"; Профиль.ПользовательIMAP = Кому; Профиль.ПарольIMAP = Пароль; Профиль.ПортIMAP = 993; Профиль.ИспользоватьSSLIMAP = Истина; Попытка Почта.Подключиться(Профиль,ПротоколИнтернетПочты.IMAP); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; СтруктураОтбора = Новый Структура("Отправитель", "ХХХХ"); Заголовки = Почта.ПолучитьЗаголовки(СтруктураОтбора); Сообщения = Почта.Выбрать(Ложь,Заголовки,Ложь); СообщенияФорма = Сообщения; Для каждого Мессадж Из Сообщения Цикл Строка = Письма.Добавить(); Строка.Тема = Мессадж.Тема; Строка.ИД = Мессадж.ИдентификаторСообщения; КонецЦикла; Почта.Отключиться(); КонецПроцедуры &НаСервере Процедура СерверныйВызов(ХТМЛ, Картинки) Текст.УстановитьHTML(ХТМЛ,Картинки); КонецПроцедуры // СерверныйВызов() &НаКлиенте Процедура ПисьмаПриАктивизацииСтроки(Элемент) Если Не ЗначениеЗаполнено(СообщенияФорма) Тогда Возврат; КонецЕсли; ИД = Элемент.ТекущиеДанные.ИД; Массив =СообщенияФорма; реквизит ИндексМассива = СерверТЗ(Массив, ИД); КонецПроцедуры &НаСервере функция СерверТЗ(Массив, ИД) Тз = Новый ТаблицаЗначений; Тз.Колонки.Добавить("ИД"); КонецФункции // () |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |