Имя: Пароль:
1C
Как страшно жить
Маленький шедевр
0 ADirks
 
30.09.13
09:44
ДокМонтаж.УчитыватьНДС = 2 - ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1, 2);

Нипанимаю... что заставляет людей писать такое?
1 Любопытная
 
30.09.13
09:45
Страсть к оптимизации кода
2 Chum
 
30.09.13
09:45
Понаберут по объявлениям...
3 BuHu
 
30.09.13
09:46
нипанимаю , что заставляет людей выкладывать сюда такое ?
4 Бывший адинэсник
 
30.09.13
09:46
(0) неплохо :)
5 Эльниньо
 
30.09.13
09:47
Что не так?

(3)+1
6 Fragster
 
модератор
30.09.13
09:47
я думаю, вопрос был: "почему не ДокМонтаж.УчитыватьНДС = ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1, 0); ?"
7 Андрей_Андреич
 
naïve
30.09.13
09:47
(3) Плюсую
Надо было
ДокМонтаж.УчитыватьНДС = (ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1, 0);
8 Fragster
 
модератор
30.09.13
09:47
(7) :-Р
9 Pahomich
 
30.09.13
09:48
(0) Работает, не трожь!
10 BuHu
 
30.09.13
09:48
(6) да какая разница , не нравится - перепиши . зачем на форум тащить это?
11 Фокусник
 
30.09.13
09:49
(6),(7) ИМХО, автору кода нужно 3 значения флажка: 0, 1, 2...  Зачем, это уже другой вопрос :)
12 пыхтачокк
 
30.09.13
09:50
жалкие типовые людишки, вы не поняли всей высоты полета мысли гения, создавшего Это )))
13 Любопытная
 
30.09.13
09:50
(11) При безусловном исполнении этой строки 2 не получится никак. Если только исполнение ее тоже в условие завернуто
14 ADirks
 
30.09.13
09:52
(10) да так, поржать
тут такие выверты местами случаются, что не до смеха. это просто характерный и простой пример.
15 jsmith82
 
30.09.13
09:54
красота...
16 BuHu
 
30.09.13
09:57
(14) я думаю , если покопаться в твоем коде , который ты писал на заре своей программерской деятельности , то там тоже можно не один пёрл найти , вот только смысл вываливать все это на форум ?
З.Ы. даже не улыбнуло
17 Oleg_Kag
 
30.09.13
09:58
(0) Совсем не кошерно!
Надо такое делать "многоэтажным" запросом, через передачу параметров...с группировкой
18 dmpl
 
30.09.13
10:00
(6) Потому что 0, 1, 0 в конце гораздо хуже 0, 1, 2. И вообще - так проще авторство конфигурации доказывать.
19 Mikeware
 
30.09.13
10:07
(0) ну, кто-то увидел в запросе что-нибудь типа:
(1-2*debkred)
ему понравилось...
:-)
20 ADirks
 
30.09.13
10:13
(16) ну так то мне тоже не смешно, но что тут сделаешь, кроме как поржать?
(0) похоже, но у этого автора вообще стиль мышления такой. любой код сокращается раз в 5 (а то и вообще сокращается), но сначала полдня разбираешься, что же он делает.
21 VladZ
 
30.09.13
10:16
(0) Не вижу ничего криминального... Код как код. Шедеврального тоже ничего не вижу...
22 Mikeware
 
30.09.13
10:16
(20) ну, наверное, тоже "старой школы", когда объемный код писать считалось очень плохо...
23 пипец
 
30.09.13
10:18
ичо ;))) сам иногда вставляю Если 2=1 тогда
ежели конструкцию переделывать долго и не понятно ...
24 Молодой 1Снег
 
30.09.13
10:20
(0) Мне нравится. Автор кода неординарная личность.
25 dmpl
 
30.09.13
10:21
(23) А прикинь - военное время, и 2=1...
26 пипец
 
30.09.13
10:23
(23) хуже когда
статусвозврата(0)
возврат
Сообщить("...")
27 ADirks
 
30.09.13
10:26
ну ладно, а вот загадка: имеет ли смысл вот такой код?
ВыбМонтаж = ДокСрокМонтажа.ДокументМонтаж.ТекущийДокумент();
и если да, то почему?
28 Vlad_1717
 
30.09.13
10:30
(14) "Есть два пути возвышения: возвышаться самому и унижать других" (с). Твой путь понятен.
29 ADirks
 
30.09.13
10:38
(28) угу, я очень аморален, особенно в понедельник с утра
30 Privalov
 
30.09.13
10:42
(29) Пост ни о чем. Ну, не понял ты - гордись.
31 Privalov
 
30.09.13
10:45
(29) Пить надо меньше (в воскресенье).
32 Эльниньо
 
30.09.13
12:20
ТС. Напиши инверсию флажка.
33 VladZ
 
30.09.13
12:22
(27) А что тебя смущает?
34 ADirks
 
30.09.13
12:22
(32) это типа экзамен? а на загадку 27 кто-нибудь ответит?

ф = 1 - ф;
или более научно
ф = (ф+1) % 2;
35 IamAlexy
 
30.09.13
12:32
(0) здорово же..
36 ADirks
 
30.09.13
12:34
(33) не скажу, а то загадка совсем испортится
37 mishaPH
 
модератор
30.09.13
12:35
(0) ИМХО связано с картинкой метки штатной библиотеки. там галочка = 2 а пустой квадрат 1
38 ADirks
 
30.09.13
12:39
(37) да, возможно так и было, т.е. было (3 - ?(...Ставка>0, 1, 2)) и потом 3 не заморачиваясь поменяли на 2. Но ведь в добром десятке мест такое...
39 mishaPH
 
модератор
30.09.13
12:41
(38) знаешь. я сам 10 лет так делал ;) но. только недавно узнал. что надо при прикреплении картинки с меткой указать код картинки по умолчанию, и тогда 1 записанная в него показывает галку а 0 пустой квадрат а не пустоту.
40 Mikeware
 
30.09.13
12:41
(36) да никаких загадок, соственно...
(38) тогда бери паяльник, и методами терморектального криптоанализа...
41 mishaPH
 
модератор
30.09.13
12:43
(40) майк. ты по моему мне обещал температурные датчики в магазины посчитать и пропал? или я что-то путаю. ;)
42 Кирпич
 
30.09.13
12:54
(0) да просто пьяный был. или злой. не ваше дело.
43 ADirks
 
30.09.13
12:56
(42) в том то и дело, что теперь это моё дело, если бы дело было в другом, то и дела бы никакого не было
44 Mikeware
 
30.09.13
12:57
(40) мыло дай.
Посчитал, но пока болел - думал, все решилось уже....
45 ADirks
 
30.09.13
12:59
(40) кстати, а ты уверен, что правильно думаешь, зачем это? :)
46 1Cv8_accepted
 
30.09.13
13:00
(0) Это нормально. Для С++, например.
47 Mikeware
 
30.09.13
13:00
(45) нет, конечно. Я просто знаю, как бы я бы это применил.
48 ADirks
 
30.09.13
13:04
(46) Это - нигде не нормально. А то ведь можно и через логарифм забабахать, или ещё чё интересное придумать.

(47) не, ну как я бы это применил - я тоже знаю :)
но ведь это же загадка, значит не всё так просто.
49 1Cv8_accepted
 
30.09.13
13:05
(48) Я вообще для сложных условий таблички СКНФ, СДНФ люблю! )) или XOR побитный по числу.
50 1Cv8_accepted
 
30.09.13
13:06
(49) + эта остаточная шизофрения ещё с ассемблера.
51 dmpl
 
30.09.13
13:08
(50) Ты главное GOTO почаще используй. Для создания атмосферы...
52 1Cv8_accepted
 
30.09.13
13:10
(51) Нет уж. )) Дискутировали как-то на счёт меток... Даже Волшебник@ был за метки В НЕКОТОРЫХ РЕДКИХ СЛУЧАЯХ, но я категорически против них, если есть другие средства. ))
53 Эмбеддер
 
30.09.13
13:10
(0) где голосовалка? работает - не трожь, тем более это 7-ка, ей недолго осталось
54 КонецЦикла
 
30.09.13
13:17
(0) Перепиши, дольше об этом писать на форуме. Переписать чаще быстрее чем модифицировать.

Вот смотри какой отчет был и какой стал, благодаря твоему классу :)

1c911.by/sites/default/files/user//files/primer_itz.rar

(53) Ну, положим, такси она переживет :)
55 oslokot
 
