Как решать повседневные задачи с помощью OneScript
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Скрипты – наше все!
Что такое скрипт или, по-другому, сценарий? Это простой текстовый файл с кодом, который можно выполнить непосредственно. Без компиляции, без построения промежуточных выполняемых модулей – прямо из текстовика.
Скрипт – это часто одноразовая программа, которая сделает вам нужную работу. Ее просто накидать, просто запустить, просто получить результат.
На windows традиционно была нехватка мощных средств автоматизации с помощью скриптов. Я знаю, что есть виртуозы BAT-файлов, которые могут творить с ними чудеса, но все же овладение этим инструментом занятие не для слабонервных.
Кроме того, на windows есть система Windows Script Host (WSH) которая позволяет уже писать более-менее функциональные скрипты на VBScript или JS, однако, когда дело доходит до работы с кириллицей – начинаются шаманские пляски с бубном.
Еще есть Powershell, который, бесспорно является сильным шагом вперед, но тоже иногда добавляет радостей своими несколько своеобразными подходами к решению задач.
Ну и в Linux, конечно, очень распространен скриптинг. Развитая система родных shell-скриптов, которыми можно делать практически любую автоматизацию системы, в Linux дополняется возможностью подключить любой другой скриптовый язык.
Однако, у всех перечисленных инструментов есть одна проблема.
Все это чужеродные элементы!
Для того, чтобы сделать что-либо вне платформы 1С, нам нужно изучить хотя бы один из этих языков и технологий. Само по себе это неплохо, но, во-первых, это отрыв от реальных задач, а во-вторых, эти технологии имеют обыкновение забываться со временем. И каждое возвращение из 1С в другую экосистему зачастую означает повторное изучение (вспоминание) синтаксиса, основных команд и всего такого прочего.
Есть решение!
Чтобы сделать скрипт, решающий наши проблемы, не нужно переключаться на другой язык. Нужно писать скрипты прямо на языке 1С!
Что может быть автоматизировано?
Если вкратце, то практически все, что угодно :) Приведу простой пример. Не так давно на нашем сервере, который управляет git-репозиториями, поменялся URL. Нужно было переключить все локальные копии на моей машине на этот новый адрес. Таких локальных копий у меня было около 10-ти.
Вручную я должен был войти в каждую папку, набрать там команду git remote, скопировать оттуда старый адрес, преобразовать его в новый и выполнить git remote set-url уже с новым URL.
Я не помню, как все это сделать на Powershell и тем более на BAT/CMD. Более того, я не хочу все это вспоминать. Вместо этого, я взял и написал скрипт на языке 1С. Всего-то перебрать папки из списка, в каждой из них дважды запустить git. Раз плюнуть. Потом скрипт переехал к коллегам, столкнувшимся с той же проблемой.
Что такое 1Script?
На конференции Infostart Event 2014 мною был представлен новый скриптовый движок, позволяющий исполнять код на языке 1С:Предприятия, но без самой платформы 1С. Фактически, это новый инструмент автоматизации, не требующий переключения контекста из 1С в абракадабру другого языка и обратно, и который может быть использован специалистами по 1С для автоматизации той или иной рутинной работы внутри операционной системы.
Технически он устроен, как и любой другой скриптовый движок (Python, JScript, PHP). Это интерпретатор, выполняющий текстовые файлы, как правило, в консольном режиме. Преимущество перед другими языками здесь в том, что вы не переключаетесь в чужеродную экосистему, для выполнения задачи. Вы не тратите время на изучение (или вспоминание) другого языка. Вы просто пишете на 1С. При этом вы не запускаете платформу, вам не нужен лицензионный ключ, вам не нужно выбирать в меню "Файл" внешнюю обработку, которая выполнит нужные действия. Создаете текстовый файл и пишете прямо в нем. Его же запускаете на выполнение.
Кстати, забыл сказать, что это кросс-платформенный инструмент. Вы можете писать скрипты под Linux на языке 1С с той же простотой.
Предлагаю рассмотреть порядок установки и запуска вашего первого скрипта на OneScript. В качестве примера возьмем ту самую задачу с изменением URL для git-репозитория.
Установка интерпретатора.
OneScript имеет открытый исходный код и доступен в публичном репозитарии на bitbucket.
В большинстве открытых проектов, как правило, есть опубликованная стабильная ветка и ветка, которая находится в разработке. Разрабатываемая версия обычно содержит больше функциональных возможностей. Для ознакомления и изучения рекомендую скачать версию из разработки. Она интереснее.
Есть два вида дистрибутива – инсталлятор и просто архив с файлами программы. Нам нужен инсталлятор. Скачиваем и запускаем его.

Далее-далее-далее, ждем завершения установки.
Инсталлятор автоматически пропишет oscript.exe в переменную PATH, чтобы было удобно пользоваться интерпретатором. Для проверки нужно запустить командную строку и набрать там команду oscript. Если все успешно, то должно появится следующее сообщение:

Если система не опознала команду, то нужно выйти и снова войти в систему (перелогиниться в системе), чтобы переменная PATH обновилась.
Настройка окружения для разработки
ВНИМАНИЕ! Информация о редакторе кода на данный момент устарела, поскольку, сообщество уже создало намного более совершенный редактор для кода 1С на базе Visual Studio Code. Неплохое руководство по которому можно прочитать по ссылке //infostart.ru/public/687869/ Разумеется, редактор описываемый ниже, тоже можно использовать, но имейте в виду, что есть намного более удобный способ разработки. С уважением, ваш Evil Beaver. 22.10.2017
В принципе, скрипты можно писать в любом текстовом редакторе, но все-таки хочется подсветки синтаксиса и контекстной подсказки.
Если у вас есть Снегопат, то вы можете писать скрипты в Конфигураторе 1С. При переключении текстового документа в режим встроенного языка Снегопат будет предоставлять контекстную подсказку, как будто это не скрипт, а обычный модуль 1С.
Я этим способом не пользуюсь, а пишу скрипты в Notepad++. Не пугайтесь, это не просто блокнот, а я не чокнутый гик (хотя в последнем не уверен). В Notepad++ есть и подсветка и подсказка и средства выполнения скрипта, который вы в данный момент пишете. Нужно только все это включить. Этот блокнот легко превращается в неплохую среду разработки.

А вот и контекстная подсказка.

Включаем подсветку синтаксиса Notepad++
Во-первых, нужно установить сам Notepad++
Чтобы Notepad++ заиграл красками 1С в нем нужно произвести несколько настроек. Во-первых, установить файл подсветки синтаксиса. Скачать его можно вот здесь или во вложении к статье. Далее, заходим в меню «Синтаксисы/Задать свой синтаксис».
В этом окне нажимаем кнопку «Импорт» и выбираем файл с синтаксисом 1С. Убедитесь что в поле «Расширение» установлено значение «os». При открытии файлов с этим расширением Notepad++ будет автоматически включать нужную подсветку синтаксиса.

Если подсветка не включилась
В Notepad++ есть странный глюк. Подсветка синтаксиса 1С в нем работает только если файл использует кодировку UTF-8. Поэтому, рекомендуется все скрипты кодировать именно так. Если подсветка после импорта из файла не включилась – нужно переключить кодировку в UTF-8 (меню «Кодировки\Преобразовать в UTF-8») и перезапустить блокнот.
Устанавливаем плагины
Существует огромное количество удобных плагинов для NPP. Все они удобным образом устанавливаются через менеджер плагинов, запускаемый из меню «Плагины – Plugin Manager – Show Plugin Manager»
Для разработки скриптов наиболее полезным является плагин NppExec. Он позволяет, не выходя из блокнота, запускать какое-либо приложение и наблюдать его консольный вывод непосредственно в окне Notepad++.
Для разработчика скриптов это означает, что он пишет скрипт, нажимает кнопку и видит результат работы скрипта сразу же, в окне блокнота. Этим обеспечивается быстрый цикл разработки в стиле «Написал-Нажал-Посмотрел результат»

Устанавливаем в менеджере плагинов флажок возле NppExec и запускаем установку. После установки в меню "Плагины" появится пункт NppExec. В подменю этого пункта рекомендуется установить флажок "Follow ($CURRENT_DIRECTORY)". При запуске скрипта на выполнение он автоматически будет стартовать в той директории, где лежит файл запускаемого скрипта.

Настраиваем запуск скрипта
NppExec работает следующим образом:
- Нажимаем кнопку F6 и в открывшемся окне вводим команду для запуска. Жмем ОК и она выполняется. Результат будет выведен в отдельную всплывающую панель
- Далее, жмем Ctrl+F6 и предыдущая команда запускается еще раз
То есть, нам нужно в окне запуска ввести команду oscript $(FULL_CURRENT_PATH) и нажать ОК. В консоли будет выведен результат работы того скрипта, который сейчас открыт в блокноте.

На этом настройка рабочего окружения закончена. Это было несложно:
- Установили Notepad++
- Установили подсветку синтаксиса
- Установили плагин NppExec и настроили команду запуска текущего скрипта
- Профит
Автоматизируемся!
Давайте вернемся к исходной задаче перенастройки git-репозиториев. Итак, есть каталог, внутри которого находятся локальные копии разных репозиториев.
Задача – перенастроить их на другой url.

Создаем новый файл с расширением os. Если у вас блокнот настроен на кодировку ANSI – переключаемся в UTF-8, чтобы работала подсветка.
А дальше – все, как в 1С. Скрипт начинает выполняться «с конца». При запуске выполняется код в самом низу модуля.
Для того, чтобы было проще сориентироваться в возможностях 1Script, имеется своего рода «Синтакс-помощник» в wiki проекта. Он описывает доступные языковые средства, классы, методы и т.п.
РабочийКаталог = "C:\Documents\GITs"; ОбойтиВсеРепозитарииВКаталоге(РабочийКаталог);
Теперь создаем процедуру «ОбойтиВсеРепозитарииВКаталоге»
// Перерегистрация репозитариев Процедура ОбойтиВсеРепозитарииВКаталоге(Знач РабочийКаталог); Каталоги = НайтиФайлы(РабочийКаталог, "*.*", Ложь); Для Каждого НайденныйФайл Из Каталоги Цикл Если НайденныйФайл.ЭтоКаталог() Тогда ОбработатьКаталог(НайденныйФайл.ПолноеИмя); КонецЕсли; КонецЦикла; КонецПроцедуры
Ну и дело за малым – запустить гит для получения и изменения URL в процедуре «ОбработатьКаталог»
Процедура ОбработатьКаталог(Знач Каталог) Сообщить("Обрабатываю каталог " + Каталог); КаталогГит = Новый Файл(Каталог + "\.git"); Если Не КаталогГит.Существует() Тогда Сообщить("Каталог не является git-репозиторием"); Возврат; КонецЕсли; ЛогГит = ПолучитьИмяВременногоФайла(); КодВозврата = -1; ЗапуститьПриложение("cmd /C git remote -v > " + ЛогГит, Каталог, Истина, КодВозврата); Если КодВозврата <> 0 Тогда Сообщить("Ошибка получения git remote"); Сообщить(ПрочитатьФайл(ЛогГит)); Возврат; КонецЕсли; ОсновнойАдрес = ПрочитатьАдрес(ЛогГит); Если ОсновнойАдрес = Неопределено Тогда Возврат; КонецЕсли; Сообщить("URL: " + ОсновнойАдрес); НовыйУрл = СтрЗаменить(ОсновнойАдрес, "http://old-server", "http:new-server"); Сообщить("Перенаправляю на " + НовыйУрл); КодВозврата = -1; ЗапуститьПриложение("cmd /C git remote set-url origin " + НовыйУрл + " > " + ЛогГит, Каталог, Истина, КодВозврата); Если КодВозврата <> 0 Тогда Сообщить("Ошибка git set-url"); Сообщить(ПрочитатьФайл(ЛогГит)); Возврат; КонецЕсли; Сообщить("Каталог " + Каталог + " обработан"); КонецПроцедуры
Ну и остались служебные процедуры «ПрочитатьАдрес» и «ПрочитатьФайл». Не буду их приводить из экономии места. Там банальное чтение файлов с помощью ЧтениеТекста.
Ну и дальше, жмем в блокноте Ctrl+F6 и наблюдаем за работой скрипта:

Мы только что написали несложный код на знакомом и любимом языке. Мы очень хорошо знаем его и можем творить с ним чудеса, верно? И обратите внимание, нам не потребовался Конфигуратор, мы вообще не трогали 1С. OneScript не использует никакие библиотеки платформы и не требует ее установки на машину.
Полный код приведенного скрипта можно посмотреть на GitHub (https://gist.github.com/EvilBeaver/14292ad7269d9d17ea8e)
Что еще можно автоматизировать? Можно, например, разложить архив домашних фотографий по папкам Год\Месяц и автоматизировать этот процесс, настроив мониторинг какой-либо папки «Входящие фотки» через планировщик операционной системы. На знакомом языке сделать такое – пара пустяков, верно?
Немного экономики
Мы у себя в работе используем OneScript для самых разных задач. От автоматизации развертывания баз 1С и синхронизации исходников конфигураций в git, до расчета покрытия кода тестами. Код наших скриптов также расположен в git, и любой 1С-ник компании может при желании что-то доработать. Язык знаком всем и не требует дополнительных навыков.
Производительность кода по нашим оценкам, как минимум, не хуже 1С. На некоторых задачах OneScript быстрее почти в 2 раза, на некоторых – примерно одинаково. Радикального проигрыша 1Script в скорости по сравнению с 1С мы пока не наблюдали.
Сейчас, в пору кризисов и санкций в Сети все чаще попадаются предложения по экономии на лицензиях для Windows, есть success-story по переводу части парка машин на Linux. Если посчитать лицензии Microsoft по текущему курсу, то переезд на Линукс выглядит все более привлекательным. Если вы строили автоматизацию на Powershell, то он станет у вас камнем преткновения. OneScript работает под Linux и вы можете автоматизировать свою деятельность независимо от того, какая ОС применяется (или будет применяться в будущем) в вашей компании. Если 1С-ники вашей фирмы пересядут на линукс, то им (в идеале) не придется изучать shell-скрипты. Они смогут пользоваться знакомым языком программирования.

Заключение
За минувший год 1Script вырос из исследовательского проекта в продукт, успешно применяемый в реальных бизнес-решениях. Это полноценный независимый кросс-платформенный интерпретатор языка 1С. Исходные коды открыты. Справка по доступным классам и глобальным процедурам доступна и постоянно обновляется.
Вы всегда можете добавить в движок новую функциональность и поделиться ей с сообществом. Наша команда будет рада помочь вам войти в этот процесс.
Писать скрипты – это просто, а главное – эффективно. Автоматизируйтесь! Пусть страх перед незнакомыми языками программирования больше не останавливает вас.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Инструментарий разработчика Сервера OneScript Системный администратор Разработчик 1С 8.3 Россия Бесплатно (free)
Библиотека для создания многопоточного TCP-сервера, а так же TCP-клиента с поддержкой SSL/TLS шифрования для экосистемы OneScript. Удобный инструмент для построения распределенных систем, высоконагруженных сервисов, систем реального времени. С низким порогом вхождения и подробной документацией с примерами.
12.01.2026 3479 ahyahy 2
Инструментарий разработчика OneScript Работа с интерфейсом Разработчик Россия Бесплатно (free)
Представляю кроссплатформенную библиотеку для разработки приложений с текстовым пользовательским интерфейсом (TUI) для сценарного языка OneScript. Она использует модель программирования, похожую на классические Desktop GUI (например, WinForms или WPF), но целиком работает в текстовом режиме. Возможно это ностальгия по DOS временам, но в наше время это так же и повышенная скорость отрисовки интерфейса, и легкость в написании скрипта. Создавайте интуитивно понятные окна, кнопки, поля ввода и выпадающие списки. Благодаря OneScript инструмент будет доступен даже новичкам без долгого обучения.
14.11.2025 5242 ahyahy 12
OneScript Мессенджеры и боты Разработчик Бесплатно (free)
Создаём Telegram-бота для декомпиляции 1С файлов на OneScript и фреймворке Осень. Разберём архитектуру MVC для Telegram-бота. Научимся работать с фреймворком Осень: внедрение зависимостей, аннотации, логирование. Реализуем разбор бинарных файлов (EPF, ERT, CF, CFE.). Упакуем бота в Docker-контейнер
21.08.2025 5883 untru 16
DevOps и автоматизация разработки OneScript Разработчик Бесплатно (free)
Когда в компании используется более 500 внешних обработок для 20 различных баз, процесс их параллельной разработки превращается в борьбу. Расскажем о тернистом пути от ручных скриптов к масштабируемой DevOps-системе, позволяющей централизованно управлять внешними обработками, автоматизировать сборки, интегрироваться с таск-трекером, запускать автотесты и разворачивать окружение в пару кликов.
12.08.2025 9973 untru 13
OneScript Разработчик 1С:Предприятие 8 Бесплатно (free)
В 2024 году главному инструменту DevOps в 1С исполнилось 10 лет. Расскажем о том, что представляет собой экосистема 1Script в 2024 году и почему её важно включить в свой рабочий процесс.
16.06.2025 9813 Evil Beaver 43
Групповая разработка (Git, хранилище) EDT OneScript Разработчик 1С:Предприятие 8 Бесплатно (free)
В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.
11.06.2025 8514 AlexF1 4
WEB-интеграция OneScript Разработчик Стажер Бесплатно (free)
Библиотека для работы с базами MySQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!
08.04.2025 7342 bayselonarrend 27
Внешние источники данных OneScript Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Библиотека для работы с базами PostgreSQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!
20.02.2025 10205 bayselonarrend 30
Пошаговой отладки нет и вначале казалось, что она нужна. Сейчас такой уверенности нет. Диагностические сообщения и короткие тесты снимают необходимость колупать скрипт пошагово.
Учитывая возникшие вопросы, хотелось бы поднять вопрос необходимости отладки самих скриптов
Причем давайте договоримся, что возможность "реализации отладки" существует. Гипотетическая.
То есть задача "Отладка скриптов 1Script" в первом приближении вырождается в несколько задач (причем эпичных):
* запуск интерпретатора в отладочном режиме (с debug портами)
* включение поддержки отладки в свою собственную IDE или в стороннюю (например Atom.io или Sumlime)
Пока в ближайшем будущем создание такого отладчика скорее НЕ нужно.
(5) ты решил что отладка все нужна ?
И на самом деле удобный и нужный инструмент. Только главное на хабре не рассказывать, что 1С-ники настолько ленивые что ничего кроме 1С знать не хотят )))))))
А почему людям не дал ссылочку на жизненно важные скрипты-примеры ? ;)
Отличия от стандартного языка 1С:
Не реализованы следующие строковые функции:
- СтрЧислоСтрок;
- СтрПолучитьСтроку;
- СтрЧислоВхождений (уже реализована в dev-версии 1.0.9);
- ТРег
- Не реализовано динамическое выполнение кода функциями Вычислить и Выполнить
- Не реализованы функции ДобавитьОбработчик, УдалитьОбработчик для обработки событий COM-объектов.
- Не поддерживается оператор Перейти (Goto) и метки
Некоторые отличия в будущем могут быть реализованы.
Мы не гонимся за абсолютной совместимостью, реализуем только наиболее полезные и востребованные вещи. "Выполнить" и "Вычислить" делать планируем, но это пока не жизненно необходимо и приоритет задачи снижен.
pcss_terminated = false;
var objProc = enumItems.item();
и понял , что js мне не люб.
вот так куда круче
data.Win32_Service
|> Seq.find (fun proc -> proc.Name.Contains(name))
а потом можно передать список сервисов через пайп и делать что нужно
В свое время был такой сайт script-coding.info где gray-cardinal и остальные создавали скрипты для повторного использования.
Так вот проблема именно в повторном использовании - пример с Go, я не могу передать команде все мои наработки по Go, так как она не знает языка. Вариантов 2 - любо все изучают скрипты на go, либо я всё пилю в одиночку. И это проблема.
Применительно к твоему примеру - что еще хуже, такой скриптинг завязан только на Windows. То есть если у соседней команды linux - ты таким скриптингом уже не поделишься.
То есть 1Script предназначен для коллективной автоматизации 1С-специалистов и для повторного использования уже имеющихся наработок.
P.S. Как ты понял - я помимо ruby и python, последней время подсел на Go и экспериментирую с ним. Но только для личных целей.
-скрипты пишутся под необходимое действие - один раз правильно написаный скрипт не требует изменений
-зависимости от дотнет, моно
в свое время писал скрипты(в основном php), с обязательным условием - наличие рядом интерпретатора и всех необходимых библиотек...
то есть структура была приблизительно такая:
скрипт1.bat
скрипт1.sh
/scripts/
/scripts/script1.php
/sctipts/data/ <- интерпретаторы, библиотеки
/sctipts/libs/ <- дополнительные библиотеки( на пхп)фактически папка кидалась куда угодно и запускался любой скрипт в независимости от того, есть что либо установленное или нет. Размер 8-9 Мб + необходимые динамические библиотеки
Плюсы других скриптов в том - что на них уже понаписано много всего...вам недогнать без вливания гор денег и времени.
(f# кстати на linux-е вполне себе работает. проверено на opensuse, проверено на HackerRank, куда его недавно добавили, насчет wmi вот тут не уверен, что он там будет работать))) надо будет попробовать . но вроде и onescript на шарпе написан. так что паритет) смотрел немножко go, немного не понял нафига они сделали такую извращенную работу с исключениями а-ля C . на дворе 2015 год как никак.
Есть COMОбъекты, их в какой-то мере можно считать за Interop. В родном 1С примерно то же самое.
А как быть в linux? Например, мы в своё время не смогли подружить сервер 1С на linux и API OpenOffice. Пришлось этот кусок отдать python-у.
мой метод завязан на dotnet, как и onescript. (ну и сравнивать f# и onescript, как-то несерьезно было с твоей стороны. у onescript только одно преимущество, которое преимущество среди 1С разработчиков. это синтаксис 1С. и все. типизация кстати в f# строгая, что по мне плюс. огромный такой плюс. )
(42) jdo, wine это тоже не эмулятор (это отражено в названии), хотя я с ними и не совсем согласен. А вот Mono - это полноценный runtime для . А то, что там файл с расширением .exe - так это просто название, ничего более. Внутри это не windows executable и не linux elf. Там внутри байткод для виртуальной машины. В Винде такой машиной является .NET, в Linux - Mono. Для работы 1Script в линукс не нужен wine.
Из всего вышенарытого делаю осторожный вывод, что mono - это частично реализованная WINE, поскольку Windows API включает в себя ADO.NET, ASP.NET & Windows Forms) или я снова ошибаюсь? (Опять я "за старое" :-))
Что касается ASP.NET, то он написан уже на управляемом коде, соответственно, отвязан от ОС и может быть выполнен в Mono. Про Windows Forms не знаю, как они это делали. Вообще оригинальный WinForms был жестко завязан на GDI. Как они вышли из ситуации не знаю. Вполне возможно, опять же, что рисуют окошки сами, изображая снаружи API Windows Forms.
P.S. Ненависть к Microsoft является болезнью. Линус Торвальдс. :)
(0) идея: для ленивых виндузятников можно сделать package (по сути powershell скрипт написать) для chocolatey и тогда можно будет одной командой ставить и на винде.
cinst oscript -y
(52) comобъекты это уже хорошо. но я не понимаю почему нет (или я не знаю) возможности подключения net assembly ? (как в IronPython например . как в powershell и т.д. кстати я не писал тогда выше, но забыл тогда упомянуть про другой скриптовый язык, который кстати для знакомых с C# ближе. это . через choco также ставится одной строкой )
Такая возможность планируется. Все, как обычно, упирается в свободные ресурсы.
вот исходники моно
найдите мне где там зависимость от вайн?
для Windows Forms есть альтернативы типа gtk#
про ADO.NET, ASP.NET , какая-то ересь написана.
а ребята в пилят как я понят WPF фрэймворк, который и на linux работает, и на яблоке.
см
В любой задаче на разработку есть два ключевых параметра: время на разработку и эффективность конечного софта.
Разумеется, если разработчик 95% времени пишет на языке 1С, то рабочий скрипт на этом же языке напишет быстро даже в обычном блокноте без плюсов.
ЗапуститьПриложение(ПутьК1Cv8.exe DESIGNER /F"путь к каталогу ИБ" /N"Администратор" /UpdateCfg"ПутьКФайлуCFU")Т.е. вам нужно только запустить конфигуратор с нужными ключами и собственно на этом все. А инфраструктурную обвязку напишите, уже какую вам надо.
Удобно будет воспользоваться библиотечным скриптом v8runner.os (
Кроме того, мы организовали стандартную библиотеку пакетов, которая будет со временем пополняться ( ). Дорабатывать и дополнять библиотеку может любой желающий.
Ну и кроме того, всегда можно спросить меня, если что-то в документации написано сумбурно.
экспериментирую, по мере нахождения свободного времени, изучаю...
есть ли некий биндинг, скрипт eval для самой 1С? т.е. как msscript control , чтобы можно было выполнять код уже в самой 1С и получать результат, добавлять переменные и т.п.? или такой задачи не стояло?
Тип System.Int64 невозможно преобразовать в один из поддерживаемых типов ?
...
Sessions = ServerAgent.GetSessions(Cluster);
Для NubCon = 0 По (Sessions.Count()-1) Цикл
Соединение = Sessions[NubCon];
UserName = Соединение.UserName;
MemoryCurrent = Соединение.MemoryCurrent;
... тут и возникает это сообщение...
Правильно ли я понял, что у вас сервер предприятия, к которому вы подключаетесь - 64-разрядный?
1) Он выгружает кучу хлама в виде обычных и упр форм, которые потом GitLab затягивает в себя и собственно "засоряет" эфир. Не делали чтобы выгружал чисто только код?
2) А не делали чтобы начальную выгрузку хранилища можно было ограничивать по номеру версии?... Сейчас оценил по времени сколько будет выгружаться всё хранилище - получил недели две... Хотя может стоит и всё выгрузить...
Да, и по "чисто коду" - не делали, нам нужно как раз все, а не только код.
Можешь написать доп.скрипт, который будет удалять все файлы, кроме ObjectModule.*, module*.*, Форма.*, CommandModule.*, ManagerModule.* и тогда останется только код.
Но я не советую.
Например, ты лишишься интересной информации по изменения метаданных и их реквизитов, форм и т.п.
Я разбивал разбор хранилища на куски и потом их гитом собирал в одну ветку.
Т.е. например у меня в хранилище 1с было 1000 помещений.
Я запустил 5 разборов параллельно: с 1 по 200; с 201 по 400 и т.д.
Получил 4 отдельных git-хранилища
И далее магическими командами git объединил всё в одно.
Рулил все файликом Version.
И это было еще в v83unpack. Здесь, думаю, будет тоже самое, т.к. этот скрипт и есть порт проекта v83unpack
Вот откопал видео, которое я делал года полтора назад для тех, кто хочет побыстрей переложить все хранилище 1С в гит.
Все операции проводил в SourceTree:
Желательно добавить в статью для быстрого старта.
Для корректной работы NppExec на windows 7 и выше нужно запускать Notepad++ от имени Администратора.
иначе
oscript C:\Shared\1cScript\Hello.os
CreateProcess() failed with error code 2:
Не удается найти указанный файл.
Сообщить("Привет Мир!");
ну и конечно:
Сообщить("Привет Мир!");Не согласен. Без админских прав работает. Может это только при установки самого плагина и только в том случае, если каталог плагинов N++ находится в "Program Files"?
За OneScript ещё раз спасибо.
В статье описано - "нужно перезайти" я, в свою очередь, запустил cmd c повышением прав. Получив положительную реакцию на "oscript" запустил Notepad++ без повышения прав и соответственно получил указанную ошибку.
Таким образом все претензии к статье снимаются.
Т.е. нужно не выдавать пользователю запрос "введите путь", а описать в справке параметр "Путь" и при запуске требовать, чтобы его передавали.
Спасибо! Предлагаю расширить возможности 1Script всё таки добавив к нему GUI. В том смысле что я
разработал возможность применения в скрипте библиотеки KiXforms Version 2.47, библиотека ведь
бесплатная.
Надеюсь пригодится, и для организации диалога с пользователем тоже. Перевел справку KiXforms,
повозился с нежеланием KiXforms работать для 1Script и вроде получилось. Предлагаю потестить.
Примеры из справки можно сохранять в "*.os" и запускать. Стоит ли двигаться в этом направлении?(108) dis_2015,
Сам по себе, я не сторонник GUI для скриптов, но если кто-то считает, что это будет полезно - я всеми руками ЗА. Если у Вас есть наработки по данной библиотеке (первый раз слышу про нее) - выкладывайтесь на гитхаб или еще куда. Там и мы все посмотрим, о чем речь, и помощники смогут подключиться, если сочтут нужным.
Иными словами, да, замечательно, что у вас есть интерес развивать GUI и участвовать в проекте. Я, со своей стороны, всегда готов помочь.
Но если востребовано, то конечно пусть будет.
Посмотрел мельком пару файлов из вашего репо. Навскидку совет: сделайте уж сразу обертку над всеми объектами и переведите на русский все их методы и свойства.
Чтобы не переключать раскладку по 10 раз в таких строках:
СписокЭлементов1.Clear();
СписокЭлементов1.Columns.Add("Цвет",120,0);а сразу писать:
СписокЭлементов1.Очистить();
СписокЭлементов1.Колонки.Добавить("Цвет",120,0);интересно кодировать и много свободного времени. Увидел скриптовый язык привычного синтаксиса и загорелось, не
потушишь. Просто болезнь какая то. Пока болею может что полезное сделаю. Мне-то точно, но может ещё и другим
пригодится. Идеи какие подкинет, на мысли хорошие наведёт. Идём дальше.
Ученые из ЦЕРНа (у меня нет там знакомых...) так прямо и отвечают - Ну не знаем мы, что нам этот бозон Хиггса даст,
но искать будем, только денег пожалуйста дайте. Ну не знаю я пока что из этого вырастет. Пусть растёт деревце,
если вырастет яблоня, яблоки будем кушать. Идём дальше.
Линус Торвальдс, когда писал свой эмулятор терминала, тоже бы четко не ответил. Ты чё парень, у нас же уже есть
UNIX, а он "заболел" и нате вам Linux. Идём дальше.
Да замечательно, теперь с 1Script мне автоматизировать легко и просто, ну легче и проще. Но привык я к GUI. Может
кто к другому привычнее, а я к GUI. Это не порок. Для пользователя опять же можно будет минипрограммки-подсказки
штамповать. Там и поля ввода можно отформатировать, чтобы лишнего не набили, и подсказок напридумывать.
Заботиться о пользователе надо. Кто кроме админа его пожалеет?
Можно этот GUI держать в стороне на полочке, и без него можно обойтись, а если понадобится так вот оно уже есть,
пользуйся, дополнительное лезвие в швейцарском ноже. И 1С по поводу лицензии к нам без претензий. Большие
программы конечно не напишешь, так ведь инструмент надо применять по назначению. Для админов самое то.
Будет востребовано или нет, мне и самому очень хочется знать, может я не один такой?
Да не хочу я 1С повалить. Там ребята молодцы, да и девчонки тоже, дело своё делают помаленьку. У них своё дело
, у нас своё. Думаю мы друг другу не мешаем.
Методы и свойства на русском тоже хочу, но не сразу Москва строилась! Я только недавно вплотную
KiXforms занимаюсь. Был ещё кандидат в виде WSO от Александра Веретенникова, но там всё очень громоздко
получилось и медленно. Да и подучить кое что надо. Ах, ах, у меня большие пробелы в знаниях. Осваиваю по мере
необходимости и интереса. Но в планах есть конечно. С самого начала было.
Надеюсь как-то ответил.
Насчет справки, после очередного теста нашел нестабильность формы, уже исправил, но новые версии справки и
примеров только собираюсь сформировать. Будет kf247ru50.
Далее появится "конвертер управляемых форм в KiXforms", параллельно ему допилят ODBC-обертку и вуаля, убийца 1С готова )))
а) Повторное использование кода (подключение библиотек)
б) Набор нативных возможностей, дающих доступ к тем или иным ресурсам локального/удалённого компьютерного оборудования, и к WEB-ресурсам
в) Шаблоны и макросы - позволяющие "управляемо" разворачивать алгоритмы в более сложные структуры, позволяющие получать массово клонируемые полиморфные стукрутыр алгоритмов на основе "простых" исходных образцов. Скрипты, генерирующие по паттернам скрипты и их исполняющие их.
Для эффективной реализации пунктов а) и б) нужны простые механизмы подключения уже созданных библиотек: скриптов + возможность подключать свои библиотеки (на той же dot NET) для расширения нативных библиотек.
А для последнего пункта нужен особый синтаксис для реализации макрошаблонов (в 1С 8 такого нет, но очень не хватает; но есть, например, dot NET языке Nemerle).
И тогда это будет мощный инструмент.
Да, и ещё вопрос. А как тут с поддержкой работы с базами данных (хотя бы через ADO SQL) и есть ли поддержка OLE Automation Clinet (хотя бы для подключения к 1С: Предприятие)?
Есть (полный список на гитхабе по ссылке)
Есть (чего не хватает - сообщайте):
- Файлы
- Запуск приложений
- Чтение потоков ввода/вывода
- XML
- TCP\
- HTTP
- ZIP
- COM-объекты
- И вообще, все здесь:
Нету. Но и далеко не в каждом скриптовом языке есть.
Задача на собственные классы к БД есть, но не реализована. А через ADO - хоть сейчас.
Кроме того, прямой проброс библиотек .NET в скрипты - делается несложно, планы такие есть.
Иными словами, непонятна критика - большая часть того, что вы перечислили есть уже сейчас, а метапрограммирование штука хорошая, но без нее жить вполне можно.
Метод ТекущийСценарий()
Метод СтартовыйСценарий()
СтартовыйСценарий()
ТекущийСценарий() это встроенная операция движка. (она, к сожалению, не описана в синтакс-помощнике, но зато ее много в файлах публикуемых скриптов - библиотеке и в примерах)
Что касается того, как с этим работать - то очень просто.
ЭтотСкрипт = ТекущийСценарий();
Сообщить(СтрШаблон("Выполняется скрипт %1", ЭтотСкрипт.Источник));
кк=2;Для i = 0 По 1000000 Цикл кк = кк * Цел((i+2)/2) * 2 /(Цел((i+1)/2) * 2 + 1); КонецЦикла; Сообщить(кк);этот код нормально выполняется в 1Script, но в 1С 8.2 зависает навсегда, сделайте чтоб и у вас зависал.
Стоит ли говорить, что именно благодаря подобному синтаксису огромное количество портов программ из одного языка в другой и огромное сообщество кодеров, которое может помочь в составлении алгоритмов?
НомерСтроки = НомерСтроки + 1;Или
SQLзапрос = "INS ERT IN TO table ("
"|id, "
"|1,"
"|2)";
Кому нужны эти кавычки и вертикальные линии, когда в нормальных языках компилятор и сам догадывается что происходит без явных указаний?
SQLзапрос = "INS ERT IN TO table (
id,
1,
2
";
[/IS-QUOTE]
А комментарии и излишний текст?:
[1C-CODE]
// Пар1 - число, Пар2 - строка, Пар3 - массив
Процедура ИмяПроцедуры(пар1, пар2, пар3)
КонецПроцедуры;
ПоказатьТак поинтереснее будет:
function main(argc, argv /*комментарий в любом месте кода*/)
{
}
Это вообще классика:
СтрШаблон("Ошибка в данных в строке %1 (требуется тип %2)", 2, "Дата")
А как вам такой вариант (C++):
std::cerr << "Cannot open file for writing: "
<< qPrintable(file.errorString()) << std::endl;
Или PHP:
$var = 'my variable';
echo "I love {$var}";
Вот зачем кодерам жизнь усложнять? Возьми экспортируй весь набор типов данных, классов, методов, процедур, функций и т.д. и т.п. из своей библиотеки и позволь выбрать любой язык программирования для работы с этим.
Экспортировать мало. А рантайм (выполнялку) где брать? Т.е. еще надо поддержать в платформе движки PHP, JS и питона? Чтобы сервер предприятия запускал нужные скрипты на желаемом языке, так получается?
И тут встанет вопрос "Где деньги, Зин?" Какой профит принесет компании вложение ресурсов в подобную доработку платформы? Мы, например, тут можем придумать ответ на данный вопрос и попытаться донести его до 1С. Если наше предложение действительно будет приносить прибыль, уверен, 1С займется этой работой.
Возьметесь сформулировать?
об этом хорошо на кухне говорить. а чтобы был скриптовый язык, совместимый до некоторой степени с языком 1С. как я писал выше, мне он не нужен вообще. но другим вполне может быть полезным. это не велосипед ни разу, поскольку нет ни одного совместимого скриптового языка с языком 1С(на уровне копипейста. это может быть даже покрывает некоторые кейсы при программировании на самой 1С, - например проще тестировать некоторые куски кода). все остальные замечания по поводу отставания (с которыми я ксатит могу быть согласным) , надо писать на почту 1С, а не сюда.
ps в 1С можно и на английском кодить. че-то я не заметил , чтобы мировые мозги зациклились на 1С. на сегодняшний день, 1С, это чисто российский продукт, рассчитанный на постсоветское пространство, где польуется популярностью для учета программа 1С. не надо строить иллюзий.
В последний год 1С стала активно прикладывать усилия для продвижения за рубюежом. Курсы 1С на английском, офисы в Германии, Турции, США.
Продукт accountingsuite продвигается в Америке
Видео со знакомым UI:
И демо-версия
1C это весьма современный фреймворк. Совсем не хуже прочих, что используют в западном Enterprise.
выдают, что месье теоретик в кубе. есть такой проект Nitra (, который начат JetBrains, взяв под крыло мэйтейнеров Nemerle, вот уже пару лет пытаются допилить. и чего-то как-то до сих пор. а тут энтузиасты на вольных хлебах в свободное от работы время замутят. всего лишь возьмут разработку опенсурс и все само собой накодится.
Полноценный редактор: (по функциональности редактирования 1С лидирует VS Code)
И общепринятой практикой является сообщать об ошибках непосредственно в багтрекере проекта ( ). Так сообщение быстрее попадет к авторам.
P.S. В документации не нашел функции СокрЛП, хотя по факту она есть...
Еще вопрос - у меня подсветку синтаксиса в NP++ сделать получилось, но контекстной подсказки нет. Когда начинаешь набирать, например, Удалить - то контекста нет, и в англоязычном варианте тоже нет... Что я сделал не так и как прикрутить контекст?
В NP++ не будет никакого контекста. Там только раскраска была, а все "подсказки" - штатные редактора, т.е. просто слова по текущему файлу
Еще раз спасибо!
Вливайтесь в чатик, спрашивайте, вам обязательно помогут:
Решил воспользоваться oScript , установил , запустил тестовый батник, в итоге получил ошибку : (показана на рисунке)
Подскажите, в чем может быть причина.
Спасибо.
Надо дать на нее ссылку.
Вопрос от начинающего пользователя onescript. Хочу написать сценарий сжатия файла журнала регистрации (sqlite). Одним из этапов планируется остановка службы сервера 1С, применение команды vacuum для файла базы sqlite и запуск службы сервера 1С.
Можно ли реализовать такое средствами onescript?
Тем не менее, несложный набор скриптов превратить в exe возможно.
с 7 ноября стартует очередной чемпионат с призами и большим количеством программистов участников.
Каждый год список заявленных языков программирования пополняется "на лету".
Достаточно на добавляемом языке описать структуры данных обмена (они будут выложены 7 ноября на сайте) и написать клиента обмена с сервером (примеры будут так же выложены 7 ноября) через сокеты ( используя описанную структуру (бинарные данные).
Протестировать решение с помощью утилиты localrunner.
Написать организаторам приложив ссылку на интерпретатор (oscript) и свой созданный языковой пакет.
работает в oscript ))) поэтому кидаю в эту ветку и стираю с жесткого диска )
Функция СжатьLZ77(ВходнаяСтрока)
ВыходнаяСтрока = "";
Для i = 1 По СтрДлина(ВходнаяСтрока) Цикл
best = 0;
bestLength = 0;
Для j = 1 По i Цикл
k = 0;
Пока k + j < i и Сред(ВходнаяСтрока, k + i, 1)= Сред(ВходнаяСтрока, k + j, 1) Цикл
k = k + 1;
КонецЦикла;
Если k > bestLength Тогда
bestLength = k ;
best = j ;
КонецЕсли;
КонецЦикла;
bestLength = Мин(bestLength, 30);
Если bestLength < 3 Тогда
ВыходнаяСтрока = ВыходнаяСтрока + Сред(ВходнаяСтрока, i, 1);
Иначе
ВыходнаяСтрока = ВыходнаяСтрока + Символ(best + 2048 * bestLength);
i = i + bestLength - 1;
КонецЕсли;
КонецЦикла;
Возврат ВыходнаяСтрока;
КонецФункции
Функция РазжатьLZ77(ВходнаяСтрока)
t="";
СтрМакс = 2048;
for П=1 to StrLen(ВходнаяСтрока) do
С=Mid(ВходнаяСтрока,П,1);
К=CharCode(С);
t=t+?(К<СтрМакс,С,Mid(t,К%СтрМакс,К/СтрМакс));
enddo;
Возврат t;
КонецФункции Показатьпоскольку в 1Скрипт нет функции Выполнить или Вычислить, то вариант sfx кода отпадает (((( разве что через временные файлы
очень странно работает :)
Например,
СказкаКолобок = "
|Жили-были старик со старухой.
|Вот и говорит старик старухе:
|— Поди-ка, старуха, по коробу поскреби, по сусеку помети, не наскребешь ли муки на колобок.
|Взяла старуха крылышко, по коробу поскребла, по сусеку помела и наскребла муки горсти две.
|Замесила муку на сметане, состряпала колобок, изжарила в масле и на окошко студить положила.
|";
получаем результат сжатия/разжатия и видим:
Жили-были старик со старухой.
Вот и говорит старик старухе:
о ст Поди-ка, старухи-кпо коробухи-скребиухи-ксусекробуметребне нахи-скешь ли мукибнекполобок.
Взялака, стар крылышкоухи-кпо коробухи-склрухи-ки-ксусекробВзямукиобухи-с ли мугорсти две.
Замесиухи-с уукибсобуане-каостряпаВзянекполо, изжариВзяв маслебВзям окоылы студитьхи-ложмес.
Не спорю, коробухи-скребиухи звучит прикольно, но на исходный текст не похоже.... :)
Если речь о "нескачивании" setup.exe - то да, можно. Но тогда придется скачать вариант дистрибутива ZIP и распаковать его в нужную папку. Так, чтобы совсем ничего не скачивать - это я не знаю как ))
Сейчас заканчивается разработка удобного инструмента OneScript Version Manager
с его помощью можно легко управлять версиями установленного/используемого движка
у меня уже заработала дев-версия.
Поэтому у меня 2 вопроса (предложения сделать):
1) Можно ли запустить один и тот же скрипт на нескольких ПК без установленных на них OneScript используя telnet или winRM (*nix аналога)?
2) Планируется ли создание компилятора osTOexe для быстрого развертывания на клиентских компьютерах без проблем с установкой OneScript и необходимостью поддерживать последние версии библиотек?
Правда есть проблемы, если скрипту требуются бинарники. Они в пак не входят
Пока что я использую для автоматизации AutoHotKey, который может делать независимые exe файлы, но очень хочется перейти на "родной 1С".
Для себя вижу только один вариант вариант использования вашего продукта - создание com automation с управляющего компьютера.
В общем, лучше один раз попробовать: (подраздел "Упаковка в самостоятельный EXE-модуль")
1. Скажите пожалуйста, что делает строка Логирование.ПолучитьЛог("oscript.app.что-то"); и что надо писать вместо "что-то"?
2. Я не нашел (может плохо искал) строки как правильно сделать инициализацию логирования (предлагаю положить куда-нибудь в раздел хелпа для новчиков):
Консоль = Новый ВыводЛогаВКонсоль;
ФайлЖурнала = Новый ВыводЛогаВФайл;
ФайлЖурнала.ОткрытьФайл("C:\OneScript\logs\test.log");
ЖурналЛогирования = Логирование.ПолучитьЛог("oscript.app.cleaner");
ЖурналЛогирования.ДобавитьСпособВывода(Консоль);
ЖурналЛогирования.ДобавитьСпособВывода(ФайлЖурнала);
ЖурналЛогирования.Информация("" + ТекущаяДата() + "-----Начало");У нас принята схема "производитель.тип_приложения.имя_приложения"
Т.е. oscript.app.gitsync означает, что это пакет от команды oscript, это приложение (а не библиотека), и называется оно gitsync. Лог с именем oscript.lib.v8runner это лог библиотеки (а не приложения) v8runner.
Инициализация логирования описана в README пакета logos. Если что-то непонятно там, спрашивайте в чате gitter или в issues на гитхабе.
Скомпилированный exe в любом случае требует .net
Как правило, .NET4 на сервере уже есть, если это не сервер на Windows XP или Millenium Edition. Под Linux существует Mono, под которым 1Script также тестируется и работает.
oscript "($FULL_CURRENT_PATH)"
или
oscript '($FULL_CURRENT_PATH)'
выдаёт ошибку:
Process started (PID=6060) >>>
Script file is not found ''($FULL_CURRENT_PATH)''
<<< Process finished (PID=6060). (Exit code 2)
================ READY ================
НАДО писать БЕЗ кавычек... и сначала $ , а только потом скобки!... тогда работает
oscript $(FULL_CURRENT_PATH)
и ОБЯЗАТЕЛЬНО требует установки .NET Framework версии 4.5.2 !!!
надо его ещё поискать... стандартно только 4.0 предлагает!
------------------------------------------------------------------------------------
За актуальной инструкцией по использованию обращайтесь к статье
и обязательно к статье Никиты Грызлова
Также актуальные версии доступны для скачивания на сайте
* vanessa-runner
* yard
* deployka
Насчет Вашего вопроса - не знаю. А что, не работает?
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 327581
Создание 04.02.15 01:39
Обновление 22.10.17 23:42
Просмотры 114578
Загрузки 32
Рейтинг
540
Комментарии 225
Код открыт Да
Рубрики OneScript
Кому
Системный администратор
,
Разработчик
Тип файла Документ XML
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)