Имя: Пароль:
JOB
Работа
Быдлокод
0 Маленький Вопросик
 
20.08.11
17:23
Как считают местные обитатели, что такое быдлокод? И кто в праве оценивать его "быдлокодовость", если и так все работает?
1 byxtello
 
20.08.11
17:24
неоптимальный код работает при 1-3 пользователей
а уже при 10 юзерах он становится быдлокодом
2 IamAlexy
 
20.08.11
17:25
(0)канонически:  быдлокод это все что написал программист "до тебя"
3 kosts
 
20.08.11
17:28
4 Маленький Вопросик
 
20.08.11
17:29
(2) да, почему-то все понимают (даже некоторые заказчики), что после кого-то надо переписывать все заново...
5 Wobland
 
20.08.11
17:29
>и так все работает
вот вообще ни разу не аргумент
6 kosts
 
20.08.11
17:37
Вот пример встречал, думаю что это точно быдлокод. Печать графика из типовой ЗУП.


Год = Год(Документ.Дата);
Запрос.УстановитьПараметры("Года", Год);

вместо

Год = Документ.Год;
Запрос.УстановитьПараметры("Года", Год);
7 Wobland
 
20.08.11
17:39
(6) ты сейчас о чём? какой из кусков был в конфигурации? что, Год хранится в документе?
тэги в лайфе не работают.
я бы сделал так:
Запрос.УстановитьПараметры("Года", Год(Документ.Дата), а вообще, год в самом запросе легко определяется
8 kosts
 
20.08.11
17:42
(7) Год графика он определял из даты документа, которая могла и не совпадать с годом графика...
9 Злобный Фей
 
20.08.11
17:43
(6) Фигня. Вот как надо:
Год = Число(СтрПолучитьСтроку(СтрЗаменить(СокрЛП(Документ.Дата),".",Символы.ПС),3));
10 Alexandr Puzakov
 
20.08.11
17:43
Вот составные части 1Сного быдлокода:
- неправильное использование объектов встроенного языка;
- абы как именованные переменные;
- плохо организованная структура кода (наличествуют процедуры ТЗ(), Печать1(), Печать2() и т. п.);
- совершенно лишние куски кода;
- изобретение кривых велосипедов там, где имеются гибкие встроенные механизмы;
- дублирование кода из модуля в модуль, хотя некоторый код на ура можно было бы вынести в общие модули;
- получение запросами лишних данных;
- отсутствуют какие-либо комментарии в коде;
- неправильные алгоритмы, через раз выдающие нормальный результат;
- прочие.
11 Steel_Wheel
 
20.08.11
17:44
C#

bool b;
b = false;

if !(b.ToString.Length() > 4)
{

}
12 andrewks
 
20.08.11
17:49
типовая Бухия 7.7

Функция РубКоп(Сумма)
   Руб=Цел(Сумма);
   Коп=ОКР(100*(Сумма-Руб),0,1);
   СуммаРубКоп=""+Руб+"руб."+Цел(Коп/10)+(Коп-10*Цел(Коп/10))+"коп.";
   Возврат СуммаРубКоп;
КонецФункции
13 Wobland
 
20.08.11
17:50
(11) не, ну здесь явный стёб программиста. не поверю, что такое можно изобрести на полном серьёзе, зная значение слова bool
14 Wobland
 
20.08.11
17:52
а где-то ж встречалось обращение знака: а=а-2*а; потом, работает только на положительных значениях а
15 Wobland
 
20.08.11
17:53
(14) блин, вру, с отрицательными тоже
16 ДенисЧ
 
20.08.11
17:53
(14) такое сплошь и рядом в прямых запросах в 1с... Быдлокод? нуну
17 Wobland
 
20.08.11
17:54
(16) прямые запросы - это 7.7? а вообще, зависит от языка, конечно
18 Мигрень
 
20.08.11
17:54
(10) + названия переменных, функций, комментарии - матом. Но это отдельная тема.
В то же время нецензурщина как правило перемешана с основными признаками быдлокода и составляет единую феерическую картину.

Храню такую конфу у себя, показывать молодым программерам. Видел в лицо и автора и даже разговаривал с ним. Вполне себе такой одноэсник с опытом около 3-х лет.
19 IamAlexy
 
20.08.11
17:54
(17) 7ка вообще от начала до конца быдлокод..
20 andrewks
 
20.08.11
17:55
(19) опять срач зачинаешь?
21 Wobland
 
20.08.11
17:57
цитата из какого-то распоряжения на предприятии: запрещается использовать слово "ж0па" даже в отладочных целях. я по молодости печатную форму ценников поменял (страна производства: ж0па) и ушёл на обед, забыв вернуть всё обратно ;)

PS какой настырный матофильтр! ;)
22 ДенисЧ
 
20.08.11
17:57
(19) у тебя опечатка. 8 на 7 меняется. Со своей крутой зарплаты новую клаву купи...
23 Wobland
 
20.08.11
17:58
(22) не трожь восьмёрку. по сравнению с 7.7 - конфетка
24 Wobland
 
20.08.11
17:58
+(23) срач детектед?
25 Xapac
 
20.08.11
18:00
моя работа = быдлокод
26 Wobland
 
20.08.11
18:01
(25) так вот где источник вселенского зла!
27 ДенисЧ
 
20.08.11
18:01
(23) конфетка... *овно, завёрнутое в красивую бумажку...
28 Wobland
 
20.08.11
18:01
+(26) а я думал, это предшественник такой тупой
29 Wobland
 
20.08.11
18:02
(27) предлагаю прекратить срач и завести новую ветку на эту тему. только я писать туда не буду
30 Jolly Roger
 
20.08.11
18:02
(0) явный признак быдлокода - это когда пользователи не могут работать без помощи автора...
31 Wobland
 
20.08.11
18:03
(30) это скорее недоработки на этапе проектирования, а не кодинга
32 kiruha
 
20.08.11
18:03
Неужели такой баянистый вброс (19)
еще кого то разводит ???
33 Jolly Roger
 
20.08.11
18:03
(32) отнюдь...
34 Jolly Roger
 
20.08.11
18:04
мнэ... (33) к (31)
35 andrewks
 
20.08.11
18:05
вот, недавно припёрли чью-то поделку, краткие выдержки:

 Процедура ВычислитьПроцент()
 Если Закупка>=10000 Тогда
     процент = 1;
 иначе процент = 0;
 КонецЕсли;
 
 Если Закупка>=15000 Тогда
     процент = 1.5;
 КонецЕсли;

 Если Закупка>=30000 Тогда
     процент = 2;
 КонецЕсли;
 
 Если Закупка>=50000 Тогда
     процент = 3;
 КонецЕсли;
 
 Если Закупка>=70000 Тогда
     процент = 3;
 КонецЕсли;

 Если Закупка>=100000 Тогда
     процент = 3;
 КонецЕсли;

КонецПроцедуры    


ещё:

 Сп = СоздатьОбъект("СписокЗначений");
 Сп.ДобавитьЗначение("Январь");
 Сп.ДобавитьЗначение("Февраль");
 Сп.ДобавитьЗначение("Март");
 Сп.Выгрузить(спис);
 
 спис.Добавитьзначение("Апрель");
 спис.ДобавитьЗначение("Май");
 спис.Добавитьзначение("Июнь");
 спис.ДобавитьЗначение("Июль");
 спис.Добавитьзначение("Август");
 спис.ДобавитьЗначение("Сентябрь");
 спис.Добавитьзначение("Октябрь");
 спис.Добавитьзначение("Ноябрь");
 спис.ДобавитьЗначение("Декабрь");


спис - список на форме, Сп более нигде не используется.
и так почти везде
36 Wobland
 
20.08.11
18:06
(34) нене. если ты придумал нечто, что не может работать без тебя - плохо придумал. а конкретная реализация в виде кода - ну какая разница, через назад или нет
37 Wobland
 
20.08.11
18:08
добавлю от себя. никогда не приходилось разгребать чужие конюшни, написанные _всегда_ нижним регистром? и без табуляции. а человек ведь создал продукт, который работает и используется. разгребать всё это тяжко...
38 Jolly Roger
 
20.08.11
18:08
(36) дык в том то и дело, что хороший проект нетрудно угробить неграмотной реализацией: скажем, обработка исключительных ситуаций вряд ли прописана в проекте...
39 Маленький Вопросик
 
20.08.11
18:09
(30) зачем консультанты 1с тогда?
40 Wobland
 
20.08.11
18:09
(38) уговорил. не предусмотрел обработку всех возможных состояний - быдлокодер
41 Jolly Roger
 
20.08.11
18:10
(37) гы! и аналогично, когда абсолютно каждое слово в коде начинается с большой буквы...
42 andrewks
 
20.08.11
18:10
(37) ещё хуже, когда регистры и английские/русские нотации вперемешку

вот, оттуда же:

Если ((фл=1)И(ЗАКУПКА1>=10000))ИЛИ((фл=2)И(закупка1>=30000)и(закупка1<50000))или((фл=3)и(закупка1>=10000)и(закупка1<15000))или((фл=4)и(закупка1>=50000))или((фл=5)и(закупка1>=15000)и(закупка1<30000))или(фл=6) Тогда
43 Jolly Roger
 
20.08.11
18:10
(39) какие консультанты?
44 Jolly Roger
 
20.08.11
18:12
+(43) типа если программа ругается на деление на ноль, консультант подсказывает, что надо заполнить, скажем, цену?
45 luckyluke
 
20.08.11
18:18
Обработка ВТБ24 пластиковые карты:

Функция сотр_АдресРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Представление;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
 КонецФункции
       
Функция сотр_ИндексРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле1;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;

КонецФункции

Функция сотр_РегионРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле2;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
 КонецФункции
 
Функция сотр_РайонРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле3;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
КонецФункции

Функция сотр_ГородРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле4;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
КонецФункции

Функция сотр_УлицаРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле6;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
КонецФункции

Функция сотр_КорпусРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле8;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
КонецФункции

Функция сотр_КвартираРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле9;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
КонецФункции

Функция сотр_ДомРегистрации(сотр)
       
   Выборка = РегистрыСведений.КонтактнаяИнформация.Выбрать();
  Пока Выборка.Следующий() Цикл
       Если сотр = СокрЛП (Выборка.Объект) Тогда
             
           Если  СокрЛП(Выборка.Тип) = "Адрес" Тогда
               
               рег = Выборка.Поле7;
               
           КонецЕсли;
                       
   КонецЕсли;
   КонецЦикла;
   Возврат рег;
 КонецФункции
46 Wobland
 
20.08.11
18:22
(45) ну не знает человек о запросах. ну гвоздь ему в мозг. я тоже так делал, пока не познакомился с восьмёркой..
47 Wobland
 
20.08.11
18:23
(45) впрочем, самый что ни на есть быдлокод
48 Luhtas
 
20.08.11
18:24
(0) Мне кажется, любой из здесь присутствующих начинал с написания именно быдлокода свою деятельность. Другое дело если дальше код совершенствовался и превращался в оптимальный и красиво оформленный. Плохо если человек так и продолжает топорить три-четыре метода, не напрягая более мозги...
49 Wobland
 
20.08.11
18:27
(48) я свой быдлокод начинал с С++, к моменту принятия 1С я подошёл подготовленным. с учётом (46), конечно ;)
50 Asmody
 
20.08.11
18:27
(45) какой-то задроченный дотнетчик писал…
51 luckyluke
 
20.08.11
18:28
(46) ну он хотя бы про параметры метода Выбрать() почитал в справке, чтоли...
52 Asmody
 
20.08.11
18:29
(48) не, все мистяне сразу родились крутыми профессионалами с 22 см
53 Wobland
 
20.08.11
18:30
(52) у меня даже дочь при рождении имела 54 см, что там мистяне ;)
54 Wobland
 
20.08.11
18:30
+(53) но как 1Сник она слаба, да...
55 Asmody
 
20.08.11
18:31
(51) зачем? Доки читают только неудачники, а там — профи, по подчерку видно
56 Маленький Вопросик
 
20.08.11
18:33
мне кажется, что любая начальная версия любой программы может содержать быдлокод
57 Wobland
 
20.08.11
18:34
(56) контраргумент: Сообщить("Hello, world!");
58 Фигня
 
20.08.11
18:34
вопрос. И автор туп. Интересно, что можно наваять, если ТЗ заменяют разведением руками в воздухе со словами "вот вчера надо было, ты уж сделай сейчас да побыстрее"?
59 ДенисЧ
 
20.08.11
18:34
(57) Ага, а &наСервере?
60 Wobland
 
20.08.11
18:35
(59) плин, Новый СообщениеПользователю()... с 8.2 не близко знаком
61 Jofa
 
20.08.11
18:36
Я начинал свой быдлокодинг с чтением ЖКК + мужик в кепке помогал, потом уже когда сам поглядишь на свое го-но со стороны переделаешь его в другой раз стараешся не делать ошибки..
62 Jstunner
 
20.08.11
18:38
Быдлокод - это когда программа не работает должным образом. Все остальное - придирки и неопытность начинающих программистов, дорвавшихся до исходников
63 Jofa
 
20.08.11
18:38
Иногда быдлокодинг может появиться когды тебя торопят быстро сделать ту или ииную прогу .. тк считают раз много получаешь зп значит должон делать быстро и качественно ..
64 luckyluke
 
20.08.11
18:39
+(45) самый ништяк еще в том, что вот эти функции потом вызываются по очереди вот так:
рег_индекс       = сотр_ИндексРегистрации(сотр);//сотр_Индекс(адрес_рег);
рег_район        = сотр_РайонРегистрации(сотр);//сотр_Район(адрес_рег);
рег_город        = сотр_ГородРегистрации(сотр);//сотр_Город(адрес_рег);
рег_улица        = сотр_УлицаРегистрации(сотр);//сотр_Улица(адрес_рег);
рег_дом          = сотр_ДомРегистрации(сотр);//сотр_Дом(адрес_рег);
рег_корпус       = сотр_КорпусРегистрации(сотр);//сотр_Корпус(адрес_рег);
рег_кв           = сотр_КвартираРегистрации(сотр);//сотр_Квартира(адрес_рег);
65 Wobland
 
20.08.11
18:40
(62) а как же красота? если работает, но через назад - это правильно?
66 Xapac
 
20.08.11
18:40
(62)не верная постановка ответа.

у меня есть 2 программы, работают одинаково, 1-я быдлокод, 2-я нет
67 Jofa
 
20.08.11
18:40
(62) +100
68 Jofa
 
20.08.11
18:41
(64)Го-нокод чё разве так бывает?
69 andrewks
 
20.08.11
18:42
(62) когда программа не работает должным образом - это ошибки, баги, неверные алгоритмы и/или структуры данных.

это всё, конечно, частые соседи быдлокодинга, но, тем не менее, надо их различать.
наоборот, быдлокодинг возникает, когда новичок, не желающий долго разбираться ни с языком, ни с архитектурой системы, БД, и т.д., "быстро и качественно" начинает клепать надстройки и костыли
70 Jofa
 
20.08.11
18:44
Есть мнение что если прога работает значит не трожь !
Это правильное мнение?
71 Wobland
 
20.08.11
18:44
(70) да! но не хрен юзать быдлокодинг
72 Wobland
 
20.08.11
18:46
+(71) выше упоминал о предшественнике. переписываю всегда, когда натыкаюсь на его код. не от неприятия его стиля, а от того, то по-другому лучше..
73 luckyluke
 
20.08.11
18:47
(70) ты знаешь, вот эта прога из (45)+(64) выполнялась 3-4 часа при кол-ве сотрдуников около 30, мне стало как-то жаль пользователей...
74 Jofa
 
20.08.11
18:48
(73) те если видишь го-нокод тогда лучше переписать это с нуля чем править чью то поделку?
75 Wobland
 
20.08.11
18:48
(73) вспомним (0) и мой (5) ;)
76 andrewks
 
20.08.11
18:49
(74) если это повышает надёжность и производительность, то переписать даже _нужно_. особенно, если ты получаешь за это деньги
77 Wobland
 
20.08.11
18:49
(74) имхо это - признак ГКода. когда проще переписать заново..
78 Jofa
 
20.08.11
18:49
Интересно бывает такое как в звёздных войнах "Всегда двое учитель и ученик"?
79 Wobland
 
20.08.11
18:51
(78) поясни тому, кто не в курсе, плз
80 luckyluke
 
20.08.11
18:51
(74) я считаю плохо издеваться над пользователями...
81 Jofa
 
20.08.11
18:52
Ну типо у каждого человека есть свой стиль написания кода..
82 Jofa
 
20.08.11
18:54
(80)Не которые юзеры всю жизнь работают и счетают тормоза нормой, кода перепишишь код все сразу работает крута, итебя считаю Волшебником
83 AlexNew
 
20.08.11
18:54
(0) Ты кого учить собрался?
84 Jofa
 
20.08.11
18:54
(81)Не которым стиль написания даёт наставник ..
85 Jofa
 
20.08.11
18:55
+(84) те можно определить чья школа ..
86 andrewks
 
20.08.11
18:55
(81) при чём здесь стиль? тут не табуляции и разнос кода по строчкам обсуждают. тут речь ведут про код, который написан безграмотно, далёк от оптимального, тормознутый, трудночитаем, неустойчив к входным данным, с многократной обработкой одних и тех же данных, когда можно было сделать всё за раз.
как-то так
87 zak555
 
20.08.11
18:56
(35) открой ОбновлениеИБ - увидишь аналогичное =)
88 Jofa
 
20.08.11
18:57
(86) го-но кодинг это стиль . .
89 Wobland
 
20.08.11
18:58
поддерпжу Jofa в (88)
90 andrewks
 
20.08.11
18:58
(88) да ну? это непрофессионализм в 95% случаях. остальные 5% - маргинальные элементы, которые пишут так сознательно
91 Asmody
 
20.08.11
18:59
есть у нас один отчетик, показывает оперативную инфу по товарам, инструмент ежедневный и частопользуемый, по-этому из 7ки был перенесен самым первым (Причем, с начальным перенесением вопросов почти не было, ибо он в 7ке был на прямых запросах в свое время переписан). Потом в этот отчет «накручивали» ещё фич, появлялись всякие хитрые штуки в конфе, и т.д. Короче, намедни зашел нач.отдела учета, что-то ему цифири в колонках не понравились. Полезли мы в код отчёта смотреть «а почему так» и поняли, что дальше так жить нельзя. Т.е. оно, конечно, работает. И даже так, что всех устраивает. Но изнутри снйчас это такая конструкция, что что-либо поменять — это серьёзные мучения.
Это не совсем Гкод, но история из жизни.
92 zak555
 
20.08.11
18:59
нужно "писать" универсальность
93 andrewks
 
20.08.11
19:01
(87) да не, там нормально всё. там последовательно выполняемый и добавляемый код, и необходимо соблюсти принцип неизменности функционирования для предыдущих релизов.
а тут можно было завести табличку, возможно, даже, с возможностью редактирования юзерами с соотв.правами, и всё было бы красиво и универсально
94 zak555
 
20.08.11
19:03
(93) утрировал я =)
95 Jofa
 
20.08.11
19:05
(91)Временно когда переносишь с одной платформы с 77 на 81 на другую можно. лучше потом переписать используя возможности платформы.
(92) Не всегда работает
96 Jofa
 
20.08.11
19:06
(90) 5% Есть такое когда проги начинают возноситься к богам
97 Jofa
 
20.08.11
19:06
+(96) 95% не всегда бывает что человек незнает что он не правильно пишет код ..
98 zak555
 
20.08.11
19:07
(95) с чего вдруг ?
99 rs_trade
 
20.08.11
19:07
А я вот такое видел, даже не знаю как назвать...

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   Если ПометкаУдаления Тогда
       Возврат;
   КонецЕсли;
100 zak555
 
20.08.11
19:07
сотко
101 zak555
 
20.08.11
19:07
(99) не проводить помеченные ?
102 Jofa
 
20.08.11
19:08
(99) Крута
103 Jofa
 
20.08.11
19:09
(101) Это называется нечего не делать
104 zak555
 
20.08.11
19:09
(103) не понял
105 Jofa
 
20.08.11
19:11
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  Если ПометкаУдаления Тогда
Не чего не делай возвращайся!!
      Возврат;
  КонецЕсли;
106 kosts
 
20.08.11
19:13
Классика...

Спр = Справочник.КлассификаторВидовВремени.НайтиПоНаименованию("По тарифу")
107 Wobland
 
20.08.11
19:14
(105_ автоматическое удаление движений всё сделает ;)
108 Wobland
 
20.08.11
19:14
+(107) плин, проведение помеченного документа? ;)
109 Jofa
 
20.08.11
19:14
(107) +100
110 rs_trade
 
20.08.11
19:15
(101) ага. прог молодца. предусматривает нештатные ситуации.
111 Jofa
 
20.08.11
19:19
Пример моего первого го-но кода

Если Контрагент = Справочники.Контрагенты.НайтиПоКоду(КодКонтрагентаТорговля) Тогда

......

КонецЕсли;
112 Jofa
 
20.08.11
19:20
Ну я думаю поделится своим го-но кодом не зазорно
113 Wobland
 
20.08.11
19:25
(112) НайтиПоКоду() имхо не совсем быдлокод. когда нужна разовая обработка и сейчас... к тому же не очень качественный пример
114 Domovoi
 
20.08.11
19:25
(111)Тут сложно сказать кто наг0внокодил, ты или разрабы(если речь о НайтиПоКоду).
115 Jofa
 
20.08.11
19:27
(113) Удачный

Правильно

Если Контрагент.Код = КодКонтрагентаТорговля Тогда

....

КонецЕсли;
116 Domovoi
 
20.08.11
19:28
(115)Это уже было слишком умно, что на это не обратили внимание)
117 Wobland
 
20.08.11
19:28
(155) хм, возьму на вооружение ;)
118 Маленький Вопросик
 
20.08.11
19:54
НайтиПоКоду и НайтиПоНаименованию - особо не нужны, правильнее, как (115)
119 Холст
 
20.08.11
19:54
на одном из мест работы по наследству досталось много из того что я считаю быдлокодом (все для 1С 7.7):
1. имена глобальных процедур и функций без префикса "гл" (или хотябы другой префикс)
2. 10 разных обработок загрузки банка с единственным отличием в жестко прописанным расчетным счетом нашей организации
3. ключевые слова и имена процедур без заглавных букв: "конецесли" вместо "КонецЕсли", "мояфункцияполученияданных" вместо "МояФункцияПолученияДанных"
4. (не код, но не нравится доход) наименование обработок длинные и с пробелами, вместо лаконичных сокращенных наименований (без потери возможности их идентификации конечно)
5. много кусков кода "если Пользователь = "Иванов" т.е. привязка логики кода к конкретным наименованиям/кодам справочников
6. не экономно к занимаемому пространству и криво (без идинообразия или хотябы по сетке) разбросанные реквизиты на форме
7. "брошенные" объекты метаданных, не используемые в текущей конфигурации и обработках
8. документы Счет, Реализация и Счет-фактура, некоторым (сильно меньшинству) клиентам потребовался вывод наименований товара по своему - в самих документах (в каждом при том что это подчиненные друг другу документы) в табличной части был введен реквизит типа Строка 500символов, в результате по моей оценке объем базы вырос в 2,5-4 раза
120 Jofa
 
20.08.11
19:57
(119) Это суровый быдлокод
121 Холст
 
20.08.11
19:58
(119) "4 не код но не нравится ПОДХОД"
"6 (без Единообразия")
122 Jofa
 
20.08.11
20:08
По поводу обработок это 1Ска их так сохраняет  ... Каждый раз не будешь переименовывать
123 CepeLLlka
 
20.08.11
21:05
Пока 1 = 1 Цикл
           Поз = Найти(Стр, Разделитель);
           Если Поз = 0 Тогда
               Если (СокрЛП(Стр) <> "") Тогда
                   МассивСтрок.Добавить(Стр);
               КонецЕсли;
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз - 1));
           Стр = Сред(Стр, Поз + ДлинаРазделителя);
       КонецЦикла;
124 CepeLLlka
 
20.08.11
21:06
Парни.. подскажите почему в этом коде (123) Задают цикл на 1 раз.. зачем тогда цикл нужен?
125 byxtello
 
20.08.11
21:09
(124) цикл не на 1 раз - идет разбор Стр
126 CepeLLlka
 
20.08.11
21:11
А без цикла его разложить нельзя? Или я что-то не понимаю?
127 CepeLLlka
 
20.08.11
21:14
Ну да.. не на 1 раз.. там же "Пока", а не "Для"

Ну 1 ведь всегда будет = 1, значит зацикливается?

Что я упускаю? :(
128 byxtello
 
20.08.11
21:15
129 Злопчинский
 
20.08.11
21:16
(127) там Возврат внутрях
130 Злопчинский
 
20.08.11
21:17
Да нету быдлокода.. есть или работающий или неработающий код...
131 CepeLLlka
 
20.08.11
21:19
(129) Спасибо.
132 andrewks
 
20.08.11
21:32
(123) иногда действительно бывает необходимо делать такие псевдо-"вечные" циклы. но зачастую это неоправданно, как и в данном случае. например, лучше, на мой взгляд, сделать так:

Поз=-1;
Пока Поз>=0 Цикл
   Поз = Найти(Стр, Разделитель);
   Если Поз = 0 Тогда
       Если (СокрЛП(Стр) <> "") Тогда
           МассивСтрок.Добавить(Стр);
       КонецЕсли;
   Возврат МассивСтрок;
   КонецЕсли;
   МассивСтрок.Добавить(Лев(Стр,Поз - 1));
   Стр = Сред(Стр, Поз + ДлинаРазделителя);
КонецЦикла;
133 andrewks
 
20.08.11
21:33
+(132) извиняюсь, в начале Поз=0;  конечно
134 andrewks
 
20.08.11
21:34
или так:

Поз=Найти(Стр, Разделитель);
Пока Поз>=0 Цикл
   Если Поз = 0 Тогда
       Если (СокрЛП(Стр) <> "") Тогда
           МассивСтрок.Добавить(Стр);
       КонецЕсли;
   Возврат МассивСтрок;
   КонецЕсли;
   МассивСтрок.Добавить(Лев(Стр,Поз - 1));
   Стр = Сред(Стр, Поз + ДлинаРазделителя);
   Поз = Найти(Стр, Разделитель);
КонецЦикла;
135 andrewks
 
20.08.11
21:37
в (123)  аналог конструкции do {} while, которой нет в языке 1С
136 Aleksey
 
20.08.11
21:38
(10)
В топку список

"изобретение кривых велосипедов там, где имеются гибкие встроенные механизмы; "

Ты хоть раз пробовал вставлять в свои отчеты вызов типовых процедур из ГМ. А я пробовал, к 3-му релиза забодался разбираться куда они в этот раз перенесли процедуру (в какой ГМ) и за что теперь отвечают новые параметры.
137 andrewks
 
20.08.11
21:40
(136) не, ну если имеются в виду механизмы платформы, то озвучено верно. другое дело, что не всегда надо им руководствоваться. тут только поставленная задача и здравый смысл помогут определится. яркий пример - работа с xml в 7.7 ч/з штатную v7plus никуда не годится
138 CepeLLlka
 
20.08.11
21:41
Я и заметил что они по разному делают.. в одном месте так разбирают строку.. в другом иначе..
139 Aleksey
 
20.08.11
21:44
(137) Ну если исходить из (1), то перебор на языке 1С по сравнению с прямым запросом - быдлокод
140 popcorn
 
20.08.11
21:44
Интересно, есть аналог YUI Compressor для 1С ? Я бы его использовал )))
141 bazvan
 
20.08.11
21:45
Вот веть офигеть.
Даже незанаю как сказать что бы не получить.

Смешные, особенно некоторый он даже на т1с пытается свой писюн выстовить. смешной чесслово
142 proger2011
 
20.08.11
21:53
Быдлокод это когда процедуры и функции больше одного экрана и глобальные переменные.
143 zak555
 
20.08.11
22:07
(134) нет переменной поз
хотя не знаю, что это в 8 значит
144 CepeLLlka
 
20.08.11
22:20
(143) Да ты чё.. это же просто переменная которая указывает на позицию разделителя..
145 CepeLLlka
 
20.08.11
22:24
Никак не могу разобраться с печатью этой :( Мозга не хватает :( Хнык, хнык...
146 cViper
 
20.08.11
22:46
(119) В пятницу видел в конфе кусок кода, в котором с структуру записывались имена директоров(соответствует пункту 5) и как-то там обрабатывались. Наиболее оптимальный(безопасный) способ в такой ситуации использовать предопределенный элемент справочника? Может быть даже регистр?
147 Злопчинский
 
20.08.11
22:54
(142) быдлокод, это когда где надо и не надо функции и процедуры ляпают, да еще с выносом в глобмодуль... а потом удивляются - а чего так медленно...
148 Лефмихалыч
 
20.08.11
22:57
(0) быдлокод - это такой код, который кодит быдлокодер. Это ж очевидно.
ЗЫ Так-то
149 andrewks
 
20.08.11
22:58
(148) жди следующую ветку от ТС "Как вы думаете, кто такие быдлокодеры?" :)
150 Лефмихалыч
 
20.08.11
23:09
(149) жду с нетерпением, у меня уж и банхаммер с надписью "за беспробудный вндализм и тупую копипасту самого себя" в руках
151 proger2011
 
20.08.11
23:23
(147) Я уж думал не дождусь поклонников оптимизации и любителей процедур в 2000 строк.
152 Злопчинский
 
20.08.11
23:48
(151) открой в типовой бухии 7.7 какой-нибудб код по зарплате/НДФл - и втыкай до изнемозжения.. ;-)
153 proger2011
 
21.08.11
00:12
(152) А что там? Я с 7.7 уже лет 6 не работал. Там портянки штоли, ну так типовые далеко не образец для подражания.
154 VasilyKushnir
 
21.08.11
00:12
Да не спорьте вы , ребята. Знаю одного проггера и весьма нефигового (не 1с-ника, хотя 1С он тоже занимается по необходимости), который считает, что быдло-код = это все, что не он написал. И что интересно - он где-то прав... Не буду скромничать - сам иногда так считаю (хотя есть гуру, перед которыми сниму шляпу и поклонюсь). А все потому, что нет предела совершенству (это не я придумал) и любую программу можно оптимизировать и совершенствовать до бесконечности. Следовательно: совершенству нет предела и соответственно определения. То же можно сказать о быдлокоде, если идти от обратного. Не забываем, что бадлокодируемая, но работающая обработка сегодня всегда лучше самой красивой и оптимальной, но  заработающей (и то еще вопрос)  через год.
155 Aleksey
 
21.08.11
00:30
(154) Совершенство без контекста есть null.
Ибо совершенство зависит от системы координат
156 Aleksey
 
21.08.11
00:32
Можно привести базу к нормальной формы Бойса — Кодда
Но тогда придется данный получать методом как в (0)

Зато с точки зрения нормализации - база будет совершенна
157 VasilyKushnir
 
21.08.11
00:41
(155) "Ибо совершенство зависит от системы координат" +10000
Этим ты полностью подтвердил мою мысль, но более лаконично (браво!). Смени систему координат (цена , сроки и т.д и т.п.) и быдлокод  уже не совсем быдлокод.  Хотя... Если помои посолить, они лучше пахнуть не станут (с) Ликвидация - Фима.
158 syktyk
 
21.08.11
00:41
Не может быть ни одного прога, который бы не написал быдлокод. Хоть один раз в своей жизни. Аксиома.
159 VasilyKushnir
 
21.08.11
00:49
(158) +100500 Иногда (как выпадает немного свободного времени на работе, хотя это редкоо бывает), свои старые обработки переписываю с нуля. Зачастую ради повышения быстродействия. Об одной (написанной года 4 назад) уже и забыл - оказывается пользуются! Отойдя от шока, переписал. Вместо 30-40 минут (писалась обычными запросами под ДБФ-ную базу) отрабатывает 2-3 минуты (прямые запросы, но уже на скуле).
160 syktyk
 
21.08.11
00:56
(159) Ага, я споминаю бесмертное - "Над кем смеетесь? Над собой смеетесь!"

ЗЫ. А пасаны просто такого и не знают :)
161 syktyk
 
21.08.11
00:57
+(160) **сорестион** сс
162 Jofa
 
21.08.11
06:23
Кстати на лукоморье есть один пункт из поведения быдлокодера:

10.Считает, что все вокруг тупые уроды, так как не знают некоторых вещей (конечно же, охренительно серьёзных и профессиональных), которые знает он, или потому, что пытаются объяснить ему то (конечно же, никому не нужное), чего он не знает.
163 Luhtas
 
21.08.11
07:53
Вот два примера решения одной и той же задачи:
Какой из них оптимальнее?
Первый:
//////////////////////////////////////////////////////////////
Процедура ПриНачалеРаботыСистемы()
   ОбщегоНазначения.СообщитьИменинников();
КонецПроцедуры

Процедура СообщитьИменинников() Экспорт
   ДеньГода=День(ТекущаяДата());
   МесяцГода=Месяц(ТекущаяДата());
   Выборка=Справочники.Сотрудники.Выбрать();
   Пока Выборка.Следующий() Цикл
       Если День(Выборка.ДатаРождения)=ДеньГода И Месяц(Выборка.ДатаРождения)=МесяцГода Тогда
           Сообщение=Новый СообщениеПользователю;
           Сообщение.Текст="Сегодня день рождения у сотрудника: "+Выборка.Наименование+".";
           Сообщение.Сообщить();
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

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

Функция ПолучитьСписокИменинников() Экспорт
   ТекДень=День(ТекущаяДата());
   ТекМесяц=Месяц(ТекущаяДата());
   Массив=Новый Массив;
   Выборка=Справочники.Сотрудники.Выбрать();
   Пока Выборка.Следующий() Цикл
       Если ТекДень=День(Выборка.ДатаРождения) И ТекМесяц=Месяц(Выборка.ДатаРождения) Тогда
           Массив.Добавить(Выборка.Наименование);
       КонецЕсли;
   КонецЦикла;
   Возврат Массив;
КонецФункции
///////////////////////////////////////////////////////
164 Luhtas
 
21.08.11
08:03
(141) Быдлокод:

НУ вот наконец то спустя 5 лет я был удастоен звезд. Я их очень ждал. И Волшебник мне их обещал в 2012 но Асмодя выдал сейчас.
165 Jofa
 
21.08.11
08:05
(164)Запрос для умников?
166 jump if zero
 
21.08.11
11:28
Быдлокод - это код написанный профессиональным программистом
вынужденного работать в условиях скромного бюджета.
167 Злопчинский
 
21.08.11
11:38
(153) а пресловуьые 8-ые запросы на несколько страниц...?
168 proger2011
 
21.08.11
11:41
(167) Их уже даже в типовых выносят в отдельные функции.
169 vde69
 
21.08.11
11:59
(163) оба примера - быдлокод причем поганый быдлокод,
для этого запрос нужно использовать
170 vde69
 
21.08.11
12:04
я отношу к былокодерству
1. отсутствие стиля (не соблюдение нотаций, пускай и своих собственых)
2. излишнее использование циклов (в частности объектная модель вместо запроса)
3. не умение работать с тразакциями и непонимание блокировок

все остальное можно и принять
171 Escander
 
21.08.11
13:34
(169)есть мнение, что чел какие-то курсы учит и до запросов ещё не дошёл.
172 Alexandr Puzakov
 
21.08.11
14:51
(136) глобальный поиск по модулям отменили?
173 Лефмихалыч
 
21.08.11
15:22
(163) быдлокод - это и то, и другое. Данные надо выбирать запросом
174 Злопчинский
 
21.08.11
15:22
(173) а объекты - выборкой?
175 Лефмихалыч
 
21.08.11
15:25
(174) не понял.
176 Steel_Wheel
 
21.08.11
15:26
(174) объекты -- тоже данные
177 Лефмихалыч
 
21.08.11
15:28
(176) а, теперь понял. Вопрос (174) идиотский
178 Aleksey
 
21.08.11
15:34
(172) Спасибо поржал
Как ты думаешь, правильнее после каждого релиза тратить по 2-3 часа в поисках потерявщих моделей во всех обработках и ездить по клиентам и обновлять

или скопировать один раз и использовать?

Что скажут клиенты, если после каждого обновления придется вызывать тебя, потому что твой отчет не работает?
179 Злопчинский
 
21.08.11
15:36
(177) все данные надо выбирать запросом?
180 Злопчинский
 
21.08.11
15:38
(176) Объект - это дофигища данных. где-то преимущество запросов в т.ч. писалось что типа для получения датыдокумента - запросом выдираем именно дату, ане весь объект..
181 Alexandr Puzakov
 
21.08.11
16:27
(178) это решается простым копированием процедуры/функции из общего модуля в модуль отчета. И не надо вот так громко говорить о плясках процедур из модуля в модуль, большинство из них годами в одном и том же модуле находятся, и в неизменном виде.
182 Chai Nic
 
21.08.11
16:35
"наименование обработок длинные и с пробелами, вместо лаконичных сокращенных наименований"
Вспомним хотя бы ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокументИмениБорисаГеоргиевичаНуралиева ;)
183 Torquader
 
21.08.11
16:38
(180) Если один реквизит, то быстрее, а если несколько, то скорость уже сомнительна.
Кроме того, никто не гарантирует, что отчёт будет выбирать только одно поле, а не делать внутри себя выборку всего объекта и считывание из него только одного поля.
184 Jolly Roger
 
21.08.11
16:55
капитан очевидность скромно напоминает, что в терминах 1с объект и ссылка - не одно и то же...
185 НеЛюблюФорумы
 
21.08.11
17:54
я придерживаюсь вот такой стратегии оценки

http://glenndejaeger.files.wordpress.com/2010/04/wtfm.jpg
186 smaharbA
 
21.08.11
19:07
Если присутствует процедура ПоКнопке...
187 MikleV
 
02.09.11
22:56
чего то все забыли..
только вчера узрел:
Объект.Соглашение = Справочники.СоглашенияСКлиентами.НайтиПоНаименованию("БлаБла");
188 Лефмихалыч
 
02.09.11
23:22
(185) вмемориз!
надо бы это высечь в граните, об который потом несознательных коллег головой прикладывать
189 smaharbA
 
02.09.11
23:26
тоже самое что и "хомячки"
произносится самими
190 IamAlexy
 
02.09.11
23:40
191 Икогнито
 
02.09.11
23:48
(0) Быдлокод - это когда конфа не проходит тестирование в режиме тонкого клиента и архитектор говорит писать код для "толстого клиента" и отключить отладку "тонкого клиента" в конфигураторе.
192 Лефмихалыч
 
02.09.11
23:51
(191) даже если конфа получена конвертацией из 8.1, находится в режиме совместимости и не предназначена для использования в режиме тонкого клиента?
193 Икогнито
 
02.09.11
23:58
(192) нет, если в конфе настройка "Управляемое приложение" стоит и совместимости с 8.1 нет
194 Икогнито
 
03.09.11
00:00
(192) а разрабатывать новую конфу в режиме совместимости с 8.1. - это тоже быдлокод.
Это тупо говорит о том, что челы, которые её разрабатывают, просто не владеют навыками работы с управляемым приложением.
195 Лефмихалыч
 
03.09.11
00:01
(193) тогда надо бы обобщить: "Быдлокод - это когда конфигурация не проходит ситнтаксический контроль в тех режимах, в которых она используется в продуктиве" иначе абсурд получается.
(194) это седствие
196 Икогнито
 
03.09.11
00:02
(195) слишком заумные фразы, работодателю на стороне Заказчика они будут не понятны.
197 IamAlexy
 
03.09.11
00:03
(196) заказчик не будет запускать синтаксисконтролью... заказчик запустит базу в том режиме в котором она должна работать и проверит работоспособность оной...
198 Лефмихалыч
 
03.09.11
00:04
(196) а (191) заказчику будет понятно и он сделает из этого адекватные выводы?
199 Икогнито
 
03.09.11
00:05
(197) это из разряда
-"прогнуть Заказчика под свое решение"
- "Заказчик же не видит, какое *овно написано внутри, ему конфетку снаружи показывают"
200 Лефмихалыч
 
03.09.11
00:05
(200)
201 Икогнито
 
03.09.11
00:07
(198) грамотный программист на стороне Заказчика сделает адекватные выводы.

Хватит уже мыслить узкими категориями, что если есть Заказчик, то у заказчика нет своего программиста (представителя Заказчика) :)
202 Лефмихалыч
 
03.09.11
00:07
(199) нет, это из совсем другого разряда. Это из разряда "не вводить заказчика в заблуждение"
203 Лефмихалыч
 
03.09.11
00:08
(201) и я про то же - хватит уже мыслить узкими категориями - думай, что говоришь
204 Икогнито
 
03.09.11
00:09
(202) Видимо у нас разные позиции.
Франч исходит из позиций:
- на*овнокодю внутри, снаружи конфетку сделаю;
- потом, когда возникнут проблемы оптимизации - срублю еще бабок

Представитель Заказчика исходит и качества и стоит на страже интересов Заказчика.
205 IamAlexy
 
03.09.11
00:12
(199) ты конечно же когда от заказчика деньги будешь получать потребуешь полной истории каждой полученной копейки.. ибо недайбог пара рублей будет получена незаконным путем.. правильно же?
206 IamAlexy
 
03.09.11
00:12
(199) а вообще это из разряда "не надо придумывать сложностей сверх необходимого"
207 Икогнито
 
03.09.11
00:13
(205) С недавних пор, принял решение, что работаю только на стороне Заказчика :)
208 IamAlexy
 
03.09.11
00:13
(204) ты прог, по часам работаешь.. зачем мне как заказчику оплачивать твою работу над исправлением ошибок режимов которые я не собираюсь использовать никогда никогда?
209 IamAlexy
 
03.09.11
00:13
(207) ты просто двуличен.. свои Nрублй за час ты с заказчика слупишь.. просто ты ему впариваешь ненужную услугу.. вот и все..
210 Икогнито
 
03.09.11
00:14
(208) не понял, что ты написал. Два раза прочитал, не понял.
211 Лефмихалыч
 
03.09.11
00:14
(204) я не франч, я в душе не знаю, на какой ты там позиции стоишь
212 Икогнито
 
03.09.11
00:15
(209) С каких пор качество стало называться "ненужная услуга"?
213 Лефмихалыч
 
03.09.11
00:16
(212) ни с каких. Просто значение слова Качество у заказчика совсем не такое, как у тебя
214 IamAlexy
 
03.09.11
00:16
(210) расшифровываю как все происходит на самом деле:

я заказчик, заказал разработку конфы на 8.2, не на управляемом интерфейсе.

ты разработчик потратил время на исправление ошибок управляемого интерфейса, на рисование совместимых форм, на отладку модулей и тд и тп

а затем- выставил мне счет за потраченное время.


вопрос: зачем мне оплачивать навязанную мне услугу которая мне нахрен не сдалась и которой я пользоваться никогда не буду.. каким боком ты тут на моей, на заказчика, стороне то?
215 Икогнито
 
03.09.11
00:16
(208) работа по часам - это работа в угоду галочке в плане выполнения работ.
216 IamAlexy
 
03.09.11
00:18
(215) так или иначе ты по часам работаешь и начальство тебе часы закрывает.. и по этому оно тебя пинает - не надо тратить время на то что заказчиком будет неоплачено..
217 Икогнито
 
03.09.11
00:19
(216) Да заказчик может и не знать, что за два часа можно на*овнокодить так, что потом вынужден будет платить за неделю работы, чтобы разобраться, почему база тормозит.
218 IamAlexy
 
03.09.11
00:20
(217) приведенный тобой пример про ошибки управляемого и вебинтерфейса  этому отношения не имеют..
219 Лефмихалыч
 
03.09.11
00:21
(218) пустая трата буков
220 IamAlexy
 
03.09.11
00:22
(219) да я сегодня мало флудил.. пришлось утром поработать а днем спал весь день.. запас буков велик и неистрачен..
221 Икогнито
 
03.09.11
00:23
(219) Ну наконец-то до тебя дошло, что разговор неконкретен.
222 Икогнито
 
03.09.11
00:23
(220) не оправдывайся
223 IamAlexy
 
03.09.11
00:25
(222) странные выводы...
224 Лефмихалыч
 
03.09.11
02:03
(221) жаль, что до тебя так и не дошел смысл сказанного в (208)

(222) тебя жизнь ни чему не учит
225 Cthulhu
 
03.09.11
02:10
(208): ну, наверное, потому, что в 99% случаев то, что по мнению заказчика "не будет использоваться никогда", "у них такого не будет", и т.п. - но что, исходя из анализа задания предполагается грамотным разработчиком - рано или поздно и используется, и бывает, и если вдруг оно все ломает - то "вы же специалист - вы были должны это предусмотреть!".
226 IamAlexy
 
03.09.11
02:27
(225) каким боком это относится к теме обсуждения?
обсуждается же - стоит ли тратить время на написание кода совместимого для тонкого и вебклиента если все решение проектируется как решение без использование управляемых форм вообще...
227 Asirius
 
03.09.11
11:14
(119) Работал я с одной такой базой, к которой применимы пожалуй все пункты, кроме 2). Хотя у меня ситуация еще более запущенная, туда можно еще добавить несколько пунктов:

а) Эта конфа, писавщеяся с нуля с 2003 года десятью разными программистами, в которой никогда не сворачивались остатки. За это время фирма несколько раз претерпела структурные преобразования, когда-то там даже велась розница с УРБД, но сейчас там остался только корпоративный сегмент, а базу никто не менял, так и работают в центральной базе.

Особенно весело разбирать код типа если Пользователь = "Иванов", когда Иванов уже лет пять как не работает.

б) Криво закрываются регистры остатков по измерениям. За почти 10 лет ведения базы мусора в остатках столько, что открытие следующего периода занимает пару часов.
Соответственно про бекапы средствами 1С-ки можно забыть, т.к. пересчет итогов за 10 лет, который делается при загрузке данных делается несколько дней.

в) Куча тормозных алгоритмов использующих запросы в цикле, разименовывание через десять точек, итп.
Ошибка? Это не ошибка, это системная функция.