Доработки конфигурации. Один совет по избежанию потенциальных грабель

16.08.17

Разработка - Рефакторинг и качество кода

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

Например, безобидная конструкция

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    //начало доработки
    Для Каждого Оформление Из ОформленияСтрок Цикл
        //что-то там делаем
    КонецЦикла;
    //конец доработки
    
    //стандартный код
    // тут пока ничего нет
    //конец стандартного кода
    
КонецПроцедуры

после очередного обновления может превратиться в 

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    //начало доработки
    Для Каждого Оформление Из ОформленияСтрок Цикл
        //что-то там делаем
    КонецЦикла;
    //конец доработки
    
    //стандартный код
    Если ЛунаНаходитсяВДомеВенеры() Тогда
        Оформление = ВесёленькиеЦвета();
    КонецЕсли;
    
    Если Оформление<>Неопределено Тогда
        РаскраситьСтроки(ОформленияСтрок, Оформление);
    КонецЕсли;
    //конец стандартного кода
    
КонецПроцедуры

Видно, что если Луна не находится в доме Венеры, то разработчик предполагает, что Оформление = Неопределено. А в результате работы вашего куска кода это не так. Поэтому лучше написать:

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	//начало доработки
	Доработка_СписокПриПолученииДанных(Элемент, ОформленияСтрок);
	//конец доработки
	
	//стандартный код
	// тут пока ничего нет, но однажды может появиться!
	//конец стандартного кода
	
КонецПроцедуры

Процедура Доработка_СписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	Для Каждого Оформление Из ОформленияСтрок Цикл
		//что-то там делаем
	КонецЦикла;
	
КонецПроцедуры

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

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

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

См. также

Инструментарий разработчика Рефакторинг и качество кода Программист 1С 8.3 1С 8.5 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Абонемент ($m)

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

2 стартмани

08.07.2026    400    4    NikolayMaerov    0    

4

Рефакторинг и качество кода Обновление 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    2354    1c-izh    19    

19

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

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

26.06.2026    825    1c-izh    3    

5

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

Code review в 1С часто превращается в спор вкусов: “мне не нравится”, “переделай”, “так не делают”. В статье разбираю другой подход: проверять не разработчика, а риск для системы. Показываю, как формулировать замечания без токсичности, где заканчивается личное предпочтение и начинается реальная проблема, почему ревью должно развивать разработчика, а не только исправлять код

24.06.2026    760    NikolayMaerov    4    

6

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Показываем, как встроить ИИ-помощника в code review 1С без Git, SonarQube и EDT – только с Конфигуратором, RAG-контекстом и набором MCP-инструментов. Разбираем архитектуру решения на Open Web UI и OpenRouter, методику сравнения моделей по Precision, Recall, BonusRate и PenaltyRate, а также объясняем, почему контекст влияет на качество ревью сильнее, чем выбор самой модели. На реальных примерах показываем, какие ошибки ИИ находит хорошо, где все еще нужен архитектор и почему на старте пилота время ревью может не сократиться, а вырасти. В финале делимся метриками внедрения и выводами для команд, которые хотят повторить такой подход у себя.

17.06.2026    1024    NVyunova    1    

3

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

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

09.06.2026    1963    Repich    5    

9

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

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

04.06.2026    1050    IgorVasilyev    29    

5

Инструментарий разработчика Рефакторинг и качество кода Программист 1С 8.3 Абонемент ($m)

MetaVision for 1C PRO — профессиональная версия статического анализатора и визуализатора кода. Загружает выгрузки конфигураций, расширения и внешние файлы, за секунды строит графы функций, находит уязвимости безопасности и подсвечивает проблемы производительности. В арсенале: визуализация логики в виде графов условий, циклов, транзакций и вызовов, статический аудит безопасности с поиском RCE, SSRF, COM-инъекций и паролей в коде, выявление запросов в циклах и вложенных блокировок, полнотекстовый поиск по всем модулям, встроенный редактор с конвертером запросов и автоформатированием, а также честная статистика по объектам и функциям. Главное новшество PRO — до пяти конфигураций одновременно с мгновенным переключением, наложение до пяти расширений как в конфигураторе, анализ внешних файлов в единой связке с основной конфигурацией и пять тем оформления. Инструмент для тех, кто ведёт несколько проектов параллельно и хочет видеть полную картину в одном окне — быстро, наглядно и безопасно.

7 стартмани

19.05.2026    3348    35    KHoroshulinAV    7    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Bassgood 1501 16.08.17 10:41 Сейчас в теме
(0) Не ново, плюс в таком подходе также в более удобном обновлении конфы (вместо 100500 своих вставленных в типовую процедуру строк сравнение показывает только одну строку с вызовом нашей процедуры) и более читабельном коде.
shalimski; roman.pykhov; +2 Ответить
7. pm74 208 17.08.17 10:20 Сейчас в теме
(1) зависит имхо от того насколько глобально меняется конфигурация + насколько важны обновления
15. Bassgood 1501 17.08.17 11:14 Сейчас в теме
(7) Лучше изначально придерживаться определенных правил, чем потом наблюдать в коде смешанные "жанры", приятнее все же наблюдать некое однообразие в подходе доработок, чем разрозненное "как умею, так и делаю".
Дело может касаться даже не только более удобного обновления, но и более наглядного разграничения своего кода от типового.
16. pm74 208 17.08.17 11:23 Сейчас в теме
(15) не всегда получается , например когда доработка делается "лоскутно" по тех заданиям или сильно изменяется функционал конфигурации
например на рис. документ "заказ на производство" конф. УНФ 1.2 , от стандартного мало что осталось
Прикрепленные файлы:
acanta; Bassgood; +2 Ответить
21. user633533_encantado 12 17.08.17 13:37 Сейчас в теме
(16) В таких случаях проще сразу новую форму делать для документа.
acanta; ice-net; ipoloskov; +3 Ответить
22. pm74 208 17.08.17 13:45 Сейчас в теме
(21)
А чем проще-то ?
конфигурация не обновляется ,
чтобы потом исправлять все обращения к форме документа по всей конфе ?
24. user633533_encantado 12 17.08.17 13:50 Сейчас в теме
(22) Вы похоже не понимаете: в таких конфах как ут11 или ERP в формы и в общие модули лезть не нужно, чтобы добавить реквизиты на форму.
С обновлением вообще никаких проблем. Все делается программно из своих модулей.
27. ipoloskov 165 17.08.17 13:59 Сейчас в теме
(24) приходится лезть, если нужно назначить обработчики добавленным элементам формы
29. user633533_encantado 12 17.08.17 16:41 Сейчас в теме
31. monkbest 114 07.09.17 14:49 Сейчас в теме
(21)забудьте этот криворукий метод!!! Не делайте новых форм, это прикапывание проблемы обновления, а не решения. Потом не разберетесь какого релиза Ваша форма, какого типовая
ipoloskov; +1 Ответить
32. user633533_encantado 12 07.09.17 15:20 Сейчас в теме
(31) Это всего лишь предположение. А вообще программно модифицировать типовую форму как в 16 может оказаться намного дороже чем сделать свою, заказчик решает.
34. monkbest 114 08.09.17 10:56 Сейчас в теме
(32) вы правы, что решает заказчик: изменять интерфейс кодом или мышкой в визуальном редакторе. Мышкой быстрее, но воспроизводить потом при обновлении вручную - медленнее, т.к. скопипастить элементы управления не всегда удается.

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

Но вод создавать новую форму, делать её основной и в неё вносить изменения - это ошибка. Тут Вы никогда не узнаете в процессе обновления, что надо что-то "скрестить" ни робот ни глазки не увидят конфликта версий и конфликт будет обнаружен уже на этапе тестирования. Плюс, если ошибки при тестировании не всплывёт, Ваша форма будет клоном типовой формы неизвестного релиза, версия которого нигде не будет зафиксирована и Вы никак не узнаете какие строки кода в ней типовые, а какие Ваши. По сути Вы теряете все прелести механизма "Поддержки", когда каждому объекту сопоставлен типовой объект и можно сравнить.
33. Артано 802 08.09.17 03:48 Сейчас в теме
(31) (32)

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

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

Но в любом случае, программная доработка типовых интерфейсов, значительно упрощает процесс обновления и высвобождает сэкономленное время для собственных доработок.
35. monkbest 114 08.09.17 10:59 Сейчас в теме
(33) "человек, который будет на постоянной основе анализировать типовые релизы и выдавать указания"

Функции этого человека реализованы платформой механизмом "поддержки", платформа сама Вам покажет различия трех конфигураций и Вы примете решение, что делать.
2. N_s_s 3 16.08.17 11:05 Сейчас в теме
Полезная информация, я пишу в коде процедуры, просто с пометками типа
//***НСС дата 
//**НСС


Хорошо если меняешь одну процедуру, а если пяток?
то как писать?
Функция МояФункция(Функция источник, параметр)
 обработка под функции
КонецФункции


так выходит? советуюсь на будущее
4. Артано 802 16.08.17 11:10 Сейчас в теме
(2) Вынесение доработок в отдельные функции - это в большинстве случае единственный способ обеспечения сопровождаемости алгоритма. Под сопровождаемостью я понимаю скорость восприятия всего алгоритма в целом и следовательно скорость внесения изменений. Обновление типовой это частный случай сопровождения.
Также, если вы любитель методов по 1-3к строк, то эта заметка для вас.
Nelli_A86; +1 Ответить
38. wau8824ru 26 29.02.20 09:24 Сейчас в теме
(2)
Функция МояФункция(Функция источник, параметр)
 обработка под функции
КонецФункции

//88(
Функция МояФункция(Функция источник, параметр)
 обработка под функции
КонецФункции//88) Функция МояФункция(Функция источник, параметр)

Так видно что добавлено
3. user633533_encantado 12 16.08.17 11:09 Сейчас в теме
Если говорить про УФ, то вообще не нужно лазить в процедуры событий элементов, а переназначать события на свои процедуры программно.
necropunk; +1 Ответить
5. Артано 802 16.08.17 11:11 Сейчас в теме
8. pm74 208 17.08.17 10:24 Сейчас в теме
(3) а в чем тут разница между УФ и ОФ ?
9. user633533_encantado 12 17.08.17 10:35 Сейчас в теме
(8) С точки зрения,того как правильно вносить изменения в конфигурацию, чтобы не иметь проблем с обновлениями - ни в чем.

Но в новых конфигурациях на УФ, таких как ERP или УТ11 разработчиками добавлены такие общие модули , как "событияформ", которые во многих случаях вообще избавляют от необходимости лезть в типовые модули форм, даже по мелочам.
10. pm74 208 17.08.17 10:37 Сейчас в теме
(9) может я чего не знаю , но ОФ это сделать проще
11. user633533_encantado 12 17.08.17 10:42 Сейчас в теме
12. pm74 208 17.08.17 10:46 Сейчас в теме
(11) переопределить поведение элементов формы например
на картинках форма заказа и скрин из конфигуратора заказа в типовой УТ10.3, обратите внимание что на самом документе и его реквизитах висит замок
Прикрепленные файлы:
13. Automatik 1005 17.08.17 10:57 Сейчас в теме
14. pm74 208 17.08.17 10:58 Сейчас в теме
(13) инъекции кода в процедуры общих модулей
17. Dmitri93 12 17.08.17 12:48 Сейчас в теме
(14) Как инъекции кода добавили новые закладки на форму и столбцы в ТЧ? Объясните поподробнее, очень заинтересовал этот вопрос.
18. pm74 208 17.08.17 12:52 Сейчас в теме
19. Dmitri93 12 17.08.17 12:54 Сейчас в теме
20. user633533_encantado 12 17.08.17 13:36 Сейчас в теме
(14) А чем проще-то ? Вы влезли в типовой модуль, чтобы из него модифицировать форму. В уф тоже самое, только в типой общий модуль к тому же влезать не надо, если не считать тот, который как раз для этого предназначен.
d4rkmesa; +1 Ответить
23. pm74 208 17.08.17 13:49 Сейчас в теме
(20) вы мне в пример приводите одну единственную конфигурацию с каким то общим
модулем а делаете обобщения на все УФ в (3) дескать легче программно изменять , хотя методика переопределения обработчиков та же самая
25. user633533_encantado 12 17.08.17 13:53 Сейчас в теме
(23) Ну так и ваш пример использует общием моудли каких-то определенных конфигураций, он не универсальный.

А я говорю не об одной , а о целой линейке ут11, erp , ка 2.0 , все что сейчас активно разрабатывается и постоянно обновляется, где как раз и нужны новые методы доработки. А не о старье типа ут 10, на которое только исправительные релизы выходят.
26. pm74 208 17.08.17 13:59 Сейчас в теме
(25) я говорю о том , что переопределение вызова любого обработчика формы одинаковое для УФ и ОФ , в ОФ проще т.к. нет разделения контекстов
а на "старье типа ут 10" львиная часть фирм работала и будет работать в обозримом будущем
monkbest; +1 Ответить
28. user633533_encantado 12 17.08.17 16:40 Сейчас в теме
(26) Работать то будут, но обновления там незначительные и проблем как правило нет.
6. Tahallus 441 16.08.17 21:23 Сейчас в теме
Изучайте расширения конфигураций
Berckk; skalex; Windyhead; Dmitri93; OlegAr; +5 Ответить
30. monkbest 114 07.09.17 14:44 Сейчас в теме
После такой передачи параметров переменные все равно изменятся. Тогда уж надо передавать значения.

ИМХО: при ручном обновлении модуля надо в новый релиз два раза копипастнуть, а без Ваших советлв - 1

ИМХО2:Роберт Мартин Вас поддержит, т.к. проповедует функции в три строки не более. Но там java с чистым ООП, а тут 1С с суровой реальностью и лишняя строка в стеке вызовов -100500 к Вашей карме при отладке и пои,ке косяка другим разработчиком
36. andrusevich 30.09.17 23:38 Сейчас в теме
Раньше пользовался маркерами с датой и от кого требование считаю правильным этот подход.

Сча пишу с нуля на БСП и в основном пищевое или аграрка, проще настроить обмен с упр и бух учетом чем изобретать велосипед
37. avk72 79 03.11.17 19:43 Сейчас в теме
Звезданул :)
Тема актуальная.
Для отправки сообщения требуется регистрация/авторизация