Сервис подготовки расширения конфигурации
Наверное, не открою Америки, если скажу, что большую часть своего времени программист 1с тратит на обновление конфигураций. Хорошо, если это – типовые конфигурации. А как быть, если конфигурации были доработаны под потребности клиента? Проще, когда ты сам знаешь специфику клиента, особенности учета и сам дорабатывал конфигурацию. А если нет? В нашей стране не обновлять конфигурации 1с нельзя! Постоянно меняются формы документов, отчетность. Проблему представляет случай, когда доработка конфигурации затрагивает типовой функционал. До недавнего времени, не существовало способа разделить конфигурацию на постоянную и обновляемую части. К счастью, прогресс не стоит на месте, и в фирме «1С» наконец- то сделали расширение конфигурации. Начиная с версии 8.3.9 платформы, появилась возможность переопределять процедуры и функции типового решения, не снимая замка с конфигурации. В расширении можно вводить свои процедуры и функции. Но как быть, если у Вас уже есть работающая конфигурация. Клиента она полностью устраивает. Проблемы возникают у Вас, когда необходимо ее обновить. Открываются несколько сравнений /объединений конфигурации, тратится драгоценное время. Цирк повторяется по мере выхода очередного релиза. Мы сделали попытку помочь программисту упростить поддержку таких измененных конфигураций. Идея в том, чтобы разделить конфигурацию на две части. Первая будет максимально приближена к конфигурации поставщика. Обновление такой конфигурации будет проходить намного проще и безопаснее. Вторая часть будет содержать специфику текущей конфигурации, отличие от конфигурации поставщика, оформленное в виде расширения. Итак, вот наш легкий способ сделать труд программиста комфортнее:
На сервисе вы можете загрузить свою конфигурацию и получить файлы расширения конфигурации, содержащие Вашу специфику, и файл настроек объединения с конфигурацией поставщика. Там же Вы можете посмотреть подробное описание Ваших действий. На данный момент, сервис бесплатный. В дальнейшем, мы планируем платную подписку на наши услуги.
Как делаются расширения:
В качестве примера, рассмотрим адаптацию конфигурации Бухгалтерия предприятия КОРП, редакция 3.0. Предположим, мы внесли изменения в общий модуль "УчетНДС"
Этот модуль (частично) в исходной конфигурации имеет вид:
Процедура СформироватьДвиженияНДСЗаписиКнигиПокупокПолученныйАванс(ТаблицаРеквизиты, ТаблицаАвансов, Движения, Отказ)
Реквизиты = ТаблицаРеквизиты[0];
Для каждого СтрокаТаблицы Из ТаблицаАвансов Цикл
НоваяЗапись = Движения.НДСЗаписиКнигиПокупок.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Реквизиты);
ЗаполнитьЗначенияСвойств(НоваяЗапись, СтрокаТаблицы);
НоваяЗапись.Организация = Реквизиты.Организация;
НоваяЗапись.Поставщик = СтрокаТаблицы.Контрагент;
НоваяЗапись.НДС = СтрокаТаблицы.СуммаНДС;
// ак
НоваяЗапись.КодВидаОперации = "02";
КонецЦикла;
Движения.НДСЗаписиКнигиПокупок.Записывать = Истина;
КонецПроцедуры
Функция ВидЦенностиНалоговыйАгент(ВидАгентскогоДоговора)
Если ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров.Аренда Тогда
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентАренда;
ИначеЕсли ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров.РеализацияИмущества Тогда
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентРеализацияИмущества;
Иначе
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентИностранцы;
КонецЕсли;
КонецФункции
Первая функция была изменена, а второй, — нет в конфигурации поставщика.
Теперь, рассмотрим, что же получится в результате работы сервиса.
Расширение
// Переопределение типовой функции/процедуры
&Вместо("СформироватьДвиженияНДСЗаписиКнигиПокупокПолученныйАванс")
Процедура HostAdm_СформироватьДвиженияНДСЗаписиКнигиПокупокПолученныйАванс (ТАБЛИЦАРЕКВИЗИТЫ, ТАБЛИЦААВАНСОВ, ДВИЖЕНИЯ, ОТКАЗ)
Реквизиты = ТаблицаРеквизиты[0];
Для каждого СтрокаТаблицы Из ТаблицаАвансов Цикл
НоваяЗапись = Движения.НДСЗаписиКнигиПокупок.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Реквизиты);
ЗаполнитьЗначенияСвойств(НоваяЗапись, СтрокаТаблицы);
НоваяЗапись.Организация = Реквизиты.Организация;
НоваяЗапись.Поставщик = СтрокаТаблицы.Контрагент;
НоваяЗапись.НДС = СтрокаТаблицы.СуммаНДС;
// ак
НоваяЗапись.КодВидаОперации = "02";
КонецЦикла;
Движения.НДСЗаписиКнигиПокупок.Записывать = Истина;
КОНЕЦПРОЦЕДУРЫ
// Перенос отсутствующей у поставщика функции/процедуры
Функция ВидЦенностиНалоговыйАгент(ВидАгентскогоДоговора)
Если ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров.Аренда Тогда
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентАренда;
ИначеЕсли ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров.РеализацияИмущества Тогда
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентРеализацияИмущества;
Иначе
Возврат Перечисления.ВидыЦенностей.НалоговыйАгентИностранцы;
КонецЕсли;
КонецФункции
Одновременно, делается файл настроек сравнения/объединения с конфигурацией поставщика, который позволит привести данный модуль к типовому виду.
Модифицированная конфигурация = типовая конфигурация
Процедура СформироватьДвиженияНДСЗаписиКнигиПокупокПолученныйАванс(ТаблицаРеквизиты, ТаблицаАвансов, Движения, Отказ)
Реквизиты = ТаблицаРеквизиты[0];
Для каждого СтрокаТаблицы Из ТаблицаАвансов Цикл
НоваяЗапись = Движения.НДСЗаписиКнигиПокупок.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Реквизиты);
ЗаполнитьЗначенияСвойств(НоваяЗапись, СтрокаТаблицы);
НоваяЗапись.Организация = Реквизиты.Организация;
НоваяЗапись.Поставщик = СтрокаТаблицы.Контрагент;
НоваяЗапись.НДС = СтрокаТаблицы.СуммаНДС;
КонецЦикла;
Движения.НДСЗаписиКнигиПокупок.Записывать = Истина;
КонецПроцедуры
Таким образом, Вам гораздо проще будет обновлять конфигурацию, без риска затереть свои наработки.
С недавних пор, в расширении появилось возможность создавать собственные объекты метаданных. В версии 8.3.11 уже можно создавать собственные Справочники, Документы, Регистры Сведений… В нашем случае, мы не применяем данные возможности. Это связано с тем, что нашей конечной целью служит упрощение обновления конфигурации. Добавленные объекты не усложняют процесс обновления, поэтому мы не переносим их целиком как собственные объекты расширения. Кроме того, при удалении расширения, данные собственных объектов расширения теряются. Поэтому, по соображениям безопасности, мы не используем расширения данных и возможности 8.3.11+ версия платформы.
Мы предлагаем Вам самим оценить все удобства нашего сервиса! Мы открыты к Вашим конструктивным предложениям.
Перед отправкой файла конфигурации мы просим убедиться, что у Вас:
- Используется платформа не ниже 8.3.9
- Конфигурация находится на поддержке.
- Для конфигурации установлен режим совместимости платформы не ниже 8.3.9
- Версия конфигурации поставщика = версия основной конфигурации.
Причины купить
- Не вызывает привыкания
- Не зависит от степени сложности Ваших доработок
- Применяете один раз, пользуетесь постоянно.
- Избавляет от рутины
Достоинства
Сервис по созданию расширения конфигурации.
База обрабатывается только один раз, дальнейшие обновления базы делаются намного проще!
Имеется подробная инструкция.
Вот это поворот! А с выходом 8.3.11 так наверно и вовсе многие измененные конфигурации станут типовыми
Сами по себе не станут!
Огорчу или обрадую автора, но во всяком случае в Украине, программист не тратить много времени на обновление, так как их почти уже нет. За последние 2 года кроме бланка отчетности по НДС и прибыли, изменений собственно и нет.
А вообще новый механизм крут — это однозначно.
Только в некоторых конфах, особенно если было базу дорабатывали много разных программистов, может такой пирог получится, что расширения могут показаться очень спорным решением.
(3) А почему Вы рассматриваете только типовую бухгалтерскую конфигурацию?
Это все автоматом происходит? или Вы в ручную подготавливаете расширение ?
(5) Автоматически!
Единственное, мы пока вручную отслеживаем присланные конфигурации и запускаем формирование расширения!
(3)
А у нас так:
Зарплата и Управление Персоналом, редакция 3
Обновления
Номер версии Дата выхода Диск 1С:ИТС Обновление версии
3.1.3.273 24.10.17 3.1.3.224, 3.1.3.253, 3.1.2.444
3.1.2.444 23.10.17 3.1.2.397, 3.1.2.422
3.1.3.253 09.10.17 3.1.3.224, 3.1.2.422
3.1.2.422 06.10.17 3.1.2.397
3.1.3.224 19.09.17 октябрьский выпуск 2017 3.1.3.184, 3.1.3.223, 3.1.2.397
3.1.2.397 19.09.17 октябрьский выпуск 2017 3.1.2.364, 3.1.2.396
3.1.3.223 12.09.17 3.1.3.184, 3.1.2.396
3.1.2.396 08.09.17 3.1.2.364
3.1.3.184 30.08.17 сентябрьский выпуск 2017 3.1.3.136, 3.1.3.156, 3.1.3.157, 3.1.3.158, 3.1.2.364
3.1.2.364 29.08.17 сентябрьский выпуск 2017 3.1.2.294, 3.1.2.316, 3.1.2.342
Бухгалтерия предприятия КОРП, редакция 3.0
Обновления
Номер версии Дата выхода Диск 1С:ИТС Обновление версии
3.0.53.39 24.10.17 3.0.52.32, 3.0.52.35, 3.0.52.36, 3.0.52.39, 3.0.52.42, 3.0.53.35, 3.0.53.38
3.0.53.38 19.10.17 3.0.52.32, 3.0.52.35, 3.0.52.36, 3.0.52.39, 3.0.52.42, 3.0.53.34, 3.0.53.35
3.0.52.42 06.10.17 3.0.51.22, 3.0.51.25, 3.0.51.27, 3.0.52.32, 3.0.52.35, 3.0.52.36, 3.0.52.39, 2.0.66.39
3.0.52.39 29.09.17 Октябрь 3.0.51.21, 3.0.51.22, 3.0.51.25, 3.0.51.27, 3.0.52.32, 3.0.52.35, 3.0.52.36, 2.0.66.38
3.0.52.36 21.09.17 3.0.51.21, 3.0.51.22, 3.0.51.25, 3.0.51.27, 3.0.52.30, 3.0.52.32, 3.0.52.35, 2.0.66.37
3.0.52.35 15.09.17 3.0.51.21, 3.0.51.22, 3.0.51.25, 3.0.51.27, 3.0.52.29, 3.0.52.30, 3.0.52.32
3.0.52.32 05.09.17 3.0.51.20, 3.0.51.21, 3.0.51.22, 3.0.51.25, 3.0.51.27, 3.0.52.29, 3.0.52.30, 2.0.66.36
3.0.51.27 09.08.17 Сентябрь 3.0.51.12, 3.0.51.14, 3.0.51.16, 3.0.51.20, 3.0.51.21, 3.0.51.22, 3.0.51.25, 2.0.66.35
Здорово, легкий способ грести деньги. Но, только для управляемого приложения. На мой взгляд — решение пока слабовато как коммерческий продукт. Вот с выходом 8.3.11 — развернуться можно будет сильнее. А пока — ничего особенного.
Да, и по хорошему, нужно было бы делать ещё четыре вещи:
1. Создавать не просто «модифицированную конфигурацию» (хотя её тоже можно оставить) — а специальную «интеграционную конфигурацию» — всё то, что не вошло в расширения (версии 8.3.11 и старше), которую можно просто объединять с типовой/или грубо обновлённой (после проведения обновления) — чтобы восстановить доработки без потери данных.
2. Собственно, можно сделать отдельный сервис — для безопасного проведения такого рода объединения: на входе, например, «модифицированная конфигурация», «новая типовая конфигурация» и «интеграционная конфигурация» — на выходе объединение «модифицированная конфигурация» * «новая типовая конфигурация» * «интеграционная конфигурация» = новая «модифицированная конфигурация».
3. Сервис обновления интеграционных конфигураций и расширений — для внесения новых доработок из исходной «модифицированной конфигурации» и получение новой «модифицированной конфигурации».
4. Обязательно проработать механизм выделения интерфейсной части доработки управляемых форм, а так же, хотя бы табличных макетов — чтобы его так же можно было бы совмещаться (как исходные контейнеры или, хотя бы, с переносом изменений в программный код).
(8) Не переживайте! Сейчас бесплатно! Попробуйте!
(9)чутка дописал свой комментарий (8)
Вам нобелевскую от всех. Если это действительно так.
(8) Павел огромное спасибо! Хочу Вам более подробно рассказать про наши планы:
Это мы собираемся сделать в первую очередь, т.к. все доработки так или иначе касаются форм и макетов.
8.3.11 пока еще не вышла! 1с никогда так не тянула с выпуском платформы. Поэтому мы пока не используем расширение данных.
Работает для всех конфигураций, не только управляемых форм, при установленном режиме совместимости.
(11) Убедитесь лично.
(12)
дело не в управляемых формах, а том, что расширения работают только управляемом приложении. Или я что-то не понимаю?
(14)
расширения работают только управляемом приложении
Это не так!
Друзья! Нужны отзывы о работе. Напишите, кто воспользовался.
нифига себе
(17) Понравилось?
А если делались/менялись Подписки на события, они переносятся? В ограничениях про них ни слова. 🙁
Ага, сам разобрался, они останутся в модифицированной конфигурации. Все что не войдет в расширение, останется в модиф. конфигурации.
Платформа 8.3.9.2309. Есть перепиленная УТ 11.1.10.185, на поддержке в режиме «Редактируется с сохранением поддержки». Сейчас Режим совместимости стоит 8.3.5. Так вот: если я поменяю режим совместимости на 8.3.9, Ваш сервис возьмется за нее?
(19)
Да.
В Вашем вопросе я вижу две части:
Добавленные / измененные объекты метаданных. Подписка на события как пример
Измененные/добавленные объекты метаданных остаются , как есть, в Вашей текущей конфигурации.
Обработчик события
Если Вы изменили типовую процедуру обработки события, то в расширение попадает именно Ваш вариант этой процедуры, а в модифицированную конфигурацию, — типовой.Если Вы добавили собственную процедуру, то в она целиком переносится в расширение, а из модифицированной конфигурации — удаляется. Если Ваш обработчик находится в добавленном общем модуле, то все остается в модифицированной конфигурации без изменений.
Все верно.
А сколько такое удовольствие стоит?
(21) Бесплатно
Эх, где же вы раньше были, я уже почти все доработки перенес в расширения, по крайней мере, всё, что очень сильно увеличивало время обновления
(23) Долго вручную переносили?
(24)
Не особо.
Переносил, когда обновлял на следующий релиз.
Сначала при обновлении перенес в расширение изменения форм.
При следующем обновлении перенес в расширение роли.
(19)
(20)
Александр. Еще вопрос.
Когда я менял типовую конфигурацию, я раз 7 вручную обновлял свою конфигурацию (Kdiff3 в помощь), но на УТ 11.1.10.185 я в результате экспериментов «слил» (объединил) свои изменения с типовой конфигурацией. 🙂 И потом продолжал еще вносить свои изменения. Это слияние значительно усложнило процесс ручного обновления конфигурации, поэтому я больше не обновлялся — возможностей для работы хватало.
Вопрос, сможет ли Ваша система выделить «разницу» между конфигурациями, если часть из них «слита/объединена» в типовую, а часть — «ручное» изменение типовой.
Пробовать будем?
(26)
Как Вам это удалось?
Для сервиса никакой разницы нет, каким образом была изменена конфигурация, вручную или другим способом. Все, что отличается от типовой, — попадает в расширение. Возможно, если Вы не совсем удачно провели обновление, Вам нужно будет вручную исправить расширение. Конфигурация, же будет приближена к типовому варианту и будет проще обновляться. Хуже не будет.
Да
(27)
Как Вам это удалось?
Ставим Kdiff3, настраиваем 1С, далее при помощи Kdiff3 объединяем конфигураций (типовая «перепиленная» + новая типовая), решаем какие изменения перейдут в новую обновленную конфигурацию — это и свои изменения и изменения типовой конфигурации. Гемор, но удобнее чем стандартные средства. 🙂
(28) Здорово! Не знал про это.
(27)
Пробовать будем?
Да
Не сработала Ваша система. Вернее сработала, сейчас разбираюсь на сколько. Но точно не на 100%. Часть процедур и функций из чисто моих Общих модулей не перенеслась. Чисто моя подсистема не попала в CFE.
ВОЗМОЖНО:
1) Как я и опасался, изменения слитые с конфигурацией, воспринялись Вашей системой за типовую конфигурацию. Подозреваю, что Вы сравниваете «Конф. поставщика» и «Осн. конфигурацию» из присланного Вам файла. Но фишка в том, что «Конф. поставщика» в моем файле уже «некорректна» — она содержит мои изменения. Надо сравнивать мою конфигурацию и «Конф. поставщика», которая должна быть в отдельном файле. Могу прислать и мою конф. и оригинал «Конф. поставщика» двумя отдельными файлами.
2) Ваша система переносить должна ВСЕ добавленные процедуры и функции? Или только те, на которые есть ссылки в конфигурации? Тогда может не перенестись часть кода, которая используется во внешних формах/отчетах. В некоторых МОИХ модулях в CFE файле нет половины моих процедур/функций. 🙁 Причем некоторые используются в конфигурации. Думаю все-таки п.1.
Пробуем два файла по п.1?
вещь хорошая, но один недостаток есть… владелец сервиса будет бесплатно формировать базу наработок сделанных массой спецов и франей.
хотя для владельца это побочная или основная цель — не тратить кучу времени на доработки, а брать их из сервиса)
(30) Мы попробуем отдельно рассмотреть Ваш случай!
Да.
Нет. Обрабатывается только то, что есть в конфигурации поставщика. Если Вы сами добавили отчет, обработку, документ… , эти изменения игнорируются,т.к. на обновление они не влияют.
(31)
Не факт. Чтобы разобраться без инструкции что делает чужая конфигурация надо не одну бэтль водки выпить. Проще какой то нужный функционал самому написать.:) Я иногда начинаю через полгода «усовершенствовать» некоторые свои процедуры, и программа перестает работать. 🙂 Потом полдня трачу, чтобы разобраться, и понимаю, не надо было лезть со своими усовершенствованиями.
И-нет переполнен открытыми решениями на 1С. И в самих типовых конфигурациях полно всяких алгоритмов. Смысл тупо собирать неизвестные конфигурации, если можно поискать что-то конкретное в и-нете?
Обновил публикацию, добавил пример.
судя по примеру, потом так же придется отслеживать на изменения в Процедура СформироватьДвиженияНДСЗаписиКнигиПокупокПолученныйАванс.
А если это сильно переписана конфигурация, то сомнительное удовольствие.
Так на мой взгляд, проще сейчас переносить в расширения элементы формы, сам модуль формы оставлять, тогда при обновление в сравнение конфигураций можно будет понять что изменилось
(35)
В этом модуле 182 процедуры и 168 функций. Изменены только две из них. Одних только общих модулей около 200 штук.И это далеко не самая сложная конфигурация. Намного проще локализовать все изменения в расширении и держать модифицированный код именно там. Плюсов больше.
К сожалению, сейчас невозможно стандартными средствами сравнить модифицированную версию метода модуля с типовым вариантом. Будем ждать реализации такого сравнения от 1С.
(28)
По-моему, это всё и в стандартных средствах есть: там же есть настройка объединения.
а 1с за загрузку типовых конфигураций на непонятные сервисы разве не наказывает?
(38)
А за выгрузку конфигурации на гитхаб 1с тоже должна наказывать?
Тоже «непонятный сервис» как Вы выразились.
(39) я этот момент не сильно знаю, поэтому и решил спросить, как 1с на это смотрит)
(36)
Так я про то, вам все равно придется сравнивать ту процедуру что вы изменили с оригинальной. А если таких не одна, а сотни
При изменение модуля плюс в том, что если он не меняется в обновление, при сравнение его можно пропустить. Вам же придется все время это отслеживать.
В общем кому, что удобнее… для разных примеров — разные подходы
А не хотите сделать вариант ИсходнаяКонфигурация + ИмеющиесяРасширения = МодифицированнаяКонфигурация + РасширениеКонфигурации ?
(42) Да, но не в первую очередь.
Сначала обработку измененных форм и макетов хотим сделать.
(36)
При условии что это не будет глючить. Но с учетом функционала расширений, остается пока только править непосредственно конфигурацию.
(9) Александр, сейчас сервис что бесплатно работает ?
(45) Бесплатно
А если есть очень сильно модифицированная, снятая полностью с поддержки, конфигурация УТ 11.1, в которой почти все виды объектов модифицированы — типы реквизитов, модули объектов, модули менеджеров, макеты, подписки, модуль сеанса. Вобщем все что только может быть изменено — изменено.
Имеет смысл пробовать ваше решение с такой конфой?
(47) Если снята с поддержки, то нет. Имеет смысл, если поставите конфигурацию на поддержку. В расширение добавляется только то, что пересекается с конфигурацией поставщика.
Интересная система, возьму на вооружение. Спасибо
А если на форму встроен новый реквизит например суффикс документа, добавлены переменные, изменена пара процедур и добавлена пара своих? Поправлено формирование бух баланса из за добавления нового счета.
Сможет ли в данном случае помочь данное решение?
(50) Обработки форм пока нет 🙁
что-то ваш сайт не открывается(
http://www.hostadm.su/
(52) Спасибо за информацию.
(52) Работает!
Александр, здравствуйте! Не подскажете, в течении какого времени происходит ответ от сервиса? Переживаю, может email с ошибкой указал…
Сервис сэкономил очень много сил и времени, спасибо огромное!!!
Расширение хороши только если надо флажок добавить на форму…Если надо скажем сделать запрос в расширении, то надо публиковать в расширении по очереди все объекты метаданных по которым этот запрос работает. А если захотим еще взять реквизиты этих объектов через точку, то и их тоже. Копировать тексты запросов в расширение из конфигурации тоже проблема ибо в конфе все работает, в расширении нет. Синтаксис-контроль расширения ругани не дает.. Причина та же. В расширении нет объекта по которым работает запрос.
Для серьезных доработок не подходит…Проще свои процедуры группировать в тексте конфигурации внутри областей программного кода и писать к ним комментарии…Для себя любимого и для потомков
>> До недавнего времени, не существовало способа разделить конфигурацию на постоянную и обновляемую части
«Не верю!» (с)
Всё уже давно решается на подписках, методологических рекомендациях и внешних отчётах и обработках. Да, я говорю про базы, где приходилось менять всё. Абсолютно всё.
Хотел проверить сервис, но сайт не доступен(
(59) Работает
Привет, Сайт не работает,
Есть ли возможность развернуть ресурс на другом сервере?
Заработало. Был временный сбой.
(61) Спасибо.
У меня файл cf — 700 мб — боюсь не влезет на сайт