Наверное, не открою Америки, если скажу, что большую часть своего времени программист 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
- Версия конфигурации поставщика = версия основной конфигурации.