30.09.13
13:22
(27) альтернативный метод узнать по наличию ссылки, существует ли документ "ДокументМонтаж" в указанном реквизите?
Типа аналог ДокументМонтаж.Выбран() = Истина ?
56 oslokot
 
30.09.13
13:27
(0) это нормально, я иной раз и такое пишу:
    Форма.кОсобенностиДоговора.Цвет(?(ПустаяСтрока(ОсобенностиДоговора) = 0,-1,128)); // если таких эл. форм дохрена и надо сократить код
    Форма.ДатаПодачиКЗаявкиБум.Доступность(?(Упр=1,?(Б=2,3,0),Упр)); // ну это изврат конечно, тоже сокращал код однотипных элементов
57 Z1
 
30.09.13
13:28
(0) это еще что.
Видел код где эти вопросики ?
вложены друг в друга до четырех раз.
код вообще не читаемый.

Ну как бы ? также как и goto атавизм - но кто-то
ими пользуется - вот и все.
58 ADirks
 
30.09.13
13:39
(54) Ну просто что-то зло взяло, когда с утра первым делом на _это_ наткнулся.  А так то конечно переписываем, по мере изменения бизнес-процесов.
Вот, к примеру, из истории уже: http://satansclaws.livejournal.com/283856.html

(55) ну, в общем близко
(57) да дело же не в вопросиках, а в абсолютно бессмысленной арифметической операции.
59 Fragster
 
модератор
30.09.13
13:41
(57) я просто в столбик пишу - вся читается
60 Fragster
 
модератор
30.09.13
13:42
а = ?(Условие1, Значение1,
     ?(Условие2, Знчаение2,
     ?(Условие3, Знчаение3,
     ?(Условие4, Знчаение4,
     ?(Условие5, Знчаение5,
     ?(Условие6, Знчаение6,
     ?(Условие7, Знчаение7,
     ЗначениеИначе)))))));
61 Mikeware
 
30.09.13
13:43
(60) Пиши на ЛИСПе...
62 Fragster
 
модератор
30.09.13
13:44
(61) ну, такая запись иногда лучше чем Если Тогда ИначеЕсли тогда Иначеесли тогда иначеесли тогда иначе
63 Эмбеддер
 
30.09.13
13:45
(60) а если какие-то вычисления - их вынести в отдельную функцию и можно полностью отказаться от "если - тогда"
64 Aleksey
 
30.09.13
13:45
(62) для отладки хуже, ибо между Тогда ИначеЕсли хоть точку остановки можно влипить, или а последсвиии какой то код добавить
65 Z1
 
30.09.13
13:46
(57) goto тоже можно в столбик писать. мало помогает
можно написать абсолютно бесмысленный код.

как бы почему против использования ? вместо
Если Тогда КонецЕсли;
незначительное изменение задачи влечет значительное и сложное изменение кода а значит при этом екгче ошибиться
вторая причина отладчик на (60) сразу все выполнит и разбирайся что и как.

Как бы ИХМО - каждый выбирает сам как ему писать.
66 Aleksey
 
30.09.13
13:47
(63) какие вычисления? Например у тебя 7 интервалов, и в зависимости от интервала разные фиксированные значения, нужно найти значения для конкретного числа (для этого найти нужный интервал и прочитать  значения)
67 Mikeware
 
30.09.13
13:47
(62) по исполнению - возможно. по читаемости кода - нет.
68 Mikeware
 
30.09.13
13:48
(66) ВернутьЗначенеДляИнтервала(Интервал)
69 Aleksey
 
30.09.13
13:49
(68) в котором что? правильно таже колбаса из условий
70 Fragster
 
модератор
30.09.13
13:49
(67) при такой ззаписи хоть сразу понятно, что тут одной переменной присваивание идет.

Если Условие1 Тогда
    Отослала = 1;
ИначеЕсли Условие2 Тогда
    Отослала = 2
ИначеЕсли Условие3 Тогда
    Отсосала = 3;
Иначе
    Отослала = "Иначе";
КонецЕсли;
71 Mikeware
 
30.09.13
13:50
(69) ну,смотря как колбаса организована...
если CASE нету - приходится колбасу колбасить
72 Fragster
 
модератор
30.09.13
13:50
(70)+ замечтался/опечатался - и нужен отладчик, чтобы понять, почему в одном из 4 случаев в отослала - неопределено
73 dmpl
 
30.09.13
13:51
(69) Можно LUT использовать.
74 Fish
 
30.09.13
13:51
(72) Прямо по фрейду опечатка :)
75 Fragster
 
модератор
30.09.13
13:51
(74) это баян с баша, если что
76 Aleksey
 
30.09.13
13:52
(71) а чем он тут поможет?
77 Z1
 
30.09.13
14:14
(63) текст не мой

т.е. то что ниже это еще совсем не закручено
а как бы элементарно с точки зрения автора кода

|WHERE
|"+?(ВыбДок.Выбран()=1,"($Выбдок.Склад=:ВыбСклад)","")+"
|

3-4 таких вложенных наворота и чтобы это понять
надо приложить ну очень много усилий.
78 Fragster
 
модератор
30.09.13
14:25
(77) ну нету в прямых запросах СКД и построителя... но вообще в таких случаях делаю что-то типа &Условие в тексте и СтрЗаменить после
79 ЧеловекДуши
 
30.09.13
14:26
(4) Не удивился твоим словам :)

(0) Нормально все, просто человек писавший это плохо знаком с 1С. Попривык на С-ях писать или на делфе :)
80 ADirks
 
30.09.13
14:27
(78) чё это вдруг нету? у нас есть :)
у нас даже лучше, чем СКД
81 Mikeware
 
30.09.13
14:29
(80)?
построителя знаю, а СКД?
82 Fragster
 
модератор
30.09.13
14:29
(80) ну тогда в (77) и юзайте его, что не юзаете?
83 stix2010
 
30.09.13
14:32
(0) упрощаю код
ДокМонтаж.УчитыватьНДС=ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка;
84 Z1
 
30.09.13
14:32
(78) какой скд
это человек так для себя сам пишет руками.
85 ADirks
 
30.09.13
14:33
(81) ну у нас есть набор классов для генерации отчетов
ТОтчет, ТГруппировки, ТКоллекцияОтборов, ТПостроительОтчета, и чего-то ещё
И большинство настроек (фильтры, поля выборки, группировки) хранятся в mxl

(82) юзаем, отчего не юзаем?!  :))
у нас это выглядит примерно так

Функция тзп_Сгруппированно(оЗапрос)
    ТекстЗапроса = "
    |SELECT
    |    "+оЗапрос.Отступ(оЗапрос.СложитьЧастиЗапроса("Идентификатор",, "Переносы"), 1)+",
    |    sum(Переносы.КоличествоДней) КоличествоДней,
    |    sum(Переносы.КоличествоПереносов) КоличествоПереносов
    |FROM
    |    (
    |    "+оЗапрос.Отступ(тзп_СборДанных(оЗапрос))+"
    |    ) Переносы
    |
    |"+оЗапрос.WHERE(оЗапрос.стрВсеФильтры())+"
    |
    |GROUP BY
    |    "+Отступ(оЗапрос.СложитьЧастиЗапроса("Идентификатор",, "Переносы"), 1)+"
    |";
    
    Возврат ТекстЗапроса;
КонецФункции
86 stix2010
 
30.09.13
14:33
(83) короче не будет
87 ADirks
 
30.09.13
14:34
(+85) самое главное забыл ТОтчет.Запрос
88 Mikeware
 
30.09.13
14:36
(85) а, понятно...
вдел - "без бутылки не разберешься":-)
89 ADirks
 
30.09.13
14:38
(88) Ну да, когда не в теме. Но и про СКД можно то же самое сказать. Собственно, это о любой сложной системе.
90 Fragster
 
модератор
30.09.13
14:44
(85) "+Запрос+" - это фигня. содрали бы построитель из снеговика хоть...
91 Mikeware
 
30.09.13
14:46
(90) построитель - точь-в-точь как в снеговике, а местами даже лучше - есть уже лет семь...
92 ADirks
 
30.09.13
14:48
(90) Если бы мне нравился восьмёрошный построитель - я бы содрал. Но не нравится. Программный интерфейс ужасен, на мой взгляд.
93 ОмелянКосопысд
 
30.09.13
14:48
Сатанинская версия :
ДокМонтаж.УчитыватьНДС = 666 - ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 665, 666)
94 ОмелянКосопысд
 
30.09.13
14:49
Патриотическая версия
ДокМонтаж.УчитыватьНДС = 1945- ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1944, 1945)
95 Fragster
 
модератор
30.09.13
14:53
(92) тогда зачем рваный текст запроса?
96 ADirks
 
30.09.13
14:56
(95) потому что читать запрос из 1000 строк страшно неудобно
гораздо удобнее, когда запрос складывается из поименованных кусков, и на каждой итерации весь текст умещается на экран
97 Бывший адинэсник
 
30.09.13
14:58
(20) обожаю вот такие куски кода

  days7:=days7+if(tbl1.penstaj.cterr=comp(0) and (tbl1.penstaj.cadd1=00016439f0762b15h or tbl1.penstaj.cadd1=00016439f0762b14h
  or tbl1.penstaj.cadd1=00016439f0762b13h or tbl1.penstaj.cadd1=0001000000000263h),
  if(tbl1.penstaj.fromdate<date(1,7,2013) and tbl1.penstaj.fromdate<>date(0,0,0)
  and (tbl1.penstaj.todate=date(0,0,0) or tbl1.penstaj.todate>=date(1,4,2013)),  calcdaysbetweendates(if(tbl1.penstaj.fromdate<date(1,4,2013),date(1,4,2013),tbl1.penstaj.fromdate),
  if(tbl1.penstaj.todate>date(30,6,2013) or tbl1.penstaj.todate=date(0,0,0),date(30,6,2013),tbl1.penstaj.todate),false),0),0);

и ведь тот кто его писал о чём то там думал...
98 Бывший адинэсник
 
30.09.13
14:59
типа а что если страничку кода уместить в 1 строку...
99 ОмелянКосопысд
 
30.09.13
15:05
(97) ничего плохого этот "ктото" не имел в виду. просто дописывал себе условия потихоньку. А полностью переделать конструкцию - лень. Это ж моск включать надо.
100 Нуф-Нуф
 
30.09.13
15:05
100
101 Эльниньо
 
30.09.13
15:05
2S
102 Fragster
 
модератор
30.09.13
15:32
(96) у вас что, конструктора запросов нету? даже когда я клюшками занимался - конструктор прямых запросов подобный восьмерочному, включая виртуальные таблицы даже, уже был.
103 Mikeware
 
30.09.13
15:35
(102) У них нескольько другой подход.
в принципе, если постоянно там работать - возможно, он будет даже удобнее.
104 Fragster
 
модератор
30.09.13
15:41
(103) все равно повторность использования кусков текстов запросов мала (ИМХО).
105 Mikeware
 
30.09.13
15:50
(104) зато понимаемость кусков велика.
их проще понять, нежели осилить запрос целиком.
106 ADirks
 
30.09.13
16:46
(105) не люблю я конструкторы, никакие вообще. По той простой причине, что как только хочешь сделать, что-то, что не делает конструктор - то всё, привет, приплыли.
Разбиение же на куски - это исключительно в целях читабельности. Это действительно очень удобно. Такой подход позволяет разделить уровни абстракции, чтобы в каждый конкретный момент видеть и анализировать только один уровень. А надо спуститься ниже - жмёшь Ctl-Enter, и пожалуйста.

Но есть и повотрно используемые фрагменты - фильтры, поля SELECT-листа, джойны для них. К примеру, настройка фильтров выглядит так:
оЗапрос.ДобавитьФильтр(СрокПоставки, "Материалы.СрокПоставкиПодЗаказ");
где СрокПоставки м.б. пустым, элементом справочника, группой или списком - сборщик текста запроса сам определяет что-как, и генерит соотв. код.
107 Злопчинский
 
30.09.13
16:55
ну а фигли? я сплошь и рядом пишу типа
ТЗ.Пометка = 3-ТЗ.Пометка;
.
для переключения вкл/выкл (1/2).
.
кто не читал про программистов опусы в 80-ых годах - не пойимет... там было что-то как напишут задачу разные люди...
108 ADirks
 
30.09.13
16:57
(107) ну ёлки-палки ... да не в этом же дело ...
сравни
ДокМонтаж.УчитыватьНДС = 2 - ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1, 2);
и
ДокМонтаж.УчитыватьНДС = ?(ДокМонтаж.Фирма.ОсновнаяСтавкаНДС.Ставка>0, 1, 0);

разница небольшая, но принципиальная
109 bushd
 
30.09.13
17:00
(0) Да уж.... изобретатели.
110 oslokot
 
30.09.13
17:01
(108) Что там с загадкой в (27) ?
111 Злопчинский
 
30.09.13
17:02
(108) ХЗ... может там есть какая-то сокральная смыслость? я когда такие вещи встречаю - ну проде разобрался что в этом случае хотел "сказать" автор - ну и ок.
112 ADirks
 
30.09.13
17:04
(110) да банально всё: при некоторых действиях, типа "отмена статуса" не заморачиваясь удаляются документы, т.е. Док.Удалить(1); и ПустоеЗначение(Док.ДругойДок) не работает. Док.ДругойДок.Выбран() работает, но это лишнее обращение к базе.
113 ADirks
 
30.09.13
17:06
(111) в том то и дело, что в первом варианте надо разбираться, а второй понятен даже идиоту.
114 bushd
 
30.09.13
17:09
(22) Не то что бы плохо просто памяти маловато)))
115 bushd
 
30.09.13
17:11
(24) Точна, точна, это вроде современного искусства.
116 oslokot
 
30.09.13
17:14
(112) ага, ясно
117 bushd
 
30.09.13
17:20
На самом деле автор написал что в голову пришло и все. А у него пунктик на это дело был... Вот и написал как привычно. Запомненная ситуация, воспроизвел и все.
А вы тут копья ломаете.
118 ADirks
 
30.09.13
17:24
А я хочу поломать пару копий (хм... как-то двусмысленно...) по этому поводу, потому что (113)
119 Любопытная
 
30.09.13
17:39
(118) Нашел бы автора, да у него спросил бы в чем кроится сакральный смысл. Может весь смысл в том, что писалось это в похмельном бреду.
У меня тоже вон разные красивые разности в клюшках у клиента вылазят, ну что ж теперь поделать. Терпеливо считаю, что в этом есть тайный смысл, мне не понятный, а потому, раз работает, лучше его до поры до времени не трогать.
120 ice777
 
30.09.13
17:40
(0) С юмором товарищ, что пристали.
121 ADirks
 
30.09.13
17:42
(119) да мне в общем-то плевать на автора - уже что сделано, то сделано - я тут с просветительской миссией выступаю.
122 Любопытная
 
30.09.13
17:45
(121) В чем просветительство-то? Теперь пол-форума знает, что тебе не нравится подобный код. И что с того?
123 ADirks
 
30.09.13
17:49
(122) Знают - хорошо. Пусть фигни не пишут!

Код надо писать так, чтобы было максимально понятно, о чём речь. Чтобы пришёл в понедельник утром с бодуна в стельку пьяный, прочитал, и понял.
(писать конечно в таком состоянии не надо:)
124 Любопытная
 
30.09.13
17:55
(123) Да ведь понятия о понятности кода у всех разные) кто-то расписывает , да еще и комментарии ставит, чтобы понятней было, а кто-то и так понимает о чем речь))
А некоторые так и нарочно, по-моему, пишут так, что черт ногу сломит разбираться, либо чтобы не сперли, либо чтобы вечно дописывать и денюжку иметь))
В конечном итоге клиенту вообще пофиг, что там написано, хоть роман в стихах вместо кода, главное чтобы работало.
125 ADirks
 
30.09.13
18:11
(124) Понятия конечно разные, но есть и общее - иначе вообще бы никто никого не понимал. И надо стремиться к тому, чтобы написаное было понятно всем. Ну, или хотя бы самому себе через месяц.
А всё прочее, тобой перечисленное, я как раз считаю аморальным поведением, и вообще смертным грехом.
Есть такая штука - технологичность кода. Чем меньше кто-то потратит времени на разборки, чтобы дописать где-то пару строчек - тем лучше.
126 FlashC
 
01.10.13
00:17
(97) люди такое писали и не парились:
Функция ПадежС(z1,Знач z2=2,Знач z3="*",z4=0) Экспорт
  z5=Найти(z1,"-");
  z6=?(z5=0,"","-"+ПадежС(Сред(z1,z5+1,СтрДлина(z1)-z5+1),z2,z3,z4));
  z1=НРег(?(z5=0,z1,Лев(z1,z5-1)));
  z7=Прав(z1,3);z8=Прав(z7,2);z9=Прав(z8,1);
  z5=СтрДлина(z1);
  za=Найти("ая ия ел ок яц ий па да ца ша ба та га ка",z8);
  zb=Найти("аеёийоуэюяжнгхкчшщ",Лев(z7,1));
  zc=Макс(z2,-z2);
  zd=?(za=4,5,Найти("айяь",z9));
  zd=?((zc=1)или(z9=".")или((z4=2)и(Найти("оиеу"+?(z3="ч","","бвгджзклмнпрстфхцчшщъ"),z9)>0))или((z4=1)и(Найти("мия мяэ лия кия жая лея",z7)>0)),9,?((zd=4)и(z3="ч"),2,?(z4=1,?(Найти("оеиую",z9)+Найти("их ых аа еа ёа иа оа уа ыа эа юа яа",z8)>0,9,?(z3<>"ч",?(za=1,7,?(z9="а",?(za>18,1,6),9)),?(((Найти("ой ый",z8)>0)и(z5>4)и(Прав(z1,4)<>"опой"))или((zb>10)и(za=16)),8,zd))),zd)));
  ze=Найти("лец вей бей дец пец мец нец рец вец аец иец ыец бер",z7);
  zf=?((zd=8)и(zc<>5),?((zb>15)или(Найти("жий ний",z7)>0),"е","о"),?(z1="лев","ьв",?((Найти("аеёийоуэюя",Сред(z1,z5-3 ,1))=0)и((zb>11)или(zb=0))и(ze<>45),"",?(za=7,"л",?(za=10,"к",?(za=13,"йц",?(ze=0,"",?(ze<12,"ь"+?(ze=1,"ц",""),?(ze<37,"ц",?(ze<49,"йц","р"))))))))));
  zf=?((zd=9)или((z4=3)и(z3="ы")),z1,Лев(z1,z5-?((zd>6)или(zf<>""),2,?(zd>0,1,0)))+zf+СокрП(Сред("а у а "+Сред("оыые",Найти("внч",z9)+1,1)+"ме "+?(Найти("гжкхш",Лев(z8,1))>0,"и","ы")+" е у ойе я ю я ем"+?(za=16,"и","е")+" и е ю ейе и и ь ьюи и и ю ейи ойойу ойойойойуюойойгомуго"+?((zf="е")или(za=16)или((zb>12)и(zb<16)),"и","ы")+"мм",10*zd+2*zc-3,2)));
Возврат ?(""=z1,"",?(z4>0,ВРег(Лев(zf,1))+?((z2<0)и(z4>1),".",Сред(zf,2)),zf)+z6);
КонецФункции
//
127 FlashC
 
01.10.13
00:17
+(126) вроде даже в знаниях есть
128 Haritonina
 
01.10.13
00:25
действительно понятие и знание кода у всех разные)))
129 FlashC
 
01.10.13
00:27
(128) я про то и говорю))) а то про какие то маленькие шедевры бачут) как тот герой говорил - "Из малого ..."
130 FlashC
 
01.10.13
00:39
+(126) это всё Jurer Production Begin ( Start ) - в народе Юра Ж. Дай Бог ему здоровья!
131 stix2010
 
01.10.13
15:38
(126) Кстати, этот код был для меня темной коробкой, я подавал на вход данные и получал на выходе результат,
разбирать, что и как там работает даже желания не было
132 aka MIK
 
01.10.13
15:43
(0) А у меня так

Форма.ВыводитьВсе.Доступность(Окр((ЭтоАдмин()+ЭтоНачОтдела())/2,0,2));

Кто лучше?
133 Mikeware
 
01.10.13
15:44
(126) это шедевр. я раз пять пытался понять, как оно работает... но в конце концов, забил и просто пользуюсь уже лет 6...
134 aka MIK
 
01.10.13
15:46
Шедевр - это шахматная программа на javascript в страницу кода...
135 Mikeware
 
01.10.13
15:47
(134) шедевров много. правда, м.даков еще больше. но все таки....
136 Fragster
 
модератор
01.10.13
16:10
(133) оно  вроде как со средним родом не очень хорошо работает
137 Mikeware
 
01.10.13
16:13
(136) я фамилии сотрудников и контрагентов склоняю. А гомиков у нас нет (по крайней мере - настолько явных)...Ну и должности-профессии...
138 ADirks
 
01.10.13
16:40
(132) я бы сказал так

Форма.ВыводитьВсе.Доступность(оМетоды.ОдноИз(1, ЭтоАдмин(), ЭтоНачОтдела()));