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

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

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

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

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

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

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

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

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

Человек решает задачу

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

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

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

Стажёр решает задачу

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

Тут прекрасно всё

Тут прекрасно всё

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

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

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

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

Не просто так, объяснение есть, но... Всё равно ведь забавно?

Не просто так, объяснение есть, но… Всё равно ведь забавно?

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

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

Прислал один из читателей канала

Прислал один из читателей канала

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

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

Тоже читатель прислал. Мораль: тут не всё понятно :)

Тоже читатель прислал. Мораль: тут не всё понятно :)

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

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

Гуманитарии в нашей профессии тоже встречаются. Я - один из них

Гуманитарии в нашей профессии тоже встречаются. Я — один из них

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

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

Строка - надёжная, строка не подведёт

Строка — надёжная, строка не подведёт

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

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

Тут тоже не весь код понятен :)

Тут тоже не весь код понятен :)

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

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

© Habrahabr.ru