gifts2017

"Перлы" (Жемчужины) или как не надо писать на 1С

Опубликовал Василий Зайцев (vasiliy_b) в раздел Сообщество - Архив

ф3="99";  ф4="8";   ф1="01.0";
ф2="9.1";
    Раз=Дата(ПолучитьДатуТА())-
        Дата(ф1+ф2+ф3+ф4);

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

Внимание! Все используемые в этой статье примеры взяты из реальных модулей.
Все программы приводятся с сохраненным форматированием и оформлением кода.

 

1. Часто начинающие программисты, стараясь «заточить» свою программу под конкретного заказчика, перегибают палку и вот что у них получается:
 
Если ТЗСотр.Сотрудник.Подразделение.Получить(НаДату).Код="7" тогда

Если ТЗСотр.Сотрудник.Должность.Получить(НаДату).Код<>"00055" тогда
Если число(ТЗСотр.Сотрудник.Оклад.Получить(НаДату).Код)<13 тогда

 

2. Некоторые из программистов не знают что такое циклы (списки, таблицы значений), поэтому они вынуждены, чтобы ну хоть как-то закрыть работу у Заказчика, придумывать гениальные решения:

 
Всего=Точка1+Точка2+Точка3+Точка4+Точка5+Точка6+Точка7+Точка8+Точка9+Точка10+

Точка11+Точка12+Точка13+Точка14+Точка15+Точка16+Точка17+Точка18+Точка19+Точка20+

Точка21+Точка22+Точка23+Точка24+Точка25+Точка26+Точка27+Точка28+Точка29+Точка30;

И там же:

Процедура  ВводНового()
Склад = Константа.ОснСклад;


Спр=СоздатьОбъект("Справочник.Точки");
Спр.НайтиПоКоду("1");
Имя1=Спр.ТекущийЭлемент();

Спр.НайтиПоКоду("2");
Имя2=Спр.ТекущийЭлемент();
Спр.НайтиПоКоду("3");

Имя3=Спр.ТекущийЭлемент();
Спр.НайтиПоКоду("4");
Имя4=Спр.ТекущийЭлемент();

Спр.НайтиПоКоду("5");
Имя5=Спр.ТекущийЭлемент();



Спр.НайтиПоКоду("29");
Имя29=Спр.ТекущийЭлемент();
Спр.НайтиПоКоду("30");

Имя30=Спр.ТекущийЭлемент();

 

3. Просто, "гениальные" названия:

Константа.Новый2;
Перечисление.Скотч;
Процедура Сформировать88888888();
Процедура Сформироватьчччччч();

 

4. Люди – полиглоты:

Пока ПолучитьСтроку() = 1 do


enddo;

 

5. Кто ищет тот найдет! Но видимо не в этот раз :)

Если -Зн>10000  тогда

Спр.НайтиПоКоду( -(Цел(Зн1/10000)) );
ВВ=Спр.ТекущийЭлемент();
//СС=Выб

Сообщить(ВыбПлан.Субконто);
СпрС.Вид(ВыбПлан.Субконто);

СпрС.НайтиПоКоду ( (-зн1)-(10000*( -(Цел(Зн1/10000)) )) ,0);
СС=СпрС.ТекущийЭлемент();

иначе
Спр.НайтиПоКоду(-Зн1,0);
ВВ=Спр.ТекущийЭлемент();

СС=0;
КонецЕсли;

 

6. А что эта гениальная программа делает?

Процедура  ОбработкаПоставщиков()
ф3="99"; ф4="8"; ф1="01.0";

ф2="9.1";
Раз=Дата(ПолучитьДатуТА())-
Дата(ф1+ф2+ф3+ф4);

Если Раз<0 Тогда
Раз=0;
КонецЕсли;

к=0;
Пока к<(Раз*380) Цикл
//Сообщить(К);

