![]() |
|
перебор всех колонок в выборке | ☑ | ||
---|---|---|---|---|
0
golem14
24.08.18
✎
09:43
|
Нужно перебрать все колонки в выборке. Получилось такое:
РезультатЗапроса = Запрос.Выполнить(); НаборКолонок = РезультатЗапроса.Колонки; Выборка = РезультатЗапроса.Выбрать(); // сформируем массив для отправки МассивОбъектовНедвижимости = Новый Массив; Пока Выборка.Следующий() Цикл ДанныеЭлементаСправочника = Новый Структура; Для каждого Колонка Из НаборКолонок Цикл Строка = "Строка = Выборка." + Колонка.Имя; Выполнить(Строка); ДанныеЭлементаСправочника.Вставить(Колонка.Имя, Строка(Строка)); КонецЦикла; МассивОбъектовНедвижимости.Добавить(ДанныеЭлементаСправочника); КонецЦикла; //2. сериализуем МассивОбъектовНедвижимости в JSON ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, МассивОбъектовНедвижимости); Может кто предложит как сделать попроще? |
|||
1
Вася Теркин
24.08.18
✎
09:49
|
Функция СтрокаТЗ2Структуру(cтрокаТЗ)
структураНовая = новый Структура; ТЗ = cтрокаТЗ.Владелец(); // ТЗ - владелец данной строки номерСтроки = 1; номКолонки = 1; // цикл по коллекции колонок Для НомКол=0 по ТЗ.Колонки.Количество() - 1 Цикл имяКолонки = ТЗ.Колонки[НомКол].Имя; значение = cтрокаТЗ[имяКолонки]; структураНовая.Вставить(имяКолонки,значение); номКолонки = номКолонки + 1; КонецЦикла; возврат структураНовая; КонецФункции Функция GetSelect(TextSelect,StringJSON) //Попытка Запрос = Новый Запрос; Запрос.Текст = TextSelect; //РезультатЗапроса = Запрос.Выполнить(); //Ответ = РезультатЗапроса.Выгрузить(); ОтветМассив = Новый Массив; МассивРезультатов = Запрос.ВыполнитьПакет(); Для а = 0 по МассивРезультатов.Количество() - 1 Цикл Ответ = МассивРезультатов[а].Выбрать(); Пока Ответ.Следующий() Цикл ОтветМассив.Добавить(СтрокаТЗ2Структуру(Ответ)); КонецЦикла; КонецЦикла; //Исключение // ОтветМассив = "Запрос не выполнен." + ОписаниеОшибки(); //КонецПопытки; Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(); ЗаписатьJSON(Запись, ОтветМассив); StringJSON = Запись.Закрыть(); Возврат StringJSON; КонецФункции |
|||
2
Вася Теркин
24.08.18
✎
09:50
|
Вот вебсервис, выполняет любой запрос
|
|||
3
Вася Теркин
24.08.18
✎
09:52
|
Там с текстом запроса надо аккурантее, если будет попадаться NULL то JSON загрузить не удастся.
|
|||
4
Ботаник Гарден Меран
24.08.18
✎
09:53
|
Ну, выполнить зачем?
ДанныеЭлементаСправочника.Вставить(Колонка.Имя, Строка(Выборка[Колонка.Имя])); |
|||
5
Timon1405
24.08.18
✎
10:01
|
БСП же
// Преобразует таблицу значений в массив. // Может использоваться для передачи на клиента данных, полученных // на сервере в виде таблицы значений в том случае, если таблица // значений содержит только такие значения, которые могут // быть переданы на клиента. // // Полученный массив содержит структуры, каждая из которых повторяет // структуру колонок таблицы значений. // // Не рекомендуется использовать для преобразования таблиц значений // с большим количеством строк. // // Параметры: // ТаблицаЗначений - ТаблицаЗначений. // // Возвращаемое значение: // Массив // Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт Массив = Новый Массив(); СтруктураСтрокой = ""; НужнаЗапятая = Ложь; Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл Если НужнаЗапятая Тогда СтруктураСтрокой = СтруктураСтрокой + ","; КонецЕсли; СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; НужнаЗапятая = Истина; КонецЦикла; Для Каждого Строка Из ТаблицаЗначений Цикл НоваяСтрока = Новый Структура(СтруктураСтрокой); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); Массив.Добавить(НоваяСтрока); КонецЦикла; Возврат Массив; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |