На первом этапе получаем массив выгружаемых данных. В моем случае это простенький запрос.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Представление КАК Представление
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.СтавкаНДС <> ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| И Номенклатура.СтавкаНДС <> ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
МассивНоменклатуры = Результат.Выгрузить().ВыгрузитьКолонку("Представление");
Затем нам эти данные необходимо разделить, так как при отправке слишком длинного сообщения в телеграмм мы получаем ошибку "timed out".
Для этого применяем следующий алгоритм:
РазмерПорции = 20;
Результат = Новый Массив;
Счетчик = 0;
СчетчикПорции = 0;
Пока Истина Цикл
Если РазмерПорции >= МассивНоменклатуры.Количество() Тогда
Если Результат.Количество() <> 0 Тогда
ОтправитьВтелеграм(Результат);
КонецЕсли;
ОтправитьВтелеграм(МассивНоменклатуры);
Прервать;
КонецЕсли;
Если СчетчикПорции = РазмерПорции Тогда
СчетчикПорции = 0;
ОтправитьВтелеграм(Результат);
Результат.Очистить();
КонецЕсли;
Результат.Добавить(МассивНоменклатуры[0]);
МассивНоменклатуры.Удалить(0);
СчетчикПорции = СчетчикПорции + 1;
КонецЦикла;
То есть, мы создаем вечный цикл, условием выхода из которого возможность отправить все оставшиеся номенклатурные позиции одной порцией (размер порции может быть любым, в данном примере было решено взять 20 элементов). И затем последовательно добавляем элементы из основного массива в массив порции, пока не раздуем его до размера самой порции. Параллельно происходит удаление элементов из основного массива, это необходимо для корректной проверки условия выхода из цикла. И на последней итерации, когда размер исходного массива становится равен размеру порции, отправляем его и также, при необходимости, отправляем массив-порцию (так как если число элементов в исходном массиве не кратно порции, то этот массив будет не пустой, и мы потеряем часть выгружаемых данных).
С радостью жду более оптимальных решений данной задачи и обратной связи!