q_i

549
Рейтинг

q_i



  •   Регистрация: 22.03.2010 (13 лет назад)

  •   Был(а) на сайте: 24.05.2023

Друзья
  • Александр Колебошин
Подписчики 15

Группы

Профессиональный разработчик

Рейтинг 549

Отправка ошибок из журнала регистрации на почту

Инструменты и обработки Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Журнал регистрации Email рассылки

Обработка для отправки списка вчерашних ошибок из журнала регистрации на электронную почту. Подключается как внешняя обработка с запуском по расписанию. Для работы требует БСП. Тестировалось на платформе 8.3.21.1607 и конфигурации Бухгалтерия предприятия КОРП 3.0.122.97.

1 стартмани

10.11.2022    2881    6    q_i    7       

8

Обезжиривание шрифта в печатной форме (экономим тонер)

Инструменты и обработки Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m) Расширение (cfe) Печатные формы Адаптация типовых решений

Код, который убирает полужирное начертание у шрифтов в печатной форме. Тестировалось на конфигурации Бухгалтерия Предприятия 3.0.111.16. Но должно работать на любых конфигурациях с БСП.

1 стартмани

24.05.2022    3393    1    q_i    4       

6

Загрузка выпусков подкаста Радио 1С Энтерпрайз

Статья Программист Платформа 1С v8.3 Бесплатно (free) Нет файла WEB-интеграция

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

29.04.2022    1232    q_i    9       

16

Про простой и понятный код

Статья Программист Платформа 1С v8.3 Бесплатно (free) Нет файла Рефакторинг и качество кода

Внимание! Данная публикация с большой долей вероятности не добавит ничего нового к Вашим знаниям и Вашему опыту, поэтому если Вы читаете Инфостарт исключительно для целей "прокачки" своих навыков, не тратьте на её чтение своё время и перейдите сразу к следующей!

03.12.2021    5507    q_i    161       

71

Файл тестов для xUnitFor1C: тестирование проведения документов

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free) Архив с данными Инструментарий разработчика

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    11129    56    q_i    16       

25

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

Отчеты и формы Программист Бизнес-аналитик Платформа 1С v8.3 Финансовые услуги, инвестиции Управленческий учет Абонемент ($m) Архив с данными Управление инвестициями

Прототип конфигурации для расчёта значений произвольных показателей по заданным формулам. Основное назначение - финансовый анализ и фундаментальный анализ ценных бумаг, но, теоретически, может быть использована и для других целей.

1 стартмани

06.01.2018    16051    5    q_i    8       

8

Комментарии

