<?php // Полная загрузка сервисных книжек, создан 2025-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Продолжайте, интересно.
Думаю в течение месяца с головой погрузится в oscript, на горизонте маячат несколько задач….
(1) погружайся, Паш, погружайся 🙂 Там много интересного, как в веб-части, так и в более привычном девопсе
Фундаментально!
В закладки и подписки!
Маленькое замечание: парсер инфостарта оборачивает гиперссылки в свой redirect.php. Поэтому код страницы _mainLayout.cshtml отображается искаженно.
Вот правильный код линка (он же в исходниках гитхаба). Атрибут href пришлось переименовать, чтобы обмануть парсер 🙂
Попытка скрестить asp.net core с onscript.
Смотрится не плохо.
А почему не взять в качестве frontend vue.js? А backend использовать onscript. И без прослойки asp.net. Вроде как более перспективное направление может получиться.
(5) Можно и взять. Почему сейчас нет — в статье написано.
(6) я не про использование в качестве шаблонизатора. А как полноценный фреймворк.
На onscript попытаться сделать аналог nuxt.js. С серверным рендерингом.
В целом здорово, в закладки, в частном — стоит сравнить под нагрузкой с питоном, node.js, ну или на худой конец с php.
Есть смутное подозрение, что дальше единичных http сервисов не требующих высокой нагрузки — заходить не стоит.
ЗЫ: Да, Я знаю, что 1с код довольно странно компилируется в процессе, но как мне кажется, сравнивать стоит именно с интерпретируемыми языками, с байткодом точно не сравниться (да и в вебе мало бэкэнда на нем).
(8) Уже сравнивали. Скорость такая же как у ПХП. Питону тоже нет причин быть сильно быстрее. Нода применяет JIT-компиляцию в машинный код, поэтому будет наверняка побыстрее, но отдельно с нодой не сравнивали.
Что вы понимаете под термином байткод? И у 1С, и у 1Скрипт, и у Питона, и у Java есть байткод. Вы про который байткод говорите?
(7) Можно, думаю. И серверсайд-рендер react тоже можно прикрутить, не вопрос. Там всего-лишь middleware добавить в цепочку обработки.
Круто-круто. Следим за проектом затаив дыхание!
(0) Сервер синхронный и/или асинхронный?
(8)
Есть смутное подозрение, что дальше единичных http сервисов не требующих высокой нагрузки — заходить не стоит.
В сервисах с высокой нагрузкой, как правило сервера приложений (python, noda.js и т.д.) напрямую никто не выставляет. Поднимают несколько серверов приложений и проксируют их через nginx (или ему подобные). Таким образом можно повысить производительность и надежность.
Опять же время выполнения кода на питоне или на 1С принципиально не отличается. Основное время затрачивается на операции ввода-вывода. И вот здесь уже асинхронные сервера могут существенно вырваться вперед.
(0)
Спасибо, статья навеяла воспоминания по студенческим каникулам — php, smarty, борьба с ТТУК 🙂
(12) сервер асинхронный, но код конкретного контроллера выполняется в одном потоке на http-запрос. Асинхронный io с НачатьЧтение в стиле 1С можно сделать хоть сейчас, но у меня рука не поднимается копировать этот сатанизм.
(14) я ждал этой картинки! Редко встретишь ее на инфостарте. Считаю за комплимент )
(13) еще бы 1С выпустила гуманный API для асинхронных операций…
(18)
В мемориз 🙂
Плюсую за творческую упоротость, но идея не очень непонятна )
В целом думаю эта работа положительно отразится на сообществе одинэсников, т.к. в очередной раз поднимает планку.
Народу хочешь не хочешь придется шевелиться, наблюдая как его знания обесцениваются.
Непонятно следующее:
Какая целевая аудитория?
Ведь это решение за пределами экосистемы 1С и разработчику на платформе оно ничего не дает.
Ну а если речь о полноценной веб-разработке, то язык 1С как он есть, для этого имхо слабо подходит.
Любая технология призвана решать четкую конкретную задачу.
Какую задачу решает эта технология? И если решает, то в чем преимущество перед другими технологиями?
ps Не исключаю что уже объяснялось. Возможно пропустил
Огромное уважение к автору этого проекта и ко всей «команде oScript». Коллеги, вы всегда меня вдохновляете. Спасибо вам.
После того, как язык bsl укоренился на десктопе, на сервере, в мобилках и в вебе, может быть попробовать исполнить его на embedet платформах?
Как пример, есть такой проектEspruino (JavaScript на микроконтроллерах)
Микроконтроллер с кодом на bsl отправляет телеметрию на сервер который написан на OScript откуда 1С Предприятие забирает данные уже не звучит как фантастика.
(20) эта технология решает целый спектр задач. Перечислять поленюсь. Например, одна из них: Я (персонально я) смогу писать веб-приложения, получая удовольствие от процесса. Сейчас ни на одной из тех экосистем, которые я пробовал, этого не происходит. Если за мной это смогут делать другие 1С-ники — то задача уже будет выполнена выше плана.
И это только одна из целей.
(22) А ну если джаст фо фан, то почему бы и да )
(9)
Если в закладочках осталась статья со сравнением быстродействия на различных задачах — буду очень благодарен.
Слышал, что 1с делает также.
Ну в данном случае я имел ввиду машинный код, который исполняется напрямую, то во что компилируют теже плюсы. И естественно выходит очень быстро.
Питоша с JS — интерпретируются, Java исполняется на VM, у 1с, вроде как, препроцессор режет то что там наваяли в конфигураторе и отдает компилятору в реальном времени.
(24)
python интерпретирует не всегда. Как правило первый раз. И пытается этот код скомпилировать в си. Что при повторном использовании может быть быстрее java кода.
(13)
Благодарю за ликбез. Но при неудачном выборе инструмента, все одно дорого по железу/потдержке выходит наверное?
С асинхронностью у 1с бяда, особенно на стороне клиента. Пока есть только для файловых потоков и обработчик ожидания.
Вчера потребывалось из формы списка попадать в форму элемента и выделять нужную строку табличной части, в итоге решилось подвешиванием таймера в 0,25 сек на процедуру ПриОткрытии() и уже по его истечению устанавливать фокус.
Ничего лучше подобного костыля не придумал, а решения в гугле для УФ в принципе нет.
Показать
(25) Таких тонкостей не знаю, но вроде как в питоне надо явно задавать участки, что подлежат такой компиляции, все остальное статически компилируемое.
(22)
Андрей ты нас обманываешь :), если осилил свой хм… интерпретатор? Написать, то уж web приложение явно проблем не вызовет 🙂
(28) жабоскрипт ацтой. Не люблю на нем писать
(23) just for fun — наиболее доходчивое объяснение для скептиков вроде тебя )
Прагматические цели тоже есть.
(24)
Статьи нет, есть наш чат в gitter. Там обсуждалось.
Нет, не делает. Если я ошибаюсь — просьба дать пруфлинк.
Машинный код <> Байткод. Принципиально разные вещи.
Вот это — тотальная абракадабра и незнание матчасти.
(31)
Описочка, очевидно имел ввиду машинный.
Просвяти где не прав.
(32)
Начнем с того, что Питон и JS — это языки у которых несколько реализаций. Каждая реализация работает по-своему.
Наиболее популярная реализация Питона — это CPython. Я не очень хорошо ее знаю, в моей картине мира она компилируется в байт-код, который затем исполняется виртуальной машиной. Точно так же делает 1С, PHP, Ruby и 1Script.
JS имеет также несколько реализаций, современные из которых (скажем V8 от Google) сначала также компилируются в промежуточный код, а он, в свою очередь — превращается в машинный код, там где это возможно. Это называется JIT-компиляцией. По тому же принципу работает C# и Java. В результате, современные JS-программы работают довольно шустро. Но это заслуга реализации движка. Запустите этот же код на старых реализациях JS и никакой скорости не будет, хотя «язык» — один и тот же. Node.JS использует, насколько я знаю, движок V8, хотя, вроде как, туда можно поставить Chakra или еще что-то. Не в курсе на 100%.
Теперь насчет 1С. Что-то такое мелькало про JIT в 1С, но я так и не понял — было это в реале или мне приснилось.
Примененный термин «VM» для Java справедлив в равной степени для всех скриптовых языков, в т.ч. и для 1Script. Чистых «интерпретаторов», которые бы не использовали промежуточное представление в виде байт-кода, сейчас среди мейнстримных скриптовых движков нет, насколько мне известно.
(21) Сюда Филиппов сейчас тоже вставит картинку с троллейбусом 🙂
(30) Ну если берешься защищать цели, то нужно их озвучивать ) Или тупо сразу говорить, что делаешь джаст фо фан, чтоб не парили мозг.
Объяснять полезность чего-то сложно, да. Иногда даже самому себе )
ps Не обращай внимание на мои придирки. Дотошность мое проклятье.
(35)
ты меня раскусил ))
(36) будто кто-то иначе делает )))
(33)
Наиболее популярная реализация Питона — это CPython. Я не очень хорошо ее знаю, в моей картине мира она компилируется в байт-код, который затем исполняется виртуальной машиной.
Начнем с того, что вот этот ваш CPython и есть ИНТЕРПРЕТАТОР. Он читает что вы там написали и прям в процессе транслирует в байткод и исполняет.
Собстно это и называется ИНТЕРПРЕТАЦИЕЙ. А уже КОМПИЛЯЦИЕЙ называют когда программулина сначало перегоняется целиком в машинный код, а затем уже исполняется.
Так что зря вы так грубо и с плеча дураком обзываетесь)))
Про 1с мне точно также приснилось, про что и написал.
Как это вижу Я: препроцессор режет наши писульки в соответсвии с дерективами, переводит в некое промежуточное состояние и отдает кусочки в процессе такому же сорту CPython’а, который, когда от него требуется, уже компилирует и исполняет.
(38) у меня несколько иная терминология. Интерпретатор сразу исполняет код, не создавая никакого кода для машины (обычной или виртуальной). Меня так учили и то же самое читал в книжках. В любом случае, это всего лишь вопрос терминологии. Я поясняю свою, чтобы меня правильно можно было понять.
Компилятор — это создатель другого представления исходного кода, которое затем исполняет машина (реальная или нет).
В такой терминологии Питон, 1С и 1Скрипт — это НЕ интерпретаторы
(38)
Собстно это и называется ИНТЕРПРЕТАЦИЕЙ. А уже КОМПИЛЯЦИЕЙ называют когда программулина сначало перегоняется целиком в машинный код, а затем уже исполняется.
Даже классический CPython, который не имеет встроенного JIT-компилятора, имеет оптимизатор, который сохраняет в байт-код (расширения .pyc). И уже повторно запускается именно байт-код.
(25) Наиболее распространенная реализация CPython компилирует код в байт-код.
JIT-компилятор, про который видимо идет речь, используется, например, в реализации PyPy, но она имеет свои ограничения.
(39)Придеться вас огорчить)
Может тут и правда есть различные мнения, но вообще, где бы я не встречал упоминания питонов-яваскриптов, всегда где то рядом есть слово «интерпретатор».
(42) не смущает, что в приведенной статье сплошные противоречия?
Этак можно прийти к тому, что и С++ это интерпретатор компилируемого типа. Ведь программа выполняется «виртуальной машиной» (операционной системой).
(42)
уникальность именно python в том, что он разрывает шаблон устоявшихся понятий чистых компилятор/интерпретатор.
Он одновременно может быть чистым интерпретатором. В прямом смысле этого слова. Прямо в консоле можно писать код построчно и он будет выполняться.
В тоже время позволяет и скомпилировать в байт-код, для более быстрого выполнения.
Автор, не знаю, куда это писать. Начиная с версии 1.0.18 1script не работает на win32 . Это так и должно быть ?
(45) на какой из win32?
для работы 1.0.18 и старше требуется .Net Framework >= 4.5.2. Как следствие в трубу улетела Windows XP
(45)https://github.com/EvilBeaver/OneScript/issues
https://gitter.im/EvilBeaver/OneScript
сюда писать. Если там молчим, не стесняться напоминать.
Ещё сюда:
отказались от поддержки винХР — это было. а от вин32 не отказывались.
(42) Я может чего не понял, но приведенная статья подтверждает мою терминологию, а не опровергает ее. Что конкретно в ней должно было меня огорчить?
(43) Ага, отличный пример бредовых ГОСТ-ов, прямо вспомнил лекции в институте, которые устарели за 10 лет до моего туда поступления.
(26)
Железо — зависит от задачи. Возможно бэкенд на С/С++ будет лучшим решением.
Ничего лучше подобного костыля не придумал, а решения в гугле для УФ в принципе нет.
Зачем это?
Можно же сразу в ПриСозданииНаСервере установить строку
Показать
Что то навеяло asp.net …
На чем реализован механизм?
Вопрос снят, выше увидел коммент по .net
(50) При создании на сервере и при открытии (до того как форма отрисовалась у клиента) «ТекущаяСтрока» еще не установлена и находиться в значении «Неопределено». Установить значение то можно, но толку от этого будет 0 и все одно после открытия перезапишется единицей.
Вот такие вот неожиданные костыли))) Честное слово, Я не был пьян, когда ваял сей велосипед)))
Между тем, призовой фонд в 20 sm до сих пор не разыгран
(53) Ну собственно я тоже попробовал прежде, чем писать (пробовал на 8.3.12)
(55) Странные дела.
8.3.11, Вин сервер 2008, УФ, Тонкий клиент, Такси, Самописная конфигурация на базе БСП.
При создании & открытии формы ну никак не хотело, причем гуглинг дал таких же несчастных и решения для обычных форм.
Пришлось выдумывать такой велосипед.
(51) дык там низом и есть ASP.Net
Ошибка (закладка?) в статье, приводящая к ошибке…
Правильно в src/model/modules
(58) Спасибо, исправил
А как отлаживать код? Здесь все понимают, что 50% работы с кодом (более менее сложным) — это отладка.
(60) Отладчик пока не включен в веб-движок. Стандартный 1script отлаживается, здесь на данный момент еще не реализовано.
Вознаграждение в пользу yuraer
(62) Моё решение.
В файле src/views/agents/Index.cshtml добавляем кнопку в таблицу
где указываем вызов функции «delete» и значение маршрута «@row.Идентификатор»
и название колонки
и добавляем функцию удаления в src/controllers/agents.os
Показать
Git не захотел коммитить первоначальный образ, оказалось что его надо как минимум настроить.
открываем git-bash , добавляем пару строчек
git config —global user.name «Мое имя»
git config —global user.email мое.мыло@gmail.com
Запилил функцию удаления, получилось почти так же как в решении выше.
Потом подумал, что одно неосторожное движение и мы удалили запись.
Сделал еще формочку с подтверждением.
С интересом жду продолжения.
(64) Не затруднит ли вас отправить данные доработки пулреквестом вот сюда:https://github.com/EvilBeaver/odminus ?
Здесь будет разрабатываться конечное приложение.
(65) Я пока не знаю как это делается. В ближайшее время разберусь и отправлю.
Отличное пособие, осталось понять — для кого оно?
Типичный 1С-ник очень далек от Web и MVC-концепции (которая к слову уже не так актуальна). Т.е. да, он будет писать русские комманды, но по факту это просто обертка над ASP.NET MVC.
Те кто хоть немного знакомы с веб-разработкой, для чего им писать на этой обертке? Проще взять Питон или Го и ОЧЕНЬ быстро получить бэкенд. Без всяких Model View Controller. Роутинг там реализован без всяких созданий подпапок и конкретных имен файлов с конкретными методами — т.е. гибко
(67) по-моему всё 1С строится на MVC. Нет?
Так и сама 1С — это просто обертка над С++
Я — один из тех «для кого это». И я также активно использую oscript движок как язык для сценариев больших и не очень.
Мне в свое время надоело каждый раз при написании какой-то консольной утилиты или плеваться на cmd или вспоминать как оно там в PowerShell сделано. А здесь — знакомый до боли язык и обороты, который плюс ко всему легко переносится из платформы в скрипт.
Андрей, возможность запуска веб-движка в виде службы windows в будущем будет предусмотрена?
Возможность запуска веб-движка в виде службы windows в будущем будет предусмотрена?
(67) Евгений ниже ответил, я вряд-ли смогу лучше. Да, это обертка над Х. И 1Script это обертка над Y. Да, можно взять Питон, Павершел, VBScript, Батники. Но зачем?
(70) Нет. А зачем это нужно? Внутри веб-сервера это работает иначе. И вообще, предполагается контейнеризация. Для чего нужна именно служба?
(72) тогда наверное я не совсем до конца понял как все будет работать. Я думал, что web-движок oscript это отдельный web сервер запускаемый через OneScript.WebHost.exe и тогда логично, что OneScript.WebHost.exe должен уметь стартовать как служба потому-что он должен стартовать при старте системы и служба подходит для этого идеально. Получается я не прав и теперь предполагаю, что web-движок oscript будет работать под IIS. Можете подробнее рассказать как будет разворачиваться web-движок oscript в продуктиве, вот хотя бы на примере «odminus».
(73) я предпочитаю разворачивать в docker. А так — гуглить на тему aspnet core + iis
(71)
1)Чтоб не переключаться постоянно с русского на английский и обратно
2)Обертка не дает всего что дает исходный ASP.NET MVC. Т.е. придется ждать пока в обертку добавят еще одну обвязку или же дергать .net классы напрямую. Но зачем тогда вообще обертка?
(75) Затем же, зачем и весь 1script вообще. Для удобства. Как уже писал выше — в первую очередь меня лично, а вообще — для любого 1С-ника.
(74) и в продуктиве тоже docker?
(77) Есть ряд устойчивых отраслевых мифов:
* Java тормозит
* Плазма падает
* На 1С нельзя сделать {enter your text}
* Docker не готов к продуктиву
* Венде капец
Все примерно одного уровня достоверности.
(78) Спасибо, пошел смотреть docker. За oscript спасибо отдельное, разработчики 1с очень быстро привыкают к автоматизации своей деятельности с его помощью. Oscript-web тоже сразу всем понравился из-за легкого старта. В общем очень нужное дело делаете.
(79) И вам спасибо за отзыв!
открываем git-bash , добавляем пару строчек
git config —global user.name «Мое имя»
git config —global user.email мое.мыло@gmail.com
Увы, даже после этих действий у меня движок не запустился.
D:MyProg1scriptServersConsolesrc>d:MyProg1scriptoswebOneScript.WebHost.exe
Необработанное исключение: System.TypeInitializationException: Инициализатор типа «System.Diagnostics.DiagnosticSourceEventSource» выдал исключение. —> System.MissingMethodException: Метод не найден:
«Void System.Diagnostics.Tracing.EventSource..ctor(System.Diagnostics.Tracing.EventSourceSettings)».
в System.Diagnostics.DiagnosticSourceEventSource..ctor()
в System.Diagnostics.DiagnosticSourceEventSource..cctor()
— Конец трассировки внутреннего стека исключений —
в System.Diagnostics.DiagnosticListener..ctor(String name)
в Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices()
в Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
в OneScript.WebHost.Program.Main(String[] args)
(81) это какие-то системные ругательства. .NET Framework точно хороший стоит? И приложение откуда брали — скачивали или из исходников собирали?
(82) Все делал по инструкции.
choco install –y dotnet4.6.1
Приложение и движок скачивал в архивах и распаковывал.
Возможно, дело в системе windows7. Вы ведь не под ней делали ?
(83) не под ней, но вряд ли причина в этом. Скорее всего, не подхватился нужный фреймворк или он как-то криво установился. Это системная ошибка, не относящаяся по большому счету к 1Script.
Бинарники 1script сами собирали, или скачанные?
(84)
Все скачанное. Да ладно, не заморачивайтесь. Либо эта ошибка проявится у многих, либо , значит, карма у меня такая.
(44)
как и многие другие включая и javascript и java
(29) согласен, но есть же еще TypeScript как пример
(81) Такая же ошибка на windows server 2012 r2
(88) Вы движок из исходников собираете или с гитхаба берете готовый?
(89) Разобрался и дам всем совет на будущее, на windows server по умолчанию стоят две версии net framework 3.5 и 4.5 , удалил версию 3.5 и все запустилось. Видимо по умолчанию скрипт запускается под 3.5 почему то.
А почему не использовать язык Golang с шаблонами, там все проще и быстрее.
Тем более Docker написан на нем.
(91) конечно можно и нужно всем использовать только тот язык, который вы считаете нужным.
Пардон за наброс, просто я регулярно слышу этот вопрос и много раз на него отвечал в Интернетах и лично.
Прорабатывал данный пример и заметил, что процедуру
Показать
необходимо размещать до раздела «Полноценный CRUD», т.к. без нее не происходит запись о новом сервере (вываливает ошибку).
(93) Поясните, пожалуйста, что значить «До раздела Полноценный CRUD»?
(94) По тексту, в модуле «ЦентральныеСерверы» до раздела «Полноценный CRUD» описаны только два метода:
Показать
Ниже в демонстрации идет пример, где записываются данные при создании нового «Агента кластера». Однако сам метод «Записать» реализован по тексту уже ниже, в разделе «Полноценный CRUD».
(95) Возможно. У меня предложение — оформлять замечания сразу в виде улучшений пуллреквестами на гитхаб. Тогда сообщество сможет обсудить и прокомментировать конкретные строки кода и принять их в общий продукт. Репо Одминуса на гитхабе:https://github.com/EvilBeaver/odminus
Прошу помощь.
Возникает ошибка при запуске opm
PS E:GITSServersConsolewebapp-template-mastersrc> opm install -l
ПРЕДУПРЕЖДЕНИЕ — При локальной установке параметр -dest игнорируется
КРИТИЧНАЯОШИБКА — {Модуль C:Program Files (x86)OneScriptlibopmsrccoreКлассыОписаниеПакета.os /
Ошибка в строке: 66 / Не задана версия пакета}