Прочие новшества в «1С:Предприятие 8.3»
(бесплатная статья по Программированию в 1С)
из цикла статей «Первые шаги в разработке на 1С»

О чем эта статья

Эта статья продолжает цикл «Первые шаги в разработке на 1С». В ней мы рассмотрим новые возможности, которые не касаются интерфейса системы, но существенным образом расширяют предоставляемый функционал платформы «1С:Предприятие 8».

Применимость

В статье рассматривается платформа «1С:Предприятие» версии 8.3.4.437. Вся функциональность, описанная в статье, актуализирована до редакции 8.3.11.

Прочие новшества в «1С:Предприятие 8.3»

Продолжим знакомиться с новшествами платформы «1С:Предприятие 8.3».

Фоновые и регламентные задания в файловой информационной базе

Во многих типовых конфигурациях на платформе 8.2 существовала константа, в которой указывался пользователь, под которым выполнялись задания в файловом варианте.

Конфигурация - Регламентные задания

Для увеличения нажмите на изображение.

При начале работы системы под этим пользователем происходило подключение обработчика ожидания, который с определенной периодичностью вызывал метод встроенного языка ВыполнитьОбработкуЗаданий().

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

Это могло быть особенно критично при работе с такими конфигурациями, как “Комплексная автоматизация” или “Управление производственным предприятием”, в которых регламентные задания играют довольно важную роль.

Если ЭтоФайловаяИБ Тогда
ПользовательДляВыполненияРеглЗаданий =
Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Получить();
Если глЗначениеПеременной(“глТекущийПользователь”) =
ПользовательДляВыполненияРеглЗаданий Тогда
// с интервалом секунд вызываем процедуру работы с регламентными заданиями
ПоддержкаРегламентныхЗаданиеДляФайловойВерсии();
ИнтервалДляОпроса =
Константы.ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте.Получить();
Если ИнтервалДляОпроса = Неопределено
ИЛИ ИнтервалДляОпроса = 0 Тогда
ИнтервалДляОпроса = 60;
КонецЕсли;
ПодключитьОбработчикОжидания(“ПоддержкаРегламентныхЗаданиеДляФайловойВерсии”,
ИнтервалДляОпроса);
КонецЕсли;
КонецЕсли;

В платформе 8.3 реализована работа фоновых и регламентных заданий в файловой информационной базе без использования вызова метода глобального контекста ВыполнитьОбработкуЗаданий().

Фоновые и регламентные задания выполняются непосредственно в одном из клиентских приложений (тонкий, толстый клиент) или расширением веб-сервера.

Фоновое задание, запущенное каким-либо сеансом, выполняется тем же клиентским приложением, которое его инициировало.

Фоновые задания выполняются последовательно, т.е. на одном клиентском приложении в один момент времени может выполняться только одно фоновое задание (в том числе и регламентное).

Регламентные задания выполняются только одним клиентским приложением. Для управления запуском регламентных заданий предназначен ключ командной строки /AllowExecuteScheduledJobs.

Регламентные задания выполняются первым по порядку запуска клиентским приложением, которому не запрещено выполнение регламентных заданий (для запрещения сеанс должен быть запущен с параметром командной строки /AllowExecuteScheduledJobs -Off).

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

Если в строке запуска клиентского приложения явно указана необходимость запуска регламентных заданий (в командной строке указано /AllowExecuteScheduledJobs -Force), то регламентные задания начинают выполняться на нем, независимо от наличия других сеансов.

Обработка регламентных заданий происходит один раз в 60 секунд.

Заметим, что регламентные задания прикладного решения (в файловом варианте) начинали выполняться не ранее, чем через 1 минуту после запуска клиентского приложения. Начиная с редакции 8.3.8 это время увеличили вдвое, и поэтому регламентные задания начинают выполняться максимум через 2 минуты после запуска клиента (в файловом варианте).

Такое решение обусловлено уменьшением задержки при старте приложения. Кроме того, в релизе 8.3.7 была добавлена возможность быстрого определения того, что текущий сеанс является сеансом фонового задания. Это реализовано за счет нового метода глобального контекста ПолучитьТекущийСеансИнформационнойБазы(), а также нового метода у сеанса информационной базы ПолучитьФоновоеЗадание().

Ниже показан код, который иллюстрирует вышеописанное:

Конфигурация - Регламентные задания

Для увеличения нажмите на изображение.

Вычисление контрольных сумм

В платформе появились механизмы для вычисления контрольных сумм данных.

Напомним, что контрольная сумма (хеш) – это некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении.

Хеши могут использоваться для проверки идентичности данных (например, необходимо удостовериться, что при передаче файла он не был поврежден; проверить, были ли внесены изменения в файл, и если да, то загрузить его в базу повторно).

Для этого в платформе был реализован объект ХешированиеДанных, доступный на сервере, в толстом клиенте, внешнем соединении, а также на сервере мобильного приложения.

Данный объект имеет два метода: Добавить() и ДобавитьФайл(), которые обновляют хеш-сумму с учетом данных, переданных в параметрах.

Платформа 8.3.4.437 поддерживает вычисление следующих хеш-функций: CRC32, MD5, SHA1, SHA256. Но функции SHA1 и SHA256 не поддерживаются на мобильной платформе.

Рассмотрим простой пример. Предполагается, что на сервере в каталоге программы есть файл “ragent.exe”. Необходимо рассчитать MD5-сумму для этого файла.

Для этого создадим внешнюю обработку, на форме которой разместим команду Рассчитать. Обработчик содержит следующий код:

&НаКлиенте
Процедура Рассчитать(Команда)
Результат = РассчитатьНаСервере();
Сообщить(Строка(Результат));
КонецПроцедуры
&НаСервере
Функция РассчитатьНаСервере()
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
Хеш.ДобавитьФайл(КаталогПрограммы() + “ragent.exe”);
Возврат Хеш.ХешСумма;
КонецФункции

Вычисление контрольной суммы

В платформе редакции 8.3.10+ в методе Добавить() объекта ХешированиеДанных стало возможным использовать поток двоичных данных, что значительно упростило их использование в решении различных прикладных задач по обновлению хеш-сумм.

Работа с защищенными версиями протоколов SMTP/POP3

В платформе 8.3 появилась возможность использовать защищенные версии протоколов SMTP/POP3 (встречаются термины SMTPS/POP3S или SSLSMTP/SSLPOP3).

Для объекта ИнтернетПочтовыйПрофиль реализованы новые свойства:

  • ИспользоватьSSLSMTP;
  • ИспользоватьSSLPOP3;
  • ТолькоЗащищеннаяАутентификацияSMTP;
  • ТолькоЗащищеннаяАутентификацияPOP3.

Свойства АутентификацияSMTP и АутентификацияPOP3 объекта ИнтернетПочтовыйПрофиль, а также перечисления СпособSMTPАутентификации и СпособPOP3Аутентификации использовать не рекомендуется – они поддерживаются для совместимости.

Использование защищенного протокола SMTPS дает возможность отправлять почту из , пользуясь почтовым ящиком Google.

Рассмотрим пример. На форме расположим поля для ввода темы письма и адреса получателя, а для ввода текста письма – поле форматированного документа.

Отправка почты из 1С

Для увеличения нажмите на изображение.

При нажатии на кнопку Отправить будет выполняться следующий код:

&НаКлиенте
Процедура Отправить(Команда)

Почта = Новый ИнтернетПочта;

Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = “smtp.googlemail.com”;
Профиль.ПользовательSMTP = “USER@gmail.com”;
Профиль.ПарольSMTP = “PASSWORD”;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;

Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

ПочтовоеСообщениеТекст = “”;
Вложения = Новый Структура;
Текст.ПолучитьHTML(ПочтовоеСообщениеТекст, Вложения);

ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
ПочтовоеСообщение.Получатели.Добавить(Кому);
ПочтовоеСообщение.Тема = Тема;
ПочтовоеСообщение.Тексты.Добавить(ПочтовоеСообщениеТекст,
ТипТекстаПочтовогоСообщения.HTML);

Почта.Послать(ПочтовоеСообщение);

Почта.Отключиться();
КонецПроцедуры

Заметим, что в нашем примере в случае, если SMTP-сервер не смог отправить электронное сообщение адресату (-ам), то метод Почта.Послать(ПочтовоеСообщение) генерировал исключение. Это вызывало у разработчиков определенные неудобства, т.к. была не очевидна причина генерации исключения.

В редакции 8.3.9 данное поведение изменилось, и теперь метод Послать() возвращает соответствие, ключом которого является адресат, а значением – диагностика от почтового сервера. Это позволяет точно определить причины неудачной отправки почтового сообщения каждому из адресатов. В режиме совместимости с версией 8.3.8 поведение не изменилось.

Двусторонняя печать

В платформе 8.2 двусторонней печатью сама платформа не управляла, управлять этой функцией возможно было только с помощью драйвера принтера.

В платформе 8.3 появилась возможность управления двусторонней печатью для табличного документа, графической схемы (из встроенного языка и интерактивно) и текстового документа (только интерактивно).

Двусторонняя печать в 1С

Во встроенном языке появились системные перечисления:

  • ТипДвустороннейПечати (Нет, ПереворотВверх, ПереворотВлево);
  • ЧередованиеРасположенияСтраниц (Авто, ЗеркальноСверху, ЗеркальноСлева, НеИспользовать).

А у объектов ТабличныйДокумент и ГрафическаяСхема появились свойства ДвусторонняяПечать и ЧередованиеРасположенияСтраниц, при помощи которых можно изменять расположение напечатанных страниц.

В редакции платформы 8.3.9 у системного перечисления ТипДвустороннейПечати добавилось новое значение ИспользоватьНастройкиПринтера. Выбор данного значения позволил использовать настройки принтера при печати документов системы. В режиме совместимости с версией 8.3.8 поведение не изменилось и соответствующие настройки принтера игнорируются.

Публикация на веб-сервере

Диалог публикации информационной базы на веб-сервере сделан более функциональным. Теперь публикация из конфигуратора позволяет задавать все параметры файла default.vrd.

Для диалога публикации веб-клиента и Web-сервисов через конфигуратор реализована:

  • возможность управления доступностью Web-сервисов по умолчанию (атрибут pointEnableCommon элемента ws);
  • возможность управления исполнением фоновых заданий в файловом варианте (атрибут allowexecutescheduledjobs элемента ws).

Если флажок “Публиковать Web-сервисы по умолчанию” на закладке “Основные” установлен, то при обновлении публикации выбранные Web-сервисы будут опубликованы автоматически.

В противном случае Web-сервисы будут отмечены как непубликуемые. Этому флажку соответствует атрибут pointEnableCommon элемента ws в файле default.vrd, предназначенном для настройки веб-клиента и Web-сервисов.

Атрибут pointEnableCommon элемента ws отвечает за возможность использования в данной информационной базе Web-сервисов, которые опубликованы без явного указания разрешения использования (атрибут enable элемента point).

Если атрибут имеет значение true, то все Web-сервисы, для которых явно не указано значение атрибута enable элемента point, будут разрешены для использования.

В противном случае использование таких Web-сервисов будет запрещено.

Публикация на веб-сервере

Настройка “Фоновые задания в файловом режиме” соответствует атрибуту allowexecutescheduledjobs элемента ws в файле default.vrd.

Атрибут allowexecutescheduledjobs управляет возможностью исполнения регламентных заданий расширением веб-сервера для файлового варианта информационной базы.

Атрибут может принимать следующие значения:

  • off – в этом случае расширение веб-сервера не будет выполнять регламентные задания. Выполнять регламентные задания будет клиентское приложение (если таковое существует), которое подключается к информационной базе напрямую, без использования веб-сервера.
  • force – в этом случае расширение веб-сервера будет выполнять регламентные задания.
    Если значение этого атрибута не задано, то регламентные задания будет выполнять то приложение, с помощью которого будет осуществлено первое подключение к информационной базе.

Публикация на веб-сервере - Фоновые задания в файловом варианте

Окно публикации на веб-сервисе в актуальном релизе платформы стало еще более удобным и эргономичным. Теперь параметры, описывающие OpenID-аутентификацию, вынесены на отдельную вкладку.

Нумерация объектов информационной базы

В платформе 8.3 переработан механизм автоматической нумерации объектов информационной базы. Контроль уникальности номера или кода (в том числе и полученного в результате автоматической генерации номера или кода) всегда производится во время записи объекта.

В текст сообщения о нарушении уникальности номера или кода добавлено указание, какой номер или код не уникален.

Нарушение уникальности номера объекта

Изменилось использование освободившегося номера или кода. Новый номер или код назначается без использования освободившихся номеров или кодов, если есть уже выданные номера или коды с большим (по порядку) префиксом номера или кода.

Агрегатные функции языка выражений системы компоновки данных

В языке выражений системы компоновки данных реализованы новые агрегатные функции:
 

  • Каждый();
  • Любой();
  • СтандартноеОтклонениеГенеральнойСовокупности();
  • СтандартноеОтклонениеВыборки();
  • ДисперсияВыборки();
  • ДисперсияГенеральнойСовокупности();
  • КовариацияГенеральнойСовокупности();
  • КовариацияВыборки();
  • Корреляция();
  • РегрессияНаклон();
  • РегрессияОтрезок();
  • РегрессияКоличество();
  • РегрессияR2();
  • РегрессияСреднееX();
  • РегрессияСреднееY();
  • РегрессияСреднееSXX();
  • РегрессияСреднееSYY();
  • РегрессияСреднееSXY().

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

Создадим в демонстрационной конфигурации “Управляемое приложение” внешний отчет по простому запросу:

ВЫБРАТЬ
Склады.Ссылка,
Склады.НеИспользовать
ИЗ
Справочник.Склады КАК Склады

ВнешнийОтчет

Для увеличения нажмите на изображение.

Как видно по рисунку, в выпадающем списке нет новых функций, однако если ввести их вручную, то сообщения об ошибке не будет, а отчет будет сформирован:

ВнешнийОтчет

Также представляет интерес новая функция КлассификацияABC(). Результатом работы функции будет номер класса, начиная с 1 (1 соответствует классу А, 2 – классу B, 3 – классу C и т.д.).

Продемонстрируем работу этой функции. Создадим новый внешний отчет “Классификация товаров” на основе запроса:

ВЫБРАТЬ
РасходТовараТовары.Товар,
РасходТовараТовары.Количество
ИЗ
Документ.РасходТовара.Товары КАК РасходТовараТовары

Определим новое вычисляемое поле Класс:

ВнешнийОтчет

Для увеличения нажмите на изображение.

Произведем настройку ресурсов следующим образом:

ВнешнийОтчет

Для увеличения нажмите на изображение.

В пользовательском режиме отчет выглядит следующим образом:

Отчет в пользовательском режиме

В заключение отметим, что от редакции к редакции в платформе 1С 8.3 механизм СКД постоянно улучшается и дорабатывается, и в рамках нашей “новичковой” статьи данные изменения привести в полном виде не представляется возможным. Да это и кажется излишним, т.к., работая на актуальной версии платформы, вы всегда можете воспользоваться различными справочными системами для помощи с разбором того или иного аспекта работы данного механизма.

Кроме того, не забывайте и про наш отдельный курс Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных, который до атома разбирает все тонкости и подводные камни при работе с данным механизмом. Посмотрите сами демо тут и тут.

Итак, давайте подведем промежуточные итоги. До этого момента мы познакомились и с новыми возможностями интерфейса «Такси» и управляемых форм, а также с некоторыми ранее не предоставляемыми возможностями самой платформы. Теперь настало время посмотреть, какие удобные возможности стали доступны и разработчику в конфигураторе.

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.