DevОшибки при работе с хранилищем конфигурации и способы их решения#40 22.03.23 13:17
(33) Сегодня поймали "Ошибочный порядок записи XML". Отключение/подключение пользователей не помогло. Причина оказалась тривиальной: на сервере хранилища осталось всего 5Гб свободного места, и оно выедалось в ноль при подключении тестовой базы к хранилищу, после чего вываливалась эта ошибка. Добавили свободного места, база подключилась без проблем.
ПубликацииТестирование прав доступа к объектам с помощью xddTestRunner / Vanessa-ADD#3 30.01.23 11:33
1. Ну вот - теперь такая обработка не только написана, но ещё и в общем доступе. )) В ней можно задать любую свою логику контроля прав в ЗаполнитьНаборТестов(), т.е. прописать там какому пользователю что можно, а что нельзя, и после этого подёргать за ТестДолжен_ПроверитьЕстьДоступ()/ТестДолжен_ПроверитьНетДоступа().
2. Согласен, что тема значительно шире, чем она раскрыта в данной публикации. Но нельзя объять необъятное, поэтому я взялся за то, что, как мне кажется, нужно проконтролировать в первую очередь. В конце концов, если выбирать между вариантом, что пользователь увидит "объект не найден" и вариантом, что он увидит сам объект во всём своём великолепии, то очевидно, что второй вариант куда более неприятен и чреват негативными последствиями.
ПубликацииТестирование прав доступа к объектам с помощью xddTestRunner / Vanessa-ADD#0 30.01.23 5:00
Проверка прав доступа пользователей к объектам информационной базы с помощью xddTestRunner / Vanessa-ADD.
AdminОтправка ошибок из журнала регистрации на почту#7 07.12.22 12:53
(6) Нет, мне не надо, спасибо! У меня у самого модулей хватает. ))
Просто я в своём "длинном 2-часовом" коде привёл вполне работоспособный прототип (нужно лишь заполнить <токен-телеграм-бота> и <идентификатор-чата> и вызывать ОтправитьВТелеграм()), а Вы в своём "лаконичном 5-минутном" привели лишь часть кода. А вдруг это лишь верхушка айсберга, а под водой скрыт ещё более длинный "3-часовой" код? Тогда я выиграл! ))
Насчёт "&" - искренне желаю Вам, чтобы этот символ и дальше не появлялся в отправляемых Вами сообщениях (как и некоторые другие, которые потенциально могут поломать параметры GET-запроса). Хотя по мне, так стоит припользовать хотя бы что-то вроде URLEncode, а ещё лучше POST вместо GET, но это вкусовщина, разумеется. В любом случае Вам удачи!
AdminОтправка ошибок из журнала регистрации на почту#5 07.12.22 12:30
(4) Мой код я выдрал из моей более обширной конфигурации, в которой помимо отправки есть ещё получение+обработка сообщений. Соответственно, оттуда и прилетела хоть и многословная, но достаточно универсальная функция Телеграм_ОтправитьКоманду().
Впрочем, каждый волен отправлять запросы на api.telegram.org тем кодом, который ему больше нравится. )))
Кстати, в Вашем листинге нет функции jsonПрочитатьПлатформой(). И, конечно, интересно посмотреть на результат работы Вашего кода, если в переменной НовыйТекстСообщения встретится символ амперсанда "&" ;)
AdminОтправка ошибок из журнала регистрации на почту#3 07.12.22 12:08
(2) Не вижу препятствий, для тех, кому это действительно нужно ))
Тем более, что вопрос решается тривиальной отправкой POST-запроса.
Вот, например:

Код
Функция Телеграм_ОтправитьКоманду(ИмяКоманды, ПараметрыКоманды, Таймаут = 60) Экспорт

   Результат = Новый Структура("Успех, ОтветТГ, ТекстОшибки", Ложь, Неопределено, "Неизвестная ошибка");
   
   Сервер = "api.telegram.org";
   Порт = 443;
   Токен = "<токен-телеграм-бота>"; // ОбщегоНазначенияПовтИсп.ПолучитьТокен();
   Адрес = "/bot" + Токен + "/" + ИмяКоманды;
   
   HTTPСоединение = Новый HTTPСоединение(Сервер, Порт,,,, Таймаут, Новый ЗащищенноеСоединениеOpenSSL);
   
   HTTPЗапрос = Новый HTTPЗапрос(Адрес);
   HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
   
   ЗаписьJSON = Новый ЗаписьJSON;
   ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет);
   ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
   ЗаписьJSON.ЗаписатьНачалоОбъекта();
   Для Каждого КлючИЗначение Из ПараметрыКоманды Цикл
      ЗаписьJSON.ЗаписатьИмяСвойства(КлючИЗначение.Ключ);
      ЗаписьJSON.ЗаписатьЗначение(КлючИЗначение.Значение);
   КонецЦикла;
   ЗаписьJSON.ЗаписатьКонецОбъекта();
   ПараметрыЗапроса = ЗаписьJSON.Закрыть();
   
   HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрыЗапроса);

   //ДобавитьВЛог(СтрШаблон("Запрос (ТГ): %1;
   //               |Параметры:
   //               |%2", Адрес, ПараметрыЗапроса));
   
   HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

   ПараметрыОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
   КодСостояния = HTTPОтвет.КодСостояния;
   
   //ДобавитьВЛог(СтрШаблон("Ответ (ТГ): %1;
   //               |Параметры:
   //               |%2", HTTPОтвет.КодСостояния, ПараметрыОтвета));
   
   Если КодСостояния <> 200 Тогда
      Результат.ТекстОшибки = СтрШаблон("Ошибка отправки команды '%1'. Сервер вернул код состояния %2.", ИмяКоманды, КодСостояния);
      Возврат Результат;
   КонецЕсли;
   
   ЧтениеJSON = Новый ЧтениеJSON;
   ЧтениеJSON.УстановитьСтроку(ПараметрыОтвета);
   ОтветТГ = ПрочитатьJSON(ЧтениеJSON);
   ЧтениеJSON.Закрыть();

   Если НЕ ОтветТГ.Ok Тогда
      Результат.ТекстОшибки = СтрШаблон("Ошибка выполнения команды '%1'. Причина: %2.", ИмяКоманды, ОтветТГ.description);
      Возврат Результат;
   КонецЕсли;

   Результат.Успех = Истина;
   Результат.ОтветТГ = ОтветТГ;
   Результат.ТекстОшибки = "";
   
   Возврат Результат;
   
