Введение
Евгений Маляров, автор платформы metadata.js, уже несколько раз отмечался на Инфостарте.
Дважды участвовал в конференциях Infostart Event, писал статьи, изготовил демонстрационную конфигурацию.
Евгений верил в Сообщество Инфостарта и считал, что здесь собрались именно те люди, которые воспримут идею metadata.js на ура.
Собственно, так и получилось - идея пошла на ура. Смотрите сами - и рейтинги у статей высокие, и на Event'е вопросов было масса. Но...
На этом - все. Идея всем нравится - чему ж там не нравиться-то? Платформа с той же моделью данных, что и 1С, только работающая изначально, из коробки, в вебе.
Но дальше лайка идеи не пошло. Многие скачали, попробовали развернуть, что-то поделать, внести изменения. Задавали много вопросов - в комментариях, по почте, на очередных Event'ах.
Евгений вроде старался отвечать, но ответы выходили какие-то странные... Вроде и помочь хочет, и не помогает.
Все время разговор уходит в сторону того, что не получится, будучи чистым 1Сником, вот так взять и перейти на metadata.js. Надо сначала с десяток интернет-магазинов написать, понять что-то о жизни и ущербности изобретения велосипедов на голом html и javasript, и только потом браться за метадату.
И вот у людей стал возникать когнитивный диссонанс: ты нас зовешь изучать метадату, а потом пишешь, что ни черта у нас не получится. Чего тебе надо тогда от нас? Тут сообшество 1Сников, никто интернет-магазинами и веб-приложениями не увлекается. Иди на хабр, там твоя аудитория.
Евгений уже было сдался, даже в комментариях отметил - разочаровался в 1Сниках, не смогут они веб-приложения писать, даже если им предложить максимально знакомую модель данных.
Эксперимент
А мне стало интересно, что во всей этой истории не так. Я не так давно работаю в Окнософте, и до того момента был лютым 1Сником. Знал и знаю, что 1Сник - более полезный для мира экземпляр, чем любой другой программист, на каком бы языке он не излагал свои алгоритмы.
Первое и главное, что я сделал - сел сам работать на метадате. Не просто работать и решать задачи - я проводил эксперимент - проходил тот путь, который, по замыслу Евгения, и должен был пройти 1Сник.
Забегая вперед, скажу, что первая стадия эксперимента продлилась ровно месяц. Через месяц я выдал работающий микросервис планирования, реализованный на метадате и входящий в состав большого Заказа дилера.
Конечно, фраза "выдал работающий микросервис планирования" звучит красиво и громко, но чисто моего кода там не очень много - я писал только основную суть планирования, центральный алгоритм. Весь обвес микросервиса написал Евгений.
Так вот, этот месяц был архиважным и для меня, и для Евгения, и для вас, возможно. Потому что стало понятно, как говорится, где тупит 1Сник при разработке на метадате. Совсем не там, где ждал Евгений.
Javascript
Я, если честно, больше всего боялся за javascript. С института не писал ни на чем, кроме 1С, и думал, что закостенел мой мозг в искусственных желтых рамках.
Но оказалось, что опасения мои напрасны. Конечно, рано говорить, что я знаю js, но основные конструкции освоил. Информации в интернете полно, примеров масса, пробовать и отлаживать можно прямо в браузере.
Тем более, найти конструкцию в интернете не проблема, когда ты знаешь, что ищешь. Например, понадобился тебе цикл, который переберет все элементы массива - пошел, нашел, попробовал. Попутно почитал, сколько еще вариантов циклов есть в js.
Получается, как на английском со словарем разговаривать. Думаешь на 1С, переводишь на js. На уровне основных конструкций языка проблем не ощутил.
Чужие модули
Вот тут проблемы ощутимее. В 1С мы привыкли к модулям, инструментам и механизмам платформы, написанным самой фирмой 1С. Почти все, что надо знать, написано в синтакс-помощнике.
Мы почти всегда работаем с типовыми конфигурациями. Внутри типовой конфигурации все более-менее однотипное, с примерно одинаковыми подходами. Бывают, конечно, исключения, вроде Бюджетирования в УПП, которое явно какой-то посторонний писал, но в целом все – родное и знакомое. А главное – 1Сное.
В веб-проектах, в т.ч. на метадате, все иначе – приходится использовать множество модулей, созданных хрен пойми кем. Там, конечно, есть какие-то соглашения, принятый стиль и т.д., но сами понимаете – сколько людей, столько и стилей. Тем более, что модули создаются абстрактными, не как «обработка для УПП».
Банальный пример – запросы. В 1С язык запросов и весь их обвес – часть платформы, и мы все к этому привыкли, я в том числе.
А в метадате нет платформы 1С, и нет языка своего запросов. Но есть модуль alasql, который создал некий Андрей Гершун. Это абстрактный движок, который умеет делать типа-sql-запросы к данным, находящимся в ОЗУ – например, в массиве. Читаешь, как умеешь, данные из БД, толкаешь их в ОЗУ, и пишешь запрос. Понятно, что в метадате не приходится читать данные на низком уровне – есть менеджеры данных, которые внутри себя заботятся о взаимодействии с БД.
Но слом моего 1Сного мозга был серьезный. Как так, нет запросов? Как так, язык запросов написал какой-то парень? И чего он всю справку на английском написал?
Если помните, был такой проект Доминикана – там был схожая идея, типа создать экосистему, где все программисты 1С смогут свои модули распространять, использовать чужие и т.д. Доминикана не получилась, а до меня только недавно дошло, что вне мира 1С все так и устроено.
Кстати, Инфостарт ведь тоже, наверное, хотел к этой концепции прийти?
В общем, необходимость разбираться с чужими модулями стала, есть и будет препятствием на пути 1Сника в метадате. Хотя бы потому, что и метадата – это модули, написанные хрен знает кем J
Окружение и контекст
Вот это стало самым поганым, лично для меня. В 1С мы привыкли к очень узкому окружению – конфигуратору, иногда – консоли сервера. Все остальное за нас делал Большой Брат.
Чтобы развернуть базу 1С, надо иметь только платформу и конфигурацию. Платформа – вообще черный ящик, просто приложение, которое надо установить.
Конфигурация же содержит в себе все, что нужно. Никуда не надо выходить из уютного желтого окошка, никаких файлов и интернетов, или не дай Бог npm и GitHub – все под рукой. Есть дерево метаданных, щелкай правой кнопкой и получай модули из достаточно короткого, типизированного списка – модуль объекта, модуль менеджера, модуль формы, общий модуль, модуль управляемого приложения и т.д.
Тут же – просто кошмар. Вместо конфигурации – файлы в папке. Вместо общих модулей на замке – «npm install», который скачивает необходимые файлы из интернета. Вместо дерева метаданных – ничего. Типизированных модулей нет вообще, есть просто файлы. Вместо одного конфигуратора – куча разных сред разработки. Вместо табличной SQL – CouchDB, в которой таблиц нет вообще, а в БД хранятся документы.
Все это – окружение, и оно очень многогранно и богато разной хренью разными возможностями. Поначалу меня это просто бесило. Я хотел просто найти модуль, открыть его и писать код. А тут постоянно обнаруживалось, что просто писать код я не могу – есть еще вот это, и вот это, и вот тут надо не забыть, а здесь обновить. Даже отладка разными способами идет. Что-то отлаживается в среде разработки. Что-то отлаживается в хроме после запуска приложения. Что-то запускается скриптом, выдается идентификатор, надо его вставить в адресную строку хрома и получишь модули микросервиса.
Вторая неприятность из той же оперы – контекст, в котором ты разрабатываешь. Если в 1С он почти всегда понятен, то здесь он вообще непонятен. Я в модуле объекта? Нет, ты в файле. Что за файл? Просто файл. А как в модуль объекта зайти? Создай его. А где объект, чтоб по нему правой кнопкой щелкнуть и модуль создать? Нет объекта, просто создай файл. Или два – как хочешь. Или вообще создай в платформе такую сущность – модуль объекта, и тогда они будут появляться сами.
Поначалу это звучит, как издевательство. Потом привыкаешь, начинаешь мириться, потом начинает нравиться. Все эти потом-потом-потом – это не годы, а недели. Это важно.
Платформа
Ну и напоследок самое захватывающее – доработка платформы.
Кто из вас может похвастать доработкой платформы? Про платформу 1С и говорить не буду. Даже если среди вас есть бывшие или действующие 1Сники, вам наверняка запрещено даже намекать на свою причастность.
Простому смертному программисту 1С доступ к платформе закрыт – даже посмотреть нельзя. Большинство даже не знают, на чем она написана. Повлиять на развитие платформы, или хотя бы на исправление ошибок – вообще практически невозможно, допущенные к конференции партнеров не дадут соврать. Только косвенно, через нытьё и кучу тем форума с обсасыванием одной и той же ошибки.
А у нас платформа открытая. И, да, я уже могу похвастаться – за первые полтора месяца работы с метадатой я внес 4 изменения в платформу – нашел и исправил три ошибки, и выполнил одну конкретную задачу по доработке.
Все это звучит банально и просто, но я до сих пор офигеваю от того, где оказался. Я не про Окнософт, а про метадату.
Вот реальная ситуация. У клиента в решении стала сбоить нумерация документов. Она же и в 1С часто сбоила, помните? Сейчас не знаю, давно не пробовал – помню, что сделали возможность сброса счетчика.
Так вот, что пришлось бы делать на платформе 1С? Искать, спрашивать, требовать, писать, звонить и, в конце концов, изготавливать костыль.
А что пришлось сделать на метадате? Минут 30 (потому что тупой еще) ушло на то, чтобы понять, что проблема в платформе, а не в прикладном решении. Еще минут 15 – на изучение и исправление функции нумерации. Все! Через 1 час после проявления ошибки она уже исправлена в платформе, исправление выложено в интернет и доступно всем, кто пользуется платформой!
Творим Историю
Теперь вы понимаете, о чем и зачем эта публикация.
Я, такой Чудесный Молодец, от имени всего Сообщества, поставил над собой эксперимент – «1Сник изучает метадату». Теперь я могу с уверенностью утверждать, что при правильном подходе 1Снику на освоение метадаты нужно несколько недель. Это не чистое время – я ж еще и статьи для вас писал, и клиентам помогал, и всякой ерундой занимался.
Теперь мы, Сообщество, знаем, что это возможно. Освоить еще одну платформу (1С бросать не надо!) и делать на ней решения – те, с которыми 1С не справляется.
А по пути я выяснил причины когнитивного диссонанса, который возникал у первопроходцев метадаты из Сообщества в общении с Евгением. Проблема была простой, но именно простые проблемы обычно труднее всего осознаются.
Евгений не понимал, что обычный 1Сник, коим являюсь и я, тупит на ровном месте. Где и как, я уже рассказал выше. Мы тупим в языке, чужих модулях, окружении, контексте. Мы привыкли разворачивать среду разработки методом press any key. Привыкли быстро находить ошибки и нужные модули. Привыкли рисовать формы мышкой. Привыкли к конструктору запроса.
А он, Евгений, отвык. И не понимал, чего мы не понимаем. Давайте не будем на него за это обижаться. Лучше будем творить историю вместе.
Сейчас, в 2018 году от Рождества Христова, начинается новая веха в истории автоматизации. Разработкой платформы metadata.js и прикладных решений на ней уже занимаются несколько человек. Я не один такой. Но в платформу внес изменения, как говорилось когда-то, «фтарой и …».
Любой из вас может внести вклад в платформу metadata.js. Платформа лежит в GitHub, у нас нет секретного отдела и договора о неразглашении – все доработки, которые вы внесете, а мы примем, останутся в истории вашего профиля GitHub, а вы попадете в Зал Славы – контрибуторов метадаты.
Но, если так далеко и глубоко заходить не хочется, то и ладно – вполне можно получить некоторый объем знаний и решить прикладные задачи родного предприятия. Метадата тем и хороша, что на ней можно и систему класса ERP сделать, и прибабахать к вашей УПП график поступления денег, доступный через интернет директору.
Сейчас формируется класс первопроходцев – тех, о ком потом будут слагать легенды. Тех, кто займет долю рынка в голубом океане, где нет конкуренции, но есть дикий спрос на правильные решения. Тех, кто повысит свою ценность, как специалиста, легко и быстро решая новые классы задач.
Эй – скажете вы – постой, чувак. – А чего ты нового-то рассказал, кроме слезливого рассказа о том, как месяц протупил? Это все было известно с 2016 года, можно было зайти, скачать и попробовать.
А новое – Сообщество по изучению metadata.js.
Сообщество
Проведя эксперимент, пройдя путь погружения в метадату, осознав ошибки прошлого, и видя нескончаемый интерес – как к разработке, так и даже к работе в Окнософте – мы создали Сообщество по изучению metadata.js.
Мы создали это сообщество с одной единственной целью - помочь людям, которые хотят разрабатывать приложения на metadata.js, но не знают, с чего начать и как преодолеть первые трудности.
Помогать будем и мы сами, и, очень надеюсь, вы – те, кто преодолел барьеры и уже разрабатывает на metadata.js. Мы знаем, что таких людей с каждым днем все больше.
Все, что нужно для участия в сообществе – быть зарегистрированным пользователем GitHub, потому что metadata-devtraining - это публичный репозиторий. Все, что вы и другие люди здесь пишут, доступно всему интернету.
Мы понимаем, что создать площадку для общения - это меньше половины дела, ведь у нас сообщество по изучению metadata.js.
Поэтому мы:
- Поможем вам развернуть среду разработки (вы сможете решать в ней учебные задачи);
- Выделим место на нашем сервере для хранения базы CouchDB (данные ваших учебных задач будут доступны нам, чтобы мы могли помочь в их проверке);
- Сформулируем учебные задачи, которые помогут вам побыстрее влиться в разработку на metadata.js (мы знаем по своему опыту, насколько важны первые задачи);
- Поможем вам решить первые учебные задачи, и проверим результат выполнения (мы по своему опыту знаем, насколько важна поддержка и проверка на первых этапах);
- Поможем вам сделать учебный дипломный проект - несложную, но полезную для вашего предприятия задачу (мы все - обычные люди, которые сидят на работе, и хотят не только развиваться, но и приносить пользу).
Если честно, мы в первый раз занимаемся такой работой, и потому понятия не имеем, что надо делать и как оно пойдет дальше. Но делать что-то надо, потому что спрос только растет – и на решения, и на платформу, и на специалистов, и на наше время. Пусть теперь растет спрос на вас – ваше время и ваши решения.
А мы постараемся помочь. Уже стараемся. Главное – вы сможете помочь друг другу. Сообщество – оно же своей жизнью должно жить, управлять им невозможно, да мы и не собираемся.
И мы будем счастливы, когда кто-нибудь из Сообщества напишет первую публикацию о разработке на metadata.js. Ну и когда в диалоге создания публикации, в списке выбора платформы появится metadata.js.
P.S. Кстати, один хитрец пролез в сообщество еще до официального открытия, прорешал первую задачу, успел пообщаться с Евгением, помог нам найти алгоритм воспроизведения ошибки. Он уже помог всем, кто зайдет следом и начнет решать первую задачу. Надеюсь, дальше будет еще интереснее