Имя: Пароль:
1C
 
Идеальный код на 1С
, ,
0 1ctube
 
21.04.21
12:45
1. Бывало 63% (12)
2. Никогда 21% (4)
3. Бывало и даже в типовых 16% (3)
Всего мнений: 19

Доброго времени суток. Вопрос такой, бывало ли у вас что открыв чужую конфигурацию и оценив код, то вы увидели идеальный код или гениальное решение, которое заставило вас сказать/подумать "Это прекрасно" или "гениально". Даже слезу пустить от красоты решения
2 DrZombi
 
гуру
21.04.21
12:50
Было и не раз. И гениальность до такой стороны сложна и проста, что обычные кодеры ее не замечают, и сторонятся. Их речи "Много буковок кода, не осилил" :)

Бывало
3 dvpk
 
21.04.21
12:52
(0) Идеальность кода вопрос достаточно эфемерный. Слишком много критериев оценки. Вообще, грамотные решения часто можно наблюдать в типовых(из вариантов опроса почему-то следует, что в типовых его меньше). А вот как раз от кастомных обработок и модулей иногда становилось плохо.

Бывало
5 CHerypga
 
21.04.21
12:54
в типовом зупе 2.5 в лицевые счета работников организации добавлен основной лицевой счет и нижеследующий код в перед записью модуля набора записей для обеспечения возможности устанавливать только один основной лицевой счет по физлицу

ТаблицаНабораЗаписей = ЭтотОбъект.Выгрузить();
ОтборОсновнойЗарплатныйПроект= Новый Структура;
ОтборОсновнойЗарплатныйПроект.Вставить("ОсновнойЗарплатныйПроект", Истина);
МассивСтрокНабораЗаписей = ТаблицаНабораЗаписей.НайтиСтроки(ОтборОсновнойЗарплатныйПроект);
Если МассивСтрокНабораЗаписей.Количество() = 0 Тогда
    Возврат;
КонецЕсли;
СписокФизЛицНабора = Новый СписокЗначений;
Для каждого СтрокаНабораЗаписей Из МассивСтрокНабораЗаписей Цикл    
    
    Если Не СписокФизЛицНабора.НайтиПоЗначению(СтрокаНабораЗаписей.ФизЛицо) = Неопределено Тогда
        СтрокаНабораЗаписей.ОсновнойЗарплатныйПроект = Ложь;
        Продолжить;
    КонецЕсли;
    
    СписокФизЛицНабора.Добавить(СтрокаНабораЗаписей.ФизЛицо);
    
КонецЦикла;
    
ЭтотОбъект.Загрузить(ТаблицаНабораЗаписей);

УстановленОтборНабораЗаписей = Ложь;
Для каждого ЭлементОтбора Из Отбор Цикл
    Если ЭлементОтбора.Использование Тогда
        УстановленОтборНабораЗаписей = Истина;
    КонецЕсли;    
КонецЦикла;    
Если Не УстановленОтборНабораЗаписей Тогда
    Возврат;
КонецЕсли;    

ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст =
"ВЫБРАТЬ
|    ЛицевыеСчетаРаботниковОрганизации.Организация,
|    ЛицевыеСчетаРаботниковОрганизации.Банк,
|    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
|ПОМЕСТИТЬ ВТ_ЛицевыеСчетаСОтборомНабораЗаписей
|ИЗ
|    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
|ГДЕ
|    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо В(&СписокФизЛиц)
|    И ЛицевыеСчетаРаботниковОрганизации.ОсновнойЗарплатныйПроект";
ПостроительЗапроса.ЗаполнитьНастройки();
СтруктураОтбора = ПолучитьСтруктуруОтбора(Отбор);
ЗаполнитьОтборИзСтруктуры(ПостроительЗапроса.Отбор, СтруктураОтбора);

ЗапросСОтборомНабораЗаписей = ПостроительЗапроса.ПолучитьЗапрос();
ЗапросСОтборомНабораЗаписей.УстановитьПараметр("СписокФизЛиц", СписокФизЛицНабора);
ЗапросСОтборомНабораЗаписей.Текст = ЗапросСОтборомНабораЗаписей.Текст+
";
|ВЫБРАТЬ
|    ЛицевыеСчетаРаботниковОрганизации.Организация,
|    ЛицевыеСчетаРаботниковОрганизации.Банк,
|    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
|ИЗ
|    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
|        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЛицевыеСчетаСОтборомНабораЗаписей КАК ВТ_ЛицевыеСчетаСОтборомНабораЗаписей
|        ПО ЛицевыеСчетаРаботниковОрганизации.Организация = ВТ_ЛицевыеСчетаСОтборомНабораЗаписей.Организация
|            И ЛицевыеСчетаРаботниковОрганизации.Банк = ВТ_ЛицевыеСчетаСОтборомНабораЗаписей.Банк
|            И ЛицевыеСчетаРаботниковОрганизации.ФизЛицо = ВТ_ЛицевыеСчетаСОтборомНабораЗаписей.ФизЛицо
|ГДЕ
|    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо В (&СписокФизЛиц)
|    И ЛицевыеСчетаРаботниковОрганизации.ОсновнойЗарплатныйПроект
|    И ВТ_ЛицевыеСчетаСОтборомНабораЗаписей.ФизЛицо ЕСТЬ NULL";
    
Выборка = ЗапросСОтборомНабораЗаписей.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    
    НаборЗаписейОсновнойЛожь = РегистрыСведений.ЛицевыеСчетаРаботниковОрганизации.СоздатьНаборЗаписей();
    НаборЗаписейОсновнойЛожь.Отбор.Организация.Установить(Выборка.Организация);
    НаборЗаписейОсновнойЛожь.Отбор.Банк.Установить(Выборка.Банк);
    НаборЗаписейОсновнойЛожь.Отбор.ФизЛицо.Установить(Выборка.ФизЛицо);
    НаборЗаписейОсновнойЛожь.Прочитать();
    
    Для каждого ЗаписьНабораОсновнойЛожь Из НаборЗаписейОсновнойЛожь Цикл
        ЗаписьНабораОсновнойЛожь.ОсновнойЗарплатныйПроект = Ложь;
    КонецЦикла;
    
    НаборЗаписейОсновнойЛожь.Записать();
    
КонецЦикла;

Бывало
6 d4rkmesa
 
21.04.21
12:56
Бывает. Не до слез, конечно, но в типовых раньше такое в "Бухгалтерии 3" было частенько - все красивенько. Сейчас, правда, уже начали усложнять, как в УТ/ERP-ке - унификация процедур, интерфейсов и т.д., кодогенерация.

Бывало
7 Lama12
 
21.04.21
12:58
(0) Идеальность по какому критерию?
Всегда считал что удобство модификации является главным в коде который нужно поддерживать. Но вот когда смотрю на код зарплаты, то плачу. Решения интересные, но ни отладить, ни изменить красиво не получится.
Насколько такой код красивый?

Бывало
16 lubitelxml
 
21.04.21
15:13
Но не в типовых

Бывало
19 1Сергей
 
22.04.21
09:21
Видел код skunk-a

Бывало
24 АнализДанных
 
22.04.21
11:56
(0) Много кода видывал, наверное идеальный - это когда код написан так, что ты правишь\добавляешь одну строчку и твои изменения начинают наследоваться\обрабатываться в других процедурах автоматом. Например, есть какая-то процедура инициализации, где задаются изначальные настройки и достаточно внести изменения только туда.

Бывало
30 Конструктор1С
 
22.04.21
13:49
(0) хороший код это тот который легко читать, понимать, по которому легко "перемещаться". Хороший код кажется простым и банальным. Поэтому им никто не восхищается

Бывало
31 Pprog151713
 
22.04.21
15:06
Хороший код, это когда норм. работает и денежки приносит и клиент доволен. :)

Бывало
32 aka MIK
 
22.04.21
15:12
Каждый кто откроет мой код - именно так и скажет.

Все, кроме SonarQube - этому сложно угодить )

Бывало
36 AliceLight
 
22.04.21
16:47
Есть код некоторых коллег, которым залюбоваться можно. У них хороший уровень

Бывало
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн