Делай как надо, а как не надо - не делай. Личный ТОП-10 ошибок в коде 1С, от которых дергаться глаз

31.01.26

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

Открываешь код и глаз начинает дёргается? Я собрал личный список ТОП-10 самых раздражающих и опасных ошибок в 1С, с примерами, юмором и практическими рекомендациями, как писать так, чтобы потом не было мучительно больно.

💡 Дисклеймер:
Это не стандарт, не методичка и не "истина в последней инстанции". Это мой личный ТОП косяков в коде 1С, которые меня раздражают и чаще всего приводят к боли в сопровождении. Я составил его, основываясь на многолетнем опыте работы с реальными проектами, как от независимых разработчиков, так и от коллег из фирм-франчайзи 1С, да... там часто встречается подобный код.
Конечно, существует гораздо больше реальных и тяжёлых проблем, от блокировок до транзакций и запросов в цикле, но целью этой статьи не было составить полный каталог всех возможных ошибок. Я делюсь именно своим практическим опытом и тем, что чаще всего встречаю в реальных проектах.

Пятница, 17:55, открываешь чужой модуль (а иногда и свой, написанный много лет назад) и глаз начинает нервно подергиваться. Что это? Как так можно было написать?

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

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

 

📝 1. Про личные дневники в коде

Видел в одном модуле… Человек, видимо, очень сильно переживал, когда писал.

Каждая его процедура была с предисловием:

// Сюда я вчера дописал до трёх ночи, вроде работает, но если сломается — я не виноват
// (Сергей, тут блин всё сложно!)
Процедура ЧтотоСделать()
КонецПроцедуры

Прикольно, конечно, читать, но через месяц, когда всё-таки сломается, искать причину в этих исповедях будет… скажем так, неэффективно. Код должен быть понятным, как инструкция в аэропорту.

Сообщение "Выход там" гораздо важнее, чем "Блин, я сегодня не выспался". Оставляйте комментарии о том, почему сделано именно так, а не о том, в каком настроении вы были.
 

🎭 2. Про языковой барьер

Я много раз видел смесь языков: Result = Новый Массив. Такое ощущение, что человек, который это написал, будто забыл, на каком языке думает и пишет.

Если уж пишем на 1С в России - давай писать по-русски, для международных проектов пишем на английском. 

МассивРезультатов - звучит более корректно и глаз не режет, не правда ли? 
 

🔎 3. Про НайтиПоНаименованию - костыльный костыль

Есть отдельная категория боли - это когда в коде встречаешь:

НайтиПоНаименованию("Название элемента справочника")

И вот тут уже не просто дергается глаз, он начинает жить своей жизнью. Потому что этот код ломается от:

  • опечатки,
  • переименования,
  • и просто плохого настроения пользователя.

Это не код, это лотерея.

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

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

Например, сделать регистр РегистрКонстант с измерением ИмяКонстанты (Строка), и ресурсом Значение (ЛюбаяСсылка, Булево, Строка, Дата, Число).

Однако, как верно заметил коллега gybson в комментариях, более верным и контролируемым архитектурным решением будет использование Плана видов характеристик (ПВХ) с предопределёнными элементами. Так вы полностью исключите риск опечаток в именах настроек. В коде вы будете работать со ссылками на элементы ПВХ, а не со строками.

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

 

📁 4. Про жёстко прошитые пути к файлам - мина замедленного действия

Есть ещё одна категория кода, от которого хочется сразу закрыть модуль и пойти пить "чай":

ИмяФайла = "\\FileServer01\\Share\\Reports\\Отчет.xlsx"

На первый взгляд - работает. А потом:

  • переименовали файловый сервер,
  • поменяли шары в домене,
  • изменили структуру папок или перенесли файлы,
  • или просто сменили среду.

И всё. Программа больше не работает.

Это даже не лотерея - это мина замедленного действия, просто с отложенным взрывателем. Вопрос уже не "если", а "когда".

Любые пути к файлам должны быть вынесены в настройки или храниться в константах/регистре или определяться динамически.

Жёстко прошитый путь в коде - это не удобство, это технический долг с очень коротким сроком погашения.
 

🧬 5. Про дублирование процедур - когда копипаст становится архитектурой

Бывает, открываешь один объект, а там процедура. Открываешь второй, а там же самая процедура. Третий и снова она. Только с мелкими правками, комментариями от разных людей и разным уровнем отчаяния.

Почему так происходит? Да потому, что:

  • проще скопировать, чем аккуратно вынести
  • сейчас работает, потом разберёмся
  • страшно трогать рабочий код

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

Повторяющийся код должен жить в общем модуле, в отдельной процедуре, которую вызывают все.

Копипаст - это не ускорение разработки. Это рассрочка на баги, проценты по которой платит уже не тот, кто копировал.
 

📏 6. Про строчки, которые не помещаются

Это вообще моя любимая история. Открываешь модуль, а там условие на всю ширину экрана плюс ещё надо долго вправо скроллить. Типа такого:

Если (Не Документ.Проведен И (Документ.Дата >= НачалоМесяца(ТекущаяДата()) И Документ.Контрагент.ИНН = "1234567890")) Тогда

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

💀 7. Про код-призрак

Это, наверное, самое грустное. Открываешь модуль, а там наслоение истории и эпох, как археологический раскоп:

// Версия от 2015 (не удалять! Мария сказала может пригодиться)
// Процедура СтарыйРасчет()
// КонецПроцедуры

// Доработка от 2017 (работало не всегда)
// Процедура НовыйРасчет()
// КонецПроцедуры

// Текущая, вроде стабильная
Процедура РасчетПоПоследнимТребованиям()
КонецПроцедуры

Спрашиваю: "А зачем всё это?". "А вдруг понадобится или нужно будет откатиться". Но "вдруг" никогда не наступает, а читать и понимать код втрое дольше. Система контроля версий или хранилище конфигураций может хранить историю, правда? Храните историю там и не засоряйте настоящее.
 

🎪 8. Про области-матрёшки

Области, штука, конечно, полезная и по стандартам 1С обязательная. Но когда видишь:

#Область Основное
#Область Расчеты
#Область ВспомогательныеРасчеты
#Область ОченьВспомогательные
#КонецОбласти
#КонецОбласти
#КонецОбласти
#КонецОбласти

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

🩺 9. Про пробелы и табы

Признавайтесь, бывало такое: выравниваешь блок присваивания переменных пробелами, чтобы все знаки "равно" стояли строго друг под другом? Смотрится как произведение искусства. А потом передаете файл своему коллеге, а у него шрифт другой и всё поплыло. Неловко как-то получается.

Таб, он как волшебная кнопка. Нажал и получил идеальный отступ. У каждого он может выглядеть по-своему (2, 4, 8 пробелов), но структура остаётся.

Tab он и в Африке Tab.


🚨 10. Про отсутствие обработки ошибок - "авось не упадёт"

Есть особый вид оптимизма - это писать код так, будто ошибок в принципе не существует. Ни соединение не отвалится, ни данные не придут кривые, ни пользователь тыкнет "не туда".

А потом, в логах пусто, в интерфейсе "ничего не происходит" и тут начинается магия настоящих шаманов: "Странно, а у меня все работает...".

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

🎻 Вместо заключения

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

Писать нужно так, чтобы будущий я (или коллега) не вздохнул тяжело, глядя в свой монитор, а тихо порадовался: "А вот тут аккуратно сделано и все понятно".

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

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

P.S. Если в этом тексте узнали не только чужие, но и свои ошибки - welcome to the club.

Думаю, мы все здесь немного такие. Главное это замечать и становиться немного лучше.

Хотя бы ради себя будущего, который будет тебе благодарен в 3 часа ночи перед релизом.

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

Если вам знакома эта боль - возможно, мои готовые решения помогут сэкономить вам время, нервы и ночные релизы:

Маркировка в "древней" УТ 10.3 (10.3.6.8) и полноценный ТСД (Online) или как обойтись без перехода на УТ 11.5
Как подключить маркировку в древней УТ 10.3 без перехода на УТ 11.5 - все необходимые объекты, модули и доработки
Автоматическое обновление токенов Честного Знака в 1С
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Дубликатор кодов маркировки (КИЗ) DataMatrix: Расширение 1С с проверкой в Честном Знаке (копирует ЛЮБЫЕ КИЗы!)
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Маркировка остатков товаров на складе: Как сделать все быстро и без ошибок (мой практический опыт)
Маркировка остатков 10 000+ товаров без ошибок — готовое решение, которое исключает человеческий фактор, автоматизирует процесс и работает напрямую с 1С. Пошаговый опыт и готовое расширение внутри.
Маркировка остатков в распределенной рознице: Как промаркировать более 100 тыс. товаров в нескольких десятках магазинов без хаоса и ошибок
Маркировка остатков 100 000+ товаров в рознице без хаоса и ошибок — клиент-серверное решение, где сканируешь ШК в магазине и сразу получаешь КМ на принтере, независимо от кассового ПО. Практический опыт, регламент и готовый комплект кода внутри.

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

См. также

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

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

09.02.2026    1022    Eugen-S    10    

4

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

В статье рассказываю, как писать код 1С в VS Code с помощью бесплатных AI-моделей 🤖 Используем GLM-4.7 через Roocode + Cerebras (до 1 миллион токенов в день). Подключаем бесплатные MCP. Генерируем новый код и смотрим, как AI справляется с задачами.

06.02.2026    7854    Ibrogim    69    

34

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

Некоторые задачи можно и нужно делегировать ИИ, а простые задачи можно отдавать бесплатным моделям. В статье коротко рассказываю про расширение roocode для vscode, инструмент openrouter и реальную задачу по рефакторингу кода.

02.02.2026    9146    Ibrogim    52    

46

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

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

19.12.2025    2074    GarriSoft    14    

17

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

История о легендарном отчете на 11 000 строк, копеечном расхождении и костыле 2014 года, который пережил все обновления. О том, как Василий спас квартальное закрытие, не тронув ни единой строчки кода монолита

15.12.2025    1559    GarriSoft    21    

20

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

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

30.10.2025    4915    user2100900    4    

18

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

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

28.10.2025    5903    vaillant    36    

16

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

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

24.10.2025    3461    1c-izh    6    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gybson 31.01.26 11:19 Сейчас в теме
Например, сделать регистр РегистрКонстант с измерением ИмяКонстанты


и ошибайтесь уже в этом имени =)))))

Сделайте лучше ПВХ с предопределенными значениями. Их правильное написание проконтролирует система.
ktb; SP-UTECH; Golovanoff; +3 Ответить
2. GarriSoft 367 31.01.26 12:23 Сейчас в теме
(1)
Коллега, спасибо за важное и очень конструктивное замечание!

Для стабильного, известного на этапе разработки набора параметров использование ПВХ с предопределёнными элементами является каноничным и самым корректным решением. Это даёт типизацию и контроль ошибок на уровне метаданных, чего не хватает простому регистру с полем-строкой.

Мой пример с универсальным регистром, это скорее паттерн для иного сценария, когда нужна гибкость добавления настроек пользователем в режиме Предприятия.

Я добавил ваш вариант с ПВХ в статью как предпочтительное архитектурное решение.
Теперь у читателей будет полная картина: строгая типизация для системных настроек и гибкость для пользовательских параметров. Главная цель, это уйти от НайтиПоНаименованию() достигается обоими путями, но ваш путь более правильный и надёжный.
3. dhurricane 31.01.26 16:33 Сейчас в теме
(2) Выскажу альтернативное мнение - ПВХ здесь зло. Меньший контроль состава настроек в целевой базе, отсутствие контекстной подсказки по типу конкретной настройки из ПВХ, ну и необузданное желание разработчиков навесить в ПВХ как можно больше функционала настройки в будущем (связи, кэширование, списки значений,...). Будучи разработчиком такой корпоративной мини-подсистемы настроек на ПВХ нынче за константы и регистры. :)
7. gybson 31.01.26 21:06 Сейчас в теме
(3) Использовать регистр без ПВХ просто нет разумных причин. Вы что ему в измерение поставите, магическую строку? Ну перечисление. А тип хранимого значения будете добавлять отдельно от добавления новой настройки?

И даже если вы привяжете регистр к справочнику, то как это избавит от необузданных желаний?
Golovanoff; +1 Ответить
8. dhurricane 31.01.26 21:57 Сейчас в теме
(7) Можно создавать регистр сведений вообще без измерений. Будут только ресурсы, не более одной строки в таблице БД. По сути то же, что и набор констант, но сгруппированы по смыслу. Можно совместно получать значения, менять, блокировать, кэшировать. Связи полей, параметры выбора, проверка - все как у обычных реквизитов.
9. gybson 01.02.26 01:12 Сейчас в теме
(8) Далеко от сути ушли. Необходимо В КОДЕ по имени получить значение. Любое отклонение от предопределенных элементов разделяет код и имя используемое в коде.

Можно хоть в текстовый файл записать, суть не изменится. Речь не идет о чем-то типа регистра курсов валют. Такие регистры разрабатываются под задачу и их десятки. Классификаторы и прочее. Это не задача. Задача связать код и данные так, чтобы эту связь нельзя было легко порвать из режима клиента. Чтобы не писать в инструкции "Создать запись с именем Чебурашка", потому что напишут "ЧИбурашка" и все свалится. А чтобы такого не произошло, надо написать обработку, которая создаст константу и в ней не ошибиться. И одна сплошная головная боль.

Работа заканчивается на эксплуатации. Не раньше.
Golovanoff; +1 Ответить
10. dhurricane 01.02.26 01:51 Сейчас в теме
(9) Вообще не понимаю, о чем Вы. Какое отклонение? Почему под задачу регистры создавать плохо? Почему связь между кодом и данными при использовании предопределенных крепка, а при использовании констант и регистров нет? Зачем какая-то инструкция?

Давайте еще раз, на примерах тогда.

1) Чтобы создать настройку "Таймаут соединения" вы можете:
// Создать элемент ПВХ с именем "ТаймаутСоединения", типа "Число". Обращение:
Таймаут = ПланыВидовХарактеристик.НастройкиПрограммы.ТаймаутСоединения.Значение;

// Или же создать константу "ТаймаутСоединения" с типом "Число". Обращение:
Таймаут = Константы.ТаймаутСоединения.Получить()
Где здесь разрыв? Инструкция?

2) Идем дальше. Чтобы создать настройки для контрагента и договора по умолчанию, которые всегда используются совместно:
// Создать два элемента ПВХ. Обращение:
Контрагент = ПланыВидовХарактеристик.НастройкиПрограммы.Контрагент.Значение;
Договор = ПланыВидовХарактеристик.НастройкиПрограммы.Договор.Значение;

// Или же создать регистр без измерений для хранения этой пары в ресурсах:
Настройки = РегистрСведений.КлиентПоУмолчанию.Получить();
Контрагент = Настройки.Контрагент;
Договор = Настройки.Договор;
Здесь какой разрыв? Инструкция? Наверное, инструкция нужна о том, чтобы пользователю рассказать, мол "выбирай договор только для выбранного контрагента"? Для ПВХ да, нужна такая инструкция. Для регистра нет, т.к. связь параметров выбора можно настроить сразу в ресурсах регистра.
15. gybson 01.02.26 13:42 Сейчас в теме
(10) Бог с Вами, никто не хранит данные в ПВХ. Конечно они в регистре лежат, как, например, ДополнительныеСведения.

А у констант нет истории.
Golovanoff; +1 Ответить
16. dhurricane 01.02.26 13:46 Сейчас в теме
(15) То есть ещё и существующие типовые регистры не по назначению предлагаете использовать? Ради чего? Почему не в самом ПВХ? И в качестве объекта что предлагаете использовать?
18. gybson 01.02.26 14:11 Сейчас в теме
(16) В смысле почему не в самом ПВХ? Это же не справочник.

Опишу тезисно. Создаете ПВХ "Костыли". Создаете РС "ЗначенияКостылей" где измерение это необходимые разрезы аналитики по костылям (организации, подразделения, склады и т.п.) и сама характеристика, а в реквизитах указываете характеристику соответствующую ПВХ. Далее в ПВХ создаем предопределенный элемент "Костыль1" и используем его в коде "КостылиПовтИсп.ПолучитьЗначение(ПланыВидовХарактеристик.Костыли.Костыль1))"
Добавляем в регистр значение и вуаля.

Четверть века уже так делают, стандартная практика.
19. dhurricane 01.02.26 14:17 Сейчас в теме
(18) Ну и что, что не справочник? Отличается же от него парой стандартных реквизитов. Ну и описывать решение не нужно было, успел насмотреться, и даже сам делал. Я не понимаю, в чем преимущество перед константами и регистрами под задачу. И почему вдруг здесь нет упомянутых разрывов, не нужны инструкции и вот это вот все.
59. logos 217 02.02.26 11:25 Сейчас в теме
(18) А зачем в этой реализации регистр? Сделайте в ПВХ реквизит типа "Характеристика" из этого же ПВХ и храните значение константы в нём. Ну можно ещё прикрутить табличную часть для списочных констант. Опять же, РС будет не нужен
61. gybson 02.02.26 12:14 Сейчас в теме
(59) Ну такой кейс в статье описан. Я же не из пальца высасываю свои комментарии.
Нравится вам хранить данные в ПВХ, ну ладно. Я вам могу рассказать как еще можно извратиться и это в типовых есть - РС с одной записью, где каждый реквизит это вот такая настройка-константа. Тоже вариант и вообще без ПВХ.
51. muskul 02.02.26 01:09 Сейчас в теме
(10)
Почему под задачу регистры создавать плохо?

Ну потому что это может потребовать монопольного доступа и реструктуризацию БД, которая может быть не маленькая. а поставить нужно еще вчера.
55. dhurricane 02.02.26 08:23 Сейчас в теме
(51) Создание предопределенных тоже требует монопольный доступ, на сколько я помню. А вот создание нового регистра сведений не приведет к длительной реструктуризации. Даже если каждый день там менять тип колонок, проблем не будет - строк то не много.
62. gybson 02.02.26 12:18 Сейчас в теме
(55) Можно сделать одну функцию "ПолучитьКонстанту", а можно 100500 регистров обслуживать, у кого на что денег хватит.
64. dhurricane 02.02.26 12:21 Сейчас в теме
(62) Что подразумеваете под обслуживанием? И неужели обслуживание универсальной ПВХ и его обвязки на все случаи жизни дешевле, чем обслуживание специфичного регистра?
66. gybson 02.02.26 13:29 Сейчас в теме
(64) Да просто хоть запрос к нему написать и отладить. А вообще надо его спроектировать, сделать, написать код для работы с ним, протестировать. Права еще. Интерфейс для редактирования.

А если всего этого не делать, то в чем прикол такой полуработы?
68. dhurricane 03.02.26 00:31 Сейчас в теме
(66) Схожие проблемы нас ждут и с универсальным ПВХ и регистром настроек:
1. Запрос также надо писать, и он будет сложнее, т.к. будут дополнительные отборы на саму настройку. И тут более свободное поле для ошибок: установи отбор на элемент ПВХ не там, и отсутствие записи в регистре значений приведет к исключению записей в основной выборке. Такое я уже пару раз наблюдал.
Более того, запрос к спец. регистру можно и не писать вовсе в некоторых ситуациях. Код я привел выше: он простой, он гарантированно возвращает значение, даже если записей в регистре нет.
2. Проектирование регистра не сложнее, чем добавить настройку. Просто вместо предопределенного добавляете ресурс регистра или константу с тем же именем. Все.
3. Тестировать нужно все. И настройку в ПВХ, и константу/регистр. Не понимаю, почему здесь может быть какая-то разница.
4. С правами да, засада: часто разработчики забывают добавить роли для просмотра/изменения новых объектов, т.к. разработку ведут сами под полными правами. С другой стороны, перед универсальным ПВХ порой встает вопрос: а как разделить правами настройки? Чтобы в одной группе редактировали настройки одни пользователи, в другой группе - другие. С отдельными константами/регистрами эта задача тривиальная, с ПВХ - нет.
5. С интерфейсом двоякая ситуация. Если специальный не нужен, ПВХ здесь выигрывает простотой. Если мы хотим выдать отдельным пользователям некоторый набор настроек для редактирования, а другие настройки спрятать, если хотим настроить параметры выбора, связи параметров выбора между настройками и прочее - однозначно с константой/регистром проще, чем с универсальным ПВХ.
processing; GarriSoft; +2 Ответить
69. gybson 03.02.26 09:07 Сейчас в теме
(68) нелепые фантазии какие-то, лишь бы поперек
72. peterxx 23 05.02.26 14:48 Сейчас в теме
(8) Еще когда был актуальным релиз 8.3.16, я однажды сделал такой регистр. Все бы ничего, но считать программно данные из такого регистра никак не получалось. Пришлось добавить измерение типа Булево. Тогда все заработало. Возможно, сейчас это уже исправлено.
4. dhurricane 31.01.26 16:35 Сейчас в теме
Таб, он как волшебная кнопка. Нажал и получил идеальный отступ. У каждого он может выглядеть по-своему (2, 4, 8 пробелов), но структура остаётся.

А потом ревьюете код где-нибудь в Gitlab, и вся структура кода опять развалена. :) Ну кажется удивительным, что у кого-то в IDE используется не моноширный шрифт в редакторе кода.
11. SergMuravev 877 01.02.26 02:28 Сейчас в теме
9. Про пробелы и табы

Вроде как в стандартах есть такое:
"При следовании друг за другом нескольких однотипных операторов допускается их выравнивание. Выравнивание следует выполнять с помощью пробелов"

Раньше выравнивал табами, но когда прочитал это, то стал выравнивать пробелами. Оказалось гораздо быстрее и проще.

И да, почему у коллеги не моноширинный шрифт? )
26. GarriSoft 367 01.02.26 20:42 Сейчас в теме
(11)
Приятно видеть в комментариях конструктив и знание стандартов.
Спасибо за дополнение, такие уточнения делают обсуждение по-настоящему полезным для тех, кто только набивает себе руку
SergMuravev; +1 Ответить
5. AndRoman.pro 56 31.01.26 19:16 Сейчас в теме
Это чатГПТ так пишет? у меня глаз дергается от такого стиля)

Автор, стоило бы проверить примеры за ИИ.
"МассивРезультатов - звучит более корректно и глаз не режет, не правда ли? " — еще как режет, это венгерская нотация, которая в современных конфигурациях не рекомендуется (https://its.1c.ru/db/v8std#content:454:hdoc).
Также смущает выбор ошибок стандартов этого топа. Это действительно ваш топ или то, что предложила нейросеть?
Ничего нет про когнитивную сложность, запросы в цикле, транзакции и блокировки — а это более серьезные проблемы, чем то, что вы описали.

Для изучения настоящих стандартов:
https://github.com/kuzyara/CodeStyle1C — практический подход
https://its.1c.ru/db/v8std — официальные стандарты 1С
Cерый; Golovanoff; +2 1 Ответить
22. GarriSoft 367 01.02.26 19:30 Сейчас в теме
(5)
Коллега, спасибо за ссылки! Ссылаться на документацию, это почти всегда признак хорошего тона.

Отвечу по порядку:

1. Про "руку ИИ".
Если мой стиль кажется вам слишком структурированным, приму это за комплимент, но спешу расстроить, нейросети пока не обладают такой "профессиональной деформацией" (которая накопилась у меня за 25 лет), чтобы составлять личные хит-парады боли 1С-ника.
Кстати, забавно, что вы обвиняете меня в "машинном стиле", хотя сами используете в комментарии идеальные типографские длинные тире. Чтобы ставить их вручную, а не просто дефис, нужно обладать либо очень специфической привычкой, либо... отличным промптом. )))

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

3. Про МассивРезультатов
Да, это отголоски венгерки, но в реальных проектах такая явная типизация часто спасает больше нервов, чем слепое следование рекомендациям.

Но опять же это мое мнение, ни кого не учу и ни кому не навязываю.
23. AndRoman.pro 56 01.02.26 20:11 Сейчас в теме
(22)
1. У меня большая насмотренность на различные ИИ, так что "торчащие уши" сильно бросаются в глаза. Понятно, что это дело привычки, но пока у меня это вызывает чувство "зловещей долины". И я не против использования ИИ в качестве помощника, я сам регулярно им пользуюсь, но конкретно такой стиль изложения не по мне.
"—" длинные тире на самом деле легко настраиваются небольшим скриптом в AutoHotkey (":*:--::—"), кстати решение использовать их было также рождено в горячих спорах с ИИ, оказывается так правильнее.
2. Большинство этих и других ошибок решается проверкой через АПК и SonarQube, особенно в больших проектах. Даже если не исправлять прошлый код, то строгое соблюдение стандартов в текущем коде со временем дисциплинирует разработчиков.
25. AndRoman.pro 56 01.02.26 20:13 Сейчас в теме
(22)
Ну а если интересует анализ что именно в тексте "не так", то вот он:

Claude Sonnet 4.5

Проанализировав текст статьи и комментарии, я могу с высокой долей вероятности сказать, что это текст-«киборг». Это классический пример человеческой идеи (и боли), «причесанной» или развернутой нейросетью, а затем снова отредактированной человеком.

Вот подробный разбор на «ИИ-уши» и человеческие факторы:

🤖 Признаки ИИ (Генерация текста) — 60-70%
Структура и Заголовки с эмодзи:

Стиль заголовков 📝 1. ..., 🎭 2. ..., 🧬 5. ... — это «визитная карточка» ChatGPT/Claude, когда их просят «оформить красиво для блога». Человек редко сам подбирает тематические эмодзи к каждому пункту (например, ДНК для дублирования кода).

Сама структура «Вступление -> 10 пунктов -> Заключение» — стандартный шаблон генерации.

«Водянистые» метафоры и клише:

Фразы вроде «Это не усложнение — это элементарная гигиена кода», «Это мина замедленного действия», «технический долг с очень коротким сроком погашения» — это любимые обороты LLM, обученных на технической публицистике. Они звучат правильно, но слишком «литературно-стерильно» для обычного разговора программистов.

Примитивизация примеров:

Пример с Если (Не Документ.Проведен И ...) — это классический синтетический пример из учебника. В жизни «строчки, которые не помещаются», выглядят куда страшнее и запутаннее.

Странная аргументация (галлюцинация логики):

Пункт про Tab: «Tab он и в Африке Tab. Нажал и получил идеальный отступ». Это очень поверхностное суждение. ИИ часто игнорирует холивар «табы против пробелов» (где главный аргумент за пробелы — одинаковое отображение везде) и выдает самое простое объяснение: «это просто кнопка».

👤 Признаки Человека (Авторский вклад) — 30-40%
Грамматические и стилистические ошибки:

«Открываешь код и глаз начинает дёргается» (вместо «дёргаться»). Нейросети пишут грамматически идеально. Такая ошибка характерна для живой речи.

«Вариант уволить автора... мы пока рассматривать не будем» — специфический юмор, который ИИ генерирует редко (или генерирует более топорно).

