Собрать массив из выборки запроса

1. UPKA 04.07.22 13:38 Сейчас в теме
Здравствуйте, подскажите пожалуйста, как выгрузить результат выборки в массив. Допустим в Выборке получаю параметр "text".

Мне необходимо собрать такой результат, при этом количество кнопок мне не известно заранее:

МассивСтрок = Новый Массив;

МассивКнопокСтроки = Новый Массив;

Кнопка = Новый Структура;
Кнопка.Вставить("text", "1");
Кнопка.Вставить("callback_data", "1");
МассивКнопокСтроки.Добавить(Кнопка);

Кнопка = Новый Структура;
Кнопка.Вставить("text", "2");
Кнопка.Вставить("callback_data", "2");
МассивКнопокСтроки.Добавить(Кнопка);

Кнопка = Новый Структура;
Кнопка.Вставить("text", "3");
Кнопка.Вставить("callback_data", "3");
МассивКнопокСтроки.Добавить(Кнопка);

МассивСтрок.Добавить(МассивКнопокСтроки);

Клавиатура = Новый Структура;

Клавиатура.Вставить("inline_keyboard", МассивСтрок);
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Pavel Rodinchenko 04.07.22 13:41 Сейчас в теме
(1)
пока выборка.следующий() цикл
Кнопка = Новый Структура;
Кнопка.Вставить("text", "1"); // тут из выборки заполняйте что нужно
Кнопка.Вставить("callback_data", "1"); // аналогично
МассивКнопокСтроки.Добавить(Кнопка);
Конеццикла;
4. UPKA 04.07.22 14:05 Сейчас в теме
(2) по мимо

Кнопка = Новый Структура;
Кнопка.Вставить("text", "1"); // тут из выборки заполняйте что нужно
Кнопка.Вставить("callback_data", "1"); // аналогично
МассивКнопокСтроки.Добавить(Кнопка);


Нужно передать в такой структуре:

МассивСтрок = Новый Массив;

МассивКнопокСтроки = Новый Массив;

Кнопка = Новый Структура;
Кнопка.Вставить("text", "1");
Кнопка.Вставить("callback_data", "1");
МассивКнопокСтроки.Добавить(Кнопка);

МассивСтрок.Добавить(МассивКнопокСтроки);

Клавиатура = Новый Структура;

Клавиатура.Вставить("inline_keyboard", МассивСтрок);


Показать
5. Pavel Rodinchenko 04.07.22 14:29 Сейчас в теме
(4)ну в цикле вы заполнили массив кнопок.
после цикла
выполните
МассивСтрок.Добавить(МассивКнопокСтроки);

Клавиатура = Новый Структура;

Клавиатура.Вставить("inline_keyboard", МассивСтрок);

ну и там дальше по тексту
8. UPKA 04.07.22 15:18 Сейчас в теме
(5)
Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

МассивСтрок = Новый Массив;

МассивКнопокСтроки = Новый Массив;


Пока Выборка.Следующий() Цикл 

Кнопка = Новый Структура;
Кнопка.Вставить("text", Выборка.);
Кнопка.Вставить("callback_data", Выборка.Значение);
МассивКнопокСтроки.Добавить(Кнопка); 
 

КонецЦикла; 



МассивСтрок.Добавить(МассивКнопокСтроки);

Клавиатура = Новый Структура;
Клавиатура.Вставить("inline_keyboard", МассивСтрок);
Показать



Так не работает.
3. user1278383 5 04.07.22 13:42 Сейчас в теме
а где результат выборки?
6. igor63 04.07.22 14:40 Сейчас в теме
Телеграм бота делаешь? Почитай документацию, на инфостарте ее полно.
7. UPKA 04.07.22 15:18 Сейчас в теме
(6)С документацией нет проблем. Вопрос в другом, как в массив добавить выборку и получить на выходе данную конструкцию.
9. igor63 04.07.22 15:25 Сейчас в теме
	СтруктураНастроек = ПолучитьНастройкиTelegram();
	
	МассивКнопок = Новый Массив;
	МассивКнопок.Добавить("Согласовать");
	МассивКнопок.Добавить("Не согласовать");
	Кнопки = Новый Массив;
	Для каждого кнопка ИЗ МассивКнопок Цикл
		Кнопки.Добавить(Новый Структура("text, callback_data", кнопка, СтрЗаменить(кнопка, " ", "")+"/"+"Истина"+"/"+"Ложь"));
	КонецЦикла;
	Строки = Новый Массив;
	Строки.Добавить(Кнопки);
	КнопкиJs = ЗаписатьJS(Новый Структура("inline_keyboard", Строки));
	
	Приемник = "bot" + СтруктураНастроек.token + "/sendMessage?chat_id=" + СтрЗаменить(Формат(ID_Пользователя, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + ТекстСогласования + "&reply_markup="+КнопкиJs;
	HTTPСоединение  =  Новый HTTPСоединение(СтруктураНастроек.api,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	HTTPЗапрос = Новый HTTPЗапрос(Приемник);
	Ответ = HTTPСоединение.Получить(HTTPЗапрос);
	ЗаписатьИсториюОтветов(ТекстСогласования,Справочники.Telegram_КомандыСистемы.Согласование,"");
Показать



Можно по такому примеру
11. UPKA 04.07.22 15:51 Сейчас в теме
(9) Мне надо получить структуру, которую я описал в первом сообщении. Ни другой код клавиатуры, а именно этот)

Код тоже рабочий, только нужно заполнить кнопками по циклу, из выборки.
10. igor63 04.07.22 15:30 Сейчас в теме
Функция ЗаписатьJS(СтруктураJS)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON,СтруктураJS);
	Возврат ЗаписьJSON.Закрыть();	

КонецФункции


Там еще эта функция вызывается
12. vkholodnov 7 04.07.22 19:42 Сейчас в теме
Число = 0;
МассивСтрок = Новый Массив;
МассивКнопокСтроки = Новый Массив;

Пока Выборка.Следующий() Цикл
Число = Число + 1;
Кнопка = Новый Структура;
Кнопка.Вставить(Выборка.text, Строка(Число));
Кнопка.Вставить("callback_data", Строка(Число));
МассивКнопокСтроки.Добавить(Кнопка);
КонецЦикла;
МассивСтрок.Добавить(МассивКнопокСтроки);
Клавиатура = Новый Структура;
Клавиатура.Вставить("inline_keyboard", МассивСтрок);
Показать


Ну примерно так
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот