Виртуальной машины, исполняющей скрипты на языке 1С:Предприятие.
Иными словами, это возможность писать программы на языке 1С без использования платформы 1С:Предприятие.
И это позволяет нам в конечном итоге брать уже готовые куски кода, написанные в конфигураторе и с минимальной адаптацией переносить их в программу на OneScript.
И пусть по словам разработчиков это не главная цель проекта, но я вижу интерес именно в том, чтобы из программы на OneScript подключаться к базе 1С через внешнее соединение и выполнять некоторый полезный код.
Вы спросите - а зачем это вообще надо? Почему бы не написать этот же код в обработке и запускать через 1с стандартным способом?
Но мы ведь говорим об автоматизации и тут есть фундаментальные проблемы:
- нет способа гарантированно запустить базу и выполнить в ней код некоторой внешней обработки (кто сталкивался с этим на практике знает, что слишком многое может пойти не так, начиная с того, что до выполнения обработки просто не дойдёт из-за какого-нибудь модального окна)
- нет простого способа генерировать такую обработку программно, а ведь это может нам понадобиться, если речь идёт о выполнении полезного кода над группой баз
- нет простого способа логировать выполнение этой обработки
Все эти проблемы решает OneScript.
Зачем писать и запускать эти скрипты именно в обновляторе?Потому что обновлятор берёт на себя ряд непростых вещей, чтобы упростить написание таких скриптов в части взаимодействия с базами.
А именно.
Список баз для обработкиПрямо в обновляторе мы выбираем для какого количества баз нужно запустить написанный нами скрипт:
Передача параметров базыПри выполнении скрипта обновлятор сам передаёт в него необходимые параметры с информацией о текущей базе:
Все эти параметры мы можем использовать в своём скрипте, делая его универсальным для выполнения над любым количеством выбранных баз.
Примеры таких скриптов мы можем найти в списке шаблонов обновлятора:
Предварительная архивация базыПри необходимости обновлятор обеспечит создание резервной копии перед выполнением скрипта:
Эта резервная копия будет согласована с общей системой архивации, то есть её также можно подвергать "тюнингу" в дополнительных настройках обновлятора. Такая копия всегда будет иметь метку "перед опасной операцией".
Блокировка, разблокировка базыПри необходимости обновлятор выполнит полную блокировку базы перед выполнением вашего скрипта и разблокировку после:
И это одна из ключевых "фич" обновлятора - ведь, например, корректное выполнение блокировки серверной базы в общем случае является достаточно нетривиальной задачей.
Нужно "разрулить" текущие подключения пользователей, административные подключения, выполнение фоновых задач. И всё это через общение напрямую с кластером 1с.
Сохранение отчётовОбновлятор сохраняет историю выполнения таких скриптов в менеджере отчётов.
Как в общем виде:
Так и в детальном:
Уведомление на почтуЕсли у вас настроены уведомления на почту (все или только при ошибках)...
То информация о выполнении скриптов (включая детальные отчёты) будет приходить к вам точно также, как и информация о выполнении других операций из обновлятора:
Запуск скрипта по расписанию Облачный мониторингПри сохранении скрипта нам также доступна опция для облачного мониторинга его работы - совершенно потрясающая возможность на мой взгляд. Вот об облачном мониторинге.
Многопоточное выполнение скриптовО том как запускать скрипт параллельно для нескольких баз подробно рассказывается .
Что ещё полезно изучить перед написанием скриптов?Ну, конечно же, сам язык 1С. Куда же без него...
Прежде всего есть вот этот справочник языка 1С с примерами: .
Также стоит пробежаться по отличиям OneScript от стандартного языка 1С. Их немного (ссылка) .
Как мне придумывать свои скрипты?Для вдохновления вначале советую разобрать и понять скрипты из шаблонов обновлятора. Это уже многое вам даст.
А если же вам нужна идея для написания скрипта, который будет полезен сотням других пользоватей, то я прошу вас - напишите об этом мне любым удобным для вас . Идей у меня огромное количество, но времени и возможностей не хватает.
Для этого я завёл специальный проект на github , где собираю полезные скрипты от пользователей обновлятора, чтобы как можно большее количество людей смогло использовать их в своей работе.
Хотите прислать мне свой скрипт? Прошу вас .
С уважением, Владимир Милькин (преподаватель и разработчик ).
Многие начинающие веб-программисты знакомятся с языком посредством книг. Книга бесспорно очень важна и нужна, но в ней приводятся примеры (для начинающих), которые по своей сути не являются правильными с точки зрения устойчивости и переносимости скрипта. Под устойчивостью понимается возможность возникновения ошибок различного вида, под переносимостью – тоже самое, но при переносе скрипта с домашней локальной машины на сервер хостнг-провайдера.
Ниже я бы хотел сразу показать начинающим веб-разработчикам как надо учиться сразу писать скрипты, чтобы затем не испытывать лишних проблем и не «ловить» непонятно откуда вылезающие ошибки.
Сразу скажу, что я сам с этим столкнулся, так что все это прошло через мои мучения….
Рассматривать я буду следующие моменты:
2. Где зарыта «@»?
3. register_globals = Off и никак иначе.
4. Основные аспекты синтаксиса. Литерал ор нот литерал…
Почему я именно с этой главы начинаю. Дело в том, что многие на локальной машине сразу отключают показ всех ошибок. Это – НЕ правильно. Вместо того чтобы тупо смотреть в монитор и искать, где, как окажется, не хватает точки с запятой, можно по ошибке, выдаваемой PHP сразу понять, в чем дело.
Но сначала хочу сделать небольшое лирическое отступление по части того, как настраивать PHP, как Apache modul или fast-CGI.
Самый оптимальный вариант – настраивать, как модуль веб-сервера. Для этого в конфигурационном файле httpd.conf веб-сервера Apache пишем следующие строчки:
LoadModule php4_module D:/bin/php/sapi/php4apache2.dll AddType application/x-httpd-php .php .phtml .php4 .php
Отличие от FastCGI – следующие. Первое. При FastCGI php.ini будет подгружаться в память веб-сервера приблизительно каждый второй раз при запуске скрипта, при установке, как модуля Apache загрузка конфигурации PHP будет осуществляться только при загрузке или рестарте веб-севрера, само собой быстродействие и нагрузка на сервер будет меньше. Помимо этого, при установке как fastCGI недоступны определенные функции. Начинающему программисту они не понадобятся., но при разработке крупного Интернет-приложения вы можете столкнуться с проблемами. А проблемы лучше предотвращать.
Теперь перейдем к конфигурации самого PHP. В конфигурационном файле php.ini в обязательном порядке устанавливаем следующие директивы с ниже написанными значениями:
error_reporting = E_ALL display_errors = On display_startup_errors = On
Писать или не писать ошибки в лог файлы – это уже на ваше усмотрение.
На сервере в хостиг-компании, обязательно, выключайте все эти директивы в целях безопасности, дабы потенциальный злоумышленник не мог узнать пути, где лежат ваши скрипты. Но по хорошему, когда вы уже публикуете свой скрипт в глобальной сети, он не должен выдавать никаких ошибок.
Помимо этого
short_open_tag = Off
Для того, чтобы нельзя было использовать