«Староверские» привычки (которые ИИ обычно не советует):

Венгерская нотация: Автор топит за МассивРезультатов. Современные стандарты 1С и, следовательно, ИИ (который на них учился), обычно рекомендуют писать Результат (если тип очевиден) или избегать типа в имени. Настаивание на префиксах типа — это маркер человека, привыкшего к старым школам программирования (или C++/Delphi бэкграунду). Комментатор AndRoman.pro справедливо заметил это несоответствие.

Специфический контекст (Боли 1С-ника):

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

Агрессивный маркетинг (SEO):

Вставка ссылок на свои платные продукты в конце («Маркировка в древней УТ», «Дубликатор кодов») — это точно делал человек. ИИ не умеет так нативно вплетать контекстную рекламу своих обработок без прямого промпта.

Вердикт по коду (сниппетам)
Код в статье слишком примитивен, чтобы судить о его авторстве. Это просто однострочники.

НайтиПоНаименованию — стандарт.

ИмяФайла = "\\FileServer01..." — стандарт.

Однако, совет использовать РегистрКонстант вместо ПВХ (в тексте) или вместо типовых Констант — это спорное архитектурное решение. ИИ (например, GPT-4) чаще предлагает использовать именно ПВХ (ПланиВидовХарактеристик) для хранения типизированных настроек, так как это «best practice». То, что автор изначально предложил свой «велосипед» (регистр с ресурсом ЛюбаяСсылка), а потом добавил upd про ПВХ после комментария — говорит о том, что писал человек, опираясь на свой (возможно, устаревший) опыт.

Итог
Статья написана по методу «Сэндвич»:

Человек накидал тезисы (боли): «бесят комменты-дневники», «бесит НайтиПоНаименованию», «бесят длинные строки».

ИИ (ChatGPT/Claude) развернул эти тезисы в красивые абзацы, добавил эмодзи, структуру и «воду» про гигиену кода.

Человек вычитал, добавил пару «живых» шуток (про Марию и пятницу), вставил свои ссылки и опубликовал.

Оценка: 70% текста сгенерировано ИИ на основе промпта автора, 30% (смысл, ошибки, реклама) — от человека.
tolyan_ekb; Cерый; +2 Ответить
27. GarriSoft 367 01.02.26 21:05 Сейчас в теме
(25)
Коллега, вы сегодня сделали мой воскресный вечер!

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

Насчет вашего предложения проанализировать "что в тексте не так", спасибо, мне не интересно разбирать очередную "простыню" от Клода на тему моего опыта, для меня это просто пустая трата времени.

Скажу коротко для остальных читателей, вдруг кто-то будет читать наш диалог:

Про 25 лет стажа - правда. Поэтому и "староверские" привычки и венгерка и умение структурировать свои мысли. Просто раньше это называли "хорошим образованием", а теперь "признаком LLM".

Эмодзи и структура? Я ценю время людей, длинные тексты без акцентов в 2026 году уже никто не читает, кроме нейросетей.

Про AutoHotkey и тире, спасибо, что подтвердили мою догадку про специфическую привычку использовать промпт )))

На этом дискуссию предлагаю закончить.
80. tolyan_ekb 80 20.02.26 09:24 Сейчас в теме
(25) норм, ты его раскатал ))
81. GarriSoft 367 20.02.26 10:01 Сейчас в теме
(80)
Ценю вашу лаконичность в комментарии - жаль, что в своих статьях вы ей не всегда следуете. От Торг-12 до игр путь большой, а вот от "раскатал" до содержательного обсуждения, видимо, еще длиннее.
В следующий раз, когда захотите поддержать кого-то, попробуйте написать аргументированный текст, а не просто междометие.
А этот комментарий пусть останется вашей маленькой слабостью.
82. tolyan_ekb 80 20.02.26 16:01 Сейчас в теме
(81) Кто-то тут в комментах плакался что переход на личности последний аргумент )) Не ты ли это был?
84. GarriSoft 367 20.02.26 16:15 Сейчас в теме
(82)
Коллега, вы невнимательны. Я говорю о вашем комментарии к статье. Ни внешность, ни возраст, ни характер я не трогал, я только указал на недостаток ваших аргументов. Где здесь переход на личности? А я подскажу, переход на личности начинается именно там, где аргументы заканчиваются, а у меня они пока есть.

И кстати, кто тут "плачется"? Я веду дискуссию со всеми, как автор, если для вас аргументированный ответ, это "плач", тогда, мы просто говорим с вами на разных языках.

Если хотите обсудить статьи милости прошу, если нет оставим эту игру в "сам такой" тем, кому нечего сказать по делу.
83. tolyan_ekb 80 20.02.26 16:10 Сейчас в теме
(81) Ну и, "типо", я польщен, что какой-то "ононим" мой профайл посмотрел и проанализировал и составил мой "роудмап". Наверняка с помощью нейросетки ))
85. GarriSoft 367 20.02.26 16:18 Сейчас в теме
(83)
Коллега, на этом действительно всё. Дальше без меня. Удачи.
47. SergMuravev 877 02.02.26 00:05 Сейчас в теме
(5) Кстати Массив вместо МассивРезультатов в определенных случаях тоже имеет место.

Такое название сообщает разработчику читающему этот код, что использование данной переменной имеет локальное использование, буквально в пределах одного-двух абзацев.
52. Golovanoff 73 02.02.26 05:27 Сейчас в теме
(47) Если в переменной вы храните результаты, то и назовите ее Результаты. Слово "Массив" в имени переменной - мусорное.
60. SergMuravev 877 02.02.26 11:46 Сейчас в теме
(52) В общем - да, но при создании иногда помогает не запутаться. Потом, конечно нужно переименовывать.

Я про другое писал: в книге Роберта Мартина "Чистый код" Глава 2: Содержательные имена.
Автор пишет: однобуквенные или слишком общие имена допустимы только для локальных переменных в коротких методах. Длина имени должна соответствовать его области видимости — чем локальнее переменная, тем короче имя может быть."
63. gybson 02.02.26 12:21 Сейчас в теме
(52) А какую ценную информацию несет имя "Результаты"?
Если вы храните список контрагентов, так и назовите "СписокКонтрагентов". Когда пару раз там окажется массив, то как-то само придет желание назвать МассивКонтрагентов
6. DmitryKlimushkin 136 31.01.26 19:18 Сейчас в теме
Возразить нечего, совпадаю с автором. Но - грешен! Люблю.... Области - "Матрёшить"!!)))
12. PersianovMS 01.02.26 10:43 Сейчас в теме
(6) Тут важен разумный баланс. Обоснованное матрёшенье областей с информативными заголовками - хороший, годный инструмент. Зачем обходить весь лабиринт, когда можно раскрыть только нужную ветку, а в свёрнутом виде видишь то, что делалось до и что будет после. Например, текст запроса упаковать в область - почти всегда оправдано. Видишь общую картину, а если нужен текст запроса - можно развернуть область.
Когда же бесполезное нагромождение областей - конечно плохо, как и любой неаккуратный код.
Остальные пункты - однозначно поддерживаю.
GarriSoft; +1 Ответить
13. ixijixi 2115 01.02.26 13:07 Сейчас в теме
(12) Кстати, в окне выбора процедур явно не хватает группировки по областям. Плюс нелишним было бы видеть признак Экспорт.
GarriSoft; +1 Ответить
29. GarriSoft 367 01.02.26 21:44 Сейчас в теме
(6) А зачем обязательно возражать, если мы оба за надежный код? )))
Насчет областей-матрешек это уже вопрос личного дзена, тут главное, чтобы за этими матрешками не прятался хардкод путей или НайтиПоНаименованию. )))
57. DmitryKlimushkin 136 02.02.26 09:33 Сейчас в теме
(29) Я достаточно стар, чтобы умничать уже по любому поводу!)
С учётом взаимной "взрослости" могу перейти на "Ты"?
Но ты меня раззадорил по одному вопросу, который я-то для себя давно решил. Надо текст набросать....
58. GarriSoft 367 02.02.26 09:36 Сейчас в теме
(57)
Дмитрий, я только "ЗА"
Буду ждать твою статью.
14. TMV 2 01.02.26 13:37 Сейчас в теме
9 пункт полностью наоборот. Пробел, он и в Африке пробел.Вся красота выравнивания "едет" именно из-за того, что таб (и шрифт) может быть у каждого свой.
17. GarriSoft 367 01.02.26 14:02 Сейчас в теме
(14)
Коллега, спасибо за "минусу", тема отступов для вас, видимо вопрос принципа. Однако тут важно разделять два разных понятия: отступ (в начале строки) и выравнивание (внутри строки).

Отступы делаются табами, это стандарт 1С. Это вопрос уважения к коллегам: один любит отступ в 2 пробела, другой в 4, и таб позволяет каждому видеть код так, как ему удобно.

А чтобы "красота не ехала" при просмотре, выравнивание (например, знаков "=") делается уже пробелами.

Ну и конечно, база, это когда в разработке 1С используется моноширинный шрифт, где ширина любого символа, в том числе пробела всегда одинакова. Если соблюдать эти два правила, структура не поплывет ни в одном редакторе.

Раз уж вы так категоричны в своих оценках, было бы любопытно увидеть вашу "экспертную" статью. Критиковать чужой опыт "минусом", дело нехитрое, а вот поделиться своим мнением на широкую аудиторию, это уже совсем другое.
Жду вашу публикацию!
53. Golovanoff 73 02.02.26 05:28 Сейчас в теме
(14) да просто выравнивание порочно. И пробелами или табами - роли не играет :Р
20. TMV 2 01.02.26 17:15 Сейчас в теме
(17) минус за "актуальность" и "оригинальность"
отступы как маркер экспертности, применение "ad hominem" - профессионализма.
21. GarriSoft 367 01.02.26 17:38 Сейчас в теме
(20)
Коллега, актуальность стандартов 1С вечна, пока мы открываем конфигуратор. Раз аргументы по существу закончились и начались обсуждения моей личности, то дискуссию считаю исчерпанной.
24. sapervodichka 7521 01.02.26 20:12 Сейчас в теме
То что описано НЕ ЯВЛЯЕТСЯ ОШИБКАМИ.
Какое-то не то оформление из серии я за чистоту кода, но точно не ошибки.
AndRoman.pro; +1 1 Ответить
28. GarriSoft 367 01.02.26 21:39 Сейчас в теме
(24)
Согласен, технически платформа выполнит этот код без ошибок. Но давайте копнем чуть глубже:

1. НайтиПоНаименованию - это ошибка логики, так как в 1С наименование не уникально. Сегодня код работает, а завтра после создания дубля начинает "рандомно" выбирать объект или просто изменят наименование.
2. Хардкод путей в коде - это "ошибка", которая гарантированно сломает процесс при переезде на другой сервер или смене пользователя или структуры каталогов.
3. Дублирование процедур - это тоже "ошибка", из-за которой через месяц при обновлении логики исправят одно место и забудут про другое.
4. Отсутствие обработки ошибок - это "ошибка", которая оставит нас без логов и понимания, почему всё упало у клиента в 2 часа ночи.

Может по синтаксису это и "оформление", но с точки зрения архитектуры и надежности - это самые настоящие ОШИБКИ и реальные причины инцидентов в проде.
30. sapervodichka 7521 01.02.26 21:49 Сейчас в теме
(28) да что спорить-то, если это для тебя ТОП-10 ошибок, то для меня это детский сад, а узнать какие реальные есть ТОП ошибки тебе ещё предстоит.
Типа:
- забыли включить блокировку регламентных заданий в копии базы
- поставили интерактивное удаление объекта в роли
- не поставили индексироваться ключевые реквизиты поиска в объекте или расположили измерения в регистре некорректно
- вытягивают реквизиты составного типа в запросе
- забыли поставить флаг составной тип у составного типа и потеряли типы в данных
- обновление релиза конфигурации сравнением объединением
- не индексируют временные таблицы или не добавляют индексы в таблицы значений
- не проверяют обязательность заполнения реквизитов
- не понимают разницу клиента и сервера и опции без контекста
- забыли поставить в общем модуле флаг внешнее соединение
- и т.д.
tolyan_ekb; AndRoman.pro; +2 1 Ответить
31. GarriSoft 367 01.02.26 22:03 Сейчас в теме
(30)
Интересный у вас переход сразу на "ты", но давайте вернемся к сути.

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

А насчет того, что мне "предстоит узнать"... Честно улыбнуло. ))) За мои 25 лет в 1С я видел достаточно "взрослых" катастроф, которые начинались именно с таких вот "детских" привычек и "не ошибок" в коде.

Но я всегда открыт к новому опыту! Буду искренне рад почитать именно ваш список ТОП-ошибок из "высшей лиги", если это не секрет.
Уверен, сообществу Инфостарт будет полезно поучиться у эксперта с таким рейтингом.
Может поделитесь?

P.S. Вижу, вы оперативно расширили свой комментарий списком технических проблем. Это хорошая иллюстрация того, что мы говорим о разных, но одинаково важных вещах. Теперь дискуссия выглядит завершенной.
32. sapervodichka 7521 01.02.26 22:04 Сейчас в теме
(31) дописал там выше, удачи
33. GarriSoft 367 01.02.26 22:16 Сейчас в теме
(32)
Так же дописал выше в PS, удачи
73. SergMuravev 877 09.02.26 04:18 Сейчас в теме
(30)
(31)
Интересный у вас переход сразу на "ты"

Для sapervodichka это похоже норма. Но стоило мне как-то на это указать, и он занес меня в черный список.
Sapervodichka, на Инфостарте принято уважительное обращение. И принято общаться на "вы" с незнакомыми вам лично людьми. Внутри организации - чаще на "ты" бывает, но не всегда и не везде.
34. gybson 01.02.26 22:31 Сейчас в теме
(30) Запись пустого набора забыли.

Половина этого списка бред, честно-говоря. Если не весь. Вы если обезьяну посадили за клавиатуру, то вы ошибка, а не то, что она делает
sapervodichka; +1 Ответить
35. sapervodichka 7521 01.02.26 22:34 Сейчас в теме
(34) Тимур )))) спасибо, точно забыл, сразу Женьку Джонсона вспомнил, который почти миллион штрихкодов из регистра сведений так удалил в проде не установив отбор в наборе записей )))) интересный день был
36. gybson 01.02.26 22:50 Сейчас в теме
(30)
- забыли включить блокировку регламентных заданий в копии базы


Это просто стыдно должно быть. Проблема легко решается кодом. Вам принципиально проблему ТОП-1 не решать годами?
37. sapervodichka 7521 01.02.26 23:02 Сейчас в теме
(36) Тимур, ты сейчас угараешь? У меня нет своего идеального прода, где бы я мог настроить, что-то красиво, а 1000-чи клиентов и 10000 баз, со своими горе специалистами, к этим клиентам я захожу с тем что они там сделали.
У каждого второго администраторы "забыли включить блокировку регламентных заданий в копии базы" и интеграции пошли налево. Потом ты делаешь конечно там блокировку по имени базы для интеграций и инструкцию как копию разворачивать.

Ещё частая ошибка забывают использовать кратность валют, только курс. И когда Юань перешел выше 10 рублей, внезапно для многих кратность стала не 1. И сотни комментариев от спецов клиентов тут, какие долбоящеры программисты франчайзи и фрилансеры.
38. gybson 01.02.26 23:09 Сейчас в теме
(37) Это ошибки сопровождения, не программирования. Давайте в топ-1 включим ошибку подключения устройства к розетке еще.

Конкретно ошибка с интеграцией решается сбросом настроек подключения при перемещении базы, например. Это самое простое и надежное как нож.

Если уж так утрировать, то взрослые ошибки это дети-наркоманы.
39. sapervodichka 7521 01.02.26 23:12 Сейчас в теме
(38) давай, свой топ-10 ошибок, напиши в течение 5 минут по быстрому и я тебе говна на вентилятор накидаю, как можно сделать, раз уж ты тут в критики записался. Уточню сразу что это не мои ошибки, а ошибки в каких-то базах каких-то людей которых я ещё вчера не знал, но по твоему мнению должен был им донести телепатически, как правильно и где учиться и как не надо делать
40. gybson 01.02.26 23:36 Сейчас в теме
(39) Если ошибка решается кодом, то в коде могут быть допущены ошибки и ошибок станет две.

Мой топ будет тоже другой.

1. Указание в ТЗ технических деталей
2. Работа сразу над двумя ветками релиза, когда связанные изменения оказываются разодраны.
3. Скрытая передача параметров - когда результат возвращается в параметре вызова.
4. Магические структуры, когда не прописана процедура, которая возвращает структуру обязательную для всех.
5. Если без Иначе
6. Вложенные Если
7. Процедуры свыше 50 строк
8. Комментарии "Добавил строчку начало", "Добавил строчку конец", которых больше кода.
9. Модули по 1000 строк.
10. Рандомные точки останова при отладке фоновых заданий.
Golovanoff; sapervodichka; +2 Ответить
42. gybson 01.02.26 23:37 Сейчас в теме
(40) Если без иначе когда есть ИначеЕсли конечно
Golovanoff; sapervodichka; +2 Ответить
44. sapervodichka 7521 01.02.26 23:44 Сейчас в теме
(42) ну блин )))) и не придраться теперь (тогда свой № 43 коммент обнуляю)
43. sapervodichka 7521 01.02.26 23:43 Сейчас в теме
(40) ну вот всё реальное ведь (спасибо что написал), меня особенно бесит прыгающая не пойми как отладка фоновых заданий.
А "если без иначе" вполне себе вездесущая типовая вещь если код по некому флагу выполняется, а как ты хотел его ограничить если не через если? ))) ладно не отвечай, просто я обещал немного и тебе говна на вентилятор
Прикрепленные файлы:
65. Best40000 02.02.26 12:45 Сейчас в теме
(40) "Магические структуры, когда не прописана процедура, которая возвращает структуру обязательную для всех. " - можете здесь развернуть что имеется ввиду?
67. gybson 02.02.26 14:35 Сейчас в теме
(65)
Ну такой пример из ЗУП

СтруктураЗаписи = СтруктураЗаписиОСтаже();
41. sapervodichka 7521 01.02.26 23:37 Сейчас в теме
(28) НайтиПоНаименованию или НайтиПоКоду для классификаторов (если нет неких квази констант в виде регистра или справочника) отличные функции.

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

Даже предопределенные значения, например в плане счетов не спасают т.к. меняются, а поиск по коду работает стабильно.
56. DmitryKlimushkin 136 02.02.26 09:31 Сейчас в теме
(24) Поддержу автора. Думаю, что автор под термином "ошибки кода" имел ввиду все предпосылки, которые станут ошибками в работе приложения. Ошибки кода вообще находятся без труда - сама платформа укажет, что и на какой строке не так. А вот поиск ошибки (несуразности, непонятности и непредсказуемости и т.п.) при полностью исправном (внешне!) коде это бывает геморроем.
"НайтиПоНаименованию" - абсолютно "студенческое", обывательское и примитивное решение. По-хорошему, такой метод вообще исключить бы из справочников. Отсутствие этого "костыля" хоть кого-то принудит к нормальному администрированию своей же НСИ. А пока в головах пользователей свято верование в то, что компьютер не только умеет читать, но ещё и интерпретировать прочитанное. И с точки зрения пользователя достаточно "накидать" в строку наименования комбинацию "фамилия имя отчество" в любом порядке, с точками или без них, с произвольным количеством пробелов в любой части строки и этого будет достаточно - "Компутер, он же умный! Я же смотрю и понимаю, он тоже должен понимать." И программисты радостно ведутся на эту фигню, пытаясь показать своё непревзойденное величие, пишут для пользователя удивительнейшие "эвристические анализаторы", позволяющие найти "Васю Иванова" из любых "Ивановых Вась".
С точки зрения построения качественной предсказуемой системы, опора на машинное чтение строковых (текстовых!) значений - убогое решение на уровне калымящего студента второго курса.
45. GarriSoft 367 01.02.26 23:45 Сейчас в теме
(40)
(41)
Какой-то сюр… Видимо, желание уколоть автора сильнее, чем логика и профессиональное достоинство.

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

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

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

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