Статья по программированию - в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Комментарии / обсуждение (25):

  1. Александр

    Такой вопрос по регламентным заданиям. Например у меня платформа 8.3 но конфигурация УТ 10.3 (или какая то др. прошлого поколения) регл. задания автоматически(не надо запускать отдельный сеанс пользователя ) будут работать ? Или конфигурацию нужно перевести в режим совместимости с 8.3.3 ? Т.е. если я просто установил новую платформу как будет?

    • hanv

      В режиме совместимости Версия 8.3.2 и ниже поведение платформы не изменилось, т.е. нужно будет устанавливать в константах пользователя для выполнения регламентных заданий в файловом режиме, запускать отдельный сеанс.

  2. Серхио

    Скажите, пожалуйста, а вопросы пользователей и ответы на них будут публиковаться в комментариях? Я неделю назад задал здесь вопрос и он до сих пор не опубликован, а хвалебный комментарий от 16-го числа уже появился.

    • Евгений Гилев (Мастер-тренер)

      Доброго дня!

      Возможно Ваш вопрос требуется дополнительного анализа, поэтому ответа задерживается.
      Отнеситесь с пониманием, сейчас на наш саппорт нагрузка возросла в несколько раз.

  3. Серхио

    Всё же не совсем понял, каким образом будет отрабатывать фоновое задание? Т.е. оно как бы будет паразитировать на любом доступном клиентском сеансе – это понятно, но как быть, если сеанс всего один? Например, я включил свою файловую конфигурацию, у меня включилась целая куча фоновых заданий, а я вспомнил, что пора идти на обед, выключил программу и ушёл? Мои задания просто оборвутся и всё? Или будут какие-то предупреждения? Или будет где-то сохранён какой-то дамп с уже выполненными действиями и будет ждать следующего включения чтобы продолжить?

    • hanv

      При корректном завершении приложения (пункт меню Выход, кнопкой Закрыть) в случае выполнения при этом фоновых заданий процесс 1С останется в памяти, продолжая обработку данных. В случае принудительного завершения процесса 1С выполняющиеся транзакции зафиксированы не будут. Такое некорректное завершение может привести к возникновению ошибок в файле информационной базы. Платформа не формирует какого-то списка уже выполненных действий в рамках задания, чтобы после следующего включения продолжить выполнение “с места остановки”.

    • hanv

      Комментарий от разработчиков платформы:
      При закрытии приложения будет произведена попытка отменить фоновое задание, если фоновое задание в течении 30 секунд не реагирует, то приложение будет закрыто принудительно.

      • for1ckurses

        Как все хитро сделано.
        Я как раз люблю проверять зависшие процессы после закрытия программ. Теперь буду знать, что лучше пусть повисит.

  4. Поддержка курса по EDT

    Интересная статья. Вот бы еще добавить про шифрование данных :)

  5. Аноним

    Полезная информация про фоновые и регламентные задания в файловой информационной базе, да и про остальные новшества платформы 8.3

  6. Serega456

    Статья интересная. Конечно это малая часть от того что изменились, но направление правильное. С надвигающемся выходом 1С 8.3.5 можно сделать целую серию на эту тему.

  7. Наталья

    Очень актуальная статья. Много полезной и нужной информации. Уже столкнулись с ошибкой в нумерации объектов. В БП 3.0 появились пропуски в номерах документов. Спасибо, теперь будем знать, что эта ошибка будет исправлена в новых релизах платформы :)

  8. progr-2008

    Спасибо!
    Эту тему хорошо бы продолжить.
    Перехожу с 8.2 на 8.3, пока тестирую, хотелось бы знать как можно больше особенностей новой платформы.

    • Евгений Гилев (Мастер-тренер)

      Спасибо, Ирина!

      Если будут конкретные предложения по темам статей – сообщайте :)

      • progr-2008

        Хорошо бы про доработки типовых (лично меня интересует УПП) по изменению шрифтов в 8.3.
        Как через стили, так и непосредственное программное управление конкретными шрифтами.

    • Alex_grem

      Поддерживаю! Веб-сервисы, XDTO-пакеты, ФабрикиXDTO, WSОпределения и пр. – все это взаимосвязано, а как и что когда применять не понятно (лично для меня). Информация об этом кусками есть, но целостного представления нет! Я думаю у Вас получится разъяснить такую сложную тему простым языком (раньше ведь получалось)))

      • Евгений Гилев (Мастер-тренер)

        Как раз это рассказывается в новом курсе по Мобильной платформе :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.