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

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

Удобно использовать при отладке: добавив к условию точки остановки <здесь ваше произвольное условие> И ОповеститьВтелеграм(ОписаниеОшибки()) = Неопределено - отправит в телеграм причину ошибки, если она произошла. Или, условие точки остановки ОповеститьВтелеграм("Процедура окончена") = Неопределено И Ложь - сообщит о том, что точка остановки пройдена
telegram отладка
16 Добавил: 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
18 Добавил: eXtend88
&НаСервере
Функция ПодготовитьТаблицуСДанными(ФайлАдресВХранилище)
	
	ИмяФайлаСервер = ПолучитьИмяВременногоФайла(".xlsx");
	ФайлИмпорта = ПолучитьИзВременногоХранилища(ФайлАдресВХранилище);
	ФайлИмпорта.Записать(ИмяФайлаСервер);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Попытка
		ТабличныйДокумент.Прочитать(ИмяФайлаСервер, СпособЧтенияЗначенийТабличногоДокумента.Текст);
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
	КонецПопытки;	
	
	ПЗ = Новый ПостроительЗапроса;
	ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
	ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
	ПЗ.ЗаполнитьНастройки();
	ПЗ.Выполнить();
	
	ТаблицаПромежуточныхДанных = ПЗ.Результат.Выгрузить();
	
	Возврат	ТаблицаПромежуточныхДанных;
	
КонецФункции

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

произносит заданную фразу
Диалог Сообщить Голос Звук
9 Добавил: Jratdroid
Voice = Новый COMObject("SAPI.SpVoice");
Voice.Speak("Привет!");

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

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

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

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

Получение данных динамического списка

Получить данные динамического списка с учетом отборов
СКД динамический список
7 Добавил: Synoecium
	Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
	Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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

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


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


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

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

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

Передача таблицы значений в запрос. В качестве внешнего источника могут выступать: Таблица значений, Табличная часть, Результат запроса.
Запрос Внешний источник Таблица значений
5 Добавил: prog1c
Товары = Новый ТаблицаЗначений;	
Товары.Колонки.Добавить("Наименование");	
Товары.Колонки.Добавить("Количество");

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

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

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

Пауза

Предоставляет функционал паузы в 1С
sleep пауза
Функция Ожидать(ВремяОжидания) Экспорт
    
    Если ВремяОжидания <> 0 Тогда
        
        НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
        НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
        
        Попытка
            Замыкание = Новый HTTPСоединение(
                "127.0.0.0",,,,НастройкиПрокси,
                ВремяОжидания);
            Замыкание.Получить(Новый HTTPЗапрос());
        Исключение
            ВремяОжидания = 0;
        КонецПопытки;
        
    КонецЕсли;
    
КонецФункции

Прибавить рабочие дни к дате

рабочие дни производственный календарь прибавить дни добавить дни
5 Добавил: Yuriy K.
        Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ " + Число(ДобавитьКоличествоДней) + "
		|	ДанныеПроизводственногоКалендаря.Дата КАК ДатаКалендаря
		|ПОМЕСТИТЬ ВТ_РабочиеДни
		|ИЗ
		|	РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
		|ГДЕ
		|	ДанныеПроизводственногоКалендаря.ВидДня = &ВидДня_РабочийДень
		|	И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	МАКСИМУМ(ВТ_РабочиеДни.ДатаКалендаря) КАК ДатаКалендаря
		|ИЗ
		|	ВТ_РабочиеДни КАК ВТ_РабочиеДни";
	
	Запрос.УстановитьПараметр("ИсходнаяДата", НачалоДня(Объект.Дата));
	Запрос.УстановитьПараметр("ВидДня_РабочийДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
	
        РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		Возврат ВыборкаДетальныеЗаписи.ДатаКалендаря;			
	КонецЕсли;