Пишем консольные exe-приложения на языке 1С

Публикация № 287643

Разработка - Практика программирования

компилятор интерпретатор wsh vbscript jscript

Нужен скрипт автоматизации рутинных операций? Нет времени учить JScript или VBScript? Теперь можно писать скрипты автоматизации прямо на языке 1С. Проект 1Script представляет собой альтернативную исполняющую среду этого языка.
В данной статье рассматриваются основные возможности 1Script и варианты его практического применения.

Сообщение от автора от 06.07.15

Данная статья написана тогда, когда проект только-только вышел в свет и умел очень мало. На данный момент информация в данной статье заметно устарела. Для более прикладного знакомства с 1Script рекомендую прочитать вот эту статью, а также посетить wiki проекта.

Все что написано ниже не удалено с инфостарта, поскольку является, как-никак, частью истории проекта.

 

Введение

Не так давно я опубликовал проект 1Script (OneScript), представляющий собой компилятор языка 1С и виртуальную машину, исполняющую программы на этом языке. В этой статье хотелось бы рассказать о том, что полезного можно сделать с помощью 1Script.

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

Назначение и состав

Основным назначением 1Script является использование его, как самостоятельного программного продукта, предназначенного для выполнения скриптов на языке 1С в целях автоматизации администрирования. Ближайшим аналогом является инфраструктура WSH.

1Script может использовать COM-объекты WSH для взаимодействия с операционной системой, тем самым получая весьма широкие возможности.

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

В состав программы входят 2 основных компонента:

  1. GUI-приложение TestApp, которое позволяет экспериментировать с движком, запускать скрипты и смотреть на результат.
  2. Консольное приложение oscript, которое является «боевым» модулем, выполняющим основное назначение программы – исполнение скриптов в консоли

После установки оба этих компонента можно запускать независимо друг от друга.

Краткое описание возможностей

Основное назначение программы – возможность исполнения кода на языке 1С, но без самой 1С. Наиболее вероятное применение, как уже упоминалось – это скрипты автоматизации, аналогичные тем, что пишутся на JScript и VBScript с применением инфраструктуры WSH.

1Script позволяет использовать родные для windows COM-объекты, которые применяются в WSH. Например, если нам нужно архивировать все базы из списка баз 1С, то мы можем написать следующий скрипт:

Shell = Новый COMОбъект("WScript.Shell");
ПапкаПараметров = Shell.ExpandEnvironmentStrings( "%APPDATA%" );
ФайлСпискаБаз = ПапкаПараметров + "\1C\1CEStart\ibases.v8i";

МассивСтрокСоединения = Новый Массив;
ЧтениеФайла = Новый ЧтениеТекста(ФайлСпискаБаз);

СтрокаФайла = ЧтениеФайла.ПрочитатьСтроку();
Пока
СтрокаФайла <> Неопределено Цикл

    Если
Лев(СтрокаФайла, 8) = "Connect=" Тогда
       
МассивСтрокСоединения.Добавить(Сред(СтрокаФайла,9));
    КонецЕсли;

   
СтрокаФайла = ЧтениеФайла.ПрочитатьСтроку();

КонецЦикла;


ЧтениеФайла.Закрыть();

КоманднаяСтрокаАрхивации = "1Cv8.exe DESIGNER %1 /DumpIB";
Для Каждого
СтрокаСоединения Из МассивСтрокСоединения Цикл
   
РабочаяСтрокаЗапуска = СтрЗаменить(КоманднаяСтрокаАрхивации, "%1", СтрокаСоединения);
   
Shell.Run(РабочаяСтрокаЗапуска);
КонецЦикла;

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

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

oscript.exe [файл скрипта]

Будет прочитан список баз, из него получены строки соединения с базами и для каждой из баз выполнена процедура архивации. Обратите внимание, код на языке 1С исполняется 1Script без участия самой платформы 1С.

Возможности языка

Доступны все возможности встроенного языка, перечисленные в ветке "Описание встроенного языка" стандартного синтакс-помощника.

Исключения из этого правила перечислены в разделе "Отличия от стандартной библиотеки".

Возможно создание и использование следующих универсальных коллекций:

  • Массив
  • Структура
  • Соответствие

Доступны вспомогательные классы:

  • Консоль
  • ЧтениеТекста

Доступны глобальные методы и свойства:

  • метод Сообщить(сообщение)
  • метод ВвестиСтроку(результат, макс_длина = 0)
  • метод ЗавершитьРаботу(код_возврата)
  • метод Приостановить(миллисекунды)
  • метод ОсвободитьОбъект(COM-объект)
  • свойство АргументыКоманднойСтроки
  • метод ТекущийСценарий()
  • метод ПодключитьСценарий()

Подробнее о назначении этих методов и свойств можно прочитать в wiki проекта. Состав классов будет пополняться.

Отличия от стандартной библиотеки 1С

  • Из математических функций реализованы только Цел, Окр, Pow и Sqrt
  • Не реализованы строковые функции СтрЧислоСтрок, СтрПолучитьСтроку, СтрЧислоВхождений, ТРег
  • Не реализована функция форматирования строк Формат
  • Не реализована работа с типами (функции Тип и ТипЗнч)
  • Не реализовано динамическое выполнение кода функциями Вычислить и Выполнить
  • Не реализованы функции ДобавитьОбработчик, УдалитьОбработчик для обработки событий COM-объектов.
  • Не реализованы системные перечисления
  • Не поддерживается оператор Перейти и метки

Некоторые отличия планируется реализовать позже.

Построение самостоятельного exe-модуля

1Script позволяет упаковать ваш скрипт в отдельный exe-модуль, который можно удобно распространять, не требуя установки самого 1Script на машину пользователя.

Для создания exe нужно запустить oscript.exe с ключом –make и указать имя входного скрипта и выходного exe.

Пример:

oscript.exe –make C:\myscript.1scr D:\program.exe

Файл C:\myscript.1scr будет упакован в самостоятельный exe-шник и сохранен, как  D:\program.exe.

Небольшая демонстрация

В качестве примера предлагаю вашему вниманию классическую игру «Змейка», написанную полностью на языке 1С. (исходник игры и сам exe можно скачать в прилагаемых файлах)

Системные требования

Весь проект реализован  на базе .NET Framework 4.0 и требует его наличия на клиентской машине.

Стабильность текущей версии

На данный момент проект находится в активной разработке, поэтому, весьма вероятны ошибки и неточности в работе. Обо всех обнаруженных недостатках сообщайте любым удобным способом – в комментариях здесь, личным сообщением, в разделе Issues на странице проекта в bitbucket.

Обновление от 22.10.2014:

Дистрибутив обновлен до версии 1.0.7. Дальнейшее развитие проекта.

Обновлена и актуализирована вики проекта по адресу https://bitbucket.org/EvilBeaver/1script/wiki/Home

По традиции, исходники проекта открыты, сотрудничество приветствуется.

Спасибо за внимание.

Скачать файлы

Наименование Файл Версия Размер
Дистрибутив
.exe 7,47Mb
29.03.16
56
.exe 1.0.7 7,47Mb 56 Скачать
Змейка (исходник на 1С)
.1scr 9,90Kb
29.03.16
32
.1scr 1.0 9,90Kb 32 Скачать
Змейка.exe
.exe 190,30Kb
29.03.16
15
.exe 1.0 190,30Kb 15 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. qwinter 619 16.06.14 00:03 Сейчас в теме
Неужели написать это было проще, чем "знакомому" выучить язык?
Ivon; WKBAPKA; adhocprog; BigB; +4 Ответить
88. fixin 3969 11.10.17 11:55 Сейчас в теме
(1) кстати, согласен, VBS практически 1:1 как 1С, но может быть тру-1сникам и будет полезно.
Но надо помнить о тех, кто придет после нас - все же на VBS лучше понимать код. Хотя хз, все же это 1с, может для 1сников и понятно будет. С другой стороны, кодят скрипты обычно админы, им 1с никаким боком не упал.

Так что имхо - ненужный бантик. Но плюсую.
2. ivanov660 2090 16.06.14 10:23 Сейчас в теме
Довольно хорошая идея, теперь "можно составить конкуренцию" компании 1С :-) Движок (плагин к браузеру) + браузер.
dreadlord; +1 Ответить
3. Evil Beaver 6705 16.06.14 10:53 Сейчас в теме
(2) ivanov660, ну в чем же дело? Вам и карты в руки - берите исходники и вперед! Почему-то всем очень хочется "составить конкуренцию". Ну составляйте, в чем беда? Например мне это не надо. 1Script - это эксперимент, интересный в первую очередь мне лично. Ни про какую конкуренцию я не говорил.
dreadlord; MherArsh; sikuda; amon_ra; +4 Ответить
54. alexqc 147 03.07.14 11:20 Сейчас в теме
(3) А где исходники взять :)?
55. alexqc 147 03.07.14 11:25 Сейчас в теме
4. asved.ru 35 16.06.14 12:13 Сейчас в теме
5. baton_pk 401 16.06.14 12:55 Сейчас в теме
плюс собрату по (не)счастью :)
пишу такое же творение, только
0) Код закрыт
1) без привязки к .NET
2) работает и под виндой, и под никсами (пробовал Ubuntu 12.04, 13.04, 14.04)
3) возможность разработки и подключения модулей. Среди которых уже есть Xml, Yaml (JSON), Postgres в зачатке, COM-объекты (для винды), Gtk+ в зачатке.

В плане редактора я использую допиленный Geany на основе допиленной Scintilla

Для чего всё это? Да собственно для того же - у нас всяческие скрипты для обмена файликами крутятся на этом движке. Запилю сокеты и HTTP-сервер - будет ещё и система удалённого управления скриптами. А "конкуренцию 1С" - это чур, ребята...

А, ещё забыл уточнить: у меня работают директивы препроцессора #Если клиент/сервер/скрипт/...
Это позволяет при использовании одного и того же кода и в 1С, и в скрипте разделять логику исполнения.
vikad; bulpi; pstrig; ixilimuse; adhocprog; JohnyDeath; Evil Beaver; MarSeN; +8 Ответить
6. baton_pk 401 16.06.14 13:16 Сейчас в теме
Ну ребяяяяят...

А = Новый Массив(5);
Сообщить(А.Получить(1));


ScriptEngine.Machine.RuntimeException: Object method получить is not found
   в ScriptEngine.Machine.Contexts.ContextMethodsMapper`1.FindMethod(String name)
   в ScriptEngine.Machine.Contexts.ContextBase`1.FindMethod(String name)
   в ScriptEngine.Machine.MachineInstance.PrepareContextCallArguments(Int32 arg, IRuntimeContextInstance& context, Int32& methodId, IValue[]& argValues)
   в ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody()
   в ScriptEngine.ScriptingEngine.<>c__DisplayClass1.<NewObject>b__0()
   в ScriptEngine.Machine.MachineInstance.StateConsistentOperation(Action action)
   в ScriptEngine.ScriptingEngine.NewObject(LoadedModuleHandle module)
   в ScriptEngine.HostedScript.Process.Start()
Error detected. Exit code = 1
Script completed: 16.06.2014 13:14:51
Duration: 00:00:00.0002799
Показать
8. Evil Beaver 6705 16.06.14 13:19 Сейчас в теме
(6) baton_pk, да, метод "Получить" массива я не делал. Поленился. Зачем, если есть доступ по индексу?
9. baton_pk 401 16.06.14 13:25 Сейчас в теме
(8) для совместимости кода :).
10. Evil Beaver 6705 16.06.14 13:43 Сейчас в теме
(9) baton_pk, Убедили, добавлю )
7. Evil Beaver 6705 16.06.14 13:17 Сейчас в теме
(5) baton_pk, Если GTK, то pure C, я правильно понимаю? А не затруднит в личку рассказать подробнее, для чего применяется и зачем именно свой движок, а не кросс-платформенный питон тот же?
11. baton_pk 401 16.06.14 14:09 Сейчас в теме
Советую расширить набор тестов :)
Разность = '20010102' - '20010101';
Сообщить(Разность);


ScriptEngine.Machine.RuntimeException: Conversion to Number is not supported
   в ScriptEngine.Machine.SimpleConstantValue.AsNumber()
   в ScriptEngine.Machine.MachineInstance.Sub(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody()
   в ScriptEngine.ScriptingEngine.<>c__DisplayClass1.<NewObject>b__0()
   в ScriptEngine.Machine.MachineInstance.StateConsistentOperation(Action action)
   в ScriptEngine.ScriptingEngine.NewObject(LoadedModuleHandle module)
   в ScriptEngine.HostedScript.Process.Start()
Error detected. Exit code = 1
Script completed: 16.06.2014 14:07:30
Duration: 00:00:00.0002033
Показать
12. Evil Beaver 6705 16.06.14 14:13 Сейчас в теме
(11) baton_pk, О, как хорошо, что я вас встретил! ) Собственно, одному тестирование и не осилить. Надеюсь на сообщество. Оказывается, разность дат не сделал. Только Дата минус Число. Спасибо.
13. baton_pk 401 16.06.14 15:00 Сейчас в теме
Ещё косяк. Конструкция ?(,,) - это именно конструкция языка, а не функция с параметрами.

Функция Ага()
	Возврат "Ага";
КонецФункции

Функция Ошибка()
	ВызватьИсключение "Код не должен быть вызван!";
КонецФункции

Сообщить(?(Истина, Ага(), Ошибка()));
Показать

ScriptEngine.Machine.RuntimeException: Код не должен быть вызван!
   в ScriptEngine.Machine.MachineInstance.RaiseException(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody()
   в ScriptEngine.ScriptingEngine.<>c__DisplayClass1.<NewObject>b__0()
   в ScriptEngine.Machine.MachineInstance.StateConsistentOperation(Action action)
   в ScriptEngine.ScriptingEngine.NewObject(LoadedModuleHandle module)
   в ScriptEngine.HostedScript.Process.Start()
Error detected. Exit code = 1
Script completed: 16.06.2014 14:58:51
Duration: 00:00:00.0024617
Показать
15. Evil Beaver 6705 16.06.14 15:23 Сейчас в теме
(13)(14) baton_pk, про эти проблемы я знаю. По числам: сделано везде вещественное просто для упрощения и ускорения разработки. double инкапсулирован и наружу нигде не вылезает. Просто делать хорошее "Число", на мантиссах/порядках - не тот уровень проекта. Требует и знаний и усилий. Ощущаю у себя их нехватку в этом вопросе.
Про "знак вопроса" - тоже знаю, сделал осознанно, опять же с целью ускорения. Как функцию его удобнее было скомпилировать.
Проекту меньше месяца и пишется он, в основном, ночами. Поэтому, узкие моменты типа "знака вопроса" и недостающих малопопулярных методов у массива сознательно опущены. Есть много более насущных задач, которые нужно решить в первую очередь.
16. baton_pk 401 16.06.14 15:27 Сейчас в теме
(15) ну, в C# есть BigDecimal. А к своему я подумываю GMP прикрутить.

PS.
Вру, встроенного нету. Есть вот
17. Evil Beaver 6705 16.06.14 15:29 Сейчас в теме
(16) baton_pk, я исходил из того, что задачи, требующие длинного матана и больших точностей довольно редки в сфере предполагаемой применимости.
Кстати, как у вас с такими "Числами"?
18. baton_pk 401 16.06.14 15:33 Сейчас в теме
(17)
Кстати, как у вас с такими "Числами"?

Пока никак. Думаю прикрутить GMP и то, опционально. Длинные числа становятся нужны на стыке с базами данных: будет какое-нибудь поле Сумма типа Число(29, 2) и кури сиди...

А так, согласен, в 99% случаев long и double - то, что надо.
Однако у меня такие числа сейчас рубятся на этапе компиляции и не дают соблазна сработать правильно.
14. baton_pk 401 16.06.14 15:12 Сейчас в теме
Я смотрю, для чисел везде используется вещественный тип? Опасное дело.

БешеноеЧисло  = 123456789123456789123456789123456789;
БешеноеЧисло2 = БешеноеЧисло + 1;
Сообщить(БешеноеЧисло - БешеноеЧисло2);


Script started: 16.06.2014 15:11:10
0

Script completed: 16.06.2014 15:11:10
Duration: 00:00:00.0000686
19. CheBurator 3418 17.06.14 02:17 Сейчас в теме
По-моему, еще Вася Душелов писал что-то аналогичное
baton_pk; JohnyDeath; +2 Ответить
20. Evil Beaver 6705 17.06.14 09:32 Сейчас в теме
(19) CheBurator, идея витает в воздухе, так что, вероятно, и не только он.
21. JohnyDeath 297 17.06.14 09:35 Сейчас в теме
(19) CheBurator, да, мне тоже первым вспомнился он со своей последней идеей по встраиванию кода 1С в консоль.
23. Evil Beaver 6705 17.06.14 10:07 Сейчас в теме
22. EmpireSer 17.06.14 09:55 Сейчас в теме
Интересно, а почему ни кто не пытается саму 1С запустить "не стандартно"? Так, например, делает утилита "chdbfl.exe".
Ведь тогда люди смогли бы написать внешнюю обработку, которая всё необходимое будет делать и при этом не использовать лицензии.
24. baton_pk 401 17.06.14 11:16 Сейчас в теме
(22) EmpireSer,
1) сложно
2) бессмысленно
3) сложно
27. AlexO 128 18.06.14 01:21 Сейчас в теме
(22) EmpireSer,
саму 1С запустить "не стандартно"?

А с чего CHDBFL вдруг стала запускать нестандартно? Она просто раскладывает CD на таблицы и проверяет их отдельно в темповом файле. И абсолютно неприменима к SQL, т.к. структура таблиц совершенно иная.
(0)ничего не понял, но причем тут 1С, если, как обычно, "Shell = Новый COMОбъект("WScript.Shell");"??
WScript и запускает эти ваши консольные и прочие приложения, а кто его вызывает - и ему, и мне неинтересно.
А уж про "конкурент 1С" (2) писать на эту тему... это человек вообще не вникал ни капли, поняв еще меньше моего ))
28. Evil Beaver 6705 18.06.14 09:30 Сейчас в теме
(27) AlexO, дорогой, поскольку, вы известный трололо, то и отвечать вам не вижу смысла ;)
30. baton_pk 401 18.06.14 09:56 Сейчас в теме
(27)(28)
А тут я согласен. Если уж это 1С, а не Russian VBScript, то должны быть всем нам привычные команды: ПереместитьФайлы, УдалитьФайл и подобные.
Иначе какой смысл во всех этих коллекциях, если с WSH работа всё равно идёт по большому счёту с простыми типами. Встроенный функционал по-любому надо расширять.
25. AlexanderKai 17.06.14 16:18 Сейчас в теме
Программа компилируется или внутри программы виртуальная машина?
26. Evil Beaver 6705 17.06.14 17:38 Сейчас в теме
(25) AlexanderKai, если я правильно понял, вы спрашиваете про компиляцию в машинный код? Нет, exe - это исполняющий модуль (виртуальная машина), в который вложен байткод скрипта. Хотя, в конечном итоге CLR все равно компилирует все это в машинный код, так что ответ "и да и нет" )
29. powerpc 219 18.06.14 09:55 Сейчас в теме
Извините великодушно, НО:
Как можно писать в 1С конструкции типа:
Shell = Новый COMОбъект("WScript.Shell");
ПапкаПараметров = Shell.ExpandEnvironmentStrings( "%APPDATA%" );
если "Нет времени учить JScript или VBScript" ?????
То же самое можно написать в текстовом файле и скомпилировать существующими утилитами в exe.
baton_pk; +1 Ответить
31. Evil Beaver 6705 18.06.14 11:04 Сейчас в теме
(29)(30) baton_pk, никто не спорит, расширять надо. Уже есть ЧтениеФайлов и Консоль (специально ради "змейки"). Стандартные 1С-овские вещи работы с файлами обязательно будут. На данный момент решена задача минимум - сама возможность писать скрипты. Для выхода во "внешний мир" уже сейчас можно применять COM.

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

Уже сейчас я доделываю расширение к Снегопату. Надеюсь, что можно будет писать плагины к снегопату не на JS, а на близком и родном 1С. Уже сейчас оно работает, хоть и пока очень сыро.

И это уж вы, powerpc, простите великодушно, но я нигде не сказал, что это решение промышленного уровня. Но оно имеет потенциал стать таковым, это уже немало.
Приведенный пример с архивацией баз - рабочий, т.е. уже может применяться. Прикладные классы разрабатывать и подключать к системе не сложно. Присоединяйтесь!
32. Ivon 640 18.06.14 12:21 Сейчас в теме
Честно-говоря, я вообще не вижу перспективы данной разработки. Кроме 1С еще программлю на C# и когда-то программил на Perl и этих языков мне хватало для того, чтобы сделать все необходимые операции. Имхо, изобретение велосипеда - не лучший вариант потратить время.
34. baton_pk 401 18.06.14 13:16 Сейчас в теме
(32) Ivon, ну, теперь будет хватать одного 1С, без перлов и шарпов :):)
33. zarius 168 18.06.14 12:36 Сейчас в теме
Работа, конечно, проделана громаднейшая - автору респект, но именно "консольные exe-приложения" в данном проекте, имхо, представляют чисто академический интерес.
Не проще ли воспользоваться тем же AutoIt? Разобраться можно за 5 минут, а возможностей там...
35. v77 147 18.06.14 13:30 Сейчас в теме
:) Моя тема. Тоже писал и интерпретатор языка 1С и компилятор из 1с в Паскаль. Не помню где это всё лежит.
Сейчас морочусь на тему быстрого интерпретатора. Пишу такой типа ассемблер для вариантных переменных, чтобы можно было на его основе ваять всякие интерпретаторы. Пока в зачатке, но скорость работы неплохая. Например такой код выполняется на 1с за 8 секунд.

П = 500.48;
Для а = 1 по 10000000 цикл
П = П + 500.48;
КонецЦикла;

а на моём вариантном асме за 80 миллисекунд

InitInt $1
loop:
Ldd П, 500.48
Jmp ($1 >= 10000000) end_loop
Add П,500.48
IncInt $1
Jmp loop
end_loop:

Автору успехов! Плюсую!

36. baton_pk 401 18.06.14 13:36 Сейчас в теме
(35) v77, о, ещё один в нашем клубе.

компилятор из 1с в Паскаль

Это транслятором зовётся, а не компилятором :)

Не помню где это всё лежит.

Для того и придуманы гитхаб с битбакетом :)

Пока в зачатке, но скорость работы неплохая

Вы сборщик мусора прикрутите и обработку исключений - там и посмотрим на быстродействие :) (и поиск HASP-ключа ещё :-D)
37. v77 147 18.06.14 13:48 Сейчас в теме
(36) baton_pk,
"Это транслятором зовётся, а не компилятором :)"
ой, да какая разница.

Сборщик мусора это такая фигня, которая сжирает всю память, а потом отдает по маленьку и жутко всё тормозит? Не, нафиг он нужен. И без него хорошо. А обработка исключений на скорость слабо влияет.
38. baton_pk 401 18.06.14 13:55 Сейчас в теме
(37) v77,
Сборщик мусора это такая фигня, которая сжирает всю память, а потом отдает по маленьку и жутко всё тормозит? Не, нафиг он нужен.

Не совсем. В общем случае это штуковина, которая определяет, что память более не используется, и освобождает её.
Штука нужная, если предполагается, что программа постоянно висит в памяти. Для программ на один проход и в правду можно его не использовать в большинстве случаев.
39. v77 147 18.06.14 14:07 Сейчас в теме
(38) baton_pk,
"Штука нужная" ну иногда и нужная, а в основном время она жрет. я бы просто сделал функцию УдалитьПотом(Массив), чтобы освобождать память от больших объектов не сразу, а потом, когда программа ничего не делает. А всякую мелочь убивать сразу в конце процедуры и не париться. Т.е. такой ручной сборщик мусора.
40. baton_pk 401 18.06.14 14:14 Сейчас в теме
(39) v77,
ну так это и есть сборщик мусора. Сборка мусора - тема настолько широкая и толстая, что нельзя вот просто так взять и сказать "это сейчас удалить, это потом".

Представим, что у нас 2 гига свободной памяти:
А = Новый МассивНаПолтораГига;
РаботатьСМассивом(А);
А = Неопределено; // <- тут его по-любому надо грохнуть 
Б = Новый МассивНаПолтораГига; // чтобы хватило памяти под этот

к тому же это мы рассматриваем только память. Есть ещё другие ресурсы: сеть, файлы.

Ну а про ручной сборщик: добро пожаловать в БДСМ клуб! Делать языки с управляемым кодом, чтобы ещё и мусор руками собирать :)
41. v77 147 18.06.14 14:26 Сейчас в теме
(40) baton_pk,

А = Неопределено; //


и 1с это сразу освободит или отложит? Я так думаю, что она отложит. Уж больно часто в 1с памяти не хватает.
42. baton_pk 401 18.06.14 14:33 Сейчас в теме
(41) v77,
пол-сообщения у меня съелось тут почему-то.


и 1с это сразу освободит или отложит? Я так думаю, что она отложит.

Проверил - освободит.

И дело тут не в том, как 1С это сделает, а в том, что сделает оно это само, без ручных УдалитьТоДаСё.
43. v77 147 18.06.14 14:37 Сейчас в теме
(42) baton_pk,
Проверил - освободит.

это хорошо. надо запомнить.
44. Evil Beaver 6705 18.06.14 18:08 Сейчас в теме
(43) v77, надо не запомнить, а почитать матчасть. 1С использует подсчет ссылок. Присвоение переменной другого значения очищает память, если нет других ссылок на данный объект. Это значит, что проблема циклических ссылок существует и ее надо учитывать.
И, как заметил baton_pk она делает это сама, без ручных очищений. Это очень хорошо, т.к. внезапный бросок исключения может увести исполнение кода в другое место и не дойдет до вашего "УдалитьПотом".

М = Новый Массив;
М.Добавить(1);
Сообщить(М[4]); // нечаянно вышли за границу  массива
УдалитьПотом(М); // сюда не дойдет.
45. v77 147 18.06.14 18:43 Сейчас в теме
(44) я не против того, чтобы память освобождалась автоматически. Я за то, чтобы память освобождалась автоматически сразу, при выходе из процедуры, а не когда сборщик мусора захочет. А то 1с жрет память гигабайтами непонятно на что и меня это не устраивает.
47. baton_pk 401 19.06.14 08:46 Сейчас в теме
(45) v77,

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

Ненене. Пусть сборщик мусора сам решает, когда чего чистить. Это его работа.
Если память утекла, это значит не то, что сборщик её не освободил вовремя, а то, что он в принципе не может её освободить. А тут уже не имеет значения, когда он пытается это сделать. Зависшие ссылки, ошибки платформы - всякое может быть.
48. Evil Beaver 6705 19.06.14 09:27 Сейчас в теме
(45) v77, ну во-первых, идея сборщика мусора не рождается на пустом месте. Она появляется, когда существующие решения не устраивают.
Подсчет ссылок имеет ряд недостатков, в том числе, упомянутые циклические ссылки.
Во-вторых, какая разница сколько памяти съел сервер 1С? И чем вы это измеряете, диспетчером задач? Есть такой термин: Task Manager Syndrome, загуглите, это интересно. Если система не испытывает давления по памяти, пусть программы съедают столько, сколько им нужно, вам жалко что-ли?
Ну и, в-третьих, если вас не устраивает, как работает сервер 1С, то вот: все в ваших руках.
46. artbear 1180 18.06.14 19:14 Сейчас в теме
49. akomar 437 20.06.14 14:41 Сейчас в теме
Подписался на тему, (заинтересовало обсуждение о сборщиках мусора) :)
50. baton_pk 401 25.06.14 20:26 Сейчас в теме
Запилил поддержку OneScript в Geany.
Чтобы скрипт запускался из редактора, пропишите путь к OneScript в %PATH% или непосредственно в пути в настройках программы.
Тестил под WinXP и под Win7.
Прикрепленные файлы:
geany-1.25-x64_setup.exe
geany-1.25_setup.exe
51. Evil Beaver 6705 28.06.14 19:59 Сейчас в теме
(50) baton_pk, прикольно, а если в двух словах, то как выглядит выполнение кода? Ну в geany я набью код, а дальше что там?
52. baton_pk 401 30.06.14 00:13 Сейчас в теме
(51) просто нажать кнопку "Выполнить" и он тупо выполнит команду "oscript.exe <мойфайл.1src>".
На данный момент это пока всё :) - подсветка да встроенная команда выполнения. Потом лексер прикручу да пошаговое выполнение.
53. p1l1gr1m 01.07.14 23:28 Сейчас в теме
Автору респект за труды!
56. alexqc 147 03.07.14 12:16 Сейчас в теме
	аа= ложь или "111";
	Сообщить(аа);

	аа= Истина И "111";
	Сообщить(аа);



выведет "111", 1С же в этом случае ругается. В принципе вариант имеет право на существование, но т.к. есть ограничения по конверсии в тип булево, стоит все же сделать как в 1С - правильнее будет локализовывать ошибки.

	
аа= Ложь или "111";
бб= Не аа; //Ошибка вылезет тут, хотя реально строкой выше


аа= "111" и Истина; //ошибка
аа= Истина и "111"; //ошибки нет, хотя формально от предыдущей строки не отличается. При чем результат выражения таков, что иначе как бредом и не назовешь.

Показать
58. Evil Beaver 6705 03.07.14 14:24 Сейчас в теме
(56)(57) alexqc, если не сложно, зарегистрируй, пожалуйста, ошибки в Issues на bitbucket?
57. alexqc 147 03.07.14 12:28 Сейчас в теме
 
А=5;
Для ш=1 по А Цикл
 Сообщить(ш);
 А=4;
КонецЦикла;


