1С: Дичь (лучшее из моей коллекции)

от автора

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

К чему я это… Будь я журналистом, сказал бы «у меня много источников». Как учёный — «нет недостатка в объектах исследования». Но я — лишь программист, поэтому повторю первое предложение этой статьи — я постоянно имею дело с чужим кодом.

Много лет назад, когда во мне горел юношеский абсолютизм, я реагировал на «плохой код» резко и негативно. Всё какие-то стандарты изучал и пропагандировал. В нашей среде стандартом код разработчиков из самой 1С обычно считается. А одна из высших оценок качества кода — если он не отличим от написанного вендором. Ну вот и я такой был.

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

Да, что ещё совершенно точно: при сильно изменившихся стандартах не сильно изменился результат, т.е. продукт 🙂

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

Ну и коллекционировать эти куски кода начал. Чтобы не потерять — канал в телеге создал. Иногда там и мой код бывает, за который мне стыдно (порой).

Подумал, вдруг вам тоже будет интересно, и решил оформить в виде статьи самые интересные (на мой взгляд) примеры.

Человек решает задачу "Найти всех пользователей с определённым перечнем ролей". Зацените сбор результата в строку.

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

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

Стажёр решает задачу «посчитать количество цифр и английских букв в строке»
Тут прекрасно всё

Тут прекрасно всё
Первые доработки начинающих программистов почти неотличимы от сделанных на скорую руку

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

А это — топорное версионирование кода. Каждая следующая процедура — копия предыдущей, но с небольшими изменениями
Не просто так, объяснение есть, но... Всё равно ведь забавно?

Не просто так, объяснение есть, но… Всё равно ведь забавно?
А тут видна история - условие дополнялось не сразу, и в результате через ИЛИ перечислено почти всё

А тут видна история — условие дополнялось не сразу, и в результате через ИЛИ перечислено почти всё
Прислал один из читателей канала

Прислал один из читателей канала
По легенде, этот код заменяет в заказах одну номенклатуру на другую

По легенде, этот код заменяет в заказах одну номенклатуру на другую
Тоже читатель прислал. Мораль: тут не всё понятно :)

Тоже читатель прислал. Мораль: тут не всё понятно 🙂
Видна история, судьбы? Я прям вижу - программисты сидят, ночь, оно не считается, НАДО ХОТЬ ЧТО-ТО СДЕЛАТЬ

Видна история, судьбы? Я прям вижу — программисты сидят, ночь, оно не считается, НАДО ХОТЬ ЧТО-ТО СДЕЛАТЬ
Гуманитарии в нашей профессии тоже встречаются. Я - один из них

Гуманитарии в нашей профессии тоже встречаются. Я — один из них
Это типовая отраслевая конфигурация. Запись документа внутри обработки проведения.Ну а кто без греха?

Это типовая отраслевая конфигурация. Запись документа внутри обработки проведения.
Ну а кто без греха?
Строка - надёжная, строка не подведёт

Строка — надёжная, строка не подведёт
Кому-то нравится справа налево писать. Отраслевая конфигурация

Кому-то нравится справа налево писать. Отраслевая конфигурация
Тут тоже не весь код понятен :)

Тут тоже не весь код понятен 🙂
Эффектно завёрнутый в универсальную функцию поиск по коду

Эффектно завёрнутый в универсальную функцию поиск по коду


ссылка на оригинал статьи https://habr.com/ru/articles/768432/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *