Типовая БУХа + свои доработки: подружил через расширение и спокойно обновил

27.01.26

База данных - Обновление 1С

Вы когда-нибудь обновляли старую доработанную типовую конфигурацию, доработанную на коленке? Или может вы сами хотите обновить у себя типовую, но боитесь грядущих сложностей? Рассказываю, как я типовую Бухгалтерию с самописной, сделанной "бизнесом" подсистемой обновлял. Надеюсь, мой опыт вам поможет.
Мда, затянул я что-то с написанием этой статьи… Уже год прошёл, а я только на зимних праздниках нашёл время. Ну что ж, лучше поздно, чем никогда. Тем более, сейчас я посвободнее, да и сил больше.


Предыстория: как клиент ко мне пришёл

Осенью 2024 года я выпустил расширение для Бухгалтерии, которое позволяло на старых релизах печатать актуальную форму УПД без обновления конфигурации. После публикации мне стали писать люди с похожей болью: “релиз старый, обновляться страшно/муторно, но жить дальше так нельзя”.

Один из них Юрий — предприниматель с небольшим логистическим бизнесом. Несколько лет назад он уже обновлялся вручную “через боль” и повторять не хотел. Но обновилась форма УПД, впереди маячили возможные другие законодательные инициативы

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

 

Вводные проекта

Ситуация классическая: небольшой бизнес, файловая 1С:Бухгалтерия, база размером меньше 30 ГБ. Внутри конфигурации за несколько лет накопились доработки — владелец сам(не будучи профессиональным 1С-разработчиком, по видеокурсам) дописал себе мини-подсистему под свои бизнес-процессы. Разумеется, местами безжалостно правились типовые объекты/формы.

Параллельно работал обмен с двумя базами бухгалтеров на КД2.

Обновление откладывали не из-за “страшно”, а из-за комбинации факторов:

  • самописка внутри конфигурации → любое сравнение/объединение превращается в ручной разбор, долгий и опсный;
  • обмены → риск “починил одно — сломал цепочку”;
  • на горизонте накопились изменения типовой БП, из-за которых тянуть дальше стало невозможно
  • обновляться самостоятельно просто дороже.

Цель проекта в одном предложении:

«Чтобы было хорошо, и всё работало как раньше»,

а задача соответственно:

обновить БП с 3.0.103.21 до последней актуальной(на момент обновления непосредственно релиз 3.0.173.31) так, чтобы самописный блок остался рабочим, данные не потерялись, а КД2-обмен с бухгалтерами продолжил работать.


Почему “вынести код в расширение” — это только половина работы

Переезд в расширение начинающие программисты 1С обычно воспринимают как задачу про код: “перенёс модули/формы/код — готово”. На практике самое рискованное место — данные и связи, которые годами жили в реквизитах/табличных частях/регистрах “самописного блока”.

Если код переехал, а данные переехали криво — внешне “всё запускается”, но бизнес-процессы начинают тихо ломаться через неделю (или после первого обмена).

Поэтому я сразу строил проект вокруг связки:

копия → отладка → контрольные проверки → повтор на боевой в согласованное окно → контрольные проверки.


План работ (как я его раскладывал по этапам)

  1. Инвентаризация доработок на текущем релизе: что менялось, где зависимостей больше всего, какие объекты точно придётся переносить в расширение.
    Это то, что люди часто не делают – и зря.
  2. Вынос самописного блока в расширение на исходной версии клиента (ещё до обновления).
    Не забывайте, что если доработки не задокументированы, то часть из них могут работать совсем не так, как вам заявляют. Мне пришлось потратить дополнительное время на то, чтобы вникнуть в код и в то, что он на самом деле делает. И это нормально: человеческая память не совершенна, мы все иногда что-то забываем.
  3. Перенос данных из объектов конфигурации в объекты расширения (отдельный этап).
    Здесь, как и всегда, важно помнить: то, что «должно» работать из коробки, на деле не всегда работает.
  4. Обновление типовой БП 3.0.103.21 → 3.0.173.31.
  5. Адаптация расширения под новый релиз.
  6. Обновление баз у бухгалтеров до аналогичных версий.
    Здесь оказалось, что правки типовой БП у бухгалтеров были, пусть и небольшие.
  7. Доработка правил КД2 под новую схему, с расширением и новыми объектами.
  8. Прогон контрольных сценариев и тестовых обменов на копиях.
  9. Повтор на боевых базах в согласованное окно, с бэкапом и планом отката.
    Также пришлось обновить платформу одному из бухгалтеров, но это мелочи. Главное, учитывайте это.
 

Четыре грабли, которые съели больше всего внимания

1) Перенос данных из конфигурации в расширение (самая “грязная” часть)

Код перенести относительно прямолинейно. А вот “перелить” реальные данные так, чтобы не потерять историю и ссылки — это отдельная инженерная задача.

Изначально, я планировал использовать готовое решение(//infostart.ru/1c/tools/1304175/). Но при 1-й попытке применения ещё в копии, я столкнулся с ошибкой, которую быстро побороть не смог. Так что решил попробовать написать самописное решение под задачу. Что, разумеется, оказалось ошибкой.

Так что в итоге выспался и исправил ошибку в коде – уже не помню какую. Вроде бы она была связана с изменениями платформы, которые не были учтены в актуальной на тот момент версии. Тут даже частично пригодилась попытка написать «своё» решение.

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

  • мусор в новой структуре;
  • дальнейший рост объёма базы;
  • кратный рост времени переноса и проверки;
  • и самое плохое: неочевидные расхождения в логике (когда дубль “случайно выигрывает” по отбору).

Поэтому перед переносом пришлось схлопывать дубли (по ключевым измерениям/периоду/ресурсам — в зависимости от смысла регистра), а уже потом переносить “нормализованный” набор.

Практический вывод: перенос данных — это не “промежуточный пункт”, а отдельный этап со своей подготовкой и тестированием.


2) Отличия реального состояния от названного или «обозначенного»

Классическое «Карта не равно территория». Перед началом работ я, разумеется, провёл аудит предполагаемых работ: посмотрел объём доработок, проверил некоторые взаимосвязи, обсудил с «разработчиком» логику работы и разны нюансы. Причём, потратил на это несколько оплаченных часов.

Но даже так я столкнулся с неожиданностями, и не один раз. Из-за них, к сожалению, даже ЗНАЧИТЕЛЬНО вырос объём работ, из-за чего я даже вынужденно поднял первоначальный ценник, за что мне до сих пор несколько стыдно. В то же время, если бы я этого не сделал, то вряд ли бы продолжил работать с Юрием. И сейчас я понимаю, что пусть это и было тяжёлым и вынужденным, но правильным «взрослым» решением. Спасибо здесь Юрию за понимание.

Вывод: если вы разработчик или бизнес, всегда учитывайте это заранее. Лучше пусть это сразу будет учтено в работе и в ценнике, оговорено заранее. Чтобы в случае неожиданных проблем они были пусть и не предсказаны, но учтены. Это сэкономит всем и деньги, и нервы.


3) Ошибка на боевой базе, которой не было на копии

Как обычно «План действий никогда не идёт по плану действий». Когда схема отработала на копии, при первом обновлении на боевой вылезла ошибка, которая на тестовом стенде не проявлялась.

Решение было стандартное, но важное:

  • бэкап перед обновлением и после переноса данных;
  • “Тестирование и исправление”;
  • повторная проверка ключевых сценариев (до/после);
  • и только после этого — продолжение работ.

Вывод: копия обязательна, но не гарантирует 100% идентичности боевой среде. В план надо закладывать “неожиданность прода” как норму, а не как форс-мажор. Всякое бывает…


4) Фактор железа: простои выросли из-за более слабого оборудования у заказчика и бухгалтеров

На моём стенде операции на копиях отрабатывали быстрее. На стороне заказчика и у одного бухгалтера оборудование оказалось слабее — и окно простоя при боевом повторе получилось больше, чем ожидалось по тестам:

  • простой у заказчика: около 4 часов
  • простой у бухгалтера: около 3 часов

Это не “поломка”, а физика: файловая база + объёмы + скорость диска/CPU.
Если заранее не учесть железо — можно попасть в ситуацию, когда “по плану 2 часа, по факту 5”.


Что получилось в итоге (было → стало)

Было

  • 1С:Бухгалтерия 3.0.103.21
  • самописный блок внутри конфигурации
  • обмен с 2 бухбазами на КД2
  • обновление возможно, но каждый раз как отдельный мини-проект

Стало

  • 1С:Бухгалтерия 3.0.173.31
  • самописный блок вынесен в расширение
  • данные перенесены (в т.ч. приведены в порядок “распухшие” регистры)
  • КД2-обмен с двумя бухбазами сохранён и проверен
  • дальнейшие обновления становятся заметно предсказуемее: типовая часть меньше “перепилена”

Контрольные точки, которые реально спасают (мини-чек-лист)

Перед стартом

  • Бэкап(ы) + понятный план отката (включая “что делаем, если упали на середине”).
  • Инвентаризация: список изменённых объектов и зависимостей (хотя бы грубо).
  • Оценка железа (особенно если файловые базы и обмены).

После переноса данных

  • Сверка “что должно быть” vs “что стало”:
    • контрольные выборки по ключевым справочникам/документам;
    • контрольные запросы по регистрами (объём/уникальность ключей/аномалии);
    • ручная проверка 3–5 реальных сценариев пользователя (не “открылась форма”, а “прошёл процесс”).

После обновления БП

  • Проверка ключевых процессов (проведение/печать/закрытие периода — по тому, что критично именно этому бизнесу).
  • Проверка расширения: нет ли “тонких” зависимостей от типовых модулей/форм, которые поменялись в новом релизе.

По КД2-обмену

  • Тестовый обмен на копиях.
  • Прогон цепочки “туда-обратно” на небольшом интервале данных.
  • Сверка контрольных документов/сумм (по тому, что бизнес реально сверяет).

Финальные выводы

  1. В подобных проектах главный риск — данные, а не код. Перенос планируйте как отдельный этап со своими тестами и “санитарной обработкой” (дубли, мусор, аномалии).
  2. Если есть КД2/обмены — это не “хвост”, а часть ядра проекта: цепочку надо проверять заранее и на копиях.
  3. Копия обязательна, но планируйте “неожиданность боевой” как норму: проверка/исправление/повторный прогон.
  4. Производительность на стенде ≠ производительность у заказчика. Окна простоя считайте с запасом и учитывайте железо.

Послесловие

Я вспомнил этот кейс по нескольким причинам. Потому что совсем недавно делал повторное обновление Юрию, быстрое и дешёвое, прошедшее без проблем. Потому что на многое, что я делал в этом проекте и что делаю обычно в найме, я слышал «да нафиг оно надо, это лишнее время» - как от фрилансеров, так и от программистов из франчей, у кого опыт на  10-15 лет больше моего. Потому что недавно услышал подобное от знакомого руководителя it-отдела в одной немаленькой компании. И удивился, что люди не понимают «очевидных» вещей, которые не столь очевидны, судя по всему.

Огромное спасибо Юрию за то, что он в меня поверил. И что несмотря на все трудности, мы продолжаем работать. Огромное спасибо моей девушке Маше за то, что она посоветовала мне написать эту статью.

Отдельная благодарность автору //infostart.ru/1c/tools/1304175/, Кириллу Трофимову. Кстати, возможно проверю исправлена ли в текущей версии ошибка, с которой я столкнулся в этом кейсе.


Вопросы — в комментарии

Если у вас был похожий опыт (особенно с переносом данных в новые объекты и схлопыванием дублей в регистрах) — интересно сравнить подходы и грабли: у кого что “стреляло” чаще.

 

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Рефакторинг и качество кода Обновление 1С Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

На проекте сложного обновления 1С:ERP 2.4.14.181 до версии 2.5.22.106 нам было нужно уложить обновление в технологическое окно 48 часов (выходные). Исходный замер, с учетом промежуточных релизов 2.5.8.443, 2.5.12.270, 2.5.17.234, 2.5.22.106, показал требуемое время в 659 часов…

07.07.2026    3299    1c-izh    20    

21

Рефакторинг и качество кода Обновление 1С Программист 1С 8.3 Бесплатно (free)

Обновление ролей в расширении 1С отличается от аналогичного процесса в основной конфигурации. Ситуация осложняется, когда доработки вносятся не в «обычное», а в поставляемое расширение.

26.06.2026    1205    1c-izh    3    

5

Обновление 1С Программист 1С 8.3 Россия Бесплатно (free)

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

25.06.2026    1246    134    akeeela    8    

17

Обновление 1С Программист Россия Бесплатно (free)

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

24.06.2026    860    NikolayMaerov    2    

2

Нейросети Обновление 1С Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Делюсь практикой переноса доработок при обновлении 1С:КА с 2.5.22 на 2.5.27 с помощью Claude, подключённого к конфигурации в EDT через MCP. Что у ИИ получилось хорошо, где он бессилен, что он осознанно отказался переносить — и какой главный вывод я сделал для следующего раза.

18.06.2026    2067    Angoleiro    2    

6

Обновление 1С Программист Россия Бесплатно (free)

Релиз 1С часто превращается в ночной аврал: задачи собираются из переписок, внешние обработки забывают проверить, пользователи тестируют “как получится”, а после обновления команда тушит пожары. Разбираем минимальный релизный процесс для 1С-команды: состав релиза, роли, чек-листы, smoke-проверки, коммуникацию с пользователями и разбор ошибок после выпуска.

10.06.2026    1106    NikolayMaerov    0    

2

Нейросети Обновление 1С Бесплатно (free)

Когда доработанную 1С не обновляли годами, начинать приходится не с переноса кода, а с разбора того, что вообще накопилось в базе. Там могут быть десятки обработок, расширения, правки типовых объектов, а документации либо нет, либо она давно не актуальна. На примере реального обновления разбираем, как кодовые агенты, MCP-серверы и языковые модели помогают навести порядок в доработках, собрать план миграции, понять, где при переносе будут проблемы, и автоматизировать часть исправлений.

05.06.2026    6046    wonderboy    6    

27

Обновление 1С Обмен с ГосИС Программист 1С 8.3 1С:Управление торговлей 10 Абонемент ($m)

ВАЖНО! Обновление предназначено для технических специалистов! Поддержка формата обмена V2 в локальном модуле ЧЗ. Поддержка формата обмена V2 в модуле ПиоТ. Поддержка многих видов маркируемой продукции.

10 стартмани

04.06.2026    2271    48    andrew.ab    71    

3
Для отправки сообщения требуется регистрация/авторизация