к=к+1;
КонецЦикла;
КонецПроцедуры

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Валентин Терёхин (Valet) 20.03.09 11:50
(0) Некоторые конечно "Перлы", но грешно смеятся над убогими.
Думаю вы просто не работали в условиях, в которых писался этот код.
Когда к вам прибегают и говорят, что надо через 5 минут, для одного клиента/товара/должности и реквизита никакого вы завести не можете, т.к. в базе работает 100 человек.
Да и религия не позволяет заводить для одного элемента реквизит.
Так и рождаются такие решения. Рождаются как временные, но нет ничего более постоянного как что-то временное.
Также часть "перлов" похожа на отладочный код, до которого не доросли руки переделать.
Так что это статья не про то "как не надо писать", а "как потешить свое самолюбие".
Попробуйте просто подумать "почему" писался этот код, а не "как" он писался.
Сорри за возможно резкую критику.

lesna; spel; basha; kozavka; sergey_s_v; Fuego; +6 1 Ответить
2. ad bo (adakabo) 23.03.09 07:51
3. Александр Рытов (Арчибальд) 23.03.09 09:47
В первом примере вообще все нормально. В списке сотрудников работник на должности любовницы директора (стандартный код 00055) и люди с персональными окладами апостолов-основателей подлежат обработке по специфическим правилам.
Fuego; shard; viddik; +3 Ответить
4. Сергей Кучеров (СергейКа) 24.03.09 12:54
Если так писать, то никакой "обфускации" кода не потребуется :)
5. Малышко В.Н. (molot) 24.03.09 21:25
Пипец... Курящие зайцы :)

На самом деле, было бы смешно, если бы не приходилось с этим сталкиваться...

Вот вам, кстати, из типовой бухгалтерии (р. 1.6.12):
____________________________________________________

Если Лев(Выборка.СчетЗатрат.Код, "2") = "26" Тогда
Продолжить;
Если ТаблицаПроизводства.Количество() > 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
____________________________________________________

6. Малышко В.Н. (molot) 24.03.09 21:26
To Valet: уважаемый, причина, по которой пишут ТАКОЙ код - только одна: низкая производственная культура программистов, над чем, собственно, и стеб. По этой же причине жигули рассыпаются еще в автовозе, а интеллигенция мочится в подъездах :).
7. Валентин Терёхин (Valet) 24.03.09 21:45
(6) О производственной культуре программистов можно говорить, только если есть отдел из нескольких программистов. А наши реалии таковы, что есть программист (думаю большинство писавших код выше - не высокооплачиваемые) и есть руководство, которому до культуры дела нет.
Попробуйте донести такому руководству, что нужно время на "рефакторинг".
И поймете что придется вам жить с таким кодом до перехода на новую "платформу".
А посмеяться можно и над инвалидами и над маленькими детьми - они тоже ходить не умеют. Может люди "второй день" конфигуратор открыли.
Я к тому что нужно уважать своих коллег - сами ведь также писали первый раз.
Новенький; AlbertBug; basha; kozavka; +4 Ответить
9. Игорь Белышев (biv75) 24.03.09 21:54
Ну вот например написанием типа
"Если ТЗСотр.Сотрудник.Должность.Получить(НаДату).Код<>"00055" тогда"
сам бывает грешу, доводил недавно до ума налоговый учет на предприятии, а спец по налоговому учету, такая барышня... что легче дать, чем объяснять почему нет, построили вроде стройный налоговый регистр, все объекты учета красиво в него ложаться, а одно ОС попадает в регистр, а не должно, выяснил почему, вобщем чтобы всё красиво получилось надо ворошить всё с начала года, а ОС всё, выбыло, и движений по нему не будет, ну вобщем легче было подобное написать чем убеждать что надо всё сделать по уму.
10. Олег Пономаренко (O-Planet) 24.03.09 21:55
Лишний раз убедился, что над другими надо смеяться реже. Из всего, что приведено, немного удивил пример с суммой точек, хотя такое иногда приемлемо.

Но особенно порадовал пример и комментарий "6. А что эта гениальная программа делает?" Так вот. Она делает как раз все правильно. И как раз так, чтобы такие как ты не поняли, что она делает :)

Автору - минус.
Новенький; NatalyaVP; kozavka; Ломастер; galev; корум; shard; +7 Ответить 1
11. Алексей (Емельянов Алексей) 25.03.09 07:32
Никогда так не писал, даже когда только начинал работать, учился все-таки на программиста.
А случаи всякие бывали, и когда за 5 минут надо было сделать! Даже такие что за 30 минут до закрытия налоговой прибегал бухгалер (а до налоговой еще ехать надо) и начинал истерично орать ВОТ ЭТО НАДО СРОЧНО!!!! Успевал как то...
12. Андрей (Paranoid_Android) 25.03.09 09:03
O-Planet
Не понял я...
О великий проясни !!!
13. Василий Зайцев (vasiliy_b) 25.03.09 09:14
(9,11) С таким подходом программирования "На скорую руку", в конечном итоге и получается не конфигурация, а собрание сочинений на скорую руку. А когда приходит другой программист, добрыми словами он ВАс уже не вспомнит. Когда прибегает кто-то со словами "надо срочно, через пять минут" надо посылать, ибо надо уважать себя, и свою профессию. Посылать всех подальше(начальство лучше культурно).т.к надо было раньше думать.
Не забываем что работа программиста начинается с подписанного технического задания, и ни как по другому, это надо взять за правило.
(10) а в пункте 6 уж ни как не выполняется:
1. Обработка поставщиков.
2. Читаемость кода.
3. Весь код можно было написать в пару строк.
4. если программист пытался запутать кого-то этим кодом, то у него ни чего не получилось. так как понадомится несколько минут, чтоб разобраться, что в ней происходит.
в итоге вся функция бред.
oleg974; Lieut; illarion; +3 Ответить 1
14. Олег Пономаренко (O-Planet) 25.03.09 09:39
(12) А что не понятного-то? :) Видно сразу, что ОбработкаПоставщиков() - не доделана. Первая ее часть - попытка написать что-то вроде "защиты", основанной на проверке даты. В цикле аффтор смотрел, как считается что-то, что он хотел посчитать. Закомментировал. Но цикл так и не заполнил. предполагаю, что эта процедура в модуле вообще ни где не вызывается. Автор ее просто не дописал.

(13) Нормальная работа программиста у клиента - это всегда работа "на скорую руку". Но это не должно влиять на качество кода, потому что, как правило, все задачи и приемы их реализации - типовые, и делаются сотню раз.
15. r_p (smirnov.a) 25.03.09 09:48
16. Rusk (Rusk51) 25.03.09 10:51
Если бы строители строили дома,как программисты пишут код, то любой
дятел разрушил бы цивилизацию.
17. 0pex 0pex (0pex) 26.03.09 06:47
Есть у хомо-сапиенс такое "отличительное свойство", когда он [конкретный человек] постигает высоты какого-либо мастерства, то тех, кто только учится и допускает грубые ошибки, готов "съесть целиком", несмотря на то, что в своих ошибках он [конкретный человек] никогда не признается.

Хочу заметить, что данное "свойство" (фишка, фича, баг - нужное подчеркнуть) чаще встречается именно у IT'шников.

Не судите и не судимы будете.
sergey_s_v; +1 Ответить
18. 0pex 0pex (0pex) 26.03.09 06:48
Почему бы просто не улыбнуться и исправить ошибку? довести код до совершенства?

Эгоизм и "звездная болезнь" не каждому позволяют это сделать видимо....
Blade Runner; Lieut; +2 Ответить
19. Олег Тихоненко (togomsk) 26.03.09 11:19
Не вижу ничего смешного.
Таких примеров написания кода- пруд пруди, хотя бы на данном сайте.
Впрочем, и сами типовые конфигурации от данных "образцов" недалеко ушли, к сожалению.
20. Sasha_H (logarifm) 26.03.09 21:49
Блин, вам смешно, а у меня на работе директор департамента ИТ пишет такое:

Если Пользователь.Код = "ВасяПупкин" Тогда
фл = 1;
Иначе
фл = 0;
КонецеЕсли;

Это еще что, а это все в глобальном модуле. И зп у него бля от нють не маленька, везет же дятлам!!!
21. Игорь Белышев (biv75) 26.03.09 23:05
(20) Ну нормально, кто не умеет писать, тот руководит )))
Не давайте ему писать, пускай департаментом управляет
22. Сергей Ожерельев (Поручик) 27.03.09 12:46
Пример реальной конфы. Я был просто в акуе. Вот прям так, всё сохранено, за исключением конкретных названий:
Код
Процедура ВводНового()
Автор = "Создатель документа: " + Строка(ИмяПользователя()); 
Подр = СоздатьОбъект("Справочник.Подразделения");
Если ИмяПользователя() = "МенеджерХХХХХХХХХХХ" Тогда
Подр.НайтиПоКоду("0002",0);
ИмяРегПроекта = Подр.ТекущийЭлемент();
ИначеЕсли ИмяПользователя() = "МенеджерХХХХХХХХХХХ" Тогда 
Если Вопрос("Имя проекта: YYYYYYY ?",1) = 1 Тогда 
Подр.НайтиПоКоду("0003",0);
ИмяРегПроекта = Подр.ТекущийЭлемент();    
Иначе
Подр.НайтиПоКоду("0004",0);
ИмяРегПроекта = Подр.ТекущийЭлемент();   
КонецЕсли;
ИначеЕсли ИмяПользователя() = "МенеджерTTTTTTTT" Тогда 
Подр.НайтиПоКоду("0001",0);
ИмяРегПроекта = Подр.ТекущийЭлемент(); 
ИначеЕсли ИмяПользователя() = "МенеджерNNNNNNNN" Тогда 
Подр.НайтиПоКоду("0004",0);
ИмяРегПроекта = Подр.ТекущийЭлемент(); 
ИначеЕсли ИмяПользователя() = "МенеджерCCCCCCCCCC" Тогда 
Подр.НайтиПоКоду("0005",0);
ИмяРегПроекта = Подр.ТекущийЭлемент();
ИначеЕсли (ИмяПользователя() = "Программист") или (ИмяПользователя() = "РуководительПроекта") Тогда  
ВвестиЗначение(ИмяРегПроекта,"Введите имя регионального проекта","Справочник.Подразделения",,);
КонецЕсли;
КонецПроцедуры
Показать полностью
23. Сергей Ожерельев (Поручик) 27.03.09 12:49
Конфа написана в одном из наших подразделений, разраба никто не подгонял.
24. Василий Демидов (Душелов) 27.03.09 12:53
Вот http://infostart.ru/projects/3683/
Яркий образчик, как не надо писать :))
25. Валентин Терёхин (Valet) 27.03.09 13:20
(23) Если "разраба" никто не подгонял и руки развязаны в плане дополнения структуры базы , то это не от большого ума.

Увидел ИмяПользователя() и вспомнил еще один момент который способствует такому программированию. В 77 юзеру можно добавить один набор прав.
И когда стоит вопрос "Всем манагерам можно, а одному нельзя", то начинается такая писанина. Как альтернатива "свой мех-м прав доступа" или в крайнем случае какой-нить справочник "Ролей" аля v8.
Хотя встречались и такие наборы прав: ПраваИванова,ПраваПетрова итд.

А вставки типа Если ИмяПользователя()="Я" Тогда ... я и сейчас использую для отладки "наживую".




26. Сергей Ожерельев (Поручик) 27.03.09 16:02
>>> Хотя встречались и такие наборы прав: ПраваИванова,ПраваПетрова итд.
Мне тоже встречались. Стоило в прошлом году отлучиться из холдинга, как один деятель из местного франя в тот же день воткнул в мою (нашу) конфу (8.1 причём) роль с фамилией гендиректора. Хорошо хоть меня быстро восстановили, а то представляю, что бы эти франчи ещё наваяли.

Ммм, франчи это зло (С) миста.ру. Не люблю франей, хоть и сам не шик как блистаю.
27. vova56 (vova56) 29.03.09 09:10
№4 написан правильно с т.з. минимальной набивки:
СтрДлина("do") < СтрДлина("цикл")
СтрДлина("Пока") < СтрДлина("While")
и т.д.
28. vova56 (vova56) 29.03.09 09:13
Категорически не согласен с 27. , т.к.
СтрДлина("ПолучитьСтроку") > СтрДлина("GetLine")
29. Алексей Константинов (alexk-is) 29.03.09 09:27
(27) Надо пользоваться Телепатом или на крайний случай шаблонами, тогда проблем с набивкой будет меньше. Да, и копирование еще никто не отменял...
30. iohboet (iohboet) 30.03.09 03:50
>>> Это еще что, а это все в глобальном модуле. И зп у него бля от нють не маленька, везет же дятлам!!!
Да они как раз не дятлы ))) Это мы дятлы, пишем стройно, код оптимизируем, чтоб бегало все шустро и читаемо было... И за что???
А они перебирают бумажки с места на место, трещат с "бизнесом" и получают в 2-3 раза больше))) Ну нахрена им стройный код? Жизнь удалась!
31. Андрей (Paranoid_Android) 31.03.09 08:41
>А они перебирают бумажки с места на место, трещат с "бизнесом" и получают в 2-3 раза больше)))

ну иди в менеджеры, кто тебя сдесь держит то ?
32. orbis (orbis) 01.04.09 15:28
Мы не знаем почему писался такой код и в какой обстановке. Поэтому не судите, да не судимы будете.
33. jsoft home (jsofthome1) 05.04.09 18:53
быстрее написать что-то временное
34. D F (dima_fil77) 07.04.09 05:25
В нашей конфе нашёл такое:
Число = Год(Дата)*10000+Месяц(Дата)*100+День(Дата)-(Год(Дата)*10000+Месяц(Дата)*100+20);// ДИМА - НАКУЯ ВСЁ ЭТО НУЖНО!!!
Если Число > 0 Тогда
Поправка = 0;
Иначе
Поправка = 1;
КонецЕсли;
//(20070821 Сделаем проверку проще
Если День(Дата) > 20 Тогда
Поправка = 0;
Иначе
Поправка = 1;
КонецЕсли;
//)20070821
35. Михаил (ILM) 08.04.09 16:57
(34) А почему бы сделать не так?

Поправка = ?(День(Дата) >20, 0, 1);
36. shard (shard) 09.04.09 18:03
как вариант в обработке формирования прайса (ни на что более умное чем завернуть такое не хватило времени):
стр=Дерево.Строки[Дерево.Строки.Количество()-1].Строки[Дерево.Строки[Дерево.Строки.Количество()-1].Строки.Количество()-1].строки[Дерево.Строки[Дерево.Строки.Количество()-1].Строки[Дерево.Строки[Дерево.Строки.Количество()-1].строки.Количество()-1].Строки.Количество()-1].Строки.Добавить();
37. dickk1 (rebuzx) 14.04.09 09:21
А что смешного в том что человек незнает как писать, а зарабатывать хочется. И потом это не проблема код пишущего, а проблема того кто пишущего на работу взял. Сколько платят столько и получают!
Я видел и таких кто прекрасно использует синтаксис и при всём при этом допускает критичные ошибки.

