Документация Sync1C - содержание


Дополнительные возможности / Рассылка оповещений

В каталог настроек Sync1C можно добавить файл с именем НастройкиОповещений.xml. Если этот файл присутствует, то Sync1C будет посылать оповещения о важных событиях, в соответствии с настройками в этом файле.

Структура файла такая:

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиОповещений>
  <События>
    <Событие Имя="ИмяСобытия1">
      <Транспорт> Email-админу </Транспорт>
      (другие настройки для этого события)
    </Событие>
    <Событие Имя="ИмяСобытия2">
      <Транспорт> Email-менеджеру </Транспорт>
      <Транспорт> ЗаписатьВФайл </Транспорт>
      (другие настройки для этого события)
    </Событие>
  </События>

  <Транспорты>
    <Транспорт Тип="ИнтернетПочтовыйПрофиль" Имя="Email-админу">
      (настройки для этого транспорта)
    </Транспорт>
    <Транспорт Тип="ИнтернетПочтовыйПрофиль" Имя="Email-менеджеру">
      (настройки для этого транспорта)
    </Транспорт>
    <Транспорт Тип="ЗаписьВФайлы" Имя="ЗаписатьВФайл">
      (настройки для этого транспорта)
    </Транспорт>
  </Транспорты>
</НастройкиОповещений>

Т.е. в этом файле описываются настройки событий, о которых надо оповещать, и настройки транспортов, которые будут доставлять оповещения.

В настройках событий указываются нужные транспорты. Например: отправить сообщение по электронной почте, записать сообщение в файл... Неплохо бы ещё добавить возможность отправлять СМС, писать в телеграм, и т.д. - но пока этого нет. Возможно, сделаю позже. Одному событию может быть назначено сразу несколько транспортов. В примере файла (выше) вы могли заметить, что оповещение о событии "ИмяСобытия2" посылается по электронной почте менеджеру, и заодно записывается в файл. На какой конкретно адрес электронной почты, и куда именно в файл - это уже указывается в настройках транспортов.

Для проверки оповещений можно спровоцировать событие "Ошибка" - например, если в настройках убрать виды цен.

Настройки событий

Настройка события выглядит следующим образом:

  <Событие Имя="ИмяСобытия1">
    <Транспорт> ИмяТранспорта1 </Транспорт>
    <Транспорт> ИмяТранспорта2 </Транспорт>
    <ТемаСообщения> Произошло событие1 в {{Время}} </ТемаСообщения>
    <ТекстСообщения> 
      При работе с сайтом {{Сайт}} случилось то-то и то-то. {EOL/}
      Когда это было: {{Дата}} {{Время}} 
    </ТекстСообщения>
  </Событие>

<Событие Имя="ИмяСобытия1"> Имя события - это одно из предопределённых значений: Ошибка, АвтовыполнениеОтработало, и т.д. Все они описаны далее.

<Транспорт> - это имя одного из транспортов в этом же файле. Эти имена вы придумываете сами. Когда случается событие - программа ищет транспорты с указанными именами, если находит - отправляет оповещение этими транспортами. Если транспорт не найден - на данный момент это ошибкой не считается. Если транспортов с нужным именем несколько - на данный момент это тоже не считается ошибкой, оповещение будет отправлено каждым таким транспортом. Термин "на данный момент" означает, что сейчас программа действует так, но я не уверен, что это правильное поведение, и могу его изменить в будущем, поэтому не советую на него полагаться. Лучше не указывать несуществующих транспортов, и давать им всем уникальные имена.

<ТемаСообщения> - это текстовый шаблон для краткого описания события. Транспорт электронной почты будет использовать его в качестве темы письма. Транспорт СМС, когда появится - будет отправлять только эту тему, игнорируя подробное описание.

<ТекстСообщения> - это текстовый шаблон для подробного описания события. Транспорт электронной почты будет использовать его для текста письма. Поскольку этот шаблон может быть длинным - для него предусмотрена дополнительная обработка в программе. Предполагается, что шаблон занимает несколько строк (в примере выше - 2 строки). Программа в каждой строке убирает пробельные символы спереди и сзади, и сцепляет всё в единый текст, добавляя по одному пробелу между строками. Символы концов строк тоже удаляются, поэтому в шаблон надо добавлять {EOL/} (End Of Line) в нужных местах.

В шаблонах можно использовать свойства событий, в таком виде: {{ИмяСвойства}}. У всех событий есть одни и те же общие свойства. Кроме них, у каждого события есть собственные свойства, специфичные для данного события.

Общие свойства для всех событий

  • {{Сайт}} - адрес обрабатываемого сайта
  • {{Дата}} - текущая дата, дд.мм.гггг
  • {{Время}} - текущее время, чч:мм:сс

Событие АвтовыполнениеОтработало

Событие АвтовыполнениеОтработало возникает, если автовыполнение было запущено по расписанию, и выполнило свою работу.

Свойства этого события:

  • {{ПервоначальноеКоличествоНовых}} - сколько было строк в таблице Новые в начале автовыполнения
  • {{ПервоначальноеКоличествоИзменившихся}} - сколько было строк в таблице Изменились в начале автовыполнения
  • {{ПервоначальноеКоличествоЛишних}} - сколько было строк в таблице Лишние в начале автовыполнения
  • {{ПервоначальноеКоличествоЗаказов}} - сколько было строк в таблице Заказы в начале автовыполнения
  • {{ОбработаноНовых}} - сколько строк в таблице Новые обработано (добавлено на сайт)
  • {{ОбработаноИзменившихся}} - сколько строк в таблице Изменились обработано (цена и/или количество на сайте обновились)
  • {{ОбработаноЗаказов}} - сколько строк в таблице Заказы обработано (создано заказов в 1С)
  • {{ОсталосьНовых}} - сколько строк осталось в таблице Новые после автовыполнения
  • {{ОсталосьИзменившихся}} - сколько строк осталось в таблице Изменились после автовыполнения
  • {{ОсталосьЛишних}} - сколько строк осталось в таблице Лишние после автовыполнения
  • {{ОсталосьЗаказов}} - сколько строк осталось в таблице Заказы после автовыполнения
  • {{ЛимитОбщихИтераций}} - значение настройки: сколько раз подряд можно повторять процедуру обработки заказов, изменившихся, и новых, если они не закончились
  • {{ЛимитИтерацийЗаказов}} - значение настройки: сколько раз подряд можно повторять обработку заказов (внутри общей итерации), если они не закончились
  • {{НомерОбщейИтерации}} - номер итерации, оставшийся в конце автовыполнения
  • {{НомерИтерацииЗаказов}} - номер итерации заказов, оставшийся в конце автовыполнения
  • {{КоличествоОбработокЗаказов}} - сколько раз выполнялась обработка заказов

Событие АвтопроверкаНашлаПроблемы

Событие АвтопроверкаНашлаПроблемы возникает, если автопроверка проверила сайт и обнаружила проблемы.

Свойства этого события:

  • {{Проблемы}} - текст проблем, которые обнаружила автопроверка (массив строк)

Событие Ошибка

Событие Ошибка возникает, если при работе модуля происходит ошибка в программе.

Свойства этого события:

  • {{ТекстОшибки}} - текст сообщения об ошибке

Настройки транспортов

Транспорт ИнтернетПочтовыйПрофиль

Этот транспорт предназначен для отправки писем по электронной почте. Своё имя он получил по названию используемого объекта 1С. Настройки транспорта выглядят так:

<Транспорт Тип="ИнтернетПочтовыйПрофиль" Имя="EMail-Yandex">
  <ИнтернетПочтовыйПрофиль>	
    (настройки объекта 1С ИнтернетПочтовыйПрофиль)
  </ИнтернетПочтовыйПрофиль>
  <EmailПолучателя> admin@example.ru </EmailПолучателя>
  <EmailПолучателя> manager@example.ru </EmailПолучателя>
  <EmailОтправителя> sync1c@example.ru </EmailОтправителя>
</Транспорт>

Как видите, этому транспорту можно указать сразу несколько получателей. Описание настроек объекта 1С ИнтернетПочтовыйПрофиль можно получить таким образом:

  • запустите 1С в режиме Конфигуратор
  • в главном меню выберите Справка / Синтакс-помошник
  • переключитесь на вкладку Индекс
  • задайте ИнтернетПочтовыйПрофиль

Пример настроек для сервиса Яндекс Почта:

<ИнтернетПочтовыйПрофиль>
  <POP3ПередSMTP> </POP3ПередSMTP>
  <АдресСервераIMAP> imap.yandex.ru </АдресСервераIMAP>
  <АдресСервераPOP3> </АдресСервераPOP3>
  <АдресСервераSMTP> smtp.yandex.ru </АдресСервераSMTP>
  <АутентификацияПоТокену> </АутентификацияПоТокену>
  <ИспользоватьSSLIMAP> Истина </ИспользоватьSSLIMAP>
  <ИспользоватьSSLPOP3> </ИспользоватьSSLPOP3>
  <ИспользоватьSSLSMTP> Истина </ИспользоватьSSLSMTP>
  <Пароль> </Пароль>
  <ПарольIMAP> пароль_приложения_яндекс_почты </ПарольIMAP>
  <ПарольSMTP> пароль_приложения_яндекс_почты </ПарольSMTP>
  <Пользователь> </Пользователь>
  <ПользовательIMAP> пользователь_яндекс_почты </ПользовательIMAP>
  <ПользовательSMTP> пользователь_яндекс_почты </ПользовательSMTP>
  <ПортIMAP> 993 </ПортIMAP>
  <ПортPOP3> </ПортPOP3>
  <ПортSMTP> 465 </ПортSMTP>
  <Таймаут> </Таймаут>
  <ТокенДоступа> </ТокенДоступа>
  <ТолькоЗащищеннаяАутентификацияIMAP> </ТолькоЗащищеннаяАутентификацияIMAP>
  <ТолькоЗащищеннаяАутентификацияPOP3> </ТолькоЗащищеннаяАутентификацияPOP3>
  <ТолькоЗащищеннаяАутентификацияSMTP> </ТолькоЗащищеннаяАутентификацияSMTP>
</ИнтернетПочтовыйПрофиль>

Справка Яндекса по настройке доступа к почте (создание пароля приложения, и необходимые параметры - почтовый сервер, порт и т.д.): https://yandex.ru/support/mail/mail-clients/others.html

Кстати, для mail.ru у меня тоже получалось настроить отправку писем, для GMail - нет. Это не значит, что это невозможно - может быть мне просто не хватило терпения или внимательности.

Транспорт ЗаписьВФайлы

Этот транспорт записывает сообщение в файл. Каталог для таких файлов указывается в настройках транспорта. Также указывается максимальное количество файлов в этом каталоге - если их станет больше, то старые будут удалены.

Настройки транспорта выглядят так:

<Каталог> Оповещения </Каталог>
<МаксимумФайловВКаталоге> 200 </МаксимумФайловВКаталоге>
<СколькоОставлятьФайловПослеОчистки> 100 </СколькоОставлятьФайловПослеОчистки>

<Каталог> - Можно указать абсолютный и относительный путь. Если путь относительный, то он вычисляется от каталога с настройками Sync1C. В данном примере это будет подкаталог Оповещения в каталоге с настройками.

<МаксимумФайловВКаталоге> - Если после записи файла их количество превышает данное сначение, то будет выполнена очистка каталога, т.е. старые файлы будут удалены.

<СколькоОставлятьФайловПослеОчистки> - как понятно из названия, указывает, сколько файлов надо оставить в каталоге после очистки.

Имя файла формируется таким образом:

ммдд ччмм тема-сообщения[ + суффикс].txt

ммдд ччмм - месяц, день, часы, минуты на момент формирования имени файла. Например, для 12.10.2022 10:42:05 это будет 1012 1042. Благодаря этому префиксу, файлы легко отсортировать по порядку возникновения событий, префикс получается вполне понятный, и не сильно длинный, поскольку не включает год и секунды, которые, в сущности, здесь и не нужны.

тема-сообщения - тема сообщения (сформированная по шаблону <ТемаСообщения> настроек события), из которой удалены недопустимые для имен файлов символы: <>:* и т.д.

[ + суффикс] - дополнительный номер по порядку, если такое имя файла уже существует. Квадратные скобки указывают, что суффикс необязателен - если имя файла получилось уникальным, то он не добавляется. Но если в течение одной минуты произойдёт 2 одинаковых события - то имя второго файла будет заканчиваться на " + 1.txt".

Образец файла НастройкиОповещений.xml

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиОповещений>
	<События>
		<Событие Имя="АвтовыполнениеОтработало">
			<Транспорт> ПодкаталогОповещений </Транспорт>
			<ТемаСообщения> Sync1C - {{Сайт}} обновлено зин {{ОбработаноЗаказов}} {{ОбработаноИзменившихся}} {{ОбработаноНовых}}, з {{КоличествоОбработокЗаказов}} о {{НомерОбщейИтерации}}/{{ЛимитОбщихИтераций}} </ТемаСообщения>
			<ТекстСообщения> 
			  {{Дата}} {{Время}} {{Сайт}} АвтовыполнениеОтработало {EOL/}
				{EOL/}
				Первоначальное количество заказов: {{ПервоначальноеКоличествоЗаказов}} {EOL/}
				Первоначальное количество изменившихся: {{ПервоначальноеКоличествоИзменившихся}} {EOL/}
				Первоначальное количество новых: {{ПервоначальноеКоличествоНовых}} {EOL/}
				Первоначальное количество лишних: {{ПервоначальноеКоличествоЛишних}} {EOL/}
				{EOL/}
				ЗИН (заказов, изменившихся, новых): {EOL/}
				Обработано заказов: {{ОбработаноЗаказов}} {EOL/}
				Обработано изменившихся: {{ОбработаноИзменившихся}} {EOL/}
				Обработано новых: {{ОбработаноНовых}} {EOL/}
				{EOL/}
				Количество выполнений обработки заказов: {{КоличествоОбработокЗаказов}} {EOL/}
				Финальный номер общей итерации: {{НомерОбщейИтерации}} из {{ЛимитОбщихИтераций}} {EOL/}
				{EOL/}
				Осталось заказов: {{ОсталосьЗаказов}} {EOL/}
				Осталось изменившихся: {{ОсталосьИзменившихся}} {EOL/}
				Осталось новых: {{ОсталосьНовых}} {EOL/}				
				Осталось лишних: {{ОсталосьЛишних}} {EOL/}				
			</ТекстСообщения>
		</Событие>
		<Событие Имя="Ошибка">
			<Транспорт> email-admin-supervisor </Транспорт>
			<Транспорт> ПодкаталогОповещений </Транспорт>
			<ТемаСообщения> Sync1C - {{Сайт}} ошибка обновления сайта </ТемаСообщения>
			<ТекстСообщения> {{Дата}} {{Время}} при выполнении регламентного обновления сайта {{Сайт}} произошла ошибка:{EOL/}{{ТекстОшибки}} </ТекстСообщения>
		</Событие>
	</События>
	<Транспорты>
		<Транспорт Тип="ЗаписьВФайлы" Имя="ПодкаталогОповещений">
			<Каталог> Оповещения </Каталог>
			<МаксимумФайловВКаталоге> 20 </МаксимумФайловВКаталоге>
			<СколькоОставлятьФайловПослеОчистки> 15 </СколькоОставлятьФайловПослеОчистки>
		</Транспорт>
		<Транспорт Тип="ИнтернетПочтовыйПрофиль" Имя="email-admin-supervisor">
			<ИнтернетПочтовыйПрофиль>
				<POP3ПередSMTP> </POP3ПередSMTP>
				<АдресСервераIMAP> imap.yandex.ru </АдресСервераIMAP>
				<АдресСервераPOP3> </АдресСервераPOP3>
				<АдресСервераSMTP> smtp.yandex.ru </АдресСервераSMTP>
				<АутентификацияПоТокену> </АутентификацияПоТокену>
				<ИспользоватьSSLIMAP> Истина </ИспользоватьSSLIMAP>
				<ИспользоватьSSLPOP3> </ИспользоватьSSLPOP3>
				<ИспользоватьSSLSMTP> Истина </ИспользоватьSSLSMTP>
				<Пароль> </Пароль>
				<ПарольIMAP> xxxx </ПарольIMAP>
				<ПарольSMTP> xxxx </ПарольSMTP>
				<Пользователь> </Пользователь>
				<ПользовательIMAP> user1 </ПользовательIMAP>
				<ПользовательSMTP> user1 </ПользовательSMTP>
				<ПортIMAP> 993 </ПортIMAP>
				<ПортPOP3> </ПортPOP3>
				<ПортSMTP> 465 </ПортSMTP>
				<Таймаут> </Таймаут>
				<ТокенДоступа> </ТокенДоступа>
				<ТолькоЗащищеннаяАутентификацияIMAP> </ТолькоЗащищеннаяАутентификацияIMAP>
				<ТолькоЗащищеннаяАутентификацияPOP3> </ТолькоЗащищеннаяАутентификацияPOP3>
				<ТолькоЗащищеннаяАутентификацияSMTP> </ТолькоЗащищеннаяАутентификацияSMTP>
			</ИнтернетПочтовыйПрофиль>
			<EmailОтправителя> user1@yandex.ru </EmailОтправителя>
			<EmailПолучателя> admin@mysite.ru </EmailПолучателя>
			<EmailПолучателя> supervisor@mysite.ru </EmailПолучателя>
		</Транспорт>
	</Транспорты>
</НастройкиОповещений>

 


Далее: Дополнительные возможности / Автозапуск и автовыполнение
Обратно: Дополнительные возможности / Переключение между сайтами
Документация Sync1C - содержание