Судя по одобрению хамства в комментариях и этой внезапной внутренней грызне, с культурой общения у вас всё так же, как и с культурой кода.

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

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

Пожалуй, оставлю всё как есть для истории и в назидание молодым коллегам.
DmitryKSL; +1 1 Ответить
46. sapervodichka 7521 01.02.26 23:48 Сейчас в теме
(45) да, умерь своё эго, и будь проще, ты как думал, что к тебе придираться не будут? Будут
Но ты вызвал живое обсуждение, и прими это как плюс
Я же не писал, например, что у меня 22 года опыта с 1С и не тыкал этим в лицо в ответах.
Нормально общаемся, и ты нормально отвечаешь.
В заявках в друзья меня добавь что ли.
tolyan_ekb; AndRoman.pro; muskul; +3 Ответить
48. GarriSoft 367 02.02.26 00:26 Сейчас в теме
(46) В менторском тоне я не нуждаюсь, а по поводу всего остального, я уже сказал выше.
У нас просто разные пути и разные взгляды на профессиональную ответственность.
На этом предлагаю закончить дискуссию!
49. sapervodichka 7521 02.02.26 00:27 Сейчас в теме
(48) У тебя просто левые понты, ставить себя выше других. Меня начало подташнивать от твоих комментариев, я сам тебя в бан добавил. Ценность статьи небольшая, не многое потеряю.
50. GarriSoft 367 02.02.26 00:46 Сейчас в теме
(49)
Переход на личности, это хороший индикатор того, что аргументы закончились.
На этом действительно всё!
54. moolex 892 02.02.26 08:21 Сейчас в теме
Пункт 4 - никогда не используйте предопределённые.
Нет ничего плохого в поиске по Наименованию("Товары"), Товары они всегда Товары.

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

Пункт 7 - полностью согласен,
Комментарии должны чо временем удаляться, для этого есть система сравнения версий

Пункт 8 - согласен, области это излишество, которое мешает смотреть код, комментарии должен быть всегда внутри функции в начале...
70. chuevsf 117 03.02.26 09:21 Сейчас в теме
@GarriSoft и @sapervodichka
Надеюсь, что по итогам комментов этой статьи вы помирились, а не пошли друг другу бить морды.)))

P.S. В который раз убеждаюсь, что подобные разговоры (дискуссии) надо вести за кружечкой пенного под рыбку или холодного графинчика с шашлычком и картошечкой.
71. GarriSoft 367 03.02.26 10:56 Сейчас в теме
(70)
Всё мирно )))
Морды целы, клавиатуры тоже. Согласен, живые разговоры за пределами комментариев часто куда продуктивнее и приятнее. А если там еще и "кружечка пенного под рыбку или холодный графинчик с шашлычком и картошечкой"
то тут просто без вариантов )))

из фильма "Москва слезам не верит":
"Черт побери! Вы так вкусно рассказываете, что у меня аж слюнки потекли".
74. lada2011 16.02.26 09:22 Сейчас в теме
По мне в коде главное надежность и быстрота изменения по запросам пользователей. Для примера, ненавистный запрос в цикле работает надежнее и быстрее, чем запрос монстр с менеджером таблиц, да и поменять логику и поиск ошибок в небольших запросах можно быстрее, чем анализируя монстра, искать место и причину, почему результат получается правильный , а иногда не правильный.
В нормальной организации существует регламент к доступу к справочникам и любое изменение наименования справочника должно быть обосновано и информация об изменениях поступает в отдел разработки.
Есть во всех конфигурациях регистр сведений "Штрихкоды" сгенерируйте для справочников штрихкоды и с помощью запроса всегда выберите из справочника искомый элемент. Самое главное штрихкоды не повторяются.
75. GarriSoft 367 16.02.26 09:51 Сейчас в теме
(74)
Коллега, не соглашусь

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

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

По поводу регламентов и наименований, в идеальном мире да, изменения контролируются. Но практика показывает, что базы живут долго, проходят через разных людей, интеграции, загрузки данных и человеческий фактор никто не отменял. Поэтому опираться на строки (наименования), всё равно риск, даже при хорошем, отлаженном процессе, кроме того зачем привлекать ИТ туда где не нужно, зачем замыкать на ИТ не свойственные им процессы. Я не считаю, что эта хорошая практика, любой бизнес процесс должен быть выстроен без участия ИТ

Идея со штрихкодами конечно интересная, но по сути это всё тот же дополнительный идентификатор. Если уже вводить стабильную идентификацию, то обычно проще и прозрачнее работать со ссылками, предопределёнными элементами или ПВХ, тогда система сама гарантирует 100% целостность без дополнительных механизмов.
76. RocKeR_13 1465 18.02.26 14:04 Сейчас в теме
Понимаешь, что человек просто увлёкся, как ребёнок с новой игрушкой. Сворачивать и разворачивать их - это отдельный квест. Область должна упрощать жизнь, а не создавать лабиринт.


Ну прежде всего области удобны для работы в EDT, где по областям строится древовидная схема с возможностью перехода на место в модуле. Для себя взял за правило (чисто для удобства работы именно в конфигураторе) в строке с КонецОбласти оставлять в виде комментария имя области, например:
#Область ВспомогательныеПроцедурыИФункции
......
#КонецОбласти // ВспомогательныеПроцедурыИФункции


З.Ы. в целом не очень понятна претензия "Сворачивать и разворачивать их - это отдельный квест". Можно и не сворачивать, чтобы потом не разворачивать, как-будто их вообще и нет) Это в любом случае удобнее же, чем отделять куски кода комментариями типа
////////////////////////////////////////////////////////////////////////////////
// Общие процедуры и функции для работы с данными в базе.
77. GarriSoft 367 18.02.26 14:09 Сейчас в теме
(76)
#КонецОбласти // ВспомогательныеПроцедурыИФункции
отличная идея.

не очень понятна претензия "Сворачивать и разворачивать их - это отдельный квест"
тут имелось ввиду избыточная вложенность областей, я не против областей
78. RocKeR_13 1465 18.02.26 14:18 Сейчас в теме
(77)
тут имелось ввиду избыточная вложенность областей

Ну тут, наверное, больше вопросы к логическому мышлению разработчика) В принципе глобально даже больше 2 уровней и не встречал на практике (корневая область для процедур и функций + области без вложений в самих процедурах/функциях). Иначе скорее всего есть смысл вынести кусок в отдельную процедуру. Но даже и без этого избыточную вложенность я бы не отнес к "ошибкам", как это обозначено в заголовке статьи. Это скорее "личный раздражитель/индивидуальная непереносимость")
79. RocKeR_13 1465 18.02.26 14:19 Сейчас в теме
Есть особый вид оптимизма - это писать код так, будто ошибок в принципе не существует.

По своей практике скажу, что это не "оптимизм", а "лень/пофигизм")
Для отправки сообщения требуется регистрация/авторизация