INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Белозеров Дмитрий | Системный архитектор | LMSoft

«Кодогенерация и метагенерация в 1С»

Примерно год назад жизнь заставила меня задуматься над таким вопросом - а не разработать ли язык (точнее псевдоязык), с помощью которого можно было бы программно работать с метаданными 1С, писать скрипты, которые выполняют те же действия, которые выполняет разработчик в конфигураторе... В этом докладе хочу рассказать о том как мы разрабатывали такой инструмент, с какими сложностями и нюансами столкнулись, и что получилось в итоге. Мы рассмотрим реальные кейсы использования автоматической генерации метаданных 1С, в которых использование такого подхода дает серьёзные преимущества и сильно облегчает жизнь разработчика (иногда настолько облегчает что можно обойтись вообще без него :), увидим как инструмент генерации можно вписать в общий контур continuous integration. А ещё обсудим перспективы использования подобных практик (генерация конфигурации на основе формализованных функциональных моделей, реализация библиотечного подхода к разработке прикладных решений).

Возврат к списку

В новой версии платформы «1С:Предприятие» доработан механизм расширений

09.06.2017     
В версии платформы 8.3.11 появится возможность добавлять к прикладному решению собственные структуры для хранения данных: справочники, документы и регистры сведений. 
 
Теперь при добавлении в прикладное решение объектов и реквизитов, их данные будут сохраняться в информационной базе. А при доработке прикладного решения, с помощью расширений можно будет изменять структуру данных. 
 
Чтобы заполнять новые структуры своими данными, нужно будет добавить или модифицировать соответствующий объект конфигурации и перезапустить сеанс. 
 
Нововведение позволит добавить собственные: 

  • Справочники;
  • Документы;
  • Регистры сведений;
  • Планы обмена;
  • Реквизиты;
  • Табличные части и их реквизиты.

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



Автор:
Яна Казьмина Редактор ленты новостей


Комментарии
Сортировка: Древо
1. MSConfig 3 09.06.17 11:04 Сейчас в теме
Вот это настоящий прорыв!
chebser; Dmitri93; JohnConnor; bash08; y22-k; gubanoff; MaZaHacKa_13; support; milkers; pm74; CSiER; biz-intel; TreeDogNight; Solovyeff; shalimski; Brawler; CyberCerber; +17 Ответить
2. alex_sh2008 5 09.06.17 11:09 Сейчас в теме
интересно, во сколько раз упадет производительность
sergio199; IvanovAV; meclonec; +3 Ответить
3. kolya_tlt 11 09.06.17 11:18 Сейчас в теме
(2) во столько насколько кривые запросы вы там напишете.
sergio199; unmensch; chebser; Dmitri93; y22-k; rfcor; baracuda; kare; igo1; Anchoret; sansys; TreeDogNight; корум; shalimski; Brawler; ipoloskov; CyberCerber; +17 3 Ответить
4. Wolfis 4 09.06.17 11:18 Сейчас в теме
(2) наврятли сильно. просто запросы будут идти уже к другой таблице а не к типовой
user751607; +1 Ответить
9. Brawler 388 09.06.17 11:43 Сейчас в теме
(4) не к другой таблице, а к нескольким одновременно
16. alex_sh2008 5 09.06.17 12:22 Сейчас в теме
(4)Много маршрутизаций запросов, может получится, для маленькой базы это еще ни что, но вот что то по серьезнее это уже проблема, особенно когда накрутят с десяток расширений.
15. CyberCerber 206 09.06.17 12:19 Сейчас в теме
(9) Как раз нет, к одной. Для этого вся существующая таблица копируется в расширенную.
18. Brawler 388 09.06.17 12:43 Сейчас в теме
(16) да наверное нет. Там и так есть явно таблицы соответствий метаданных им таблиц данных, и в момент подключений/отключения расширений, их можно просто перезаполнить новыми данными.
17. Brawler 388 09.06.17 12:38 Сейчас в теме
(15) да, принимаю ваше замечание.
Однако как мне видится, лучше бы под дополнительные реквизиты создавалась дополнительная таблица, в которой была бы колонка со ссылкой на сам объект и колонки доп.реквизитов. Однако это бы несколько снижало производительность запросов так как это еще одно соединение.
20. alex_sh2008 5 09.06.17 12:55 Сейчас в теме
(18)Надо не забывать еще и про права доступа к таблице что так же накладывает дополнительную маршрутизацию
21. CyberCerber 206 09.06.17 13:13 Сейчас в теме
(17) Я об этом писал в (6).
Думаю, да, выбрали такое решение, чтобы исключить во всех обращениях к расширенной таблице лишнее левое соединение. Скорость поставили на первое место.
37. meclonec 88 11.06.17 08:19 Сейчас в теме
5. Krasnyj 1228 09.06.17 11:25 Сейчас в теме
Еще сколько времени пройдет, пока режим совместимости в типовых не поднимут, чтобы это работало. Наверняка ведь, в режиме совместимости с предыдущими версиями это работать не будет.
emulty; user751607; +2 Ответить
7. CyberCerber 206 09.06.17 11:28 Сейчас в теме
(5) Ну и пусть пройдет, это будет время для тестирования в реальных условиях.
biz-intel; Brawler; +2 Ответить
8. Krasnyj 1228 09.06.17 11:30 Сейчас в теме
(7) Это понятно, просто нисхождения благодати с этим - ждать не стоит. В типовых это не будет работать еще довольно долго.
Я сам делал расширение буквально три дня назад - и как не хватало именно этих возможностей :)
user751607; +1 Ответить
27. kolya_tlt 11 09.06.17 17:22 Сейчас в теме
(5) режим совместимости в последних подверсиях снимается быстро
28. Krasnyj 1228 09.06.17 17:41 Сейчас в теме
(27) и возвращается со следующим обновлением.
6. CyberCerber 206 09.06.17 11:26 Сейчас в теме
О да, теперь заживем!

