Добавить Назад

Отправка сообщения в чат-бот телеграм

Удобно использовать при отладке: добавив к условию точки остановки <здесь ваше произвольное условие> И ОповеститьВтелеграм(ОписаниеОшибки()) = Неопределено - отправит в телеграм причину ошибки, если она произошла. Или, условие точки остановки ОповеститьВтелеграм("Процедура окончена") = Неопределено И Ложь - сообщит о том, что точка остановки пройдена

telegram отладка

10 Автор: mikaelangelo
// отправка любого сообщения, в т.ч. ОписаниеОшибки(), в Телеграм бот
Функция ОповеститьВтелеграм(Сообщение) Попытка 
	
	// 1) Создаем бота в телеграме, для этого нужно перейти в @BotFather и проследовать инструкциям,
	//    по окончании которых нам предоставят Access token	
	ДанныеДоступа = "это Access token";
	
	// 2) однократно получаем ID чата с ботом, предварительно написав боту любое сообщение
	// быстро: https://cms3.ru/kak-poluchit-chat-id-telegram/
	// чуть дольше: из текста json ответа, в объекте chat: "chat": {"id": "ид чата"}
    Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    ТекстJSONОтвета = Соединение.Получить(Новый HTTPЗапрос("bot" + ДанныеДоступа + "/getUpdates")).ПолучитьТелоКакСтроку();
	//(затем можно закомментировать две строчки кода выше)
	ИдЧата = "это chat.id";
	
      // 3) Отправляем сообщение с ранее указанными сообщением, токеном, ид чата
   ЗапрячьТелегу = Новый HTTPСоединение("api.telegram.org",443,,,,15,Новый ЗащищенноеСоединениеOpenSSL());
   ЗапрячьТелегу.Получить(Новый HTTPЗапрос("bot" + ДанныеДоступа + "/sendMessage?chat_id=" + ИдЧата + "&text=" + Сообщение));
	
Исключение КонецПопытки КонецФункции

Чтение файлов Excel в таблицу значений (автоматическое наименование столбцов)

Функция считывает содержимое страницы файла Excel в таблицу значений, автоматически именует столбцы таблицы по первой строке файла. Пробелы заменяются на "".

Таблица значений чтение Excel Excel

10 Автор: eXtend88
&НаСервере
Функция ПодготовитьТаблицуСДанными(ФайлАдресВХранилище)
	
	ИмяФайлаСервер = ПолучитьИмяВременногоФайла(".xlsx");
	ФайлИмпорта = ПолучитьИзВременногоХранилища(ФайлАдресВХранилище);
	ФайлИмпорта.Записать(ИмяФайлаСервер);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Попытка
		ТабличныйДокумент.Прочитать(ИмяФайлаСервер, СпособЧтенияЗначенийТабличногоДокумента.Текст);
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
	КонецПопытки;	
	
	ПЗ = Новый ПостроительЗапроса;
	ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
	ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
	ПЗ.ЗаполнитьНастройки();
	ПЗ.Выполнить();
	
	ТаблицаПромежуточныхДанных = ПЗ.Результат.Выгрузить();
	
	Возврат	ТаблицаПромежуточныхДанных;
	
КонецФункции

СКД внешние источники данных

СКД внешние источники данных

2 Автор: Николай Зайцев
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	ТЗВывод = ПолучитьТЗДляСКД();
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 
 
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
 
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);	
	
	ВнешнийНаборДанных = Новый Структура("ТЗ", ТЗВывод); 
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); 
	
	ДокументРезультат.Очистить();
	
 	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат); 
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры

Как получить дату и время создания элемента справочника, документа по ссылке

2 Автор: Kams
 // но по GUID можно определить время и дату
Функция ДатаСозданияСсылки(Ссылка)
    ГУИД = Ссылка.УникальныйИдентификатор();
    Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
    Разрядность = СтрДлина(Строка16);
    ЧислоСек = 0;
    Для Позиция = 1 По Разрядность Цикл
        ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка16,Позиция,1))*Pow(16,Разрядность - Позиция);
    КонецЦикла;
    ЧислоСек = ЧислоСек / 10000000;
    Возврат Дата(1582, 10, 15, 04, 00, 00) + ЧислоСек;
КонецФункции   

Произношение текста голосом

произносит заданную фразу

Диалог Сообщить Голос Звук

3 Автор: Jratdroid
Voice = Новый COMObject("SAPI.SpVoice");
Voice.Speak("Привет!");

Передача таблицы значений в запрос

