PosgreSQL: Разница дат
Разницу дат в месяцах в запросе можно получить например так:
select extract(month from age(now(), '2023-11-01'))
Соответственно в днях, часах, годах и т.п. можно получить подставив вместо month: day, hour, year и т.д.
Разницу дат в месяцах в запросе можно получить например так:
select extract(month from age(now(), '2023-11-01'))
Соответственно в днях, часах, годах и т.п. можно получить подставив вместо month: day, hour, year и т.д.
Итак, рассмотрю способы отправки письма из 1С. На самом деле навелосипедить можно и больше, но мне хватит 😉
1) На «прямую», без использования БСП:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "цукацукацука";
Профиль.ПортSMTP = 465;
Профиль.POP3ПередSMTP = ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ИспользоватьSSLSMTP = ложь;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = ложь;
Профиль.Пользователь = "vуцкацука1-Noreply@укацукацука.ru";
Профиль.Пароль = "Hцукацукаg";
Профиль.ПользовательSMTP = "vцукауцкаly@цукацука.ru";
Профиль.ПарольSMTP = "укацукацу";
//Профиль.Таймаут = 60;
Почта = Новый ИнтернетПочта;
Сообщить("Проверка cоединения..");
Попытка
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
Сообщить("POP3: соединение ОК");
Сообщить("SMTP: соединение ОК");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Попытка
Почта.Подключиться(Профиль);
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = Заголовок;
// формируем адрес получателя
Получатель = Письмо.Получатели.Добавить(Кому);
Получатель.ОтображаемоеИмя = Кому;
// добавляем к письму имя отправителя
Письмо.ИмяОтправителя = "Сцукауцкания";
Письмо.Отправитель.ОтображаемоеИмя = "Сцукаувцукацукания";
сообщить(константы.СК_Почта_Отправитель.Получить());
Письмо.Отправитель.Адрес = "noreply@цукаука.ru";
// добавляем текст
Текст = Письмо.Тексты.Добавить(Тело);
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Почта.Послать(Письмо, , ПротоколИнтернетПочты.SMTP);
Сообщить("SMTP: посылка ОК");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
2) Используя БСП «Свежих» версий. Не могу сказать точно с какой версий, года примерно с двадцатого:
УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
попытка
ПараметрыСообщения = Новый Структура;
ПараметрыСообщения.Вставить("Кому", Кому);
ПараметрыСообщения.Вставить("Тема", Заголовок);
ПараметрыСообщения.Вставить("Тело", Тело);
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗаписьПочты, ПараметрыСообщения);
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗаписьПочты, Письмо);
исключение
сообщить("ой!");
Сообщить(ОписаниеОшибки());
конецпопытки;
3) Используя БСП «старых версий»… Очень старых… Где-то года 2015 и ранее:
УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.ПолучитьСистемнуюУчетнуюЗапись();
ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", email, "цуацукау", тело,"HTML");
РаботаСПочтовымиСообщениями.ОтправитьСообщение(УчетнаяЗаписьПочты, ПараметрыПисьма);
4) Еще один вариант для стародревней БСП:
УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
попытка
ПараметрыСообщения = Новый Структура;
ПараметрыСообщения.Вставить("ТипТекста","HTML");
ПараметрыСообщения.Вставить("Кому", "gribукмыукru");
ПараметрыСообщения.Вставить("Тема", "Ошибка приема данных о задолженнукмцу");
ПараметрыСообщения.Вставить("Тело", "Воукмук)!");
РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗаписьПочты, ПараметрыСообщения);
исключение
ЗаписьЖурналаРегистрации("Ошибка отправки ответа на письмо", УровеньЖурналаРегистрации.Ошибка,,ОписаниеОшибки(),);
конецпопытки;
конецесли;
К сожалению в связи с последними событиями со стороны infostart, а именно:
Вынужден признать, что для меня infostart кончился, и далее публиковать свои разработки и как либо сотрудничать с этим ресурсом не считаю возможным.
Попытаюсь добиться чтобы вернули деньги которые остались на балансе и удалили мой профиль вместе со всеми публикациями.
В интернете полно инструкций по русификации данного дисплея. Фактически все рекомендации сводятся к замене в папке C:\Users\USER\Documents\Arduino\libraries\Adafruit_GFX_Library (у вас другой путь) файла glcdfont.c вот этим файлом, и далее использованием вот этой функции для конвертации UTF-8 в кодировку windows-1251:
String utf8rus(String source){
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
}
У меня увы, этот метод не сработал, как бы я не бился. И файл со скетчем переводил и в UTF-8 и в кодировку windows-1251 и чего только не делал. Ну не работает и всё тут. Потом на какое-то время заработало, потом опять перестало. Разобраться почему я так и не смог. В результате пошел другим путем — написал онлайн конвертор UTF-8 в восьмеричный формат кодировки windows-1251, после чего стало возможным вставлять в IDE код вида:
display.print("\307\300\317\323\321\312...");
Пусть не сильно читаемо в коде, но зато работает максимально стабильно. Конвертер ниже:
Кроме того, обнаружил еще одну не объяснимую ошибку при работе с данным дисплеем: если в программе интенсивно используется вывод в консоль при помощи Serial.println то на дисплее возникают артефакты в виде шума.
Одним из способов является — воспользоваться встроенным функционалом MySQL. Например так мы выгрузим результат запроса в файл формата csv:
select
b_form_result.ID,
b_form_result.DATE_CREATE,
b_form_result.STATUS_ID,
b_form_result.FORM_ID,
b_form_result_answer.USER_TEXT,
b_form_result_answer.ANSWER_TEXT_SEARCH,
b_form_result_answer.ANSWER_TEXT,
concat("https://wfcwerfe.ru/upload/",SUBDIR,"/",b_file.FILE_NAME)
from
b_form_result
left join b_form_result_answer on b_form_result_answer.RESULT_ID=b_form_result.ID
left join b_file on b_file.ID=b_form_result_answer.USER_FILE_ID
where
b_form_result.TIMESTAMP_X>"2023-12-06 16:37:26"
INTO OUTFILE '/tmp/res.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';