Интересное решение, что при расширении не создается новая таблица с ГУИДом и новыми колонками, а целая таблица переносится. Жесткая будет реструктуризация, если расширять или удалять расширение таблиц с тысячами элементов.
10. Brawler 388 09.06.17 11:45 Сейчас в теме
Логическое развитие расширений в действии.
Что и ожидалось и обсуждалось.
user751607; +1 Ответить
11. a45 51 09.06.17 12:04 Сейчас в теме
а в чем сложность и какая выгода перед старым добрым добавлением в типовую конфу своих объектов ? если конфа "допиливается" расширениями то это снятие как минимум "головы" с поддержки ....
IvanovAV; ice-net; s22; +3 Ответить
12. Mi4man 150 09.06.17 12:09 Сейчас в теме
(11)
ли конфа "допиливается" расширениями то это снятие как минимум "головы" с поддержки ....


расширения на то и есть , чтобы не снимать с поддержки ничего.
Откуда такая инфа?
CyberCerber; +1 Ответить
14. a45 51 09.06.17 12:15 Сейчас в теме
(12)
ения на то и есть , чтобы не снимать с поддержки ничего.


режим совместимости в типовых. Если его не убрать то "толковых" доработак через расширение не сделать. А чтобы убрать режим совместимости, нужно снять "голову" с поддержки (как минимум замок) .
13. Infactum 259 09.06.17 12:15 Сейчас в теме
(11) Все изменения расширений делаются в первую очередь ради 1cfresh. В этот раз не исключение, хотя обычные пользователи тоже свои плюсы получат.
19. kurpyaev 12 09.06.17 12:47 Сейчас в теме
22. dimisa 102 09.06.17 13:45 Сейчас в теме

Мы встроили вам документ в документ регистр в регистр и справочник в справочник.
Осталось только притуярить монитор )))
23. Brawler 388 09.06.17 14:17 Сейчас в теме
(22) Всем хотелось ООП, которая невозможна на платформе 1С.
1С извернулись и сделали возможность расширять функциональность конфигураций не снимая их с поддержки.
Снова недовольны?
user751607; +1 Ответить
24. CyberCerber 206 09.06.17 15:05 Сейчас в теме
(23) А почему ООП невозможно на 1С?
Да, я не доволен, я все еще хочу ООП. :-)
29. webester 28 10.06.17 03:52 Сейчас в теме
(23)Я хотел на мальдивы и всю жизнь пить коктейли глядя на бескрайнюю синюю гладь. А 1С извернулись и сделали возможность расширять функциональность конфигураций не снимая их с поддержки. Снова недоволен.
Можно и так написать. ООП и мальдивы с расширениями связывает только одно: они не имеют к ним никакого отношения.
CyberCerber; +1 Ответить
30. o.nikolaev 228 10.06.17 08:34 Сейчас в теме
(23) А почему ООП не возможно на платформе 1С?
32. Сурикат 177 10.06.17 10:41 Сейчас в теме
(30)
А вы не думаете, что создание расширения - это наследование, а изменение функций и типовых содытий в расширении - полиморфизм?

(23)
ИМХО ООП нафиг не нужно, какие проблемы с помощью него Вы будете решать?
1С и так заставляет мыслить разработчика терминами предметной области. Дополнительные абстракции тут не к чему.
34. alex_sh2008 5 10.06.17 11:41 Сейчас в теме
(30)Архитектура решения, на данный момент не позволяет, и плюс внедрение ООП увеличит стоимость решений на этой платформе в несколько раз, и система не станет массовой.
33. o.nikolaev 228 10.06.17 11:14 Сейчас в теме
(32) Ну, пожалуй, это наследование. Только это какое-то уж такое, здоровенное такое наследование. Где в качестве родителя выступает вся конфигурация. Изменение функций и типовых событий - это скорее переопределение, а не полиморфизм. Впрочем, как раз и без полиморфизма-то можно и обойтись.

ИМХО: добавление в язык платформы объектных возможностей, как мне представляется, позволит справляться с растущей сложностью прикладных решений. Уже сейчас есть проблемы в этом направлении. Понятие класса, понятие какой-то группировки классов в пакеты (или иные кластеры), должно помочь. Серебряной пулей это, естественно, не будет. Но позволит справляться со сложностью.
CyberCerber; +1 Ответить
36. Brawler 388 10.06.17 15:32 Сейчас в теме
(32) Я не ратую за ООП, я озвучил не разумные хотелки других и не более.
35. Сурикат 177 10.06.17 11:54 Сейчас в теме
(33)
), должно помочь. Серебряной пулей это, естественно, не будет. Но позволит справляться со сложностью.


Но ведь есть Общие модули, модули менеджера, модули объекта. Этого вполне достаточно для уменьшения зависимостей.

Не хватает, возможно, закрытых переменных.
Но это решается, используя DTO. Т.е. мы переменные класса выделяем в структуру, а методы класса, сосредоточенные в общем модуле или модуле менеджера, производят изменения этой структуры.

Такой подход, например, в типовой обработке проведения в УТ11. Создаем структуру, где есть данные для проведения. При этом у нас есть методы с одинаковым названием для каждого документа, которые содержаться в модуле менеджера и возвращают набор записей. Они заполняют структуру, а потом наша "фабрика" записывает движения.
25. Tsprogrammist1 88 09.06.17 15:07 Сейчас в теме
Этого функционала очень не хватало!!! Супер!!! Ждем продолжения!
user751607; +1 Ответить
26. s22 20 09.06.17 15:30 Сейчас в теме
плохо, смысл довольно ограничен, так как требует для применения монопольного режима.
31. o.nikolaev 228 10.06.17 08:45 Сейчас в теме
Видимо дело идет к поддержке "магазина расширений" на уровне платформы. С соответствующим "1CPlay" или "1CStory". Это было бы логично. :-)
eskor; TreeDogNight; Alister; Сурикат; CyberCerber; +5 Ответить
38. &rew 7 13.06.17 08:44 Сейчас в теме
Теперь похоже подход к разработке "Совместимых" решений поменяется. Ваяешь расширение, навешиваешь на типовую бухгалтерию и вуаля! Вот тебе общепит, сельхохпредприятие, жкх и пр.
emulty; Dmitri93; +2 Ответить
Оставьте свое сообщение

См. также