КонецФункции

Функция Телеграм_ОтправитьСообщение(ИдЧата, ТекстСообщения) Экспорт 

   Результат = Неопределено;
   
   ИмяКоманды = "sendMessage";
   ПараметрыКоманды = Новый Структура;
   ПараметрыКоманды.Вставить("chat_id", ИдЧата);
   ПараметрыКоманды.Вставить("text", ТекстСообщения);

   РезультатОтправки = Телеграм_ОтправитьКоманду(ИмяКоманды, ПараметрыКоманды);
   Если НЕ РезультатОтправки.Успех Тогда
      //ДобавитьВЛог(РезультатОтправки.ТекстОшибки);
      Возврат Неопределено;
   КонецЕсли;

   ОтветТГ = РезультатОтправки.ОтветТГ;
   
   Результат = ОтветТГ.result.message_id;
   
   Возврат Результат;
   
КонецФункции

Процедура ОтправитьВТелеграм()
   
   ТекстСообщения = "Я к вам пишу — чего же боле?
               |Что я могу еще сказать?";
   
   Телеграм_ОтправитьСообщение(<идентификатор-чата>, ТекстСообщения);
   
КонецПроцедуры
НовостиСрочное сообщение от фирмы «1С»: обновите платформу как можно скорее#408 15.11.22 13:08
(375) перевели на отладку по tcp - вроде работает
AdminОтправка ошибок из журнала регистрации на почту#0 10.11.22 13:50
Обработка для отправки списка вчерашних ошибок из журнала регистрации на электронную почту. Подключается как внешняя обработка с запуском по расписанию. Для работы требует БСП.
Тестировалось на платформе 8.3.21.1607 и конфигурации Бухгалтерия предприятия КОРП 3.0.122.97.
УчетПроверка контрагентов через сервис ФНС#5 10.11.22 11:13
ФНС поставила свежий сертификат. Теперь всё ок.
УчетПроверка контрагентов через сервис ФНС#4 08.11.22 12:09
По всей видимости данная проблема проявляется не у всех. Надеюсь, что в ближайшее время ФНС поменяет сертификаты и она уйдёт. Пока же решил её обойти следующим образом:

Добавляем в расширение функцию ОбщегоНазначения.СоздатьWSПрокси() и отключаем проверку сертификатов для npchk.nalog.ru:
Код
&Вместо("СоздатьWSПрокси")
Функция ифк_СоздатьWSПрокси(Знач ПараметрыПодключенияWSПрокси)
   
   // Не проверяем сертификат сервиса npchk.nalog.ru
   Если ПараметрыПодключенияWSПрокси.АдресWSDL = "http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl" Тогда
      ПараметрыПодключенияWSПрокси.ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
   КонецЕсли;
   
   Результат = ПродолжитьВызов(ПараметрыПодключенияWSПрокси);
   Возврат Результат;
   
КонецФункции