Программное создание расширения

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

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

Расширение программное создание динамическое расширений

Создание нового расширения "на лету", только штатными средствами 1С.

Как известно, расширение может быть выгружено в файлы и собрано из файлов. Значит, можно подготовить файлы, из которых расширение будет собрано, даже если раньше его не существовало. Файлы эти должны соответствовать некоторым требованиям, но легко могут быть созданы программно штатными средствами. Что, собственно, и было выполнено для самых основных объектов. Сразу предупреждаю: работы с формами, общими макетами, общими картинками и собственными прикладными объектами тут нет. По формам и макетам уже достаточно публикаций. Данная работа просто иллюстрирует имеющуюся возможность и может быть превращена в полноценное решение.

Можно создать новое расширение. Можно модифицировать имеющееся. Инструментарий для чтения хмл-файлов, ввиду их невеликих размеров, может быть любой из предложенного в платформе. Я некоторое время раздумывал, а не вытащить ли xsd из платформы для полноценного xdto, но всё-таки остановился на классическом DOM, его в случае изменений платформы проще допиливать, да он и прозрачнее.

Для объектов принята единая нотация. Самое главное - идентификаторы. В приведённом примере они генерируются в коде, и если такой код запускать каждый раз, то, очевидно, "УникальныйИдентификатор" каждый раз будет возвращать новые значения. Поэтому для практического применения рекомендуется единожды эти ID создать, где-то зафиксировать, и передавать и при первом создании, и при программных обновлениях/изменениях. Свойства объектов максимально приближены к описанным в метаданных, задействованы системные перечисления из свойств метаданных.

 
 Служебные вспомогательные механизмы

 

 
 Сериализация объектов расширения

 

 
 Запись в файлы

 

 
 Основная функция

 

И собственно вызов, с указанием каталога, в котором будут созданы файлы расширения:

Успешность=СозданиеФайловРасширения(ПутьПостроения);

 

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

Далее можно вручную или программно "собрать" расширение.
Напомню, программно это пакетная команда запуска конфигуратора, командная строка, где следует указать /LoadConfigFromFiles
и путь построения (каталог, где находятся файлы), и ключ -format Hierarchical
Сам не делал, желающие могут попробовать. Также, не знаю, как себя ведёт платформа при ключе -AllExtensions.

После загрузки задача сведётся к работе с объектом "РасширениеКонфигурации" и манипуляциям с его данными и свойствами.
Например, из cfe-файла можно создать новое расширение:

ДвоичДанные=Новый ДвоичныеДанные(<ИмяФайлаРасширения>);
НовоеРасширение=РасширенияКонфигурации.Создать();
НовоеРасширение.Записать(ДвоичДанные);

и далее настроить его свойства.

Тестировалось на 8.3.18.1363, и это принципиально важно, т.к. внутренний формат данных меняется от релиза к релизу. Версию актуального формата можно узнать, сделав маленькое расширение и выгрузив его в файлы. В данной публикации используется версия 2.11

Чисто теоретически, можно попробовать сделать прямо в Предприятии свой маленький Конфигуратор для расширений.

Пакетные действия реализованы, например, в Vanessa-runner.

Кому пригодится, будет хорошо.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 27 06.04.21 14:44 Сейчас в теме
Хорошая статья, как раз имею проекты обработки таких xml конфигураций. Может пригодится
2. artbear 1300 06.04.21 14:45 Сейчас в теме
(0) Интересно.

Дополню:
Сборка расширений из исходников, установка расширений в ИБ (в 2х режимах - через Конфигуратор и через Предприятие) реализована в инструменте vanessa-runner.

Два вида установки потребовались, т.к. пакетная загрузка через Конфигуратор не дает управлять безопасным режимом и защитой от опасных действий.
3. Yashazz 3733 06.04.21 17:35 Сейчас в теме
(2) Да, безопасный режим в этом вопросе слегка мешает.

Собственно, потому я и не стал подробно останавливаться на вопросе самой сборки и/или установки, что решения уже есть. Артур, укажи ссылку на Ванессу, если не сложно - я её в статью вставлю.
4. user953800 07.04.21 09:51 Сейчас в теме
5. Yashazz 3733 07.04.21 17:12 Сейчас в теме
(4) Спасибо. Вставил в публикацию.
6. JohnyDeath 299 09.04.21 17:53 Сейчас в теме
А вот так потом можно перегнать расширение (cfe) в конфигурацию (cf) https://github.com/best-tech/cfe2cf
7. Yashazz 3733 11.04.21 08:52 Сейчас в теме
8. Yashazz 3733 12.04.21 16:34 Сейчас в теме
Минутку, я не понял... Почему тот, кто всегда минусует мои публикации, этого тут ещё не сделал?) Что-то не так?))
9. triviumfan 24 12.04.21 20:52 Сейчас в теме
(8) наверное, он просто не понимает, зачем минусовать то, что итак мало кому интересно :)
Честное слово, зачем лепить расширение программно?
Оставьте свое сообщение

См. также

Модульная (open source) конфигурация "INFOSTART ERP community edition" Промо

Практика программирования Infostart ERP community v8 1cv8.cf БУ УУ Бесплатно (free)

Учетная модульная конфигурация "INFOSTART ERP community edition" для ведения комплексного учета на предприятии.

31.08.2020    7050    495    33lab    90    

"Откат" данных без транзакций. Расширение для легкого возврата к "исходному" или выбранному состоянию после любых изменений данных

Сервисные утилиты Чистка базы Инструментарий разработчика Универсальные обработки Сценарное тестирование Прочие инструменты разработчика Расширения v8 1cv8.cf Бесплатно (free)

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

06.04.2021    952    19    Алексей Воробьев    12    

Примеры создания расширений для конфигурации "INFOSTART ERP community edition"

Расширения Infostart ERP community v8 1cv8.cf Бесплатно (free)

Примеры создания расширений (создание печатных форм, обновление ИБ).

15.03.2021    965    19    33lab    6    

Работа с кодом и его выполнение в режиме 1С: Предприятие (обычные формы)

Практика программирования v8 1cv8.cf Бесплатно (free)

С помощью этой простой обработки теперь можно выполнять код не только в конфигураторе. Код в режиме Предприятия имеет вид как в конфигураторе.

11.03.2021    1379    77    Nik_Name    8    

Генерация кода управляемой формы (декомпиляция элементов) Промо

Инструментарий разработчика Практика программирования Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

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

29.09.2014    109856    9095    ekaruk    134    

Вызов демонов в 1С

Практика программирования v8 1cv8.cf Бесплатно (free)

Вызываем демонов прямо из 1С!

28.01.2021    6332    151    the1    30    

Простая конфигурация для заполнения школьного расписания

Практика программирования v8 Россия Бесплатно (free)

Решение задачи контрольной работы.

12.12.2020    1640    36    vova-1c    29    

Ввод по строке для управляемых форм

Практика программирования v8::УФ 1cv8.cf Россия Бесплатно (free)

Ввод по строке с поиском по номеру телефона и наименованию контрагента с помощью обработчика "АвтоПодбор".

08.10.2020    2077    34    anrahell    1    

Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки Промо

Практика программирования v8 Россия Бесплатно (free)

Цель использования: разгрузить процессор, когда два или более пользователей пытаются провести документ. 1С пытается заблокировать таблицы, но делает это без пауз, и загружает процессор на 100%. При этом пользователи практически "встают", и нормальная работа прекращается. Компонента (или патч) позволяет решить эту проблему и нормализовать работу пользователей. Особенно актуально при работе в режиме сервера терминалов.

13.12.2007    54171    7758    romix    79    

Получение ссылки из форматированной строки

Практика программирования v8 Россия Бесплатно (free)

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

05.06.2020    3135    0    VZhulanov    1    

Как сохранить данные табличного поля в табличный документ / файл Excel программно

Практика программирования v8 Бесплатно (free)

Пример сохранения табличного поля в табличный документ не через ПКМ -> Вывести список, с автоподбором ширины по содержимому.

31.05.2020    4996    0    rpashkovsky    15    

v77. Тип данных "Месяц"

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Нет такого в 1С типа данных. Но если очень хочется...

12.03.2012    9996    6    item    2    

Пример работы MiracleV8.dll в режиме Управляемого приложения (тонкий клиент) Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Пример конфигурации Управляемое приложение с использованием MiracleV8.dll

09.04.2012    20884    219    Abadonna    26    

Задача: Программа, выводящая на экран свой исходный код (куайн)

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Программа, выводящая свой исходный код на экран, не пользуясь внешними источниками данных.

27.07.2011    11017    345    archie    17    

Информация по реквизитам объекта метаданных на полную глубину

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Дерево реквизитов объектов метаданных. На всю глубину (т.е. смотрит реквизиты у реквизитов).

10.06.2011    14584    163    kosmo0    5    

Обработка поиска дублей кода. Исходного кода модулей 1С

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

12.04.2011    7454    206    bk-81    37    

[Скрипт] Чтение EXIF данных

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Скрипт на C# для чтения Exif-данных из jpg-файла. Упакован в обработки для 8.1 и 8.2 (управляемые формы)

18.02.2011    23111    282    Душелов    14    

Исполнение кода в модуле формы при разработке в 1С 8.2

Практика программирования Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Немного теории о новом подходе к программированию форм в 1С 8.2 Рассматриваются директивы компиляции процедур и функций, которые определяются в модуле формы.

15.01.2011    27204    166    1cNike    19    

Запрос против рекурсии или разузлование номенклатуры

Практика программирования Учет ТМЦ Учет ТМЦ v8 КА1 Россия БУ Бесплатно (free)

В задаче "разузлования" номенклатуры в БП 1.6 (2.0) покажем , что запрос более эффективен, чем рекурсия.

23.11.2010    52537    836    Ish_2    258    

Выполнение кода C# из 1С

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Обработка показывает возможности выполнения кода С# из программы 1С.

23.11.2010    12005    251    AlkB    9    

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

Обмен через XML Практика программирования v8 1cv8.cf Бесплатно (free)

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

01.11.2010    22512    201    Dmitryiv    7    

Конструктор шаблона подобия для строк

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

17.08.2010    13980    35    YVolohov    11    

Коллекционер - упорядочиваем свои файлы.

Практика программирования Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

Ещё один менеджер обработок - но для разработчика)

09.04.2010    12373    149    Lancelot-2M    5    

Подсистема хранения файлов

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

23.03.2010    5965    761    koreav    32    

[BackgroundWorker] - Фоновые задания в файловом режиме 1С 8.x

Практика программирования Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

ActiveX-компонента позволяет выполнять задачи в фоне с индикацией прогресса и возможностью прерывания выполнения. Также работает и клиент/серверном варианте, в качестве альтернативы типовым фоновым заданиям

04.03.2010    24368    417    Душелов    15    

Загрузка из Excel в ТаблицуЗначений 8.1 (с помощью ADO DB)

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

Внешняя обработка для загрузки данных из Excel в ТаблицуЗначений 8.1

19.02.2010    10965    558    dav405    8    

[8.2] Шаблон обработки с индикацией прогресса выполнения (управляемые формы)

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

- Обработка выполняется на сервере - Отображение хода выполнения обработки с расчетом оставшегося времени. - Возможность прерывания выполнения обработка (CTRL + Break)

12.02.2010    27453    1360    Душелов    31    

Загрузка программы НТВ-плюс

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Загрузка телепрограммы на основные каналы через web-обработку сайта НТВ-плюс. Выбор дней недели, 133 канала любимых передач, оповещения времени наступления любимой передачи, просмотр программы на текущий момент.

08.02.2010    6650    120    maxlenium    15    

Печать произвольной таблицы значений

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

29.01.2010    10989    301    Пацталоцци    12    

1c-minder: обработка для создания ментальных карт (mind maps) в 1С:Предприятие 8

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Обработка позволяет быстро и удобно создавать ментальные карты (mind maps) в виде графических схем. Присутствует возможность сохранения схем в файлах формата .grs, после чего их можно открывать на всех компьютерах, на которых есть установленная "1С:Предприятие 8" или "1С:Работа с файлами". Реализован экспорт в графические форматы (PNG/BMP). Разработка является иллюстрацией механизма программной работы с графической схемой (добавление и изменение элементов схемы).

25.12.2009    21492    979    kharts    29    

Генератор математических задач для первоклашек

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

08.12.2009    4597    102    iiukolov    15    

Подведем итоги. Нарастающие.

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как одним пакетом запросов получить таблицу просроченных долгов контрагента ? Подробное иллюстрированное построение пакета запросов.

25.11.2009    43139    383    Ish_2    125    

Хранитель COM - объектов

Разработка внешних компонент Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Позволяет сохранять COM - объект между серверными вызовами в 8.2. Сохраняет и получает ссылку на объект в ROT (Running Object Table). БЕТА!

18.11.2009    13335    77    Hadgehogs    14    

Механизм блокирования "некорректных" (запрещенных) проводок

Практика программирования v8 БП2.0 Россия БУ Бесплатно (free)

Механизм позволяет настроить правила, по которым будут блокироваться указанные НЕКОРРЕКТНЫЕ (запрещенные) корреспонденции... Полезно при вводе информации для "выпрямления рук" у некоторых бухгалтеров после перехода с других бухгалтерских программ :)

14.11.2009    13311    57    KukA.5    50    

Загрузить все данные со всех страниц файла Excel

Загрузка и выгрузка в Excel Практика программирования v8 1cv8.cf Бесплатно (free)

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

11.11.2009    12716    590    Мастер1С    12    

Строка - "заголовок" в табличном поле

Универсальные функции Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Несложный приём позволит вводить в табличное поле строки вида "заголовок".

09.11.2009    14822    191    Ish_2    8    

Регистры и регистраторы

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Отчет показывает связи между регистрами и регистраторами в конфигурации. Поможет при изучении и анализе типовых решений и самописных конфигураций.

04.11.2009    18661    562    YVolohov    29    

Замена вызовов методов общих модулей во внешних обработках/отчетах

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

26.10.2009    17441    128    coder1cv8    10    

Загрузка курсов валют национального банка РБ с использованием web-сервиса.

Практика программирования WEB v8 Беларусь Бесплатно (free)

Написана под самописную конфигурацию, поэтому под типовыми она не заведется. Но можно использовать код получения данных с web-сервиса.

25.10.2009    9261    71    serg_gres    12    

[8.2] Консоль заданий на управляемых формах

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Консоль заданий для 1С 8.2 На управляемых формах, на основе типовой.

30.09.2009    56251    4308    Душелов    62