38. Alex P (alexmif) 14.04.09 09:32
Незнаю насчет скорой руки. Но даже в начале своей программисткой деятельности, когда узнал о существовании цикла (а было это ну очень давно, тогда ибм 286 стоила как волга), мне лень было копировать строчку и чего то еще в ней править... Можно позавидовать упорству, скопировать 30 строк и еще отредактировать каждую!!! Хотя грешу переменными типа "аа" и "а1" ))).
Повеселился от души. Клевые перлы. Их нужно добавить в черную библию программирования )))).
39. Alex P (alexmif) 14.04.09 09:42
(37) Нужно учиться - прежде чем начинать писать и тем более зарабатывать на этом деньги! А таких кто хочет писать и ничего не зочет изучать - вообще нечего делать в программировании. Вот так и создаются тупые алгоритмы, которые потом приходиться оптимизировать. А мало платят - иди работай на стройке. Там думать не нужно и денег заработаешь (если руки есть). Чтобы зарабатывать много, нужно для этого потрудиться много и на не всегда хорошей з/п, наработать опыт и знания.
40. dickk1 (rebuzx) 14.04.09 14:20
Кто то учился и научился,
а кто то учился и думает что научился,
а кто то неучился и научился,
а кто то на стройке работает!
Нужно быть реалистом!
И как бы кто не возмущался подобный код был, есть и всегда будет и у нас и за границей!
alexmif ты же не поёдешь работать программером за 10 тыс. в мес. на большое предприятие? Думаю нет. А тот кто пойдет будет всегда рожать такие коды - в большинстве случаев в одном лице это временное явление!
И уж поверь, необязательно быть учёным программистом что бы зарабатывать деньги! Свяжись с большинством франчей, посмотри кто у них работает...... и зарабатывают ведь не плохо...
41. dickk1 (rebuzx) 14.04.09 14:38
""Чтобы зарабатывать много, нужно для этого потрудиться много и на не всегда хорошей з/п, наработать опыт и знания."" - вот имено за маленькую зп НАРАБОТАТЬ ОПЫТ, т.е. ищем полигон для испытаний, а потом на этом полигоне будь что будет, вас то там уже не будет, а пока опыт не наработан пишем как можем!!!
42. Alex P (alexmif) 17.04.09 11:39
(т.е. ищем полигон для испытаний, а потом на этом полигоне будь что будет, вас то там уже не будет, а пока опыт не наработан пишем как можем!!!)
Вы неправильно поняли. Я имел ввиду что нужно правильно писать код даже на низкой з/п. И набирать на этом опыт. Как правило при низких з/п времени больше, хотя не факт.
43. Alex P (alexmif) 17.04.09 11:59
(alexmif ты же не поёдешь работать программером за 10 тыс. в мес. на большое предприятие? Думаю нет.)
Я начинал с трех!!! Это была низкая з/п. Если ты не уважаешь свой труд - иди за такую з/п и рви ж... за бесплатно. Большое предприятие может позволить платить достойно и обязано это делать. Если не хочеть - пусть работает без специалистов. Когда предприятия начинают терять прибыль у них очень меняется взгляд на оплату программера. Многие люди думают что мы сидим за компом и занимаемся чем-то непонятным для них, т.е ниче не делам. Вот это в них необходимо переубедить.