Передача таблицы значений в запрос. В качестве внешнего источника могут выступать: Таблица значений, Табличная часть, Результат запроса.

#Запрос Внешний источник #Таблица значений

2 Автор: prog1c
Товары = Новый ТаблицаЗначений;	
Товары.Колонки.Добавить("Наименование");	
Товары.Колонки.Добавить("Количество");

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
			   |	ВнешнийИсточник.Наименование,
			   |	ВнешнийИсточник.Количество
			   |ПОМЕСТИТЬ ВТ_ВнешнийИсточник
			   |ИЗ
			   |	&ВнешнийИсточник КАК ВнешнийИсточник
			   |;
			   |
			   |////////////////////////////////////////////////////////////////////////////////
			   |ВЫБРАТЬ
			   |	ВТ_ВнешнийИсточник.Наименование,
			   |	ВТ_ВнешнийИсточник.Количество КАК Количество
			   |ИЗ
			   |	ВТ_ВнешнийИсточник КАК ВТ_ВнешнийИсточник
			   |ГДЕ
			   |	ВТ_ВнешнийИсточник.Количество > 0
			   |
			   |УПОРЯДОЧИТЬ ПО
			   |	Количество";

Запрос.УстановитьПараметр("ВнешнийИсточник", Товары);			   
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
	
	// Обработка данных
	
КонецЦикла; 

Соединение и запрос данных из другой базы 1с

делаем запрос в УТ из сторонней базы для поиска документа

V82.COMConnector

2 Автор: kAndrat
//Подключение к внешней базе
&НаСервере
 Функция ПодключитьВнешнийИсточник(СтрокаСоединения, ОбъектПодключения="V82.COMConnector") 
	 Попытка
		 Connector = Новый COMОбъект("V82.COMConnector");
		 COM = Connector.connect(СтрокаСоединения);
		 Возврат COM;
	 Исключение
		  Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
		  Возврат Неопределено;
	 КонецПопытки;
	 
 КонецФункции	


&НаКлиенте
Процедура Подключение(Команда)
	ПодключениеСервер();
КонецПроцедуры


//Подключение и Выгрузка данных из сторонней базы
&НаСервере
Процедура ПодключениеСервер()
	 Соединение = ПодключитьВнешнийИсточник("Srvr=""ИмяСервера"";Ref=""ИмяБазы"";Usr=""Пользователь"";Pwd=""Пароль"";");
	 Запрос = Соединение.NewObject("Запрос");
	 Запрос.Текст = "ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер
		|		ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|		ГДЕ
		|	РеализацияТоваровУслуг.Номер =  &Номер";
	Запрос.УстановитьПараметр("Номер",Номер);
	РезультатЗапроса = Запрос.Выполнить().Выгрузить(); //Получили COM объект
	Преобразование = ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(РезультатЗапроса));  //преобразовали COM объект

	Для каждого стр из Преобразование Цикл
		Сообщить(стр.номер);
	КонецЦикла;
		
КонецПроцедуры

Подключение к DBF

Подключение к DBF с параметрами

DBF

1 Автор: Артур
Функция НовоеПодключение2()  //Подключение к DBF
	Таблица = Новый ТаблицаЗначений();

Connection = Новый COMОбъект("ADODB.Connection"); // Создание COM-объекта
	Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;
	         |Data Source=" +КаталогФайла +";
	         |Extended Properties=DBASE III");    
    Connection.BeginTrans();    
   // Создание объекта выполнения команды
    Command = Новый COMОбъект("ADODB.Command");
   // Указание активного соединения 
    Command.ActiveConnection = Connection;    
   // Определение текста команды

	Command.CommandText = "SELECT * FROM Calls WHERE DATE between  @DataN AND @DataK";  //Calls  -название файла DBF
	Дата1 = Формат(НачПериода, "ДФ=MM.dd.yyyy");
	Дата2 = Формат(КонПериода, "ДФ=MM.dd.yyyy");
	
    Param1 = Command.CreateParameter("@DataN", 133, 1);
    Command.Parameters.Append(Param1);
    Param1.Value = Дата1;
	
	Param2 = Command.CreateParameter("@DataK", 133, 1);
    Command.Parameters.Append(Param2);
    Param2.Value = Дата2;

   // Определение типа команды
   //Command.CommandType = 4;
   // Создание объекта набора записей
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    RecordSet = Command.Execute();
	
	Пока RecordSet.EOF=0 Цикл //Цикл по записям файла DBF
	        м= Таблица.Добавить();
		м.Дата 			   	=  RecordSet.Fields("DATE").Value;
		м.Длительность		=  RecordSet.Fields("IDURATION").Value ;
		м.Время	           	=  RecordSet.Fields("ITIME").Value;
		м.СО              	=  RecordSet.Fields("CO").Value   ;
		м.ВнутрНомер        =  RecordSet.Fields("EXTENSION").Value ;
		м.TrunkГруппа       =  RecordSet.Fields("TRUNKGROUP").Value ;
		м.Transfer         	=  RecordSet.Fields("TRANSFER").Value   ;
		м.Цена            	=  RecordSet.Fields("PRICE").Value     ;
		м.Номер           	=  RecordSet.Fields("NUMBER").Value   ;
		м.Статус           	=  RecordSet.Fields("STATUS").Value   ;
		м.ВремяДоОтвета     =  RecordSet.Fields("RINGBEFORE").Value ;
		м.CallerID         	=  RecordSet.Fields("CALLERID").Value  ;
	    RecordSet.MoveNext(); //Переходим к следующей записи
	КонецЦикла;
	RecordSet.Close();

