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

16.08.17

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

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

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

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

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

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

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

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

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

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

См. также

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

ИИ для код-ревью – не просто модный тренд, а реальный инструмент, который уже помогает разработчикам экономить время и повышать качество кода. В статье разбираемся, как запустить локальную LLM на базе Ollama, подключить ее к Git через Webhook и Python-скрипт, а также какие параметры модели отвечают за точность и галлюцинации. Делимся схемой работы, настройками и результатами тестирования, доказывая, что автоматизированное код-ревью действительно может работать – даже без космического бюджета.

30.10.2025    3075    user2100900    3    

15

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

Ошибки в запросах совершают все – даже самые опытные разработчики. На реальных примерах из код-ревью показываем, какие промахи незаметно закладывают мины замедленного действия в коде и работе базы. Статья поможет взглянуть на привычные запросы под другим углом и составить собственный чек-лист для уверенной и чистой разработки.

28.10.2025    3451    vaillant    35    

13

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

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

24.10.2025    1897    1c-izh    6    

6

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

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

10 стартмани

17.10.2025    4593    21    Suker86    12    

19

Рефакторинг и качество кода Программист 1С v8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

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

1 стартмани

06.10.2025    1053    7    Alex_Smolensky    25    

4

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С v8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    5342    AlexeyPROSTO_1C    1    

15

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

Рассказываем о том, как не ухудшить производительность интеграционного решения в процессе разработки и рефакторинга, когда новых фич в коробке все больше, а требования по производительности все выше. На живом примере покажем реализованный подход с использованием таких инструментов, как Docker, Redash, Vanessa Automation.

02.09.2025    2677    user1827916    1    

3

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

GRASP-паттерны в 1С: меньше хаоса, больше архитектуры.

28.08.2025    10681    lapinio    46    

58
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Bassgood 1487 16.08.17 10:41 Сейчас в теме
(0) Не ново, плюс в таком подходе также в более удобном обновлении конфы (вместо 100500 своих вставленных в типовую процедуру строк сравнение показывает только одну строку с вызовом нашей процедуры) и более читабельном коде.
shalimski; roman.pykhov; +2 Ответить
7. pm74 203 17.08.17 10:20 Сейчас в теме
(1) зависит имхо от того насколько глобально меняется конфигурация + насколько важны обновления
15. Bassgood 1487 17.08.17 11:14 Сейчас в теме
(7) Лучше изначально придерживаться определенных правил, чем потом наблюдать в коде смешанные "жанры", приятнее все же наблюдать некое однообразие в подходе доработок, чем разрозненное "как умею, так и делаю".
Дело может касаться даже не только более удобного обновления, но и более наглядного разграничения своего кода от типового.
16. pm74 203 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 203 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. Артано 800 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. Артано 800 16.08.17 11:10 Сейчас в теме
(2) Вынесение доработок в отдельные функции - это в большинстве случае единственный способ обеспечения сопровождаемости алгоритма. Под сопровождаемостью я понимаю скорость восприятия всего алгоритма в целом и следовательно скорость внесения изменений. Обновление типовой это частный случай сопровождения.
Также, если вы любитель методов по 1-3к строк, то эта заметка для вас.
Nelli_A86; +1 Ответить
38. wau8824ru 25 29.02.20 09:24 Сейчас в теме
(2)
Функция МояФункция(Функция источник, параметр)
 обработка под функции
КонецФункции

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

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

Но в новых конфигурациях на УФ, таких как ERP или УТ11 разработчиками добавлены такие общие модули , как "событияформ", которые во многих случаях вообще избавляют от необходимости лезть в типовые модули форм, даже по мелочам.
10. pm74 203 17.08.17 10:37 Сейчас в теме
(9) может я чего не знаю , но ОФ это сделать проще
11. user633533_encantado 12 17.08.17 10:42 Сейчас в теме
12. pm74 203 17.08.17 10:46 Сейчас в теме
(11) переопределить поведение элементов формы например
на картинках форма заказа и скрин из конфигуратора заказа в типовой УТ10.3, обратите внимание что на самом документе и его реквизитах висит замок
Прикрепленные файлы:
13. Automatik 982 17.08.17 10:57 Сейчас в теме
14. pm74 203 17.08.17 10:58 Сейчас в теме
(13) инъекции кода в процедуры общих модулей
17. Dmitri93 12 17.08.17 12:48 Сейчас в теме
(14) Как инъекции кода добавили новые закладки на форму и столбцы в ТЧ? Объясните поподробнее, очень заинтересовал этот вопрос.
18. pm74 203 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 203 17.08.17 13:49 Сейчас в теме
(20) вы мне в пример приводите одну единственную конфигурацию с каким то общим
модулем а делаете обобщения на все УФ в (3) дескать легче программно изменять , хотя методика переопределения обработчиков та же самая
25. user633533_encantado 12 17.08.17 13:53 Сейчас в теме
(23) Ну так и ваш пример использует общием моудли каких-то определенных конфигураций, он не универсальный.

А я говорю не об одной , а о целой линейке ут11, erp , ка 2.0 , все что сейчас активно разрабатывается и постоянно обновляется, где как раз и нужны новые методы доработки. А не о старье типа ут 10, на которое только исправительные релизы выходят.
26. pm74 203 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 Сейчас в теме
Звезданул :)
Тема актуальная.
Для отправки сообщения требуется регистрация/авторизация