Пройдет цикл 1..4, в то время как в 1С - 1..5. Это тянется еще с 7ки (а может и раньше) - граница цикла вычисляется один раз при старте цикла, и потом не меняется.
59. AlexanderKai 04.07.14 10:31 Сейчас в теме
(57) alexqc,
Кстати очень неудобная фича. Иногда не хватает гибкости оператора for как в Си.
60. BorovikSV 1361 06.07.14 14:42 Сейчас в теме
(59) AlexanderKai, для любых фич есть WHILE.
62. alexqc 147 09.07.14 12:38 Сейчас в теме
(59) AlexanderKai, как сказать, как сказать... Иногда удобнее именно так (например, когда в цикле до количества объектов в коллекции добавляются объекты в эту самую коллекцию), кроме того, хоть чуть-чуть но это оптимальнее (нет необходимости вычислять границу N раз). Вот чего реально в 1С-for не хватает - это цикла "вниз".
61. Pawlick 10 07.07.14 15:55 Сейчас в теме
Очень, очень интересная вещь. Уважение автору.
63. baton_pk 401 15.07.14 08:01 Сейчас в теме
Вчера получилось собрать под Ubuntu 14.04: собралось всё, кроме TestApp и расширения для снегопата.
64. Evil Beaver 6705 15.07.14 09:22 Сейчас в теме
(63) baton_pk, Ну так понятно: TestApp - это WPF, его под Mono нету. А расширение Снегопата - вообще сплошной COM.
67. baton_pk 401 15.07.14 10:15 Сейчас в теме
(64)
не, снегопат не собрался, потому что у меня Managed C++ под Mono нет. То есть, я в принципе не пытался его собрать.
68. Evil Beaver 6705 15.07.14 10:40 Сейчас в теме
(67) baton_pk, ну я в этом не силен. В Mono пробовал только Hello World-ы писать :)
65. v77 147 15.07.14 09:41 Сейчас в теме
Чота вычисляет как-то неправильно

раз = 100 + 100 + 20 * 100 / 2 - 18 + 45698 * 45789 / 16 - 500 - 800 * 19;
сообщить(раз);

выдает 130763475.25

в Delphi, 1с и моей поделке выдает 130764589.625
66. Evil Beaver 6705 15.07.14 10:03 Сейчас в теме
69. v77 147 15.07.14 11:12 Сейчас в теме
П = 500.48;

Для а = 1 по 10000000 цикл
П = П + 500.48;
КонецЦикла;
Сообщить(П);

выдаст в 1с
5004800500.48

вместо
5004800499.98169

это вопрос религии, но если делать совместимо с 1С, то надо использовать какой нибудь Currency вместо Double
70. Evil Beaver 6705 15.07.14 13:57 Сейчас в теме
(69) v77, как раз "делать совместимо" задачи нет. Изначально я ставил задачу себе - рабочая виртуальная машина с интерпретацией языка 1С, при этом, реализованная с минимальными затратами. Насколько мне хватает понимания - в 1С используется длинная арифметика с представлением чисел в виде порядка/мантиссы. Я ничего такого не планировал, а "урезал" на проектном уровне до простого double. Числа в OneScript - это double среды CLR. Я не планировал делать его таким, как в 1С, ибо не имею достаточно знаний в этом вопросе.
71. BorovikSV 1361 17.07.14 21:46 Сейчас в теме
(70) Я реализовал длинную арифметику самостоятельно.
Сначала нашел рабочие исходники - оказались слишком неуклюжими. Производительность крайне страдала.
Задал себе вопрос: Че я не программист что ли?
Убил день на основные операции + неделю на операцию деления (раз 5 переписывал алгоритмы деления, т.к. не проходили тесты, то одни то другие).
Попробуй - интересная задача.
P.S. Мой язык Delphi
72. Evil Beaver 6705 17.07.14 23:26 Сейчас в теме
(71) BorovikSV, вопрос-то в другом. Оно вам реально надо? Вот что прям, действительно, вот надо считать большие числа консольными скриптами на языке 1С? А под какие задачи?
77. BorovikSV 1361 31.07.14 13:43 Сейчас в теме
(72) надо или не надо - тут не абсолютно причем. Тут все просто: либо ваши числовые значения урезанные, либо нет.
Можно получить сюрпризы от double в самый неподходящий момент. И вовсе не обязательно при этом считать песчинки в мировом океане.
78. Evil Beaver 6705 31.07.14 18:55 Сейчас в теме
(77) BorovikSV, Видимо, я знаю меньше, чем вы. Какие наиболее распространенные сюрпризы можно получить от double, которые нельзя получить от неограниченного числа? Кроме переполнения других сюрпризов не знаю.
79. v77 147 11.08.14 09:02 Сейчас в теме
(78) BorovikSV наверное намекает на типа такого:

Результат = 1;

Для а = 1 по 10 цикл
Результат = Результат - 0.1;
КонецЦикла;

Сообщить(Результат);

В 1С Результат будет равно 0
80. Evil Beaver 6705 11.08.14 10:00 Сейчас в теме
(79) v77, Спасибо. Но это не отменяет моего непонимания этой темы. К сожалению) Буду совершенствоваться.

UPD. Прочитал про double и ужаснулся. Оказывается, ему в принципе нельзя доверять, не округлив до конкретной точности.
Это в корне меняет все дело. Думаю, что надо будет заменить на BigDecimal, который выше предложил baton_pk.
81. BorovikSV 1361 15.08.14 16:55 Сейчас в теме
(80) Приведите ссылки про Double, чтобы другие тоже ужаснулись, и сделали выводы :)
82. Evil Beaver 6705 17.08.14 15:20 Сейчас в теме
(81) BorovikSV,

http://social.msdn.microsoft.com/Forums/vstudio/en-US/921a8ffc-9829-4145-bdc9-a96c1ec174a5/decimal-vs-double-difference?forum=csharpgeneral

Там ближе к середине переписке будет:

The fundamental difference is that the double is a base 2 fraction, whereas a decimal is a base 10 fraction.

double stores the number 0.5 as 0.1, 1 as 1.0, 1.25 as 1.01, 1.875 as 1.111, etc.

decimal stores 0.1 as 0.1, 0.2 as 0.2, etc.

The double cannot store something like 0.3 as a plain binary fraction, so i think it uses an approximation


И еще вот:
Doubles use Floating Point storage in base 2, where as the Decimal stores the information in base 10.

So, for example, 2.25 as a decimal would be stored as 225 * 10 ^ -2 (underlined numbers are actually stored) or some variation thereof.

The double would store 1001 * 2 ^ -10 (underlined numbers are actually stored and they are in base 2).

You can think of integer binary numbers as each digit as having a power of two, i.e.

128 64 32 16 8 4 2 1

for a floating point number, you just need to extend that to negative powers of two as well, i.e.

16 8 4 2 1 1/2 1/4 1/8 1/16

or

16 8 4 2 1 .5 .25 .125 .0625

Some of the implications:

In my example I picked a number that is easily represented in binary format, but some numbers that are short/simple base 10 fractions are very long, if not irrational, binary fractions. This means that when using the double the number can sometimes be off from what you would expect
Показать


Короче, говоря, 0.1 в double на самом деле хранится, как 0.10000000000000001, причем этот хвост зависит от конкретного значения. Никогда нельзя сказать точно - чему равно значение double. Можно сказать, что "double имеет значение X с точностью до M знаков"

Как-то так я это понял.
90. oleg-x 14 25.09.18 17:57 Сейчас в теме
(82) Теперь стало понятен один глюк. Делал запрос к другой базе через COMобъект, так вот некоторые суммы переносились как 0.000000000000000001
И было не понятно откуда эта 1 лезет. Теперь ясно :-)
73. JohnyDeath 297 23.07.14 17:09 Сейчас в теме
А скрипт может принимать параметры? Если да, то как их обработать внутри скрипта?
Например вот такое:
oscript.exe prinmessage.os "Привет мир"
74. Evil Beaver 6705 23.07.14 18:03 Сейчас в теме
(73) JohnyDeath, начиная с версии 1.0.5 - может.
Для Каждого Аргумент Из АргументыКоманднойСтроки Цикл
    Сообщить(Аргумент);
КонецЦикла

Если АргументыКоманднойСтроки[0] = "kill-all-humans" Тогда
    УбитьВсехЧеловеков();
