|

Деление массива на пакеты размером N для отправки в Telegram из системы программы 1С


Содержание:

1. Создание исходного массива и процедура деления массива на пакеты

2. Отправка пакетов через Telegram из системы программы 1С

         Когда необходимо отправить большой объём данных через Telegram из 1С, часто возникает задача разбить массив данных на небольшие пакеты. Это важно для соблюдения ограничений на размер сообщений и для удобства обработки данных. В этой статье рассмотрим, как разделить массив на пакеты размером N и отправить их через Telegram из 1С.

Создание исходного массива и процедура деления массива на пакеты

         Для начала создадим массив, который будем разбивать на пакеты. Это может быть массив строк в 1С, чисел или сложных объектов, в зависимости от ваших задач.

ИсходныйМассив = Новый Массив;

Для Номер = 1 По 25 Цикл

    ИсходныйМассив.Добавить(“Элемент ” + Номер);

КонецЦикла;

“`

         В этом примере создаётся массив из 25 элементов, которые нужно будет отправить через Telegram пакетами.

         Для деления массива на пакеты создадим процедуру, которая будет принимать исходный массив и размер пакета. В результате работы процедуры будет возвращён список пакетов.

         Функция РазделитьМассивНаПакеты(МассивДанных, РазмерПакета) Экспорт

         Пакеты = Новый Массив;  

            КоличествоПакетов = Окр(МассивДанных.Количество() / РазмерПакета, 0, Округление.Вверх);

            Для Индекс = 0 По КоличествоПакетов – 1 Цикл

            НачалоПакета = Индекс * РазмерПакета;

        КонецПакета = Минимум(НачалоПакета + РазмерПакета, МассивДанных.Количество());

        Пакет = МассивДанных.Скопировать(НачалоПакета, КонецПакета – НачалоПакета);

        Пакеты.Добавить(Пакет);

    КонецЦикла;

    Возврат Пакеты;

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

“`

         В этой функции массив делится на пакеты, каждый из которых имеет размер, равный `РазмерПакета`. Каждый пакет — это новый массив, содержащий элементы исходного массива в пределах заданного диапазона.

Отправка пакетов через Telegram из системы программы 1С

         Теперь, когда мы умеем делить массив на пакеты, необходимо реализовать отправку этих пакетов через Telegram из системы программы 1С.     

    Предположим, что у нас уже есть настроенный бот Telegram и метод для отправки сообщений.

Пакеты = РазделитьМассивНаПакеты(ИсходныйМассив, 5);

Для Каждого Пакет Из Пакеты Цикл

    ТекстСообщения = “”;

    Для Каждого Элемент Из Пакет Цикл

        ТекстСообщения = ТекстСообщения + Элемент + Символы.ПС;

    КонецЦикла;

    // Вызов метода отправки сообщения в Telegram

    ОтправитьСообщениеВТелеграмм(ТекстСообщения);

КонецЦикла;

“`

         В этом примере каждый пакет отправляется в Telegram как отдельное сообщение. Обратите внимание, что между элементами добавляется символ новой строки (`Символы.ПС`), чтобы они отображались в сообщении в удобочитаемом формате.

Обработка ошибок и ограничения

         При отправке данных через Telegram важно учитывать ограничения на размер сообщений. Если пакет слишком велик, его также нужно разбить на части или отправить сокращённым.

МаксимальныйРазмерСообщения = 4096; // Максимальный размер сообщения в символах

Для Каждого Пакет Из Пакеты Цикл

    ТекстСообщения = “”;

    Для Каждого Элемент Из Пакет Цикл

        Если СтрДлина(ТекстСообщения + Элемент + Символы.ПС) <= МаксимальныйРазмерСообщения Тогда

            ТекстСообщения = ТекстСообщения + Элемент + Символы.ПС;

        Иначе

            ОтправитьСообщениеВТелеграмм(ТекстСообщения);

            ТекстСообщения = Элемент + Символы.ПС;

        КонецЕсли;

    КонецЦикла;

    Если ТекстСообщения <> “” Тогда

        ОтправитьСообщениеВТелеграмм(ТекстСообщения);

    КонецЕсли;

КонецЦикла;

“`

         Эта модификация проверяет размер сообщения перед его отправкой и при необходимости делит его на более мелкие части.

Заключение:

         Деление массива на пакеты для отправки через Telegram — это необходимый шаг при работе с большими данными в 1С. Используя предложенные методы, вы сможете эффективно обрабатывать и отправлять данные, соблюдая ограничения платформы и обеспечивая корректную доставку сообщений. Этот подход полезен для автоматизации бизнес-процессов, где необходимо передавать большие объёмы информации через мессенджеры.

Специалист компании ООО “Кодерлайн”,

Радченко Степан


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.