Возврат Таблица;	
КонецФункции

Расчет сумм по выделенным ячейкам табличного поля

Табличного документа сумма, суммы суммирование (https://infostart.ru/public/71130/)

ТабличныйДокумент

1 Автор: miha
Функция РасчетСуммыПоЯчейкам(ТабличноеПоле) Экспорт

    Сумма = 0;
    КоличествоСумм = 0;
    СоответствиеЯчеек = Новый Соответствие;
    ОписаниеТипов = Новый ОписаниеТипов("Число");

    Для Каждого ВыделеннаяОбласть Из ТабличноеПоле.ВыделенныеОбласти Цикл
        Для Индекс1 = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
            Для Индекс2 = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
                Область = ТабличноеПоле.Область(Индекс2, Индекс1, Индекс2, Индекс1);
                Значение = ОписаниеТипов.ПривестиЗначение(Область.Текст);
                СоответствиеЯчеек.Вставить(Область.Имя, Значение);
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;

    Для каждого Ячейка Из СоответствиеЯчеек Цикл
        Значение = Ячейка.Значение;
        Если Значение <> 0 Тогда
            Сумма = Сумма + Значение;
            КоличествоСумм = КоличествоСумм + 1;
        КонецЕсли;
    КонецЦикла;

    КоличествоВыделено = СоответствиеЯчеек.Количество();
    Если КоличествоВыделено > 1 Тогда
        ТекстИтогов = " Выделено ячеек: " + КоличествоВыделено
            + "    Просуммировано ячеек: " + КоличествоСумм
            + "    Итого по выделенным ячейкам: " + Сумма;
    Иначе
        ТекстИтогов = "";
    КонецЕсли;

    Возврат ТекстИтогов;

КонецФункции // РасчетСуммыПоЯчейкам()

Оправка Push уведомления

Оправка Push уведомления через онлайн сервис Pushover

Push Rest API

1 Автор: alexgood
Процедура ОтправитьPushOverУведомление(ТекстСообщения, ЗаголовокСообщения)

	Сервер = "api.pushover.net";
	Адрес = "1/messages.json";
	TokenKey = "......"; //Здесь токен канала
	UserID = "......"; //Здесь ИД пользователя

	Соединение = Новый HTTPСоединение(Сервер,,,,Новый ИнтернетПрокси(истина),10, Новый ЗащищенноеСоединениеOpenSSL);
	СтрокаПараметров = "?token=%3&user=%4&html=1&message=%1&title=%2";
	СтрокаПараметров = СтрЗаменить(СтрокаПараметров, "%1", ТекстСообщения);
	СтрокаПараметров = СтрЗаменить(СтрокаПараметров, "%2", ЗаголовокСообщения);
	СтрокаПараметров = СтрЗаменить(СтрокаПараметров, "%3", TokenKey);
	СтрокаПараметров = СтрЗаменить(СтрокаПараметров, "%4", UserID);
	Запрос = Новый HTTPЗапрос(Адрес+СтрокаПараметров);
	
	Попытка
		Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	Исключение
		СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Текст  = "Ошибка запроса к серверу: "+Ответ.КодСостояния;
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецПопытки;	
	
	Если Ответ.КодСостояния <> 200 Тогда
	 	СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Текст  = "Ошибка запроса к серверу: "+Ответ.КодСостояния;
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецЕсли; 

КонецПроцедуры // ОтправитьPushУведомление()