КонецЕсли;
JohnyDeath; +1 Ответить
75. JohnyDeath 297 23.07.14 19:17 Сейчас в теме
(74) отлично! Спасибо.
(на битбакете вики что-то практически пустая)
76. Evil Beaver 6705 23.07.14 21:43 Сейчас в теме
(75) JohnyDeath, она переживает второе рождение) Я ее переписываю, пока не закончил.
83. baton_pk 401 19.08.14 08:37 Сейчас в теме
Можно сказать, что "double имеет значение X с точностью до M знаков"

Дааа, старая добрая школьная информатика! Паскаль, олимпиады и вот такое:
const double eps = 0.001;
...
if abs(x - y) < eps then 
   ... x равно y с точностью до eps


За `x = y` можно было и подзатыльника схватить от препода.
84. Evil Beaver 6705 19.08.14 09:38 Сейчас в теме
(83) baton_pk, не у всех были столь эффективные преподы. Нам преподавали С++ весьма посредственно. Практически все что в нем знаю, изучил методом тыка. А в школе у нас был Бейсик на БК0011. Там не было double.
85. adapter 540 01.10.14 13:34 Сейчас в теме
идея классная, реализация вообще супер. Отладки я так понимаю не предусмотрено? Хотя всегда можно отладить код на обычной 1С а потом добавить в консольную версию, как с VBScript.
Многие программеры 1С не сталкиваются с админскими задачами, поэтому наверное и отношение такое пессимистическое.
А вот попробуй например из базы 1С взять инфу о пользователях и обновить платформу только на этих компах, да еще когда и админского доступа у пользователей нет (т.е. штатными средствами 1С никак). Хорошо когда конторка маленькая. А если 1000 компов, кто то в отпуске, командировке. А обновить надо только у 20 например?

Да много чего еще хорошего можно сделать. Фишка в том что интегрируются возможности 1С и данные из баз с админскими задачами. Я сталкивался, знаю что к чему. Пришлось писать свою глобальную вещь на 1С, которая и админские задачи решает. Например регламентные задания на 1С простукивают сеть и компы по сокетам, wmi, ping и собирает из этого актуальную базу компов в 1С, далее по ним удаленное управление, пакетное обновление программного обеспечения ну и кучу всего.
86. Evil Beaver 6705 31.10.14 01:32 Сейчас в теме
(85) adapter, ну вот, а теперь все это можно скопировать в текстовые файлы скриптов и запускать быстро, без оверхеда в виде платформы. Например, автоматически по расписанию или еще как-то. Т.е. теперь это честный "админский" скриптинг, но на понятном языке программирования.
87. baton_pk 401 04.11.14 00:53 Сейчас в теме
(86)
теперь это честный "админский" скриптинг

вот на днях применил не "по-админски" :) Сделал скрипт, который по COM-соединителю запускает базу, берёт текущие продажи и по ADODB выгружает во внешнюю систему в головной офис. Осталось переделать, чтобы вместо COM-соединения с 1С данные брались запросом прямо из SQL и куча головной боли долой!
89. Serg O. 186 14.11.17 23:12 Сейчас в теме
самый простой пример для начала...

Привет мир! ( Hello World! )

делается 1 строкой... и цвет можно легко менять

и БОЛЬШОЕ спасибо за компилятор и window-s консольку...
в ней ещё удобнее стало работать - "стандартная" раскраска
Прикрепленные файлы:
пример.os
91. Evil Beaver 6705 26.09.18 20:51 Сейчас в теме
(89) Эти инструменты устарели, а консолька вообще никогда не предназначалась для написания кода. Она отладочная, для внутренних тестов движка.

Вот статьи по серьезной разработке на 1Script:

https://infostart.ru/public/687869/

https://infostart.ru/public/791568/

https://infostart.ru/public/540284/

https://infostart.ru/public/699642/
Оставьте свое сообщение

См. также

Менеджер буфера обмена с поддержкой 1С - ClipAngel 1.89 Промо

Сервисные утилиты Инструментарий разработчика Абонемент ($m)

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

1 стартмани

17.01.2017    32268    68    tormozit    209    

Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)

Прочие инструменты разработчика Журнал регистрации Абонемент ($m)

Набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux. Готовые приложения и исходный код.

10 стартмани

26.05.2020    1505    0    YPermitin    0    

Конвертация PDF в 1С

Практика программирования Разработка внешних компонент Абонемент ($m)

COM-компонента для работы с PDF.

3 стартмани

31.03.2020    3761    4    SerVer1C    20    

Готовое решение для резервного копирования баз данных Postgresql

Архивирование (backup) Россия Абонемент ($m)

BAT файл для создания резервных копий баз данных средствами Postgresql.

1 стартмани

13.03.2020    2273    0    SerGray    2    

Установка баз данных из Проводника Промо

Сервисные утилиты Администрирование данных 1С Стартеры 1С Абонемент ($m)

Взяли выгрузку базы у клиента? Прислали по почте файл конфигурации? Хотите развернуть базу данных двойным щелчком на файле *.dt или *.cf? Database Manager - то что вам нужно!

2 стартмани

28.10.2013    34395    15    Evil Beaver    30    

Резервное копирование и обслуживание баз данных 1С 8.3 на PostgreSQL

Архивирование (backup) Администрирование СУБД Абонемент ($m)

Резервные копии обязательны для 1С, особенно важно при большем документообороте. В статье я расскажу, как у нас организовано резервное копирование, обслуживание и восстановление из копии базы 1С 8.3, работающей на PostgreSQL

1 стартмани

31.01.2020    2794    14    kolianus    1    

Скрипт (bash) автоматической ежедневной выгрузки баз Postgres на ftp-сервер + Скрипт восстановления

Архивирование (backup) Абонемент ($m)

Скрипт автоматически выгружает базы Postgres и выкладывает на ftp-сервер. Сохраняет базы по дням недели, что позволяет экономить место на диске. Добавлен скрипт для восстановления базы из архива.

1 стартмани

15.01.2020    2943    5    Mallok    9    

Резервное копирование БД 1С средствами батника и выгрузка файловой базы в dt

Архивирование (backup) ИТ-компания Россия Абонемент ($m)

Резервное копирование БД с помощью батника. Код батника совсем небольшой.

1 стартмани

13.01.2020    3483    0    dron-s    16    

Веб-разработка на 1С (1Script) Промо

Практика программирования Абонемент ($m)

Дорогие коллеги, под новый год хочется сделать небольшой сюрприз. Я уже два года обещаю сделать движок веб-разработки для 1С-ников, и вот, наконец, есть что показать. Этим новогодним постом я открываю сериал "Веб-разработка для 1С-ников". Все, кто знаком с проектом OneScript – добро пожаловать! Остальные, тоже не стесняйтесь!

1 стартмани

28.12.2017    27540    22    Evil Beaver    81    

Утилита, предназначенная для просмотра, изменения, добавления, удаления и извлечения ресурсов в исполняемых (.EXE, .DLL и др.) и ресурсных файлах (.RES) ОС Windows. для формирования своего отдельного DLL файла

Сервисные утилиты Абонемент ($m)

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

10 стартмани

05.11.2019    4392    3    vik070777    14    

Распаковка хранилища значений средствами MS SQL Server

Практика программирования Абонемент ($m)

Способ извлечения данных из 1С-ного "ХранилищеЗначений" в MS SQL Server с помощью самописной скалярной функции (без использования платформы 1С).

1 стартмани

23.09.2019    5642    1    SerVer1C    11    

Расширяем возможности MS SQL Server с помощью хранимых процедур CLR

Практика программирования Разработка Абонемент ($m)

Не хватает какого-то функционала на скуле для обработки данных? Тогда он (новый функционал) идет к вам.

1 стартмани

02.09.2019    7021    0    SerVer1C    9    

Автоматизация администрирования и разработки 1С с помощью PowerShell Промо