На самом деле наша профессия очень уникальна и спецефична. Нас очень мало, а если мы есче и будем так себя ценить и писать такой код, вообще вымрем ((.

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

Проблема не конечном итоге не з/п. А в том что если тебе нравиться программировать - занимайся и стремись к лудшему. Если не могешь писать нефиг тебе тут делать, займись стройкой (хотя там руки тож нужны) и денег мона больше заработать.
У нас институт заканчивают по специальности "программист", а языки программирования даже не видели или уже сдали экзамен и забыли что это такое... Зачем туда тогда поступать? Чтобы писать "перлы" потом?

С пятницей вас народ!
44. kiruha Дронов (kiruha) 19.04.09 14:25
По поводу кода типа :
Код="7" тогда

В 7.7 нет предопределенных элементов.
И что делать, когда нужен "жесткий" элемент, типа валюта Рубли,
или страна "Россия".
Можно конечно завести константу - Рубли и дергать базу постоянно.
(кстати не из самой маленькой таблицы)
Можно даже обозвать ВалютаБухУчета - чтоб враги не догадались,
ну и конечно надо позаботиться , чтобы никто не смог поменять.

Зато код красивый.
45. Артур Аюханов (artbear) 20.04.09 12:30
(44) Я в подобных случаях делал по разному:
0. обычные константы
1. завожу в глобальнике переменную заглавными буквами типа
Перем ОЧЕНЬ_НУЖНАЯ_КОНСТАНТА Экспорт;
в конце глобальника инициализирую
ОЧЕНЬ_НУЖНАЯ_КОНСТАНТА = "7";
2. делал класс 1С++ Общие.Константы (аналог как-то выкладывали на форуме 1С++), в котором инкапсулировал работу с константными значениями.
46. Alex P (alexmif) 22.04.09 03:45
(45) есть ли смысл держать в памяти переменную, если она нужна для разового использования?
У меня возникали случаи кода типа :
Код="7" тогда
В основном при обмене данными между различными базами с разными именами и кодами одних складов. Приходилось их решать подобным образом.
Можно конечно создать справочник соответствий, но стоит ли ради 3-4 наименований. Проще изменить или добавить при необходимости в обработке. Тем более они как правило внешние. И изменять саму базу не нужно.
47. Артур Аюханов (artbear) 22.04.09 09:42
(46) Главное в коде - это возможность нормально читать его для полного понимания.
Поэтому внятные имена различных констант, переменных, методов и т.д. имеют важнейшее значение.
48. Alex P (alexmif) 22.04.09 09:53
(48) Полностью согласен. Очень удобно в этом плане использовать "телепата".
49. Майкопчанин (Майкопчанин) 29.04.09 14:02
Мне рассказывали байку: В одном московском ИВЦ, не буду говорить в каком, еще в советские времена, решили оценивать труд программистов по количеству строк написанного кода. Очень быстро это привело к исчезновению циклов...
50. Александр Рытов (Арчибальд) 29.04.09 14:11
(49)Писал в середине 70-х для Госплана на Фортране. 50 коп./строчка. Были циклы, точно помню.
51. Майкопчанин (Майкопчанин) 29.04.09 16:42
Вот, кстати, у себя нашел. Была объективная причина так поступить.

//учтем ***** таким диким способом. Завтра в отпуск ...
Если (СокрЛП(полеКлиент.Наименование) = "************")
и (НаДату>'01.01.2009') Тогда
проценты = проценты - 14093.48;
КонецЕсли;

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

(50) Это было не в Госплане. :) А смыл этой байки в том, что программисты преднамеренно писали не оптимальный код, раздувая его, так как были материально в этом заинтересованы... Циклов, конечно, полностью избежать нельзя, но простенький цикл с десятком итераций можно и линейным алгоритмом расписать :)
52. Артур Аюханов (artbear) 29.04.09 17:22
(51) Давно известно, что у программеров, как у менеджеров и т.д., нельзя/очень опасно вводить какие-либо количественные оценки их труда :)
53. LavS 12.05.09 09:58
Повеселило))) А ведь мне тоже рассказывали реальный пример... Что вдруг перестали остатки сходиться по одной организации... Долго разбирались из-за чего это... Оказалось, что программист в модуле учета партий написал, что-то вроде:
Если Организация.Наименование <> "НазваниеОрганизации" Тогда
Возврат;
КонецЕсли;
А пользователи изменили название организации... Но сколько времени ушло на поиск ошибки...

Хотя и сам грешен... Когда начинал, помню когда в коде прописывал настройку прав доступа, то в одном месте проверялось на имя пользователя "Острогоржск", а пользователя звали "Острогорск"... И долго я искал, почему у них права не работают))) Самому аж стыдно...
54. Дмитрий Азаров (odekolon) 15.05.09 09:27
Ребят, сам вот только вчера писал отчет, где привязывался к конкретным наименованиям. Научил зам.гл.бух. одного из юр.лиц писать задания хоть в какой-то форме, а она уперто пишет последовательность действий так, что приходится вылавливать конкретные элементы по наименованию. Заводить реквизит с типом "перечисление" лениво, учитывая, что эта сумасшедшая логика у нее превращается в стройную картину раза с 5-го (после того, как посмотрит на конкретные цифры). Самому разбираться в логике, а не тупо действовать предложенному алгоритму, нету времени...

PS. А насчет кривости алгоритмов... Купите какую-нибудь базу у Белгородской конторы ЦПС и поймете, что перечисленное в теме - это только цветочки. Тексты абсолютно нечитаемы, а формочки являются чудовищным скопищем всего на свете. Документация под час крайне скудна и непонятна. Цены фантастические, нереальные.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа