Один способ вносить изменения в типовую конфигурацию без проблем с обновлением

Публикация № 70005 08.05.10

Администрирование БД - Обновление 1С

В жизни любого 1С-программиста часто возникает необходимость доработки типовой конфигурации под нужды конкретного клиента. Иногда изменения небольшие, иногда существенные. Но в любом случае за изменениями следует наказание в виде утраты совместимости с оригинальной конфигурацией и последующей головной болью при обновлении.
В статье описан один способ избежать тяжелых merge-ей.

Думаю, что все оказывались в ситуации когда поставщик оригинальной конфигурации выпускал новую версию, а в вашей конфигурации собралось такое количество изменений, что проще было не обновляться или продать душу дьяволу или пусть это делает кто-нибудь еще, только бы не заниматься опять этим ужасным merge-ем. Что же делать? Не вносить правки? А если это необходимо и без "этой новой фичи" все "совсем развалится и непонятно как бизнес до сих пор работает без нее"? Выход (или во всяком случае направление на него) есть. Вносить правки осторожно и обдумано. Есть множество советов по добавлению правок и множество статей о том, какие виды изменений наименее болезненны, поэтом приводить их здесь я не буду. Рассмотрим лишь один небольшой вопрос: проведение документов и собственная аналитика, которую нужно добавить.

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

Скачать выгрузку демо-базы можно в приложеном файле: begining.dt

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

Что же делать дальше? Обычный путь правок предполагает, что нужно добавить реквизит "ргРегион" в документ "Расход" и сделать отчет собирающий данные из регистра и документа. Однако это не оптимальный по производительности способ и лучше было бы в регистр "Продажи" добавить еще одно измерение. Главное же неудобство состоит в том, что придется менять форму документа и вмешиваться в его модуль, изменяя функцию "ОбработкаПроведения" так, чтобы в новое измерение подставлялось значение из реквизита документа. Форма и модуль могут принести немало "радостных" минут в процессе обновления.

Какой же выход? Выход есть - подписка на события. Это прекрасная технология, появившаяся в 8-й платформе, очень нам поможет.

Итак, добавим измерение "ргРегион" типа "Справочник.ргРегионы" в регистр "Продажи". Это не сильно нам помешает при обновлении, так как обычно регистры меняются редко и даже если и меняются, то нужно просто следить за тем, чтобы наше измерение не исчезло.

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

Добавим в систему документ "ргРасход". Добавим в него такой же набор реквизитов, как в документе "Расход" и сделаем необходимую форму. Так же добавим в него реквизит "Регион" и разместим его на форме.

А теперь скопируем весь модуль проведения из документа "Расход" в "ргРасход". Шутка! =) Сделай мы так и все потеряло бы смысл. Нам все равно пришлось бы вносить множество изменений в "ргРасход" при обновлении. Мы пойдем другим путем.

Добавим в конфигурацию регистр сведений "ргСвязиДокументов" с двумя измерениями: "ДокументВладелец" и "Документ". Оба измерения - типа "ДокументСсылка". Пусть он у нас будет непериодический и подчиненный регистратору. В качестве регистратора укажите пока документ "ргРасход". Так же добавьте общий модуль с названием "ргРегионы" и сделайте его серверным. Пригодится.

Обработка проведения документа "ргРасход" должна делать вот что:

  1. Создавать новый документ "Расход" и заполнять его так же, как и текущий "ргРасход" (кроме реквизита "Регион" и реквизита "Номер", естественно)
  2. Добавлять запись в регистр "ргСвязиДокументов", где в "ДокументВладелец" записывать ссылку на текущий документ "ргРасход", а в измерение "Документ" ссылку на вновь созданный документ "Расход". Важно, что тут нужно сразу записать движение в регистр, а не ждать конца процедуры обработки проведения.
  3. Проводить вновь созданный документ "Расход".

При отмене проведения документа "ргРасход" пусть происходят следующие действия:

  1. Из регистра "ргСвязиДокументов" выбираются запросом все документы "Расход", которые относятся к нашему документу "ргРасход"
  2. Найденные документы удаляются. (На самом деле тут должно быть не удаление, а пометка на удаление для сохранения ссылочной целостности, но не будем усложнять пример).

Таким образом, мы получили следующую картину: при проведении документа "ргРасход" на самом деле создается документ "Расход", который делает движения в нужных регистрах, а при отмене проведения документа "ргРасход" документ "Расход" удаляется.

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

Добавим подписку на событие с именем "ргПроведение". Объект - документ "Расход", событие - "ОбработкаПроведения" и обработчик из нашего общего модуля "ргРегионы".

Функция-обработчик события должна выглядеть так:

Процедура ргПроведениеОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
ТекстЗапроса=
"ВЫБРАТЬ
| ргСвязиДокументов.ДокументВладелец,
| ргСвязиДокументов.Документ
|ИЗ
| РегистрСведений.ргСвязиДокументов КАК ргСвязиДокументов
|ГДЕ
| ргСвязиДокументов.Документ = &ПроводимыйДокумент"
;
Запрос=Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ПроводимыйДокумент",Источник.Ссылка);

Рез=Запрос.Выполнить();
Если
Рез=Неопределено Тогда
Сообщить("Не выполнен запрос!");
Отказ=Истина; Возврат;
КонецЕсли;
Если не
Рез.Пустой() Тогда
ДокументВладелец=Рез.Выгрузить()[0].ДокументВладелец;

Если
ТипЗнч(Источник)=Тип("ДокументОбъект.Расход") Тогда
Источник.Движения.Продажи[0].ргРегион=ДокументВладелец.Регион;
КонецЕсли;
КонецЕсли;

КонецПроцедуры

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

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

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

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

Удалять автоматически создаваемые документы, при отмене проведения документа "владельца" не самое хорошее решение. Так как те в свою очередь могут иметь подчиненные документы или на них могут быть ссылки. При работе с реальной конфигурацией обязательно учитывайте это.

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

Посмотреть что получилось можно в файле final-1.dt

Есть другой способ, лишенный перечисленных выше недостатков. Я называю его "Документ-обертка".

Его суть заключается в том, что в документе "ргРасход" мы не дублируем документ "Расход". Документ "ргРасход" содержит в себе только реквизит "Регион" и ссылку на документ "Расход". На самой форме документа нужно сделать кнопку "Создать "Расход" по нажатию на которою создавался бы новый документ "Расход" ссылка на который хранилась бы в реквизите документа "ргРасход" и добавлялась бы запись в регистр сведений "ргСвязиДокументов". В остальном логика работы остается прежней, кроме того, что проверка на изменение документа "Расход" не нужна и в модуле проведения документа "ргРасход" не нужны никакие действия.

Итак, вкратце. У нас есть документ-обертка "ргРасход" из которого мы открываем тот документ, который должен быть дополнен нашей аналитикой. Значения наших измерений заполняется в документе-обертке, остальное заполняется в оригинальном документе, который работает как обычно: проводится, редактируется, удаляется и т.д.

Этот способ лишен недостатков способа "Копирование документа", однако у него есть другой недостаток. Пользователю придется выполнять лишнее действие по открытию документа-обертки.

Возможно, если хранить ссылки на оригинальные документы в табличной части документа-обертки и представить, будто документ-обертка это журнал, то это упростит интерфейс, но усложнит разработку. В этом направлении при желании можно поработать.

Посмотреть что получилось можно в файле final-2.dt

Конечно, все эти ухищрения будут приводить к потере производительности, но как известно за все надо платить.

 

UPD.: В комментариях привели много действительно хороших способов для решения этой же задачи для одного реквизита и для нескольких. И я хочу поблагодарить всех, кто делился своими решениями. А так же попросить прощения за слишком "лабораторный" пример. Действительно этот способ больше подходит для ситуаций, когда, например:

нужен был аналог "поступления товаров" и "расходной накладной" НО со своими табличными частями, кучей доп. реквизитов, + движения по 5 НОВЫМ опер. регистрам