Администрирование данных 1С Абонемент ($m)

Модуль автоматизации обслуживания 1С

1 стартмани

29.11.2016    21139    19    c1nil    5    

Универсальный скрипт резервного копирования Postgres, архивирует все базы сервера баз данных

Архивирование (backup) Абонемент ($m)

Предлагаю использовать универсальный скрипт резервного копирования Postgres, архивирует все базы сервера баз данных, архивируются все добавленные базы, ведется лог архивирования, контролируется глубина архива. Скрипт тестировался на PostgreSQL 10.5 CentOS Linux release 7.6.1810

1 стартмани

13.08.2019    6022    4    solaru    4    

Передача баз PostgreSQL на удалённый сервер резервных копий, удобное восстановление. Почасовой и ежесуточный вариант. В общем, ещё один скрипт

Архивирование (backup) Абонемент ($m)

Скрипты сохраняют резервную копию в архив и отправляют на удалённый rsync сервер самым оптимальным образом. Вы без проблем сделаете текущую резервную копию или восстановите за любой другой день, не выгоняя пользователей. Есть вариант с восстановлением на любое время. Не нужны ни белые IP адреса клиентов с NAT, ни VPN. Максимально облегчённый вариант, позволит вам массово подстраховать базы клиентов, и стоить вам будет это почти ничего.

1 стартмани

05.08.2019    5824    2    ЕСТЬNULL    0    

Упражнения на Перфоленте. Парсим технологический журнал 1С

Сервисные утилиты Инструментарий разработчика Практика программирования Разработка Абонемент ($m)

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

1 стартмани

31.07.2019    6572    0    Perfolenta    62    

Баттерфляй - метод быстрого расчета нарастающего итога в запросе Промо

Практика программирования Абонемент ($m)

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

1 стартмани

20.09.2013    64155    37    ildarovich    47    

В 1000 раз быстрее

Практика программирования Разработка ИТ-компания Абонемент ($m)

Реализация алгоритма трассировки лучей на новом языке программирования "Перфолента"

1 стартмани

24.07.2019    4978    0    vasvl123    6    

Перфолента, первое знакомство. Новый язык программирования

Практика программирования Инструментарий разработчика Абонемент ($m)

Первое знакомство с новым языком программирования Перфолента. В статье описано назначение языка, причины его появления, основные характеристики и возможные варианты использования.

22.07.2019    18435    21    Perfolenta    165    

Удаленная поддержка в рамках локальной сети (UltraVNC Single Click)

Администрирование данных 1С Абонемент ($m)

Что только не используют для управления удалёнными рабочими в локальной сети... да ничего не используют. Сисадмины (не берем банковских), которых знаю я, втыкают каждому тимвьюер и не заморачиваются. Как известно: хороший сисадмин - ленивый сисадмин. Но и тимвьюер не стоит на месте, недавнее обновление потрепало многих и ограничило время до законных 5 минут... Кого это коснулось, прошу под кат...

5 стартмани

28.06.2019    4348    2    capitan    17    

Удаленная консультация Промо

Сервисные утилиты Абонемент ($m)

Простая и удобная удаленная консультация пользователей. Доступен исходный код.

1 стартмани

26.07.2015    27229    68    ifal    56    

Как настроить автоматическое резервное копирование в MS SQL SERVER EXPRESS

Архивирование (backup) Абонемент ($m)

При использовании MS SQL Server редакции Express, которая является бесплатной, важно понимать, что она имеет ряд ограничений. Кроме того что размер базы данных при использовании MS SQL Server Express не может превышать 10 Гб, в составе этой редакции СУБД отсутствует SQL Server Agent, который позволяет создавать планы обслуживания баз данных для регулярного автоматического выполнения. В результате нет возможности автоматизировать резервное копирование базы данных штатными средствами. Однако выход из ситуации есть. В статье описана инструкция по настройке автоматического резервного копирования для MS SQL Server Express 2008.

1 стартмани

20.06.2019    10867    2    igordynets    5    

Elastic + filebeat + ТЖ 1С

Журнал регистрации Поиск данных Абонемент ($m)

Рассмотрим как можно обрабатывать удобно большой объем информации с простой структурой. Это удобно для анализа логов ТЖ, поскольку типовыми механизмами он невозможен.

1 стартмани

18.06.2019    13566    21    pashamak    32    

БЭКАПЕР на FTP c открытым кодом

Архивирование (backup) Абонемент ($m)

Бесплатная Windows программа для автоматической загрузки (дублирования) архивов баз данных 1С, SQL и прочих файлов на ваш FTP-сервер. Надёжная защита от вирусов шифровальщиков и прочих неприятностей связанных с потерей данных. Программа полностью бесплатная + представляются исходный код, чтобы каждый мог её доработать под себя.

1 стартмани

14.06.2019    5558    5    yukoz    4    

Двойной клик. Пожалуйста Промо

Администрирование данных 1С Абонемент ($m)

Программа, позволяющая двойным щелчком открывать внешние отчеты, обработки и табличные файлы 1С. Открыты они будут в запущенном сеансе 1С Предприятие или конфигураторе. Если окон найдется несколько, будет задан вопрос - в каком открывать. Наподобие открытию документов Office.

1 стартмани

27.03.2015    29475    12    capitan    49    

Мониторинг файловых баз (Zabbix - 1CD)

Сервисные утилиты Абонемент ($m)

Шаблон с autodiscovery Zabbix для мониторинга файловых баз 1С. Мониторится размер БД, количество таблиц, версия БД.

1 стартмани

21.05.2019    3545    1    shibanovan    0    

Загрузка-выгрузка файлов по RDP с докачкой

Администрирование данных 1С Абонемент ($m)

PowerShell скрипт для загрузки/выгрузки больших файлов в RDP-сессии с использованием технологии BITS-transfer.

1 стартмани

16.05.2019    4990    5    -vito-    1    

Настраиваемое мобильное приложение для сканирования штрихкодов

Практика программирования Сканер штрих-кода Мобильная разработка Абонемент ($m)

Обзор приложения для сканирования штрихкодов с возможностью обработки результата сканирования произвольным кодом для совместного использования с Android приложениями через Intent и взаимодействие с 1С конфигурациями через web-сервис.

1 стартмани

14.01.2019    6693    3    inord777    9    

Опять двойка! Промо

Практика программирования Абонемент ($m)

