1C:Enterprise Development tools (EDT) или кодим в Eclipse
Программирование - Практика программирования
1C:Enterprise Development tools EDT Eclipse
Добрый день.
Наконец, наступил тот момент, когда можно отказаться от конфигуратора 1С, от той родной среды, в которой вырос каждый программист 1С. Это, конечно, была шутка, но в каждой шутке…
А если честно, то именно таким будет разработка в среде 1С будущего.
10.04.2015 был знаменательный день, во всяком случае, для меня – 1С поделилась своими планами о принципах разработки в среде 1С. Итак – приветствуйте:
1C:Enterprise Development tools
1C:Enterprise Development tools – это среда для разработки конфигурации в IDE Eclipse.
В свою очередь Eclipse – это IDE, в которой можно разрабатывать на разных языках программирования, включая Android.
Если попытаться описать очень кратко и в двух словах, с упущением всех тех сложностей, нюансов и проблем, которые пришлось решить 1С, то 1С сделала свою подсветку синтаксиса в Notepad++.
Т.е. все знают, что в Notepad++, Sublime Text и других текстовых редакторах – можно настраивать свои синтаксисы подсветки и даже создавать свои плагины.
Вот если вкратце, то 1С создала ряд плагинов на Eclipse, которые позволяют разрабатывать решения под 1С. Что это значит? А значит, что большинство плагинов, которые уже существуют под Eclipse – будут доступны нам, это раз, а два – мы теперь можем писать свои плагины, которые позволят, например, делать рефакторинг кода, так, как этого хотим именно мы. Ну к примеру, все знают, что если вы попробуете выделить фрагмент кода 1С для выноса в отдельную функцию, то в случае, если в том коде есть команда Возврат, то рефакторинг не сработает, и мы, без участия 1С (ну или Снегопата и т.д.) – ничего с этим не могли поделать, а теперь – вполне можем.
Ну не чудесно ли это?
Но это еще не все плюшки, кроме этого – появилась поддержка MacOS.
Давайте посмотрим системные требования:
Операционная система |
Версия |
Архитектура процессора |
JRE |
Оконная система |
Windows |
7 |
x86 32-bit |
Oracle Java 7u9 |
Win32 |
x86 64-bit |
||||
Ubuntu Long Term Support |
12.04 |
x86 32-bit |
Oracle Java 6 Update 37 |
GTK |
x86 64-bit |
||||
Apple Mac OS X |
10.8 |
Universal 32-bit |
Oracle Java 7u9 |
Cocoa |
x86 64-bit |
Ну что ж, теперь не получится издеваться над 1Сниками, которые сидят под Макосью :). Ну ничего, мы найдем другой повод.
Давайте все-таки начнем, и посмотрим – что к чему.
Вначале – несколько нюансов:
- У вас должен быть установлен Java, не ниже 1.7 up60 если у вас Windows 7, или Java 8 – если Windows 8.
- Версии Java и скаченного EDT – должны совпадать, т.е. x64 и x64, или x32 и х32.
- У вас должна быть сравнительно мощная машина, с минимум 4Гигами оперативки, можно и меньше, но при работе создается виртуальная машина, и в этом случае – будет очень грустно работать.
- Так как суть работы в новой системе – сводиться к тому, что будет происходить работа с КУЧЕЙ мелких файлов, то все данные лучше хранить на SSD.
Справка есть на ИТС (напоминаю про тест драйв на неделю).
Скачать можно отсюда:
https://users.v8.1c.ru/distribution/version_files?nick=DevelopmentTools10&ver=1.0.0.198
Для скачивания достаточно стандартного доступа на обновление платформы.
По этому адресу вас ждет тестовая платформа 8.3.6.1945, я думаю не надо объяснять, что ее надо скачать и установить, иначе не будет доступен некий функционал. И как видите – тут нет 1С под Макось (вот и повод появился:) ), скорее всего, это значит что не будет доступен режим отладки, но я не уверен, так как у меня нет Макоси.
Далее, внизу находятся файлы уже с самими утилитами для разработки, качайте нужную вам версию.
После того как вы это сделаете – разархивируйте папку и запустите файл dt.exe – все должно быть отлично (но, если ничего не помогает его запустить, тогда можно запустить файл eclipsec, но будет урезана часть функционала). После этого – откроется конфигуратор, простите - Eclipse.
Теперь давайте разберемся по порядку:
Я выделил цветами интересные для нас области.
Красная область (слева вверху) – это древо конфигураций, и это значит, что вы можете добавлять сколько угодно конфигураций и работать с ними одновременно.
Зеленная область – область процедур, о ней мы поговорим отдельно, ибо она очень таки удобная.
Синяя область (Справа вверху) – это просто свойство объектов.
А вот фиолетовая область – это очень интересная область, но о ней тоже позже.
Оранжевая область – это все ваши текущие базы, которые подключены у вас через стартер 1С, по сути идет чтения файла с прописанными базами. НО! Это не конфигурации, вы из этих баз должны вытянуть конфигурации самостоятельно. Если разрешение экрана высокое, то эта вкладка будет развернута в центре внизу.
Добавить конфигурации можно по разному, можно загрузить из файла, можно из файлов, можно из git, а да, чуть не забыл – тут добавили git :). Но о нем позже.
Давайте вытянем какую то конфигурацию из базы данных.
Нажимаем правой кнопкой на базе:
И жмем импорт конфигурации. Кстати, дамп – это выгрузка в dt, да-да, оказывается, выгрузка в dt, это не бэкап базы, не резервная копия (о чем не устанно говорит 1С и не только), а это именно дамп, тут 1С однозначно расставили точки над i.
Выбираем параметры, что уже реально удобно :)
И после нажатия Готово (делать это можно и при пользователях в базе):
Вот так выглядит древо конфигураций. Увы, доступны далеко не все объекты, но ничего страшного, у меня сложилось впечатление, что изначально будут разрабатывать в этой среде именно мобильные решения :) Все на это указывает.
Теперь предлагаю открыть любую форму:
Обратите внимание – разницы особой нету, кроме нижних панелей, теперь давайте переберемся в модуль:
Слева внизу – отображаются все функции, сгруппированные по областям, теперь, сразу подсвечивается функция в которой вы находитесь, экспортные функции подсвечиваются зеленым:
Синтаксис помощник теперь подсказывает вам постоянно все функции, на которые вы тыкаете:
Просмотр всех ошибок конфигуратора – тоже радует, особенно своим вердиктом в самом конце:
Вот так выглядит конструктор запроса:
А вот так выглядит отладка:
Итоги:
Все вышло намного круче, чем я ожидал. Очень непривычно видеть 1С в таком ракурсе.
К сожалению – на текущий момент не доступны очень многие объекты и возможности, однако, с другой стороны – это дает время привыкнуть. И что-то мне подсказывает, что 1С первым делом сделает отладку мобильных решений в этой среде, таким образов заставив людей сюда пересесть через «не хочу», так как те ограничения, которые сейчас есть – очень сильно напоминают ограничения в мобильной платформе. Но, будем ждать.
На этом все. Чуть позже – будет инфа о работе с гитом, но это если не лень будет описывать.
См. также
Специальные предложения
Что расстроило - java, жор ресурсов, на двух проектах (один новый, пустой, другой торговля старая(хотя обычное приложение здесь уже не катит, так что форм там не было)) два гига оперативы в легкую сожрало, причем ничего не делал, только загрузил и в простое стоял. При запуске с одним проектом сразу 1,5 гига
Понравились перспективы (1С, git), работа синтаксис-помощника - но это так, интерфейсные фишки (да, да, есть темная тема оформления)))) ), в остальное не углублялся пока (опыта работы с eclipse нет)
Не разобрался как создать внешнюю обработку.
И это... учите java )))
Выходные пропали...на хрена 1С новость в пятницу вечером выложил)))
Для инфо -комп i5 overclock 4ГГц память 8 Гб
Я на 1024 остановился, снижения производительности не заметил: Win 8 pro, мобильный хасвел i5 и 4 Гб оперативки, схема управления питанием - высокая производительность.
(0) импорт из информационной базы также запускает 1С с ключом /DumpConfigFiles , т.е. также в один поток и также долго. Я надеялся, что прикрутят-таки сборку/разборку в несколько потоков. Не понимаю, что им мешает это сделать, ведь распараллелить эту работу совсем не сложная задача, там ничего особо связанного между потоками не будет, будем упираться только в скорость записи диска.
Это у них заявлено в ближайших планах к реализации, так-что все будет. А вот то, что не реализованы все возможности доступные конфигуратору, а в особенности объекты и типы данных - это действительно печально.
Думаю что это только на первый взгляд, ведь загружая в конфигуратор объекты в неправильной последовательности мы теряем ссылки на не загруженные объекты. Как строятся связи в DT не изучал, но возможно по аналогичному принципу.
Вот и печалька, запустил, немного погонял да и вернулся в конфигуратор.
Теперь жду, что быстрей случится, появится новая версия, или появится "свободное" время.
java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
Съело только 1,5Гб. RAM.
В "Справочниках" и "Документах" почему-то не открываются формы на редактирование.
Конфигурация УТ 10.3
Допустим, я и мой коллега ведем разработку в своих локальных ветках. Каждый из нас создал свою собственную подсистему, запушил ее в репозиторий. И тут мы решили слить все это в одну рабочую конфигурацию. Так вот на текущий момент это придется делать ручками, хотя по идее при пуле сложного коммита и возникновения коллизий должен запускаться режим сравнения/объединения конфигураций, которого сейчас нет.
Может я конечно чего не понял в этой схеме. Если у кого-то получится организовать корректный workflow - пишите.
А не кажется ли вам, что отсутствие "корректного ворк флоу" в СТР версии - абсолютно не значит что продукт не удался. Можете допустить, что этот функционал еще не реализован?
А уж делать вывод о пригодности или не пригодности продукта - слишком преждевременно.
Или надо резко начинать всем писать что-то типа "ааа!!! подписок на событие нет. Как(!!!) работать то теперь?!!!11".
Вот и я именно об этом:
Поэтому фразы типа:
у меня вызывают только недоумение. Что послужило основанием для вывода что продукт для корпоративной разработки будет не пригоден?
Понравилась работа с СП, с нормальной контекстной подсказкой. Из коробки не было интеллисенса (может я что-то недонастроил?) - например, при обычном "Запрос = Новый Запрос; Запрос[точка]" ничего не подставляется (свойства, методы). Может надо какую-то горячую клавишу нажимать?
Порадовала модульность, возможность добавления плагинов. Если будет хоть немного рассказано про апи или можно будет смотреть родные плагины, то, чую, функционала прибавится.
Наконец-то нормальная работа с гитом из коробки!
Особенно порадовало проверка модулей на лету и наличие статического анализатора кода, пусть и зачаточного. Но опять же плагины + анализатор сам по себе расширяемый через конфиги. Надеюсь, это положительно скажется на качестве конечных продуктов, когда DT выйдет в релиз, и разработчики на нее перейдут.
По поводу памяти - я открывал две базы - ДО Корп и демо конфигурацию с гитхаба. Отожрало 3 гига, при этом ДО я уже закрыл как проект (утечка?).
Теперь вот думаю, переучиваться на новые горячие клавиши (заодно изучить все возможности eclipse+1с) или перенастраивать их.
А так конечно большой им респект.
Думаю, хороший примерчик работы с конечным результатом не помешал бы!
(0) честней говорить, что это не Eclipse , а Eclipse XText https://eclipse.org/Xtext/, то есть на самом деле любой из нас может придумать язык и написать для него IDE
И вообще некоторые решения удивили... причем очень. Я всё таки некоторым образом делал на java приложения в далёком отрочестве.
В те далекие времена вот за такое меня бы лишили бы премии ;-). Не думаю что сейчас что-то изменилось
a = integer.valueOf(Integer.parseInt(paramString.substring(paramString.lastIndexOf('.') + 1)));
этот код кстати и вызвал падение под linux. Вообще кстати - по косвенным признакам могу сказать, что у коллег явно не хватило времени на запуск автоматизированного тестирования и автоматизированной проверки качества. Причем учитывая что в java оно развито очень сильно. C проффилированием совсем беда - удалось "утечь" по памяти до 2.4 Gb, и "gc не приходило" (жарг.). Но это совершенно ничего не означает - просто видимо подходы к написанию кода на java изменились.
Ну и с расширением md - https://github.com/1C-Company/dt-demo-configuration/issues/1 - здесь вот совсем плохо
Т.е. что б по полной, со всеми костылями и т.д., или может у тебя есть курсы твои по этой теме? Я бы очень хотел пройти их :)
(30) увы, я еще помню эклипс, когда его баги просто удивляли, особенно когда текст тупо пропадал, пока не выделишь его весь. Но даже для меня некоторые моменты стали нежданчиками, в том смысле, что это дико видеть эклипс на русском, и кроме этого - 1С таки реально умудрились перенести туда все возможности конфигуратора. Я конечно знал планы про 1С на тему эклипса еще года два назад, но блин, я реально не ожидал что это будет так круто :)
Ну конечно потребуются курсы, но с другой стороны - научившись работать в такого рода среде - переход на другой язык, в случае надобности - уже не такая большая проблема.
На самом деле офлайн подобное мы делаем - внедряем github/bitbucket/gitlab/gogit/stash/etc. Если делать онлайн - то тут вопрос площадки возникает. курсы-1с.рф для этого мало предназначены, Инфостарт не делает разделов по курсам.
P.S. Для корректной разработки на 1С просто git не достаточно. Подойдет только git-flow.
Так что, либо выполнять отладку в другой версии, либо писать код без ошибок. ;)
Android это не язык программирования, а операционная система.
(47) lustin, если хотите на базе , то это лучше с ними пообщаться, я думаю, что все сделать можно, тем более, что опыт у них есть в этом.
Можем даже поступить так - с тебя статья, а я запишу видео, ибо видео все равно надо писать, далеко не все улавливают информацию из статей.
(52) понимаете в чем прикол, 1С - разрабатыает только плагины, а делают они это долго, так как (я так подозреваю) слишком много вещей не входят в парадигму принципов программирования в других системам. А эклипс - это по сути текстовый редактор, в котором можно тупо навесить плагины, и единственная задача 1с - сделать за плагинами, а все остальное - берет на себя эклипс. Вот в чем красота. Т.е. 1С может полностью сконцентироваться на новом функционале базы данных, эклипс избавляет нас от кучи детских болезней:
1. Разработка 1 база = 1 конфигуратор
2. Падение при сохранении обработок, с затиранием этих обработок
3. Нет возможности подключать плагины
4. И дохрена всего остального.
Так что 1С не зря пошло в этом направлении. ИМХО
Можно и на перфокартах писать, можно и в mcedit... Так же можно на работу ездить на мерседесе или запорожце. И в обоих случаях с водителем - дело привычки.
(60) Brawler, А кто его знает как и в чем они разработаны. Не ужели вы думаете что все свои инструменты разработки 1с партнером предоставляет. А использование хранилища это то еще головняк. Как например в 2 разрабатывать одну форму? Конфигуратор страдает от большого количества проблем. А какая разница как хреначить в обход системы или нет? Главное чтобы собралось и работало :) Как-то люди живут с программами из многих файлов. И ничего не путаются :)
А по поводу хочу обидеть линуксойдов или нет, думаю что нет, я предложил как вариант, мне более нравящийся.
(63) унылое или нет, не буду спорить, мне нравятся продукты MS.
Зря они все это замутили.
Распыление сил.
Если бы они все эти усилия вложили в свой нынешний конфигуратор и дали открытый API, то было бы куда лучше.
Сейчас Eclipse.
Завтра Visual Studio Shell.
После завтра еще чего либо в качестве IDE возьмут.
При этом своего одного монолитного инструмента не будет.
Грусть печать, сижу за монитором 24" 1920*1080, и чего это как-то мало чего полезного на экране располагается, громадное все, одних только вкладочек занимающих львиную долю экрана тьма. Видимо творцам Eclipse чужд минимализм, им нравится гигантизм. Думаю этой среде идеально подошла бы внешность MS Office 97-2003. Может конечно где-то есть настройки интерфейса, но уже сейчас переключив на схему Dark, наблюдаю полударк, не все элементы интерфейса учитывают схему оформления, но это грех 1С, не учли везде, думаю еще поправят.
Языковой разнобой.
&AtClient
Процедура Команда1(Команда)
Команда1AtServer();
EndProcedure
&НаСервере
Процедура Команда1AtServer()
//TODO: Insert the handler content
EndProcedure
Показать
1С могла кинуть все усилия на развитие конфигуратора, а не создание его клона. Теперь они будут вынуждены вести два проекта одновременно по любому. Придумают новый вид метаданных, нужно и там и там его описать, и там и там написать инструментарий работы с ним. В итоге тупо издержки.
Думается мне что главным все таки моментом во всем этом остается тот факт, что не для нас это се затевается а для внутренней разработки.
Будем ждать версию в которой уже можно будет полноценно работать с конфигурацией и надеюсь на это уйдет меньше года :)
Значит ежели такие крупные конфигурации могут быть созданы при командной разработке, то может просто задаться целью организации труда и его упорядочивания, а не искать новомодные/старомодные средства ведения групповой разработки?
Я вот боюсь за логическую целостность создающихся конфигураций в виде отдельных файлов. Это в каждый можно залезть в обход системы и нахреначить там чего угодно.
Еклипс жрет оперативку - т.к. фактически ему постоянно приходится поддерживать AST дерево в актуальном состоянии, именно благодаря этому работает динамическое выявление ошибок, рефакторинг, поиск и т.д. Добавьте эти возможности в базовый конфигуратор 1С и будет точно так же жрать память.
Минусов у еклипса тоже хватает...но плюсов со старта больше.
Повторюсь - интересная игрушка получилась, потыкался, но не понял, а как пользователей создавать? Только через конфигуратор?
Да и вообще, народ, мне кажется вы многого ждете от CTP версии. Лично меня данная новость порадовала. Все давно хотели всяких плюшек для разработчиков - получайте средство, которое позволит вам самостоятельно разрабатывать свои плюшки. Все давно хотели более удобные средства для групповой разработки - получайте средство с поддержкой GIT и SVN. Все давно хотели более умную контекстную подсказку - ловите. Со временем улучшений будет больше и все заработает в полную силу. Возможно даже постепенно DT вытеснит конфигуратор. Ну а пока потребуется поддерживать оба продукта, для 1С это не впервой. Да, вы скажете, что у 1С ничего хорошего из параллельной поддержки нескольких продуктов не выходит, но, помоему, все у них получится, нужно только подождать.
PS: и что вы до сих пор кодите на машинах с 2 Гб оперативки? Столько жалоб на прожорливость DT. Подтянут еще и производительность, и аппетиты умерят. А за это время компы ваши окончательно закиснут с 2 Гб RAM и вы сами обновите свое железо.
PSS: а тем у кого даже на 24' мониторе не умещается DT советую скрыть все ненужные области и окошки. Они здесь, будучи свернутыми, появляются практически так же как в конфигураторе, нужно только на соответствующую иконку жмакнуть. Я даже на своем ноуте 15' вполне нормально смог поиграться с DT просто скрыв все и оставив редактор модулей, как я это делаю при работе в конфигураторе.
Could not reserve enough space for 3145728KB object heap). самая крутая вещь которую изобрели 1с это конструктор запроса (долго долго искал что-то подобное в java, c# так и не нашел не в виде примочек к эклипсу или VS, не в виде отдельного софта). тут она перекочевала! пока не нашел как работать с внешними обработками (похоже еще не делали)
Давно мечтаю в 1С увидеть наряду с тотальным dynamic, еще и четко обозначенные по типу переменные, параметры процедур и функций.
Процедура СделатьЧтоТоХорошее(СсылкаНаДокумент)
Если Тип("ДокументСсылка.ОтражениеЗарплатыВУчете") = ТипЗнч(СсылкаНаДокумент) Тогда
// делаю что-то хорошее
Иначе
ВызватьИсключение "Передан неведомой природы аргумент".
КонецЕсли;
КонецПроцедуры
Процедура СделатьЧтоТоХорошее(СсылкаНаДокумент Как ДокументСсылка.ОтражениеЗарплатыВУчете)
Если ЗначениеЗаполнено(СсылкаНаДокумент) Тогда
// делаю что-то хорошее
Иначе
ВызватьИсключение "Не задано значение параметра 'СсылкаНаДокумент'.";
КонецЕсли;
КонецПроцедуры
При этом я не исключаю и возможности писать так
Процедура СделатьЧтоТоХорошее(СсылкаНаДокумент)
Если ЗначениеЗаполнено(СсылкаНаДокумент) Тогда
// делаю что-то хорошее
Иначе
ВызватьИсключение "Не задано значение параметра 'СсылкаНаДокумент'.";
КонецЕсли;
КонецПроцедуры
Кому как нравится. Проверка на заполненность аргумента СсылкаНаДокумент, завалится в ошибку стоит попасть в СсылкаНаДокумент не ссылки, а мутабельного типа.
Я гораздо более уверенным был в своем коде, ежели бы была возможность на фоне разгула динамической типизации объявлять локально переменные/параметры со статической типизацией там где мне это нужно, да хоть везде.
СделатьЧтоТоХорошее(СсылкаНаДокумент Как ДокументСсылка.ОтражениеЗарплатыВУчете)
А так:
СделатьЧтоТоХорошее(СсылкаНаДокумент Как ПользовательскиеИнтерфейсы.ОтражениеЗарплатыВУчете)
или так:
СделатьЧтоТоХорошее(массив Как СтандартныеИнтерфейсы.Коллекция)
То есть нужно описание некоторого интерфейса (контракта) и объект который данный интерфейс (контракт) реализует. Тогда на этапе синтаксической проверки можно проверить на реализацию контракта передаваемым объектом. И при изменении сигнатуры функции сразу были бы видны проблемы. А не как сейчас - у пользователя перестал проводится документ, т.к. в функции поменяли массив на таблицу значений. Типа так было:
Массив.Добавит(Объект);
Возврат объект;
а стало:
Строка = Массив.Добавить();
Строка.Объект = Объект;
Возврат Объект;
Просмотры 69562
Загрузки 0
Комментарии 297
Создание 11.04.15 22:43
Обновление 11.04.15 22:43
№ Публикации 344802
Рубрики Практика программирования,
Теория программирования
Кому Программист
Тип файла Нет файла
Платформа Платформа 1С v8.x (все механизмы)
Конфигурация Не имеет значения
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Раздел учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Не указано
УПП 1.3 Обмен с ERP 2.4, КА 2.4, БП 3.0, УТ 11.4, Розница 2.2.
|