Просто я выбросил все, что можно, чтобы прозрачно описать саму суть способа.

 

Всем спасибо и хорошего вам кода.

Оригинал статьи в блоге автора

Скачать файлы

Наименование Файл Версия Размер
Примеры баз

.zip 187,23Kb
230
.zip 187,23Kb 230 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Aleksey_3 09.05.10 01:23 Сейчас в теме
Никогда не любил когда из одного документ проводиться другой. Обязательно нарвется на транзакцию или еще что-то, что приведет к тому что один документ отличается от другого.

А по поводу регионов ... к примеру в БП 2.0 появился механизм дополнительных реквизитов, который прекрасно вписывается в типовые отчеты и позволяет пользователю отбирать по этим реквизитам
pm74; Spartan; RailMen; charushkin; RustIG; Craig; zfilin; +7 Ответить
2. iov 407 09.05.10 01:49 Сейчас в теме
Встречал решение с использованием "свойств документов" соответственно отчеты строились дольше но при обновлениях проблем не было...
Но как говорится каждое решение имеет место быть..
charushkin; zfilin; +2 Ответить
3. wirg 09.05.10 10:39 Сейчас в теме
как обычно, автор не учел категорий и свойств, на крайняк можно из регистратора всё взять и ничего особенно не менять.
4. zfilin 2308 09.05.10 15:07 Сейчас в теме
Спасибо вам за комментарии!
Вы, конечно, правы про категории и свойства и про проведение документа. Но, как сказал уважемый iov, решений может множество. Все зависит от конкретной ситуации.
5. DoctorRoza 09.05.10 15:47 Сейчас в теме
Согласен с Aleksey_3 по поводу работы с транзакциями и блокировками. Это основные, подводные камени, которые следует учитывать при работе в клиент-серверном режиме. Предложенное автором увеличивает объем базы, но решает проблему обновления, в первом приближении. Наибольший интерес вызывает применение данного метода к 8.2! Тут уже придется учесть еще и применение директив компиляции у процедур и функций!
P.s. Идея, в принципе не нова, но за понятное, общее объяснение принципа плюсану! ))
6. SergeyT2006 12.05.10 02:22 Сейчас в теме
Для 8.0 не подходит, ибо нет там механизма подписки
7. Craig 273 12.05.10 08:07 Сейчас в теме
ХМ... возможно вы меня раскритикуете, но не проще было бы создать Справочник.Регион. с реквизитами типа "Регион" и "Ссылка на документ". И добавить во вкладку ввод на основании. Где сразу же создается новая форма, пользователь может спокойной внести необходимые сведенья, нажмет сохранить и вот оно щастье. И выдернуть будет легко для отчета, сильно система не будет нагружена и самое главное обновить не составит особого труда... Ах да с транзакцией проблем не будет, да и по времени программирование по моему способу займет гораздо меньше.
Сергей Осипенко; AlX0id; annak2980; RailMen; fly07; zfilin; +6 Ответить
8. zfilin 2308 12.05.10 09:50 Сейчас в теме
DoctorRoza: Спасибо!
SergeyT2006: Спасибо, подредактирую тэги.
Craig: Я уже заметил что пример слишком простой. Может быть нужно было описывать две дополнительные аналитики одновременно или ввести дополнительные ограничения, которые бываю (например, когда документ-обертка должен делать ЕЩЕ и свои движения). Но зато такое мое упрощение примера натолкнуло меня на новые мысли благодаря вашим комментариям.
9. KRIHA 100 12.05.10 10:12 Сейчас в теме
а еще полезно общие модули копировать :), из которых вызываются процедуры и функции документа "обертки" ), а то как обновиццо конфига - общие модули перемелятся в труху, функции и процедуры поменяют место жительства и "ФИО" и все - играла волына и доигралась :) - не будет работать документ "обертка", а ты к тому времени (по заявкам телезрителей) - накрутил много много фенечек и терять все это жалко.
MaraPera; ovv; +2 Ответить
10. o.nikolaev 12.05.10 22:41 Сейчас в теме
Вообще, если бы в 8-ку добавили понятие "Модуль" такое же как понятие "Форма", то все было бы гораздо проще. Имеем: Форма - ОсновнойМодульФормы, дополнительные модули формы, Документ - ОсновнойМодульДокумента, дополнительные модули документа, тогда все изменения сводились бы к тому что основные модули отцеплялись и основными делались бы добавляемые модули. Т.е. грубо говоря нужно в платформу добавить понятие "МодульОбъекта" и иметь возможность работать с ним так же как сейчас с формами. Надеюсь понятно объяснил :)
И тогда почти все проблемы с merge будут решены, ибо с формами - создаем новую форму, делаем ее основной, с проведениями - создаем новый модуль - делаем его основным модулем объекта, с реквизитами - смело добавляем с префиксами и т.п. Все будет обновляться. не забыть только перецепить обратно основные объекты. А все эти ухищрения (подписки, дубли документов - от лукавого, все должно быть просто, желательно - на уровне платформы). Из всего опубликованного на эту тему сне больше всего понравилось описание подхода внесения изменений с помощью свойств объектов.
annak2980; +1 Ответить
11. tango 496 13.05.10 02:09 Сейчас в теме
чёта туплю я. зачем обновляться, если потом "перецеплять обратно основные объекты"?
12. zfilin 2308 13.05.10 10:17 Сейчас в теме
Обновляться потому, что основной разработчик тоже модернизирует конфигурацию и вносит полезные правки. Вот и получается, что нужно обновить все что в конфе "родное", но при этом не поломать "свое".
17. tango 496 14.05.10 16:56 Сейчас в теме
(12) ок. "полезные" изменения 1с - там, где "перецепляем" или где-то в другом объекте?
Если там же, то по-любасику надо адекватно изменять свое. Если в стороне - то и обновляем только это. Что пропустил?
13. alexk-is 6566 13.05.10 11:03 Сейчас в теме
(0) Можно не создавать дополнительный документ, а добавить только реквизит и форму в существующий документ. Проблем с обновлением быть не должно, если знаешь как обновлять.

Текст модуля в публикации можно раскрасить получше. :)
14. zfilin 2308 13.05.10 12:29 Сейчас в теме
Спасибо, отлично раскрашивает. =)
И статья об обновлении хорошая.
15. sss999 49 13.05.10 13:07 Сейчас в теме
много плюсов наставили,интересно а пользоваться кто нибудь будет методом,по сложности выглядит не проще чем добавить строчку движения для дополнительного измерения,а 10) вообще сам для себя написал свою идею.
16. ups9999 14.05.10 15:34 Сейчас в теме
Гы. Добавляем реквизиты объекту. Переопределяем "ПередОткрытием" динамически добавляем реквизиты на форму. Подписка обеспечит нужное проведение. Все имения кода это 3 добавленные в модуль строчки. Их полагаю любой может перенести при обновлении ;)
18. mus2008 15.05.10 08:52 Сейчас в теме
Жуть. Может пример неудачный приведен? Дублировать документы из за реквизита? Если уж на то пошло, проще создать регистр сведений и посредством его увязать контрагентов и регионы. Это самый простой вариант. Второй, чуть более сложный - свойства сделать у контрагента. В бухгалтерии этого нет, но привязывается легко. В крупных конфах это уже есть. Но тогда:
База не пухнет необоснованно (я считаю, что в данном случае это именно так).
Быстродействие не падает (сам недавно сидел из конфы по капельке скорость выкручивал, это более геморройно, чем обновление - а тут такая торпеда самому себе...). Транзакции, блокировки да, это тоже не сахар.
И восстановление последовательности, особенно накрученное, когда .Восстановить() не прокатывает. Там вообще че-то малопредставимое будет...
annak2980; +1 Ответить
19. FormatC 69 17.05.10 10:30 Сейчас в теме
Замечу, что иногда в типовых конфигурациях некоторые отчеты работают с привязкой к конкретному виду документа. Например, в КА отчеты по заказам и резервированию. И данный способ не прокатит.
20. zfilin 2308 17.05.10 11:44 Сейчас в теме
FormatC: Да, ну, так ведь фишка именно в том, что движения делает именно родной документ.
А отчеты, которые будут учитывать и дополнительную аналитику все-равно писать самому.
21. zfilin 2308 17.05.10 11:45 Сейчас в теме
tango: Ну, да. Об этом и статья.
22. PopAndr 18.05.10 10:12 Сейчас в теме
Статья затрагивает очень актуальную тему, но вариант решения, по-моему, слишком затратный - создавать специальную сущность (ссылочный объект) только ради того, чтобы заполнить дополнительный реквизит регистра накладно не столько с точки зрения размера базы, сколько из-за разрушения логической структуры информационной системы. Представляете, во что превратится конфигурация при использовании данного подхода при значительных изменениях в регистрах и функционале. Тем более что в приведенном примере достаточно иметь:
1. Регистр сведений, который позволяет хранить значение нужного реквизита документа.
2. Новая форма стандартного документа, в которую добавлено поле редактирования записи регистра сведений. При этом нет необходимости делать его с привязкой к регистратору, достаточно сделать измерение регистра по документу ведущим.
3. В подписке на событие проведения стандартного документа обеспечить заполнение дополнительного измерения из записи регистра сведений, которая соответствует проводимому документу
Xytras; pavgranit; oaf_is; Altez; RailMen; +5 Ответить
23. Арчибальд 2704 18.05.10 10:17 Сейчас в теме
Решение спорно. Но изложено внятно, а предмет статьи актуален. Ergo, плюс.
24. RailMen 18.05.10 18:21 Сейчас в теме
Комменты не менее ценные чем самастатья ;)
25. I_G_O_R 69 20.05.10 00:13 Сейчас в теме
регистры, дополнительные формы, дополнительные документы....
а про пользователя и не подумали: будет ли ему удобно так работать?
26. zfilin 2308 20.05.10 10:20 Сейчас в теме
I_G_O_R: Подумал - неудобно. О чем и писал. А на самом деле все зависит от реализации, порой пользователю оказываются удобны самые неожиданные вещи. =)
27. flagman 24.05.10 08:41 Сейчас в теме
статья писалась не для внесения одного реквизита. Сам делал практически тоже самое: нужен был аналог "поступления товаров" и "расходной накладной" НО со своими табличными частями, кучей доп. реквизитов, + движения по 5 НОВЫМ опер. регистрам.

отличие от статьи только в том, что на типовой документ, кот. создан автоматически накладывался ПОЛНЫЙ запрет на изменение (контролировалось по тому же самому регистру сведений). Т.е. все изменения только ч/з новый документ.
Основная беда - потеря скорости проведения документов (за счет необходимости синхронизации). Но расхождений данных нет
28. gusinea 319 24.05.10 12:22 Сейчас в теме
Согласен с "PopAndr" можно сделать доп. форму в том же документе, назначить её ОСНОВНОЙ, а при обновлении максимум что случится - слетит эта настройка(поправляется в течении неск. секуд). Зато отпадает надобность в синхронизации документов
29. aegoncharov 27.05.10 05:36 Сейчас в теме
Это же так называемая методика "мегадокументов". Позволяет создать прослойку между пользователем и типовым функционалом.
4 основные проблемы:
1. Длинные транзакции при записи
2. Более быстрый рост базы
3. При обновлении все равно приходится поверять работоспособность мегадокумента. из-за изменений общих модулей, но это не сложно.
4. Усложняется настройка обмена в распределенных базах.

С проблемой №1 наверное буду бороться, реализовав "отложенное создание" подчиненных документов.
30. Lancelot-2M 114 17.08.10 16:38 Сейчас в теме
Для одного дочернего документа реквизита хватит, а вот для цепочки регистр сведений в самый раз - респект и уважуха автору)))
31. zhleonid8 28.01.12 23:11 Сейчас в теме
эту статью нужно в первый день работы програмисту дать
32. zhleonid8 28.01.12 23:12 Сейчас в теме
а то по очереди исправляют, а обновлять потом не возможно:)
33. zfilin 2308 28.01.12 23:39 Сейчас в теме
Ну, я бы в первый день не советовал. Потому-что в классическом понимании это все-таки "чесать левое ухо левой рукой через голову". Скорее это подойдет для отчаявшихся людей, которые устали тратить все время своей жизни на то, чтобы беспрестанно сверять конфигурации и ползать по-коду в поиске различий, но хотят что-то в жизни поменять.

В общем, тут нужен баланс между "не трогать как есть" и "добавить немного", понимание ситуации, ну и включение мозга в целом. А-то дашь новичку такую статью, а он ради одного реквизита целую подсистему наворотит. И хрен разберешься потом.

Но с тем, что "а то по очереди исправляют, а обновлять потом не возможно" согласен. Достали до невозможности. =)
34. zfilin 2308 28.01.12 23:41 Сейчас в теме
Да, и кстати, это все в конечном итоге упирается в "золото разработки", такое как "изоляция кода", "декларирование интерфейсов" и прочее. Эх, когда уже заживем по-человечески?!... =)
35. zhleonid8 20.06.12 03:33 Сейчас в теме
в результате 2 летней работы в 8 понятно, лучше не изменять код а решать штатными средствами
36. zfilin 2308 20.06.12 10:15 Сейчас в теме
Ага. Самый лучший способ разработки - ничего не разрабатывать.
Но, увы в результате той же двухлетней работы понятно, что заказчик никогда не доволен типовыми решениями.
37. пользователь 20.06.12 11:09
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

Методика упрощения поддержки конфигураций. Переопределение и вызов обработчиков событий для УФ 1С 8.2-8.3 Промо

Универсальные функции Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Управляемые формы Управляемые формы Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Каждый программист 1С хотя бы раз задумывался над тем, как уменьшить в разы трудозатраты на обновления переписанных конфигураций. Как не забыть добавить некий код, команду, кнопку в форму типовой конфигурации, изменить стандартный обработчик события формы – этот список можно продолжать до бесконечности. В этой статье изложен метод для управляемых форм, который позволяет реализовать эту возможность.

1 стартмани

10.02.2013    63805    115    pbazeliuk    40    

Автоматизация обновления до последнего релиза

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Это механизм, который автоматически обновляет базы 1С до последнего релиза, при разработке в 1С:Enterprise Development Tools c использованием распределённой системы управления версиями GIT.

1 стартмани

28.10.2022    1441    1    Knup    0    

Автоматическое обновление конфигурации (регламентное задание) для серверных решений

Обновление 1С Инструменты администратора БД Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Абонемент ($m) Абонемент ($m)

Фоновое задание (внешняя обработка) для автоматического обновления конфигурации: при передаче изменений конфигурации и данных от центральной базы на узел РИБ с последовательным обновлением конфигурации и данных на узле и для "НЕ РИБ" баз по такому же принципу. Выполняется запуском скриптов в пакетном режиме.

1 стартмани

28.09.2022    1535    1    FoxesStyle    0    

Зацикливается обработчик документов сверки взаиморасчетов при обновлении с 2.5.8.232 на 2.5.8.240(245)

Обновление 1С Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Управление торговлей 11 1С:Управление торговлей 11 Россия Россия Абонемент ($m) Абонемент ($m)

Зацикливается обработчик документов сверки взаиморасчетов при обновлении с 2.5.8.232 на 2.5.8.240(245), платформа 8.3.19.1522. Установка исправления EF_00_00467553 от 1С не помогает.

1 стартмани

30.08.2022    1366    5    Wildcat55    0    

Модуль проверки обновлений для собственной конфигурации Промо

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

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

1 стартмани

23.11.2012    12803    29    Mogidin    1    

Быстрое обновление базы 1С из XML-файлов конфигурации (EDT-GIT)

DevOps и автоматизация разработки EDT Обновление 1С Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Быстрое обновление конфигурации и базы данных 1С, вместо долгого обновления из EDT (1C:Enterprise Development Tools) при использовании хранилища GIT. Непосредственное обновлении базы на сервере баз данных (минуя сервер 1С) из XML-файлов конфигурации при помощи утилиты автономного сервера 1С - ibcmd.

1 стартмани

13.07.2022    6090    4    Bitnikov    19    

Удаление патчей из конфигурации

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Иногда патчи от 1С мешают обновлению, разработке а руками удалять лень. Данная обработка работает так: через меню Файл - Открыть открывается обработка, которая удаляет - расширения (только патчи).

1 стартмани

28.04.2022    2231    7    ptkrzy    7    

Сравнение ячеек (1.0.0.4) Промо

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

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

1 стартмани

15.12.2008    38055    1664    alexk-is    28    

Сценарий обновления платформы 1С:Предприятие 8 для deb-based ОС Linux

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Абонемент ($m) Абонемент ($m)

Сценарий обновления платформы 1С:Предприятие 8 для deb-based ОС Linux для реализации простого способа обновления из установочных файлов формата производителя.

1 стартмани

10.03.2022    2209    1    masterb    0    

Пакетное обновление информационных баз (типовые конфигурации)

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Решение для пакетного обновления всех типовых баз на базе БСП (библиотеки стандартных подсистем). Скрипт написан на Python, вызывается через cmd файл с аргументом. Предназначено только для работы с сервером 1С:Предприятие. Для работы необходимо установить Python не ниже 3 версии.

1 стартмани

04.03.2022    2280    8    idm80    6    

Блокировка работы пользователей

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Расширение для типового механизма блокировки пользователей БСП.

1 стартмани

24.02.2022    2014    2    7OH    4    

"Обновление через копию" - как это использовать?

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Абонемент ($m) Абонемент ($m)

Описание того, как использовать "Обновление через копию" для крупных баз данных типа 1С:ERP.

1 стартмани

26.12.2021    10162    23    Brawler    43    

Обновление нетиповой конфигурации с приведением к типовой и выносом всех доработок в расширение. Часть/Способ №1

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 8.3.14 8.3.14 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

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

1 стартмани

10.03.2021    7746    8    cloud666    19    

Блокировка пользователей БД + Рассылка

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Блокировка работы пользователей с рассылкой на указанные e-mail.

1 стартмани

26.10.2018    9137    2    bes_d    0    

Органайзер обновления конфигураций 1С

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Абонемент ($m) Абонемент ($m)

Всем, кто забывает/не успевает/забивает следить за выходами релизов конфигураций - данная конфигурация пригодится.

1 стартмани

09.12.2015    14156    25    nbeliaev    17    

Клиентское приложение (тонкий и толстый клиент) для Калькулятора релизов 1С

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Обработка для работы с бесплатным сервисом IT-Решение: Калькулятор релизов 1С. Возможности: - расчет количества обновлений с текущей версии до требуемой - определение планового времени процедуры обновления - подсчет плановой стоимости обновления

1 стартмани

08.09.2013    16836    6    bpc222    5    

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

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

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

1 стартмани

10.04.2013    20421    47    mwoleg    8    

Изменение типовых Конфигураций с последующим обновлением.

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

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

1 стартмани

24.11.2012    12336    35    rar_xxx    12    

Осторожно: обновление ЗУП 2.5.52.*

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и Управление Персоналом 2.5 Россия Россия Абонемент ($m) Абонемент ($m)

Наверное почти все, кто как-то связан с ЗУП столкнулись мягко сказать кривоватым обновлением 2.5.52.2. Про 2.5.52.1 вообще речи не идет, официальный ответ 1С: "восстанавливайте из копии которую сделали перед обновлением".

1 стартмани

21.06.2012    15319    33    Zero_nv    30    

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

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Данная конфигурация предназначена для автоматизации процесса внесения изменений в тексты модулей типовых конфигураций 1С после проведения очередного обновления.

1 стартмани

19.09.2011    12678    111    s.sintsov    7    

Обновление КЛАДР в информационной базе

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

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

1 стартмани

19.05.2010    19816    47    tomvlad    1