Продолжение тем, связанных с использованием степеней двойки «Порождающий запрос» [http://infostart.ru/public/90367/], «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/]. На этот раз речь пойдет об операциях со строками.

1 стартмани

26.11.2012    30867    1    ildarovich    30    

Мониторинг windows серверов на раз, два с помощью prometheus и grafana

Сервисные утилиты Абонемент ($m)

Вдохновленный статьей про сбор, хранение и визуализации показателей с помощью prometheus и grafana подготовил готовый docker-compose файл для быстрой настройки и запуска мониторинга windows серверов.

1 стартмани

08.01.2019    9736    7    metmetmet    20    

Разработка внешних компонент на ассемблере goAsm

Практика программирования Абонемент ($m)

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

1 стартмани

26.11.2018    10062    7    chessman    40    

Резервное копирование и обслуживание баз Postgre SQL в Windows

Архивирование (backup) Россия Абонемент ($m)

Резервное копирование и обслуживание баз Postgre SQL в Windows скриптами командной строки

1 стартмани

14.11.2018    9311    36    user598613_svp_gamma    3    

1С Tool Kit - программа для работы со списком информационных баз 1С Промо

Администрирование данных 1С Абонемент ($m)

Программа для работы со списком информационных баз 1С

1 стартмани

21.01.2014    32381    50    kostik_love    33    

РусскийФокс и ClickerMann заносят данные в 1С

Сервисные утилиты Практика программирования Россия Абонемент ($m)

Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. . РусскийФокс создает сценарии для Clickermann. Сценарий заполняет справочник в 1С.

1 стартмани

21.07.2018    9601    1    andreosh    20    

РусскийФокс и OpenOffice, а также исследование объектов

Практика программирования Россия Абонемент ($m)

Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. . Взаимодействие с OpenOffice. GitHub https://github.com/UfaScript/RusFox

1 стартмани

12.07.2018    5813    1    andreosh    2    

РусскийФокс. Настройка NotePad++, 1C-подобные функции и операторы и создание объектов

Практика программирования Математика и алгоритмы Россия Абонемент ($m)

Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. Создание объектов и настройка NotePad++. GitHub https://github.com/UfaScript/RusFox

1 стартмани

06.07.2018    9716    1    andreosh    12    

Дополнительная защита терминального сервера под Windows 2008+ или блокируем кулл-хацкеров Промо

Сервисные утилиты Абонемент ($m)

При открытии удаленного рабочего стола в "большой интернет" неизбежно будет появляется большое количество желающих его взломать. Несложный скрипт поможет существенно затруднить работу по перебору паролей.

1 стартмани

03.12.2013    54504    24    Dimasik2007    38    

"Перезаливатор" - приложение для автоматизации "перезаливки" баз

Архивирование (backup) Абонемент ($m)

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

1 стартмани

05.07.2018    13065    15    Tavalik    24    

РусскийФокс — 1С-подобный язык программирования

Практика программирования Математика и алгоритмы Россия Абонемент ($m)

Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. Знакомство.

1 стартмани

03.07.2018    8973    1    andreosh    50    

Switcheroo_1C - Быстрое переключение между окнами 1С

Сервисные утилиты Абонемент ($m)

Утилита позволяющая переключаться между окнами 1С, аналог Alt+Tab только учитываются 1С приложения.

1 стартмани

18.06.2018    6222    1    WizaXxX    0    

Tight VNC 1С Удаленное администрирование Промо

Администрирование данных 1С Абонемент ($m)

Tight VNC 1С Удаленное администрирование

1 стартмани

24.09.2013    31004    17    FoxDW    30    

Длинная арифметика (Bignum arithmetic) c COM-интерфейсом (ActiveX) на библиотеках MPIR

Инструментарий разработчика Практика программирования Россия Абонемент ($m)

Расчеты любой точности в вашем программном продукте, поддерживающем стандарт COM. Размер/точность длинного числа зависит только от вашей оперативной памяти. Проект основан на исходниках библиотеки MPIR, Edition 3.0.0. Полностью написан на С/С++ (COM.DLL).

1 стартмани

12.04.2018    5761    1    bedvit    4    

Настройка Dropbox как службы на терминальном сервере

Администрирование данных 1С Абонемент ($m)

Настройка Dropbox как службы на терминальном сервере на примере сервера Windows 2008 R2 x64. К сожалению, Dropbox не имеет своих инструментов для настройки синхронизации как сервиса Windows. Но иногда очень хочется это сделать, чтобы, например, бэкапы 1С своевременно синхронизировались с облачным хранилищем независимо от того, запущен терминальный сеанс под определенным пользователем или нет. 

1 стартмани

27.03.2018    9557    11    vdv2701    6    

Регистрация компонент 1С и запуск консоли кластера серверов

Сервисные утилиты Россия Абонемент ($m)

Выводит список установленных платформ 1С, позволяет зарегистрировать V8x.COMConnector, V8x.Application, V8x.ServerAbout и запустить консоль кластера серверов 1С для выбранной версии. Показывает текущие версии зарегистрированных компонент 1С (требуется .NET Framework 4.0 и права администратора).

1 стартмани

22.03.2018    10646    33    ROL32    34    

Копиратор-1С: выгрузка и загрузка базы 1С (7.7 - 8.3) одной кнопкой! Промо

Сервисные утилиты Архивирование (backup) Администрирование данных 1С Абонемент ($m)

Требуется сохранить базу 1С на флешку? Послать аудиторам на проверку или просто взять домой поработать? Копиратор-1С: универсальный помощник выгрузки и загрузки файловых баз 1С любых версий! Не требует установки и дополнительных программ. Представляет из себя один файл, включающий мощных архиватор 7-zip. Умеет подключать базу в список 1С при загрузке!

1 стартмани

17.06.2013    50171    31    alexey.karmanov    49    

Скрипт резервного копирования PostgreSQL на Powershell

Архивирование (backup) Абонемент ($m)

Заготовка скрипта. Эти заготовки помогут настроить резервное копирование встроенными методами Windows, с помощью Powershell.

1 стартмани

02.03.2018    9217    9    user811626    0    

Установщик Apache 2.4

Администрирование данных 1С Apache Абонемент ($m)

Установщики для Apache 2.4.29 в формате .exe и .msi для ленивых.

1 стартмани

22.01.2018    13552    29    frkbvfnjh    20    

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

Архивирование (backup) Абонемент ($m)

Вы можете держать копии баз своих клиентов актуальными на своем backup-сервере. Rsync передаст только изменения базы, в связи с чем, передача данных произойдет самым рациональным способом. Обновление копии файловой базы происходит почти мгновенно, даже по низкоскоростным каналам связи. Вы сможете держать копии всех MSSQL баз на своём удалённом сервере с почасовой актуальностью. Как это сделать описываю в деталях. Систему можно использовать вообще для любых файлов. Если копия не обновляется заданное время - приходит оповещение об этом. Предыдущая версия уже несколько лет работает на локальном backup-сервере, который спасал мою честь несколько раз.

2 стартмани

14.11.2017    14268    7    ЕСТЬNULL    8    

Констартер: универсальный запуск базы 1С из проводника через контекстное меню (папки, dt, cf, zip, 7z) Промо

Стартеры 1С Абонемент ($m)

Универсальный стартер любой базы 1С прямо из проводника! Поддерживает запуск из папок, zip и 7z архивов, dt-выгрузок и cf-файлов конфигураций. Не добавляет базу в список даже для 1С 7.7. Единое меню запуска для всех версий 1С. Интеллектуальное появление в контекстном меню. Интерфейс для нормального удаления и настройки пути к платформам.

1 стартмани

04.07.2013    22116    4    alexey.karmanov    6    

Правила и приемы доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления

Практика программирования Инструментарий разработчика Абонемент ($m)

В первую очередь, статья адресована разработчикам 1С, но надеюсь, что интересно будет не только им.

1 стартмани

18.07.2017    36097    26    Tavalik    61    

Скрипты на SQL для автоматизации архивации и сжатия баз данных

Архивирование (backup) Россия Абонемент ($m)

Автоматизирует всю работу по созданию backup на Sql Server, архивированию, удалению старых. Раскладывает backup по папкам - годовые, месячные, недельные, ежедневные. Архивирует WIN RAR. Очищает старые исходя из заданной политики сроков хранения backup каждого вида.

1 стартмани

22.05.2017    16688    20    SergeiGer    12    

Мониторинг баз данных 1С. Автоматизация обновления конфигураций

Журнал регистрации Администрирование данных 1С Распределенная БД (УРИБ, УРБД) Россия Абонемент ($m)

Если вы сталкивались с обновлением большого количества баз в рамках РИБ, то данная программа позволяет автоматизировать плановые обновления конфигурации, платформы на различном количестве физических\виртуальных серверов. Также администратор видит выполнение бекапов SQL информационных баз. Программа полезна, если у вас на поддержке большое количество РИБ 1С.

1 стартмани

05.04.2017    13710    10    vlkvlkvlk    6    

1:Tools - наш инструмент для обслуживания 1С

Сервисные утилиты Абонемент ($m)

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

1 стартмани

05.02.2017    26285    54    oldcopy    78