Имя: Пароль:
1C
1С v8
SOLID в 1С
0 Ненавижу 1С
 
гуру
04.06.13
14:38
1. Нет, не нужно 37% (7)
2. Нет, но можно 26% (5)
3. Да, показываю пример 21% (4)
4. Нет, причина в платформе 11% (2)
5. Что это? 5% (1)
Всего мнений: 19

Используются или могут ли использоваться принципы SOLID в 1С?

wiki:SOLID_(объектно-ориентированное_программирование)
1 1Сергей
 
04.06.13
14:40
Где пункт КГ/АМ?

Нет, не нужно
2 MaxS
 
04.06.13
14:42
1С платформа и так достаточно предметно ориентирована.
Зачем надевать ещё одну одёжку, если она уже есть внутри?

Да, показываю пример
3 Ненавижу 1С
 
гуру
04.06.13
14:42
(2) показывай уже
4 Chai Nic
 
04.06.13
14:43
Это смотря кому нужно. Тем, кто на основе типовых делает свои решения - да, нужно безусловно. Самой фирме 1с и внедренцам типовых - не нужно.

Что это?
5 AaNnDdRrEeYy
 
04.06.13
14:43
в 1с очень мало программистов, в основном бухи перебежчики, они и понятия не имеют что это такое.

где вариант "Нет, причина в тех кто ее конфигурирует"
6 UserMista
 
04.06.13
14:43
Выше платформы и заложенных возможностей не прыгнешь. Можно поизвращаться назвав обработку классом и на ее основе подводить под ООП, но зачем?

Нет, причина в платформе
7 Chai Nic
 
04.06.13
14:46
(6) Чтобы избежать дублирование кода. Да, сейчас можно вызывать функции одной обработки из другой.. и можно вызывать методы общих модулей. Но это приводит к спагетти вызовов. Четкая иерархия с наследованием была бы удобнее и менее ошибкоопасна.
8 1Сергей
 
04.06.13
14:48
Создаём класс ПлатёжныеДокументы, делаем 4 потомка: ПКО, РКО, ППВ, ППИ.

Вам это надо?
9 UserMista
 
04.06.13
14:48
(7) ну насчет спагетти согласен) Иногда, пока типовую разматываешь, 5-6 модулей, один из другого, - вполне нормальная для типовых картина.
10 AaNnDdRrEeYy
 
04.06.13
14:49
(8)>>Создаём класс ПлатёжныеДокументы
и как ты это собрался сделать?
11 ДенисЧ
 
04.06.13
14:50
(10) возвращаемся на 77 и вуаля!
12 UserMista
 
04.06.13
14:50
(10) Он теоретически) Еслиб было можно.
13 kortun
 
04.06.13
14:50
(8) можно еще проще, делаем один документ и разруливаем по коду операции, никакого дублирования кода :)
14 1Сергей
 
04.06.13
14:52
(10) Если вы этого хотите, то переходите на ООП и забудьте 1С. Есть ещё один большой плюс - за вашу нетленку никто не возмётся больше
(13)  ага, и каждый модуль портянка на 100500 страниц
15 AaNnDdRrEeYy
 
04.06.13
14:54
Принцип открытости/закрытости
Программные сущности должны быть открыты для расширения, но закрыты для изменения.

вот какраз в типовых фиг что расширишь  только код менять или структуру. вот этого не хватает.
(8) в этом случае мне это надо:
есть документ ПКО в нем мне не хватает какого либо свойства я наследуюсь от ПКО и добавляю свое свойство и не трогаю типовой ПКО. при этом я получаю свой класс, именно тот что мне нужен а базовый остается на поддержке поставщика.
16 UserMista
 
04.06.13
14:56
Да есть в 1ске все нужное от опп, можно же для примера из (8)
Создаём класс ПлатёжныеДокументы, делаем 4 потомка: ПКО, РКО, ППВ, ППИ.

Сделать общий модуль ПлатежныеДокументы, базовую форму в общих формах...
17 screamhome
 
04.06.13
14:58
(0) солид один стоит 500 т руб
+ упп 150 т руб по минимуму

итого не бюджетно получиться
18 AaNnDdRrEeYy
 
04.06.13
14:59
(16) а override как делать собираешься? без него ну никак иначе ерунда получится
19 ДенисЧ
 
04.06.13
15:01
(17) принцип не может стоит 500 тыр :-)
с солидворксом не путай
20 Ненавижу 1С
 
гуру
04.06.13
15:02
(18) сделать обработкой, а перегрузка в 1С встроена, тут же утиная типизация
криво, но как есть на текущей платформе
21 UserMista
 
04.06.13
15:02
(18) мда... чтото немогу выкрутиться штатной 1ской...)))
22 Aleksey
 
04.06.13
15:05
Сколько таких тем, но ниразу никто так и не смог на примере рассказать нафига это в 1С. Ну кроме того что ООП это круто.

По факту теже спагети из вызовов, только вид сбоку
23 AaNnDdRrEeYy
 
04.06.13
15:09
(20) что значит "перегрузка встроена" ? че то я недогоняю, пример покажи...
24 Kyon8
 
04.06.13
15:20
Разработчикам платформы некогда, они multitenancy делают:
http://v8.1c.ru/o7/201303mt/index.htm
25 Kyon8
 
04.06.13
15:22
.

Нет, причина в платформе
26 MSII
 
04.06.13
15:31
Не можно и не нужно.

Нет, не нужно
27 mikecool
 
04.06.13
15:40
(22) +1
28 Speshuric
 
04.06.13
16:02
(0) Принципы могут и должны применяться. Но как и любая методика требуют обучения. А с этим плохо: в типовых еле-еле эти принципы взлетают, внятных статей/книг с примерами нет.

Нет, но можно
29 Ненавижу 1С
 
гуру
05.06.13
11:15
например, справочник "Внешние печатные формы и обработки"

Да, показываю пример
30 Конфигуратор1с
 
05.06.13
22:30
не нужно. ООП в 1с зло

Нет, не нужно
31 Зойч
 
05.06.13
22:34
(30) рано или поздно будет
32 Ненавижу 1С
 
гуру
05.06.13
22:46
(31) ваши бы слова, да в 1С ))
33 Зойч
 
05.06.13
22:49
(32) все к этому идет. смотри как развивается бсп
34 Зойч
 
05.06.13
22:50
но не думаю что ООП добавит простоты доработки типовых. Это миф
35 IamAlexy
 
05.06.13
22:53
опять нытье на мифический ООП который нахер никому не сдался но почему то при появлении которого все считают мгновенно конфигурации 1С станут тянуть по 100500 пользователей в файловом варианте и работать с любой пепельницы...

не надоело ?
36 Конфигуратор1с
 
05.06.13
22:55
(35) +1
37 vde69
 
05.06.13
23:02
сейчас только в виде внешних DLL

вообще-то будет хорошо если БСП сделают в виде классов с описанными интерфейсами, тогда БСП будет некой прослойкой между платформой и кодом с возможностью безгеморгого обновления

Да, показываю пример
38 Ненавижу 1С
 
гуру
05.06.13
23:02
(35) файловые базы в топку!
39 quest
 
05.06.13
23:09
а есть еще шикарный  принцип wiki:KISS_(%EF%F0%E8%ED%F6%E8%EF)
40 HeroShima
 
05.06.13
23:18
(39) Хотите поговорить об этом?)
41 vde69
 
05.06.13
23:27
+ собственно сейчас самой главной проблемой БСП является отсутствие описанного и мало изменяемого интерфейса.

я-бы пошел следующим путем

у объекта подсистема (подсистему можно рассматривать как класс) создал модуль менеджера в этом модуле и только в нем должны описываться 100% экспортных функций пользовательского интерфейса

далее за счет подчинении подсистем друг другу реализуем "наследственность",

пример
есть подситема "УправлениеПользователями", в ней есть процедура "УстановитьПараметрыСеанса", мне что-то нужно добавить, я делаю новую подсиненную подсистему "УправлениеПользователями_01" и в ней пишу
Процедура УстановитьПараметрыСеанса()
Родитель.УстановитьПараметрыСеанса();
// ----
мойПараметр = 1;
КонецПроцедуры

Все что я не описал берется автоматом из родителя.

---------------------------------------------------

что получим
1. БСП будет занимать корень подсистем и обновляется автоматом при "совместимости описанного интерфейса подсистемы"
2. пользователи могут переделывать или дополнять конкретные процедуры не коверкая БСП

модуль подсистемы можно закрыть, но нужно будет сделать служебную функцию получения всех экспортных заголовков из закрытого модуля
42 IamAlexy
 
05.06.13
23:29
они переопределяемые модули как раз для этого и сделали
43 vde69
 
05.06.13
23:30
(41)+ если господа из 1с читают - приглашайте на работу, готов реализовать (разумеется не как кодер а как идеолог)

:)

зы
в каждой шутке есть доля правды
44 vde69
 
05.06.13
23:31
(42) это СОВСЕМ НЕ ТО, ну нету там наследования!!!
45 IamAlexy
 
05.06.13
23:34
(44) нафига в 1С наследование ?
46 vde69
 
05.06.13
23:38
(45) что бы тот-же рарус мог делать надстройки на БСП и прог уже дальше на рарус

представь подсистемы
УправлениеПользователями
____УправлениеПользователями_Рарус
________УправлениеПользователями_Омега

первые 2 обновляются каждая сама по себе,
47 Reaper_1c
 
05.06.13
23:38
(45) Да у кого-то тут коленка лишняя...
48 IamAlexy
 
05.06.13
23:43
(46)  и смысл ?

какой нибудь более осмсленный пример есть ?
49 vde69
 
05.06.13
23:49
УправлениеКлиентами
____УправлениеКлиентами_CRM_Рарус
________УправлениеКлиентами_Омега

на верхнем уровне идет работа с регистром "Взаиморасчеты", и еще куча чего
Рарус добавляет работу с регистром сведений "Контакты" и добавляет в регистр "Взаиморасчеты" новый реквизит
Омега - конечная организация, хочет добавить реквизит в регистр "Контакты" а все остальное оставить.

рарус закрыл код!

сейчас омега это сделать не может пока не поломает защиту или полностью перепишет модуль, а тут все пучком, при чем обрати внимание что обновление модуля раруса не повлияет ни на что если они интерфейс оставят совместимым
50 IamAlexy
 
06.06.13
00:00
(49) похоже на сказку..

рарус добавил новый реквизит в регистр
а все старые модули что на верхнем уровне работают по принципу "выгружу в тз, обработаю и загружу обратно"

и ?
51 quest
 
06.06.13
00:36
(40) ну давай поговорим. Хотя слабо могу представить как kiss и 1с совмещаются.
52 jsmith82
 
06.06.13
00:57
ребята, хорош бздеть
ООП рулило и будет рулить
53 jsmith82
 
06.06.13
00:58
помнится, один раз только за счёт инкапсуляии и решил сложнейшую задачу
когда голова идёт кругом от обилия функций, мозг невольно начинает рисовать классы
класс это необходимость, а не роскошь
54 jsmith82
 
06.06.13
00:59
а ты, ай эм алекси в последнее время как старушка
в одной ветке ругаешь тех, кто стебётся над ООП Бита
в другой ветке ругаешь тех, кто восхищается ООП
Ботальный чтоле
55 Reaper_1c
 
06.06.13
01:41
ООП не рулило никогда. Банальная попытка увеличить повторное использование кода, которая привела астрономическому усложнению процесса поддержки и рефакторинга чужого кода. Для систем, основным достоинством которых является скорость модификации, применять противопоказано.
56 Aleksey
 
06.06.13
05:34
(49) Хорошо Омега добавила реквизит, завтра Рарус добавил еще один и так получилось что имена совпали, ведь Рарус же ничего не знает что там омега добавила. И что получится?

Второй вариант Омега добавила реквизит, завтра Рарус решил убрать регистр Контакты, так как он дублировал работу типового регистра "Контакты клиентов". И что получится?


И так вариантов можно накидать вагон и маленькая тележка. 1С нитот продукт где имеем черный ящик на входе 2 параметра на выходи 3 значения. т.е. никто не гарантирует того что даже в типовой завтра не изменятся названия процедур и параметров. Даже от того что в регистрах 1С поменяет местами ресурс и измерения никто не застрахован. О какой модульности и ООП можно вести речь при таком подходе?
57 Kraft
 
06.06.13
06:48
(55)
> привела астрономическому усложнению процесса поддержки и рефакторинга


Сам придумал?
58 HeroShima
 
06.06.13
08:19
(51) тут все представляют "просто" в 1С очень по-своему
59 ЧеловекДуши
 
06.06.13
08:35
(15) Консерватор :)
60 ЧеловекДуши
 
06.06.13
08:38
КГ/АМ :)

Нет, не нужно
61 Wist
 
06.06.13
08:40
(15) А сейчас не так?
ctrl+c ctrl+v и добавляй/убавляй что хочешь в копии
62 HeroShima
 
06.06.13
08:44
(61) когда поменяют образец, цикл придётся повторить
63 YouAreEmpty
 
06.06.13
08:46
Нужно, затрахиваешься реализовать одни-и те же операции в нескольких документах, сложнее вести поддержку кода, плюс нет возможности для реализации собственных объектов - обработка не катит. Отсюда, я считаю, нет нормальной документации по функциям и процедурам как БСП, так и типовых.

Да, показываю пример
64 Aleksey
 
06.06.13
08:47
(63) А где пример?
65 Wist
 
06.06.13
08:52
(62) А как иначе?
Если у тебя есть готовый объект, например, тот же ПКО. Ты в лучших традициях ООП создаешь его наследника Юзер_ПКО с добавлением пары реквизитов и изменением, допустим, модуля проведения. Затем поставщик удаляет из своего объекта или начинает по новому использовать некоторый реквизит, который был задействован в юзерской реализации проведения и привед. В любом случае придется переписывать свой объект под новую логику работы конфы поставщика
66 dervishsy
 
06.06.13
08:52
Мне только одного принципа из solid не хватает Буквы L.

Принцип подстановки Барбары Лисков
Объекты в программе могут быть заменены их наследниками без изменения свойств программы. См. также контрактное программирование.

Нет, но можно
67 YouAreEmpty
 
06.06.13
09:07
(64) Вот захочешь ты добавить какую-нибудь общую функциональность ко всем документам, а у тебя их штук 50 скажем, при ООП достаточно реализовать общую функциональность в базовом классе и она автоматически появится во всех наследуемых, а так будешь пихать все ручками.
68 Sserj
 
06.06.13
09:15
Да какая нафик разница писать МойДокумент.ВыплнитьСуперДейсвие() или ВыполнитьСуперДействие(МойДокумент), есть общие модули и с их помощью можно на 90% заменить все эти мифические плюсы ООП. А то что тут просят у объектов, которые в таблицах бд хранятся наследников делать, так такого и вообще помоему нигде нет, даже в Hibernate это помоему не реализовали толком (хотя я давно уже с ней работал, может чего то всетаки и намутили жизнеспособного)
69 AaNnDdRrEeYy
 
06.06.13
09:17
а вообще глупая это ветка, вопрос не в том надо ли ООП в 1С или нет а в том что программисты делятся на тех кто понимает ООП и умеет им пользоваться и тех кто так и не вкурил что этот такое и зачем оно надо.
те кто вкурили считают что в 1С оно нужно и видят все плюшки от этого, а те кто считает что не нужно просто не понимают его и не разу не пользовались.
70 YouAreEmpty
 
06.06.13
09:32
(68) Мы больше о функциональности которая дает(или не дает) ООП говорим, а не о хранении данных
71 Ненавижу 1С
 
гуру
06.06.13
09:33
(69) согласен
72 YouAreEmpty
 
06.06.13
09:34
(69) Я считаю, что это может быть вполне закономерным этапом развития. А то свистелки и перделки в виде такси пилят и пилят, а над расширением функциональности системы не шибко работают.
73 AaNnDdRrEeYy
 
06.06.13
09:35
(65) Нормальные поставщики компонент так не делают, они выпускают новую версию в описании которой написано что они поменяли, если пользователь компоненты (библиотеки) готов изменить свою программу для использования новой версии он меняет и обновляет компоненту поставщика. Просто так накатывать обновления никто не будет, ну если самоубийца какойнибуть.
74 Sserj
 
06.06.13
09:35
(70) А какую реальную функциональность тебе может дать ООП?
Сделать ПлатежныйДокумент - наследник ПКО, РКО, Выписка: фик не получится! Потому что это должно отражаться в БД, а этого практически нереально сделать.
Все что можно сделать это для 8 написать аналог 1С++, на это собсно особо и фирма 1С не нужна, было бы желание а его видишьш ли ни у кого и нет, так как бонус это не особо большой даст.
75 quest
 
06.06.13
09:36
(69) "Шуруп забитый молотком держиться крепче гвоздь закрученый отверткой" - в зависимости от задачи ООП становиться либо молотком, либо отверкой, либо плюшкой с повидлом. Да и, честно говоря, этих ООП как минимум два - то что было впихнуто Страуструпом в С++ и то что реализовано в MOP  в лиспе. И если второе действительно прекрасный лебедь, то первое - гадкий утенок котороен не спасают даже проповеди Александреску.
76 Sserj
 
06.06.13
09:37
(73) Э... ты про кого сейчас говоришь, про либы которые используют проф.программисты в своей разработке, или всетаки про 1С которую бухгалтерша тетя Ася пользует тыркает просто кнопки и что там получится ей по большому счету китайская грамота?
77 YouAreEmpty
 
06.06.13
09:40
(74) И почему же не получится? Можно поконкретней?
78 AaNnDdRrEeYy
 
06.06.13
09:42
конкретный пример где можно было бы применить ООП в 1С

В типовых есть такой модуль "РаботаСоСтроками" - там всякая лабуда : разбиение строки по пробелам, каждое слово в строке первая буква в верхнем регистре.

вот этот модуль можно было бы убрать и все эти процедуры запихать в клас Строка.

что это дает: если нужно изменить поведение какой либо функции не нужно будет переписывать общий модуль и снимать его с поддержки
79 IamAlexy
 
06.06.13
09:42
(77) не получится отвязаться от цепочки зависимостей разработчиков..

1С поменяет в объекте ихсодные данные
эти данные идут в ч0рный ящик раруса и там вываливаются с ошибкой.

и пока рарус не сделает обновлеиня учтя все изменения 1Са - следующий за рарусом разработчик не сможет обновиться.

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

и так по цепочке.


то есть сферическая мечта в вакууме "1С обновляется сама по себе не коцая наших доработок" - ООП тут не помошник..
80 YouAreEmpty
 
06.06.13
09:45
(78) Скорей удобство в том что можно реализовать наследника, и переписать и добавить новую функциональность, не трогая при этом базовую.
81 Sserj
 
06.06.13
09:47
(78) Так кто же тебе мешает добавить свой общий "МойРаботаСоСтроками" со своими нужными функциями, даже можешь туда запихнуть все функции оригинального "РаботаСоСтроками", тобишь заголовки этих функций с вызовом и возвратом значений из оригинального? И волки сыты и ты свой правь как хочешь.
82 YouAreEmpty
 
06.06.13
09:48
(81) Дублирование одного и того же кода - это плохо, очень плохо. Вы наверное с таким не сталкивались
83 YouAreEmpty
 
06.06.13
09:50
(81) И при добавлении новой функции в базовом модуле не забудь добавить её вызов в подчиненные модули, а если таких модулей с десяток, как и функций?
84 Aleksey
 
06.06.13
09:51
(67) не появится
85 IamAlexy
 
06.06.13
09:51
(78) собственно сейчас так и делают - все доработки в своих модулях (даже проведение уносят  в подписки а процедуры выносят в модули)

причем в БСП для всех подсистем добавляют специальный модуль "____Переопределяемый" - куда вынесены вызовы нужных для функционирования подсистемы модулей..

то есть надо свои определения добавить в подсистему "ВариантыОтчетов" - в одном модуле который является связкой добавили вызовы своих процедур и функций и все...

надо в подсистему SMSоповещений добавить своего провайдера - то же самое..
86 Лефмихалыч
 
06.06.13
09:51
что членом не вложено, книжкой не вобьешь. 90% 1сников не знают ни каких других языков, кроме 1С, что такое повторное использование кода, что такое интерфейс и зачем нужно наследование, им не объяснишь.

Нет, но можно
87 Sserj
 
06.06.13
09:53
(82) А кто тебе сказал про дублирование????
Ты же знаток ООП и про соответственно паттерны должен знать ну не на зубок но основные то точно. Тобишь такое наитиповейшее действие ты считаешь дублированием?

//Модуль РаботаСоСтроками

Функция ОченьВажнаяФункция(...)
....
Возврат результат;
КонецФункции

//Модуль МойРаботаСоСтроками

Функция ОченьВажнаяФункция(...)
Возврат РаботаСоСтроками.ОченьВажнаяФункция();
КонецФункции;
88 Aleksey
 
06.06.13
09:53
(69) У 1с нет базиса, т.е. неизменного модуля к которому ты прикрутил бы своё ООП. В качестве базиса в 1С выступает объект Документ/Справолчник/Регистр, со своим набором сво1йств.

Желание некоторых видить в качестве базиса Документ ПКО ничего кроме смеа вызвать не может, потому что документ ПКО - нестандартизированный объект, и поэтому он в принципе не может выступать в качестве базиса, потому что нет гарантии что завтра он не изменится
89 quest
 
06.06.13
09:55
(86)  Вот плюс стопитьсот за мысль.
(88) а когда появиться будет таже джава только на русском
90 AaNnDdRrEeYy
 
06.06.13
09:55
(86)+ про упаковку (boxing) и распаковку (unboxing) вообще понять сложно, книжки читать бесполезно, только вербально
91 Aleksey
 
06.06.13
09:56
(78) Это и так есть, например модуль БСП, кому не нравится пишут свой пользовательский модуль который выполняет нужные функции, чем это отличается от твоего желания??
92 IamAlexy
 
06.06.13
09:56
(86) вы так говорите про то что "большинство 1сников никаких языков кроме 1С не знают" как будто бы это плохо...
93 YouAreEmpty
 
06.06.13
09:56
(87) То есть ты предлагаешь заглушки пихать кругом, куда ни попадя?
94 Aleksey
 
06.06.13
09:56
(80) Что мешает тебе сейчас в 1С это сделать?
95 Bugmenot
 
06.06.13
09:56
(0) - ну вот зачем ты тут это запойстел?

Тут 90% людей не отличают класса от объектов, а ты им тут про принцип Лисков и инверсию зависимостей заливаешь?
96 Aleksey
 
06.06.13
09:57
(82) Расскажи это писателем внешних печатных форм и обработок. Мне проще продублировать код, чем каждый раз молиться чтобы 1С не поменяла параметры в глобальном модуле
97 AaNnDdRrEeYy
 
06.06.13
09:58
(91) смотри (90) вот это работать не будет если я новый модуль забубеню
98 IamAlexy
 
06.06.13
09:58
(95) пока по длинне писюна ты выигрываешь у левмихалыча и  AaNnDdRrEeYy...


продолжаем конкурс - кто больше непонятых терминов обронит в разговоре какбудто бы они с этим работают с утра до вечера в этом всем варится в отличии от быдло1Сников...
99 Sserj
 
06.06.13
09:59
(93) Я тебе показываю что ничего "принципиально невозможного сейчас" ООП не добавит.
100 IamAlexy
 
06.06.13
09:59
(97) интересно, разработчики платформы знают про ООП ?
101 Aleksey
 
06.06.13
10:02
Так всё таки каким местом к 1с ООП приложить я так и не понял, тем более всё то о чём говорят те кто хочет ООП и так есть в 1С
102 YouAreEmpty
 
06.06.13
10:02
(100) Ну мы же пользуемся типом "ДокументОбъект" значит да)
103 IamAlexy
 
06.06.13
10:03
(101) продолжаем ждать внятного примера использования ООП в 1С :)
104 vde69
 
06.06.13
10:05
(87) тут нет наследования, тут явно нужно описать... а в идеи с подсистемами наследование реализовать можно.

можно и с общими модулями реализовать если у самого модуля ввести понятие Родитель и построить их в виде дерева
105 AaNnDdRrEeYy
 
06.06.13
10:05
(100) если я добавлю новый модуль то я никогда не смогу сделать сокрытие методов базового класса и работать с разными объектами как с одним целым

класс Строка //это закрытый класс от 1С
{
    void какойтоМетод() // метод 1
}
класс мояСтрока:Стрка
{
  new void какойтоМетод() //метод 2
}

Строка массивУпакованныхСтрок = Новый Строка;

массивУпакованныхСтрок.Добавить(Новый Строка);
массивУпакованныхСтрок.Добавить(Новый мояСтрока);

массивУпакованныхСтрок[0].какойтоМетод(); // будет вызван метод 1
массивУпакованныхСтрок[1].какойтоМетод(); //будет вызван метод 2
106 Bugmenot
 
06.06.13
10:06
(98) - какая длина писюна?

Нормальные программисты должны от корки до корки изучить:

Beck, Kent: Implementation Patterns

Patterns of Enterprise Application Architecture Фаулера

Dependency Injection in NET

и

Принципы, паттерны и методики гибкой разработки на языке C# Мартина
107 Ненавижу 1С
 
гуру
06.06.13
10:06
(103) см (29)
108 Bugmenot
 
06.06.13
10:07
Это Аз, Буки и Веди современного ООП
109 YouAreEmpty
 
06.06.13
10:08
(106) А почему именно в C#?
110 Aleksey
 
06.06.13
10:10
(106) Ты не умничай, а пальцем покажи

класс мояСтрока:Стрка
{
  new void какойтоМетод() //метод 2

}

Т.о. ты должен описать в твоем классе что ты используешь класс
new void какойтоМетод() //метод 2

Т.е. это и есть твоя заглушка

В рамках 1С, ты можешь или описать методы с возвратом, как было указано выше
или просто использовать вызов старого класса строка
111 IamAlexy
 
06.06.13
10:11
(106) "нормальные программисты должны изучить.."  и далее идет:

"Принципы, паттерны и методики гибкой разработки на языке C# Мартина"


НА ХЕ РА ?
кто тебе эту чушь сказал?

типа когда то ты был "нормальным программистом" ? потратил лучшие годы на то что тебе вбивали пыльным томиком гибкую разработку вголову, а затем ты покатился и пошел на 1С зарабатывать нормальные деньги но бесцельно потраченных лет жалко - вот тебя и гложет обида?


смешно..

это типа как "настоящий водитель гоночного болида должен в совершенстве уметь подковывать лошадей и знать каким овсом их нужно кормить в какое время суток - ибо это основы основ"
112 IamAlexy
 
06.06.13
10:12
(107) имелся в виду пример задачи нереализуемый в 1С сейчас без ООП :)
113 Bugmenot
 
06.06.13
10:14
(111) - ты знаешь, там где я работаю, 1С нет, не было и в ближайшие 100 лет не будет.

Территориально и прочее.

То, что знание паттернов НУЖНО, я уже убедился на ЛИЧНОМ опыте.

Привет от Table Data Gateway/ Row Data Gateway.

Да.
114 YouAreEmpty
 
06.06.13
10:14
(111) Хм, ну что значит нахера, пусть не изучить, но ознакомится нужно, я например, паттерны часто использую при проектировании логики работы системы.
115 Bugmenot
 
06.06.13
10:16
(111) - ты разослал свой CV во все западные фирмы, но тебя там не взяли и ты пошел одинэсить?

Бедненький...
116 Sserj
 
06.06.13
10:17
(106) Э.... А если я пишу драйвера или к примеру биосы разрабатываю, ну на худой конец просто с ардуином балуюсь на досуге я точно никакой не программист уже???
А еще я вот на яве балуюсь в свободное время "умный дом" себе тренирую, я тоже же совсем не программист получаюсь :(
117 Aleksey
 
06.06.13
10:17
(115) А нас и 1С неплохо кормит, зачем нам ваш загнивающий запад?
118 Ненавижу 1С
 
гуру
06.06.13
10:17
(112) таких задач нет и быть не может, вопрос удобства поддержки продукта
119 Bugmenot
 
06.06.13
10:18
(117) - Запад гниет уже лет 300, да.
120 AaNnDdRrEeYy
 
06.06.13
10:18
(110) нет, строка
new void какойтоМетод() //метод 2

значит что если объект принадлежит класу МояСтрока то будет вызвана реализация метода 2 если же объект принадлежит классу Строка то будет вызвана реализация метод 1. программа сама определяет какой метод вызывать и нет необходимости указывать это явно.

использовать метод базового класса нельзя так как реализации методов могут быть разными, например в методе потомка могут быть совойства которые обрабатываются в этом методе а базовый класс ничего про них не знает
121 Bugmenot
 
06.06.13
10:18
и еще он стоит на краю пропости
122 YouAreEmpty
 
06.06.13
10:20
(120) А для этого и придумали переопределять поведение у классов потомков.
123 Sserj
 
06.06.13
10:22
(120) Ты вообще сам то понимаешь что весь твой пример применительно к 1С в которая как мы всем помним НЕ ИМЕЕТ ЖЕСТКОЙ ТИПИЗАЦИИ это полная ... ну как бы это сказать... ну вообщем не имеет смысла.
124 IamAlexy
 
06.06.13
10:22
(115) даже и мысли небыло..

западные фирмы сами приходят, просят 1С внедрить

и как то их отсутствие ООП не волнует ни разу :)
125 YouAreEmpty
 
06.06.13
10:24
(123) Питон тоже не имеет жесткой типизации, тем не менее ООП в нем присутствует
126 IamAlexy
 
06.06.13
10:24
(113) ну а там где я работаю ООП нет и небыл и не будет еще лет 100 ибо оно не нужно в принципе.. и что дальше?

форум и ветка то по 1С..
а ты тут весь в белом приходишь и говоришь "а вот у нас, ассенизаторов принято так, по этому каждый 1Сник должен это знать и уметь"

ну какое к черту твой опыт тут в этой сфере имеет значение?
что то там было про чужие монастыри и уставы - слышал вроде бы, не ?
127 Bugmenot
 
06.06.13
10:24
(125) - а также Ruby, PHP, Perl и много чего еще
128 Sserj
 
06.06.13
10:25
(123)+
СписокДокументов = Новый СписокЗначений;
СписокДокументов.Добавить(Док1);
СписокДокументов.Добавить(Док2);
Для Каждого Док Из СписокДокументов Цикл
   Сообщить(Док.Печать());
КонецЦикла;    

Будет вызвана именно его функция печати, а все в списки типа "Документ"
129 Sserj
 
06.06.13
10:29
(125) Ну и в чем тогда вообще смысл примера из (105)?
Для каждого тамошниго объекта будет вызвана именно его функция, в "якобы наследованном" можно написать свою реализацию а не возвращать "родительскую", что тут конкретно "невозможно" сейчас в 1С?
130 Bugmenot
 
06.06.13
10:29
(126) - т.е. зачем в чужой монастырь (SOLID, ID/IoC, MVP, MVC, Unit Of Work) приходить какой то утилитарной утилитке из бывшего СССР для складского учета в ларьках?
131 Bugmenot
 
06.06.13
10:29
ID/IoC -> DI/IoC
132 AaNnDdRrEeYy
 
06.06.13
10:31
(122) это сокрытие а переопределение это другое для этого в базовом классе метод должен быть виртуальным.
133 quest
 
06.06.13
10:31
(123) в лиспе тоже нет жесткой типизации, но - внезапно - есть ООП.
134 IamAlexy
 
06.06.13
10:31
(130)  ага.. аргументы кончились :)
понятно..

то есть вы и сами не знаете и не понимаете для чего и зачем. однако раз "там" пользуются то и мы обязаны...

понятно.. продолжайте читать свои библии разработки в сишарпах
135 YouAreEmpty
 
06.06.13
10:32
(129) Здесь больше все таки пожелание к возможности создания своих расширяемых типов, а не все в ООП
136 YouAreEmpty
 
06.06.13
10:34
(135) Собсно объект помимо методов еще хранит и данные, чего общие модули сделать например не смогут
137 Bugmenot
 
06.06.13
10:34
(134) - мы знаем, зачем нужно, ну вам это не нужно, т.к.ваша задаче заключается всего лишь в "настройке работы этой вашей 1С" на примитивном языке макропрограммирования
138 YouAreEmpty
 
06.06.13
10:35
(137) Ну я бы не стал так утрировать
139 IamAlexy
 
06.06.13
10:36
(137) ну да..

об этом то я и пытаюсь объяснить: когда задача состоит в том что надо почесать нос - примитивно и ногтем, не надо для этого 6 лет учиться в медвузе а затем ложитья на операцию по пересадке сердца.

можно просто взять и почесать нос.
без понимания количества желудочков в сердце и скорости кровотока по артериям.
140 Aleksey
 
06.06.13
10:37
(137) Как бы да 99,9% здешние 1С-ников - это именно настройщики к типовой, которым ООП и даром не упёрлось
141 Sserj
 
06.06.13
10:39
(136) "Хранить данные" где? Если просто временные то пожалуйста ваяй обработки и используй их типа "объекты", если хранить в БД, то еще раз - фактически нереально!
Слишком большая вероятность коллизий особенно в узкоспециализированном спектре (1С это же финансовая программа - спектр применения очень небольшой). Есть огромная вероятность что в каком-нибуть потомке добавят поле ЦенаОсобая к примеру, а через н-ое количество времени решат добавить такое поле в родителе, как такое разруливать? Еще тот геморой с возожными фантазиями каждого "наследователя" на индексы и т.д. и т.п.
142 AaNnDdRrEeYy
 
06.06.13
10:40
(128) если Док2 и Док1 одного типа то будет вызвана одна и та же реализации "функции" печати, а не для каждого своя.
если типы у док1 и Док2 разные то для каждого типа должна быть своя функция печати что ведет к дублированию кода, и без невозможности применения интерфейсов остается только гадать есть ли у док1 метод печать() так же как и у док2 или ее просто нет.
143 Aleksey
 
06.06.13
10:40
Писатели нетленок тоже не понимают зачем им это ООП, они и без неё прекрасно живут

Осталось несколько залетных программистов с других языков, которые переодически поднимают тему, что 1С авно, потому что нет ООП. Но на простой вопрос - зачем оно нужно применительно к 1С, а не к сферической задачи в вакууме ответить не могут
144 Bugmenot
 
06.06.13
10:41
(139) - только вот в западных ERP (взять хотя бы Dynamics) системах все это есть.

Может быть фирма 1С ориентировалась на примитивизм и ужасное айти образование российских как бэ "программистов" настройщиков 1С, 70% которых просто "с голодухе" пошло в сабж
145 Aleksey
 
06.06.13
10:41
(142) Так и в ООП в этом не поможет
146 Sserj
 
06.06.13
10:42
(140) Нимб не жмет? В учебных заведениях не проходили что утрированные утверждения никто,никогда,всегда и подобные абсолютный признак просто не знания реальных данных?
147 Aleksey
 
06.06.13
10:43
Если ты заранее не позаботишься об описании в примитивном типе класса печать, то у тебя ничего работать не будет

Так же и в 1С, никто тебе не мешает организовать свой примитивный класс печать и из него рулить печатью. Что собственно и сделано в 1С. Есть набор печатных форм и при печати печатается та что установлена по умолчанию
148 YouAreEmpty
 
06.06.13
10:43
(141) Чтобы знать как такое разруливать -нужно покодить используя ООП, тогда его плюсы и минусы и станут очевидны. 1С итак объектна ориентированная система, проблема лишь в том что этим мы управлять не можем, у нас есть песочница с опр. набором объетов, с которыми мы балуемся. Может оно и к лучшему..
149 Aleksey
 
06.06.13
10:43
(146) А где я писал что никто и никогда?
150 IamAlexy
 
06.06.13
10:44
(144) я правильно понимаю что если успешный и богатый Васисуалий Какакьевич - гей и епется в 0пу то ты бездумно переймешь его опыт и переквалифицируешся в геи?

ибо у успешных людей ТАМ так принято и проследывается связь: "Васисуалий успешен и он дает в 0пу" да ?
151 Sserj
 
06.06.13
10:44
(142) Если у тебя нет жесткой типизации (в 1С ее же нет, мы знаем) то какая разница что именно будет в списке, до момента исполнения ты всеравно не будешь знать что там, может там и документ а может там и просто строка, так что ошибки вероятны в любом случае с ООП или без.
152 Ненавижу 1С
 
гуру
06.06.13
10:47
мой любимый пример из типовой 1С БП 2.0:

Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
           ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента
           ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу Тогда
           ДанныеДляПечати    = СобратьДанныеСФнаАвансИСуммовуюРазницу(ТекущееОснование);
       ИначеЕсли ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НалоговыйАгент Тогда
           ДанныеДляПечати    = СобратьДанныеСФНалоговыйАгент(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда
           ДанныеДляПечати    = СобратьДанныеПоОтчетКомитенту(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
           ДанныеДляПечати    = СобратьДанныеПоРеализацияТоваровУслуг(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияОтгруженныхТоваров") И ТипЗнч(ТекущееОснование.ДокументОтгрузки) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
           ДанныеДляПечати    = СобратьДанныеПоРеализацияТоваровУслуг(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияОтгруженныхТоваров") И ТипЗнч(ТекущееОснование.ДокументОтгрузки) = Тип("ДокументСсылка.ПередачаОС") Тогда
           ДанныеДляПечати    = СобратьДанныеПоПередачеОС(ТекущееОснование.ДокументОтгрузки);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
           ДанныеДляПечати    = СобратьДанныеПоВозвратТоваровПоставщику(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") Тогда
           ДанныеДляПечати    = СобратьДанныеПоОтчетКомиссионераОПродажах(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг") Тогда
           ДанныеДляПечати    = СобратьДанныеПоАкту(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПередачаОС") Тогда
           ДанныеДляПечати    = СобратьДанныеПоПередачеОС(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПередачаНМА") Тогда
           ДанныеДляПечати    = СобратьДанныеПоПередачеНМАОрганизаций(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтражениеНачисленияНДС") Тогда
           ДанныеДляПечати    = СобратьДанныеПоОтражениеНачисленияНДС(ТекущееОснование);        
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияУслугПоПереработке") Тогда
           ДанныеДляПечати    = СобратьДанныеПоРеализацияУслугПоПереработке(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.НачислениеНДСпоСМРхозспособом") Тогда
           ДанныеДляПечати    = СобратьДанныеПоНачислениеНДСпоСМРхозспособом(ТекущееОснование);
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОказаниеУслуг") Тогда
           ДанныеДляПечати    = СобратьДанныеПоОказаниюУслуг(ТекущееОснование, "Контрагенты");
       ИначеЕсли ТипОснования = Тип("ДокументСсылка.КорректировкаРеализации") Тогда
           ДанныеДляПечати = ПолучитьДанныеДляПечатиИсправленияСчетаФактуры(ТекущееОснование);
       КонецЕсли;
153 YouAreEmpty
 
06.06.13
10:48
(152) Да, обожаю это!
154 Aleksey
 
06.06.13
10:48
(152) который уже обсуждали и пришли к выводу что ООП здесь не поможет
155 vde69
 
06.06.13
10:48
(136) >>> Собсно объект помимо методов еще хранит и данные, чего общие модули сделать например не смогут


общие модули - не смогут!

а вот подсистемы - смогут!
156 acsent
 
06.06.13
10:48
А должно было как быть?
20 классов ДанныеДляПечати, каждый с методом СобратьДанные?
157 YouAreEmpty
 
06.06.13
10:48
(155) Это чем подсистемы смогут?
158 IamAlexy
 
06.06.13
10:48
(152) и что этот пример показывает?
159 YouAreEmpty
 
06.06.13
10:49
(156) Каждый документ реализует свой метод, который на выходе выдает данные для печати
160 Sserj
 
06.06.13
10:49
(149) ну как же ты написал 99.9% учитывая что сейчас на форуме 1729 человек то не "настройщики к типовой" это 1.749 человека, тобишь ты еще кто-то чуть больше половины :)
161 Aleksey
 
06.06.13
10:49
(156) Нет должно быть один СобратьДанные в которое тупо скопипастит этот кусок кода
162 acsent
 
06.06.13
10:50
(159) В 1с такое легко можно
163 YouAreEmpty
 
06.06.13
10:51
(160) Он чуть-чуть подрабатывает "настройщики к типовой"
164 AaNnDdRrEeYy
 
06.06.13
10:51
(151) согласен, проблема в строгой типизации.
класс - это тип. нет типов - нет классов, нет классов нет ООП.
165 Ненавижу 1С
 
гуру
06.06.13
10:51
(154) поможет, поможет ))
166 Aleksey
 
06.06.13
10:51
(160) я настройщик
167 IamAlexy
 
06.06.13
10:51
(159) ну так модули менеджеров где сидти печать как раз это и реализуют...
у каждого объекта свой модуль менеджера и своя печать которая на выходе выдает готовую таблицу которая в свою очередь отправляется в общую форму вывода
168 Ненавижу 1С
 
гуру
06.06.13
10:51
(158) слабость мысли разработчиков
169 YouAreEmpty
 
06.06.13
10:51
(164) ООП это подход к проектированию и реализации приложения, типизация тут не причем.
170 acsent
 
06.06.13
10:51
(162) Вот текст из БП 3.0



   ДанныеДляПечати = Новый Структура;
   
   ВалютаРеглУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ВалютаРеглУчета",                    ВалютаРеглУчета);
   Запрос.УстановитьПараметр("ДокументОснование",                    ДокументОснование);
   Запрос.УстановитьПараметр("СчетФактура",                        СчетФактура);
   Запрос.УстановитьПараметр("ВидСчетаФактуры",                    ВидСчетаФактуры);
   Запрос.УстановитьПараметр("ИспользуетсяПостановлениеНДС1137",    ИспользуетсяПостановлениеНДС1137);
   Запрос.УстановитьПараметр("ПустоеПодразделение",                БухгалтерскийУчетПереопределяемый.ПустоеПодразделение());
   
   Запрос.УстановитьПараметр("ТекстБезАкциза",                        ?(ИспользуетсяПостановлениеНДС1137, НСтр("ru = 'без акциза'"), ""));
   Запрос.УстановитьПараметр("ТекстКомиссионноеВознаграждение",    НСтр("ru = 'Комиссионное вознаграждение'"));

   НомераТаблиц = Новый Структура;

   Запрос.Текст = Документы[ДокументОснование.Метаданные().Имя].ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
       + ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц);
171 IamAlexy
 
06.06.13
10:52
(168) слабость или лень?
172 YouAreEmpty
 
06.06.13
10:52
(170) И что из него следует?
173 Ненавижу 1С
 
гуру
06.06.13
10:53
(171) вряд ли лень, им потом его сопровождать
174 acsent
 
06.06.13
10:53
(172)
Документы[ДокументОснование.Метаданные().Имя].ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц)
175 vde69
 
06.06.13
10:53
(152)

вполне реализуемо КРАСИВО через менеджеры объектов, просто сейчас проги 1с не заморачиваются созданием интерфейсов, а ведь они уже сейчас на модулях менеджерах очень не плохо могли-бы универсализировать код.

попытка
Модуль = ТекущееОснование.Метаданные.Вид();
ДанныеДляПечати = Документ[модуль].СобратьДанныеДляПечати(ТекущееОснование);
исключение
ДанныеДляПечати = СобратьДанныеДляПечати(ТекущееОснование);
конецпопытки.
176 acsent
 
06.06.13
10:53
Как вы и хотели
>>Каждый документ реализует свой метод, который на выходе выдает данные для печати
177 Sserj
 
06.06.13
10:54
(164) Нет, типизация не главная часть ООП, наверху уже писали примеры языков с ООП но без жесткой типизации. Я привожу доводы что (105) просто вообще бессмысленный пример, он не показывает вообще ничего что "невозможно" или как минимум "труднореализуемо" в 1С
178 acsent
 
06.06.13
10:54
(175) давно уже делают. Хватит сидеть на бухе 1.6
179 vde69
 
06.06.13
10:55
(178) я не сижу я уже третий год на 2.0 и пол года на 3.0
180 Ненавижу 1С
 
гуру
06.06.13
10:56
(164) отсутствие типизации не говорит об отсутствии типов
181 Sserj
 
06.06.13
10:57
(175) Я просто не помню, но разве БП2 вышла после 8.2?
Вроде только в 8.2 появились модули у менеджеров, так что вполне может быть что это просто кусок унаследованного кода.
182 Лефмихалыч
 
06.06.13
10:59
(92) смотря, как их использовать. Если для допилки существующих тиражных решений, то там похрену на всё, включая (0) и мировую революцию. Плохо начинается, когда команда таких конфигуристов-разраболтунов пытается организоваться для создания своего тиражного решения или хотя бы эксклюзивной разработки.
183 Лефмихалыч
 
06.06.13
11:00
+(182) получается набор велокатов фиксина, из которого в разные стороны торчат костыли и внезапные штуки...
184 vde69
 
06.06.13
11:01
вообще было-бы круто если сделать возможность на основании Документы.Счет разрешить делать Документы.СчетОмега с полным наследованием всего функционала и форм (формы ведь динамические, значит к ним то же можно применять все правила ООП).

ИХМО - если такое сделают - то 1с будет реально крут в плане допилки типовых.
185 YouAreEmpty
 
06.06.13
11:02
(184) В аксапте такое с помощью слоев решается
186 Ненавижу 1С
 
гуру
06.06.13
11:03
(185) в аксапте и классы в чистом виде есть
187 Balabass
 
06.06.13
11:04
Вы еще 3д графику предложите моделировать.

Нет, не нужно
188 IamAlexy
 
06.06.13
11:05
(184) ну да.. вопрос кто будет писать в регистры, обосообливо - что будет сидеть в измерениях с типом "документ"
189 Ненавижу 1С
 
гуру
06.06.13
11:07
(187) это ты к чему?
(188) а там останется типовое "Счет", но вот заполнять туда будут "СчетОмега"
190 Лефмихалыч
 
06.06.13
11:07
(188) в измерениях будет сидеть объект "Документ.Счет". Потому, что объект "Документ.СчетОмега" - это тоже "Документ.Счет" и со СчетОмега можно сделать все то же самое, что и со Счет. В этом смысл наследования и полиморфизьма
191 acsent
 
06.06.13
11:08
Ни разу не видел ни одной удачной идеи про объекты унаследованные от 1сных документов.
Всякие СчетаОмеги и ПлатежныеДокументы - полная лабуда
192 Ненавижу 1С
 
гуру
06.06.13
11:09
(190) и даже в какой-то степени инкапсуляции (если смотреть на нее шире): от регистра скрывается истинный тип
193 AaNnDdRrEeYy
 
06.06.13
11:11
(177) вот как ты заставишь все документы в 1С иметь метод Печать()?
конечно можно перед вызовом проверять если этот метод или нет, тупо выполняя его в отладчике, но это все криво и некрасиво - красиво это когда идет реализация интерфейса именно того интерфейса который ты сам спроектировал.
трудно решаемые задачи в 1С - это красота и минималистичность кода, это вечный копипаст кода в разных модулях, это простыни кода с условиями Если. Вот от этого уйти реально трудно.
194 Лефмихалыч
 
06.06.13
11:11
(191) ты возможно просто мало видел

(192) ну, может и да, но ИМХО регистр коду-то не потребитель. В этом польза от того, что мы в документ.Счет можем явно указать, какие методы public, то есть могут быть переопределены потребителем, а какие - private, то есть являются реализацией, не подлежащей изменению.
195 Ненавижу 1С
 
гуру
06.06.13
11:13
(194) потребителем будет что-то, что юзает этот регистр
от него скрывается истинный тип
но это уже философия
196 Sserj
 
06.06.13
11:15
(193) Ну вот еще где то в самом начале я писал, какая разница писать Документ.Печать() или Печать(Документ), ну где полет фантазии:
//Мой супер общий модуль
Процедура Печать(Документ)
//Проверяем что это действительно документ и у него есть экспортная печать если нет то выходим
Документ.Печать();
КонецПроцедуры
197 acsent
 
06.06.13
11:16
(194) может в недрах у кого то и скрывается удачный пример, но в форумных баталиях его еще никто не предъявил
198 Ненавижу 1С
 
гуру
06.06.13
11:17
(193) ну тогда и от пустых значений надо защищаться
199 YouAreEmpty
 
06.06.13
11:20
(196)И так тоже делают, есть и такой паттерн
200 Лефмихалыч
 
06.06.13
11:21
(197) про объекты, унаследованные от 1Сных документов, может его и не будет, но про пользу от наследования в 1С в целом уже продемонстрировали в (193)
201 acsent
 
06.06.13
11:22
(200) вот именно что польза в целом, а в примерах ничего
202 Sserj
 
06.06.13
11:22
(193) Стесняюсь спросить, а ты сам много писал с использованием ООП, реальных задач имею ввиду а не хелловордов?
Ты как бы про отладку функционального кода и ООПшного мне не рассказывай красивых сказок, когда тут все фунцкии/процедуры под рукой и везде можно залезть, или когда начинаешь скакать через 1-5-10 и более наследований и искать где там что не так сработало и вдруг упереться на 5-ом зарывании что а блин от этой либы у меня исходников то и нет. И я даже сейчас вижу как прошел путь от МойФранч-ФранчМоегоФранча-Рарус, блин а на рарусе то уже закрыто.
203 vde69
 
06.06.13
11:23
(198) пустое значение - это базовый класс,

базовый класс это "Документы" в нем имеем динамические процедуры "ПриЗаписи" и т.д.
Документы.Счет - в нем переопределяем процедуры базового класса.
204 Лефмихалыч
 
06.06.13
11:23
(201) я уже писал, что для целей сопровождения готового ни чего не нужно. Даже мозги не  нужны
205 YouAreEmpty
 
06.06.13
11:24
(202) А ты думаешь так по функциям общих модулей не попрыгаешь? Те же яйца, только в профиль
206 vde69
 
06.06.13
11:25
(202) в дельфях полно компонент которые поставляются без исходников, я сам писал 2 компонены которые прожили лет по 6, и никого это не пугает и не останавливает
207 Лефмихалыч
 
06.06.13
11:26
(202) с помощю поставки без исходных кодов и кривых рук в 1С можно добавиться того же самого
208 YouAreEmpty
 
06.06.13
11:29
Кажется мне что будет так, как фирма 1С решит. Решит, что будет ООП, все дружно скажут okay и будут обучаться работе с ООП, с УФ научились работать же
209 vde69
 
06.06.13
11:32
(208) думаешь много народу научилось УФ работать?

я например имею опыт почти 2 года УФ но весьма слаб в этом, и разработчики типовых - то же нифига не шарят в УФ.

Я понимаю плюсы УФ, но не видел ни одной хорошей реализации этих плюсов, везде есть сильные недочеты
210 acsent
 
06.06.13
11:33
(209) какие недочеты например?
211 vde69
 
06.06.13
11:33
(209)+ ООП с управляемыми формами - вот это будет мега круто :)
212 Sserj
 
06.06.13
11:33
(204)(205) Так я и говорю что просто добавление ООП не даст никакой "красоты и минималистичность" коду, вот хоть тресни абсолютно не даст. НИЧЕГО не добавит ООП в 1С кроме того что некоторые закомплексованные будут гордо говорить ну теперь то мы точно настоящие программисты.
213 vde69
 
06.06.13
11:34
(210) например количество передачи управления между клиент и сервер просто зашкаливает.
214 Sserj
 
06.06.13
11:37
(211) Ага уже полет фантазии зашкаливает - ФормаДокумента, ФормаДокументаДляМариИвановны,ФормаДокументаДляМариИвановныСГалочкой,ФормаДокументаДляМариИвановныСГалочкойИФлажком, чеж их не лепить, все же просто :)
215 AaNnDdRrEeYy
 
06.06.13
11:37
(202) стратежку на xna типо варкрафт писал- в образовательных целях. виртуальную файловую систему- все данные в одном файле. что то типо библиотеки system.IO. это из крупных где больше одной сборки.
И не было с отладкой никогда никаких проблем, пишешь класс тестируешь и не трогаешь его больше, и не нужно лесть в исходники потому что пофиг как это реализовано главное что выполняет то что нужно, не устраивает наследуешся и меняешь если потом не работает так точно знаешь где искать в наследнике! никогда нельзя трогать то что уже отлажено и работает, следовательно зачем тогда исходники.
216 IamAlexy
 
06.06.13
11:39
(215) тут беда в другом.. твой написанный класс может перестать работать ибо изменилось то на что он основывался..
217 andreymongol82
 
06.06.13
11:40
(212) Ага, пару месяцев поговорят закомплексованные, что они тру-программисты, но найдется пара человек и вгонит их в уныние словом "хаскель".
218 AaNnDdRrEeYy
 
06.06.13
11:41
(216) ну это в 1С могут так взять и поменять все к чертям собачим без поддержки старых всерсий. а вообще так не делают.
219 Sserj
 
06.06.13
11:42
(215) Ключевые слова "отлажено и работает" видишь ли 1С это "динамично развивающаяся система" и динамичность ее непрерывна и заставляет почти всех разработчиков каждый год переписывать свою работу под свое развитие. Так что про "нельзя трогать" говорить следует с полузакрытыми глазами, как о большой и чистой мечте :)
220 Aleksey
 
06.06.13
11:43
(200) бред, а не пример. Скажем так. Как ты при ООП будешь гарантировать метод печать у ВСЕХ документов? правильно прописывая у базовой структуры этот метод. При этом в базовой структуре эта тупо заглушка возвращающая пустую печатную форму, а уж при наследовании ты должен переписать этот метод на твою печать

Ну и четь это так принципиально будет отличаться от

Попытка
Документ.Печать()
Исключение
ПустаяПечатнаяФорма()
КонецПопытки
221 Aleksey
 
06.06.13
11:44
Или если тебе так не нравится сделай в общем модуле процедуру НапечататьДокумент с этим кодом и вызывай не через
документ.Печать(), а через НапечататьДокумент (Документ)


Т.е. на вызоде теже яйца только сбоку, никакого ни плюса ни минуса
222 YouAreEmpty
 
06.06.13
11:45
(220) Про интерфейсы не слышали?
223 YouAreEmpty
 
06.06.13
11:45
(220) Ну или чистые виртуальные функции
224 ДенисЧ
 
06.06.13
11:45
(220) Определяешь интерфейс IPrintable, документы его реализовывают. В цикл перед вызовом метода печать проверяешь, что документ реализует этот интерфейс...
225 Sserj
 
06.06.13
11:46
(222) Вот опять двадцать пять :)
Ну какие интерфейсы в 1С? Ну нет тут проверки типов, ну ни о чем твой интерфейс не скажет 1С-ной виртуальной машине :)
226 Aleksey
 
06.06.13
11:50
(215) Проблема в том что 1С учетная система с динамически изменяющимися правилами игры. Как при такой системе делать класс, которые "потом не трогаешь" ума не приложу.

Пример, УТ11. Что в начале говорили? Хрен вам а не договора и не партии. И что сейчас?

Т.е. на выходе мы будем иметь или монстра под 2 гига, зато наследование будет. Или каждый раз в хлам переписанный базис

В рамках 1С я за второе
227 Aleksey
 
06.06.13
11:51
(224) Так я его и определяю в глобальном модуле. Хорошо назову его не НапечататьДокумент , а IPrintable и получу тоже самое
228 YouAreEmpty
 
06.06.13
11:51
(225) Та шо вы гаварите? Объясните мне пожалуйста, как это нету проверки типов? То что тип назначается динамически, еще не значит что при вызове методов он не проверяется
229 Aleksey
 
06.06.13
11:52
(223) чем это будет отличаться от реальной функции в общем модуле?
230 IamAlexy
 
06.06.13
11:52
(227) фишка в том что 1С никогда не будет труъ-языком программирования пока 1Сники кодят на б-гомерзком русском...
231 YouAreEmpty
 
06.06.13
11:54
(229) тем что интерфейс должен быть обязательно реализован у тех классов, где указано, что он его реализует.
232 Aleksey
 
06.06.13
11:57
(231) Т.е. получается 1С круче, ибо нет этого ограничения?
233 AaNnDdRrEeYy
 
06.06.13
11:58
если в платформе сделают ООП то сами разработчики платформы уже нафиг некому не будут нужно, без них можно будет добавлять новые типы объектов в дереве конфигурации, вот недавно добавили внешние источники данных, круто? и это могут сделать только они поэтому они и не спешат расставаться с такой привелегией, хотя если посмотреть на это с другой стороны может они и правы что уберегли гранаты от обезьян.
234 YouAreEmpty
 
06.06.13
11:59
(232) Тогда по вашей логике ассемблер еще круче, у него вообще никаких ограничений
235 YouAreEmpty
 
06.06.13
12:01
(233) А функциональность этих самых новых объектов ты за счет чего будешь реализовывать? за счет языка программирования 1С? Тебе и сейчас никто не мешает запилит внешнюю компоненту, с какой угодно функциональностью
236 Sserj
 
06.06.13
12:01
(233) Видишь ли с незапамятных времент начиная с древнейших версий 1С была возможность загружать произвольные внешние компоненты, а это давало и дает неограниченные возможности добавления функционала. По сути ты можешь реализовать вообще все что душе угодно, хоть игры, хоть графические редакторы хоть медиаплееры.
237 vde69
 
06.06.13
12:05
(226) балин!!! ну не надо смотреть так как будто типовая будет в одном классе!

посмотрите как наследуется в ООП

object >>> ...... >>> CustomForms >>> forms >>> muForms

я понимаю что это офигительный объём работы, но то что сейчас в БСП - это вообще жесть, там взаимо связи просто ппц. не уверен что найдется хоть один человек который полностью понимает весь функционал БСП.

Ихмо сейчас этот монстр уже вырвался из под управления и в ближайшее время мы будем иметь кучу дублей кода в БСП
238 Sserj
 
06.06.13
12:05
(228) Ну и какое конкретное преимущество это дает, в момент разработки ты всеравно не уверен попадет ли в список печатаемых именно документы или вообще примитивные типы, потому что коллекция этих документов всеравно никак не контролирует что в нее добавляют, а проверка на момент исполнения абсолютно без разницы или проверка типа или проверка фактического наличия процедуры печати.
239 AaNnDdRrEeYy
 
06.06.13
12:11
(235) на языке 1С можно реализовать но его надо переработать, расширить как и другие языки, это не повредит платформе а только развяжет руки тем кому это надо избавит от написания внешних компонент, внешняя компонента это вообще как лазейка когда руки опускаются от ограниченности языка 1С.

Нет, но можно
240 AaNnDdRrEeYy
 
06.06.13
12:12
(238)>>потому что коллекция этих документов всеравно никак не контролирует что в нее добавляют

сделай свою коллекцию и контролируй добавление в нее.
241 Ненавижу 1С
 
гуру
06.06.13
12:12
(238) это не смертельно, я ведь и щас могу в справочник внешних печатных форм добавить обработку без необходимого интерфейса
242 Sserj
 
06.06.13
12:14
(240) Ну так что мешает тогда реализовать коллекцию с контролем фукции сразу?
243 vde69
 
06.06.13
12:16
(239) простое добавление функций ООП без полного переписывания БСП - пустая трата времени, а БСП переделывать - ну ты понимаешь :)
244 YouAreEmpty
 
06.06.13
12:41
(238) Так а почему вы решили, что ООП это аналог кнопки для бухов "Сделать хорошо и закрыть"? ООП - это концепция, а не средство исправления ошибок из-за кривых рук.
245 Конфигуратор1с
 
06.06.13
12:59
Ого набросали. все не читал, примеры более эффективной реализации задач с помощью ооп на 1с были?
246 YouAreEmpty
 
06.06.13
13:04
(245) Так а как их без конфигуратора 1С сделаешь-то?)
247 Конфигуратор1с
 
06.06.13
13:10
(246) я имею ввиду, что сейчас в 1с есть такого что можно было бы сделать более эффективно, если бы фирма 1с сбацала классы?
248 AaNnDdRrEeYy
 
06.06.13
13:10
(245) мне вот это пример понравился
http://habrahabr.ru/post/148015/
особенно то что под "Резюмируя" написано.
249 Sserj
 
06.06.13
13:11
(244) Ну вот к вечеру наконец и пришли к выводу - ООП это не функционал это методика. А теперь самое главное в рамках узкой специализации ООП не то что полезно, оно избыточно и даже вредно. Ну не может быть на самом деле у документа кучи наследников документ (определенный вид а не документ вообще) это уже самодостаточный и окончательный тип. Еще важней что ООП на самом деле требует намного большего планирования перед началом разработки, иначе появятся монстры с сотнями методов (и это далеко не предел из личной практики). А при действительно системном подходе Планирование - Разработка - Тестирование и сейчас довольно легко реализовать любые преимущества которые могло бы внести ООП,
Ну собстно вот такое резюме родилось :)
250 YouAreEmpty
 
06.06.13
13:17
(249) Ни разу не видел узкой специализации в языках типа C++, Java и тп. Да и 1с, я думаю написан не с использованием процедурной методологии. Вот хотелось бы услышать, чем оно избыточно и вредно?
251 Sserj
 
06.06.13
13:22
(250) Узкая специализация имеется ввиду конкретно 1С, это предметно-ориентированная среда, созданная для решения конкретной задачи - автоматизации предприятия. Избыточность и вредность будет в том что действительно станут появляться Документ1, Документ1СГалочкой, Документ1СГалочкойИФлажком. От этого никуда не уйти. А позже начнутся стоны да ваша 1С полное ...
252 Ненавижу 1С
 
гуру
06.06.13
13:23
(251) это называется паттерн стратегия
253 YouAreEmpty
 
06.06.13
13:23
Мое мнение заключается в том, что нужно сделать не сами объекты метаданных расширяемыми и наследуемыми, а сделать именно встроенный язык 1с, полноценным ооп-языком, Для меня часто не хватает какого-то репозитория объектов, которые в т.ч могли бы создавать и оперировать с произвольными структурами данных. И которым могли бы пользоваться другие программисты. Подобное уже давно существует в том же сапе и аксапте.
254 Aleksey
 
06.06.13
13:24
(248)

1. Наследование. Есть перационист. Его задача отражать события в базе. Есть документ ПКО, есть снятие резерва. Ваша задача смоделировать процесс отражения хозяйственных операций в учёте. Решая задачу в лоб, у нас будет много дублирования кода из-за того, что сам процесс формирования автонумерация документа, структура подчинености и т.п. идентичны для обеих документов. Но если мы включаем объектное мышление, и вспоминаем про инструмент наследование, то получаем примерно следующее (диаграмму лень рисовать, сорри):
Есть документ (абстрактный документ). У нее есть поведение сформировать движение, номер документа, и состояние — проведен, помечен на удаления. Это отличный пример абстрактного объекта в котором соблюдены принципы инкапсуляции (при реализации я их обязательно буду соблюдать). И есть Оператор, конкретный такой Оператор Иван. Он умеет работать с абстрактным документом. Т.е. смотреть статус создавать, проводить и т.д. вы поняли. Сила наследования в том, что нам не придется переписывать нашего Ивана для каждой из документа, будь то ПКО или снятие резерва. Я думаю всем ясно почему? Получается что инструмент применен правильно.

2. Полиморфизм. Документ ведб по разному работает. У ПКО нет табличной части, у снятия есть. Используя полиморфизм мы легко меняем поведение в наследниках абстрактного документа.

3. Инкапсуляция. Основная фишка инкапсуляции в том, что я не должен знать, что происходит внутри моего документа. Допустим, я вызываю не метод записать движения в таблицу RG2548, а просто пишу провести(). Что произойдет в этот момент? Если принцип инкапсуляции не соблюден, то я буду вынужден печи сказать в какую таблицу и что я должен писать. Если не соблюдать принцип инкапсуляции, то мы должны будем говорить печи проверь-ка текущий статус, можно ли формировать движения при текущем статусе....

В данном примере уровень абстракции выбран хорошо. Все занимаются своими делами, все три кита ООП работают во славу.


Т.е. у 1С есть ООП. И точка
255 YouAreEmpty
 
06.06.13
13:25
(254) Я еще раньше об этом сказал, вопрос в том, что сам язык не позволяет создавть и расширять свои типы данных
256 Aleksey
 
06.06.13
13:27
(253) Пример. А то опять опять получается 1с авно потому что не умеет варить кофе
257 AaNnDdRrEeYy
 
06.06.13
13:27
(254)да есть наследование и есть классы, но все они sealed т.е все приплыли они запечатанные. толку то от этого?
258 Aleksey
 
06.06.13
13:28
(257) А что при ООП я могу менять базовые классы???
259 Aleksey
 
06.06.13
13:29
Т.е. если у меня есть библиотека которая описывает базовый класс документ, при ООП я могу поменять класс документ без исходников?
260 YouAreEmpty
 
06.06.13
13:30
(258) Не можешь, хошь поменять - отнаследуй и меняй на здоровье
261 Aleksey
 
06.06.13
13:31
(260) причем тут наследования речь то "все они sealed т.е все приплыли они запечатанные. толку то от этого?"
262 AaNnDdRrEeYy
 
06.06.13
13:33
(258) нет не можешь, можешь наследоваться при условии что базовый класс не запечатан, любой созданный документ наследует базовый абстрактный класс и все точка созданный документ больше базовым быть не может, и  нельзя самим сделать свой базовый класс, добавить что то в корень конфигурации помимо справочников документов и Регистров например добавить "Сетевые соединения", описать базовые методы работы с этим класом и насоздавать своих классов у наследованных от "Сетевые соединения".
263 Aleksey
 
06.06.13
13:34
есть документ у него есть метод Провести(). В базовом классе ты ничего не можешь поменять, но ты можешь отнаследовать его в свой класс (Документ.ПКО) и в предопределенной процедуре изменить его поведения.

Чем это отличается от вашего толкования ООП?
264 AaNnDdRrEeYy
 
06.06.13
13:34
(261) sealed, запечатанный, герметизированный - означент что класс конечный и не может выступать в качестве базового, т.е бездетный.
265 Aleksey
 
06.06.13
13:35
(264) Эээ а как тогда у меня получается документ. ПКО который наследует все свойства и поведения класса документ?? Хочешь сказать меня глючит и такого нельзя в 1С сделать?
266 YouAreEmpty
 
06.06.13
13:36
(263) Это не метод, а событие, подписавшись на которое ты можешь провести какие-либо действия при проведении
267 Ненавижу 1С
 
гуру
06.06.13
13:37
(265) ты троллишь? а теперь от ПКО что нить отнаследуй!
268 Ненавижу 1С
 
гуру
06.06.13
13:37
(266) ОбработкаПроведения можно считать virtual protected методом
269 YouAreEmpty
 
06.06.13
13:38
(265) Взять учебник по C# например, главу по классы и объекты - проработать, потом вопросы задавать
270 Aleksey
 
06.06.13
13:39
(267) немного.

Легко. Например создам класс ПечатьДокумента, который отнаследует метод Печать у документа ПКО
271 Ненавижу 1С
 
гуру
06.06.13
13:40
(270) а теперь своего "наследника" запихни в типизированный реквизит обработки с типом "ДокументОбъект.ПКО"
272 skunk
 
06.06.13
13:40
(270)показывай
273 Aleksey
 
06.06.13
13:43
(272) 8======================>
274 Aleksey
 
06.06.13
13:43
(271) А это зачем?
275 Aleksey
 
06.06.13
13:43
Или ка в анедоте про бензопилу?
276 AaNnDdRrEeYy
 
06.06.13
13:44
(271)(272) сейчас будет что то типо второго документа который будет иметь свою печать() и в ней вызывать печать() ПКО, типо врапер такой
277 skunk
 
06.06.13
13:45
(273)что это? ... твой код показывающий все возможности ООП в 1С ... в части наследования
278 Serginio1
 
06.06.13
13:46
Не думаю что ООП даст большие преференции. А вот частичная типизация, Linq могли бы упростить кучу кода.
279 skunk
 
06.06.13
13:47
(276)сдается мне его даже на это не хватит ... парень просто знает об ООП так-же много как я о японском балете ... а я об японском балете незнаю абсалютно ничего ...
280 Aleksey
 
06.06.13
13:47
(277) я же настройщик, я кода не знаю, ваших ООП в институтах не проходил
281 Aleksey
 
06.06.13
13:47
(279) :)
282 YouAreEmpty
 
06.06.13
13:47
(278) регулярки бы еще, в полнотекстовый поиск например
283 Serginio1
 
06.06.13
13:48
278 + ООП и так многие не сильно то и понимают, впрочем как и Linq но хотя я и сам 2 руками за ООП, для 1С лучше развивать ФП

Нет, но можно
284 YouAreEmpty
 
06.06.13
13:51
(283) в любом случае все это ФП построенно на использовании объектов и их методов, так что ООП - вполне логичное продолжение.
285 YouAreEmpty
 
06.06.13
13:51
Да и не функциональное, а процедурное. Функциональное это немного другое
286 Serginio1
 
06.06.13
13:58
(284) Не совсем. Типизация в 1С это утинная типизация построенная на двойной диспетчиризации. Тот же самый модуль объекта это методы объекта, а модуль менеджера это статические методы. Да нет наследования, Инкапсуляция ,Полиморфизм. Но наследование и полиморфизм можно решать в том же модуле объекта. Например в модуле объекта есть общие методы, которые обращаются к методам из общего модуля. Если нужно переопределить, просто вызвать метод из другого места. Просто за этим нужно следить вручную через копи пасте
287 Serginio1
 
06.06.13
13:59
(265) Linq это функциональное программирование
288 Serginio1
 
06.06.13
14:00
287->285
289 YouAreEmpty
 
06.06.13
14:04
(288) linq - частный случай ФП)
290 Wist
 
06.06.13
14:12
Что приниципиально иного дает ООП в контексте 1С?
Ничего! У всего, в том числе у ООП есть своя цель. Сам по себе метод целью может быть только у эстетов, ну вы поняли...
291 Ненавижу 1С
 
гуру
06.06.13
14:13
(290) >>у ООП есть своя цел
вот и развернул бы тему
292 Wist
 
06.06.13
14:15
(291) возьми любую книгу по тому же си шарпу и прочитай первую главу. Там будет дана история развития программирования и рассказано как и для чего появилось ООП.
293 Wist
 
06.06.13
14:17
+ (292) ну и надеюсь ума хватит, чтоб спроецировать цели и задачи ООП на 1сную действительность и понять, что здесь ООП не нужно.
294 AaNnDdRrEeYy
 
06.06.13
14:17
(291) это как бентли и запорожец, оба едут и везут пассажиров один красивый и мажористый а второй это 1С. и сравнивать нет смысла, в 1С можно все сделать если глаза закрыть, пол часа позора и задача решена.
295 Wist
 
06.06.13
14:18
(294) гы-гы... а у вас действительно комплексы :)
296 Ненавижу 1С
 
гуру
06.06.13
14:18
(292)читал, ты сливаешь
297 Wist
 
06.06.13
14:19
(296) ? отсутствие у кого-то ума для того, чтоб понять прочитанное, не заставит меня слиться ;)
298 AaNnDdRrEeYy
 
06.06.13
14:19
(295) не комплексы а реальный взгляд на суровую действительность.
299 Wist
 
06.06.13
14:20
проголосовать забыл

Нет, не нужно
300 Wist
 
06.06.13
14:20
триста!
301 Wist
 
06.06.13
14:21
(298) суровая действительность в том, что у людей есть комплексы и некоторые их не стесняясь демонстрируют :)
302 AaNnDdRrEeYy
 
06.06.13
14:26
(301) ну все троллинг начался, некоторые тупость свою демонстрируют... ну ты понял...
303 Wist
 
06.06.13
14:28
(302) тут троллинг уже давно начался, и аналогии с использованием запорожца и бентли, еще не самое активное их проявление ;)
304 YouAreEmpty
 
06.06.13
14:31
(294) Уже три года не помню задач, которые решаются за полчаса, или это мне так везет...
305 Serginio1
 
06.06.13
14:35
(287) Но не процедурное же. Используется чистый ФП подход с замыканиями.
(294) На некоторые задачи уходят намного больше времени.
(304) Значит задачи у тебя такие.
306 andreymongol82
 
06.06.13
15:08
307 Ненавижу 1С
 
гуру
06.06.13
15:09
(306) баян
308 andreymongol82
 
06.06.13
15:15
(307) Ну дык, все равно, не нужно крутость ООП возводить в аксиому и  пихать везде, где можно. Что ж тогда в автокаде лисп используется?
309 vde69
 
06.06.13
15:18
(308) в автокаде используется отдельный диалект лиспа, и используется он из-за единой концепции работы со вложеными списками.

(306) не нужно все возводить в Абсолют
310 andreymongol82
 
06.06.13
15:33
(309) Никто и не возводит. Абсолют же не имеет границ, а в данном случае границы применимости и оптимальности. Так вот в концепции в 1С применимость ООП (не путайте с тем, что предлагали использовать БСП и общие модули - это мимикрия) = 0, оптимальность = 0. Так что... проголосую.

Нет, не нужно
311 quest
 
06.06.13
16:00
Мысль такая - имея возможности существующие в лиспе (макросы имеется в виду) - можно реализовать что угодно и в какой угодно идиологии - ООП, АОП, функциональное, декларативное, да хоть черта в ступе.  Или же имея возможность компилирловать на виртуальную машину - можем получить то же самое (есть такая штука - кложур)
Но так как 1С не умеет ни того ни другого, остается только завидовать лисперам и ковырять типовой код написаный очень неадекватно местами.
312 Serginio1
 
06.06.13
16:02
(311) В 1С есть вычислить и выполнить
313 vde69
 
06.06.13
16:06
Самая страшная беда 1с - отсутствие интерфейсов к уже отлаженным блокам кода.
314 quest
 
06.06.13
16:11
(312) а, да - точно. Есть. Только это отдельно от 1с и со своими ограничениями. И текст передаваемый туда - не компилируется, а исполняется - это как бы 2 большие разницы.
(313) Код не бывает отлаженым. Он может быть корректными или нет. Для контроля корректности кода есть стопятьсот методов проверки. И интерфейсы  никакого отношения к этому не имеют.
315 Bugmenot
 
06.06.13
16:18
(306) - ты сидишь сейчас в ОС и пользуешься программами, которые используют ООП.
316 Serginio1
 
06.06.13
16:19
(314) Например в C# есть T4. Внутри 1С кодогенерация идет для выполнения SQL запросов и прочее. Да и самому часто приходится лепить текст запроса собирая его на основе метаданных. Иногда и тексты модулей например для конвертации данных из одной конфигурации в другую на основе объектов XDTO
317 andreymongol82
 
06.06.13
16:23
(315) А также сижу и в 1С, где использую кашу из всяких других методов (процедурное программирование, к примеру).
Еще раз. ООП сам по себе неплох, но у него есть границы применимости.
318 AaNnDdRrEeYy
 
07.06.13
09:05
(317)граница ООП это низкоуровневый код который пишется на чистопородистом С, а как использовать потоки в структурном программировании.
например одну и туже функцию надо запустить с разными параметрами в разных потоках?
в ООП делаются два объекта (типа thread) и запускаются - проше некуда, а как в ФП это сделать?
319 andreymongol82
 
07.06.13
09:20
(318) Говорят вот этот язык специально заточен для распределенных вычислений - и это не ООП
wiki:Erlang.
320 Кирпич
 
07.06.13
09:32
(318)
"например одну и туже функцию надо запустить с разными параметрами в разных потоках?"
ну как бы просто запускаешь и всё. чего тут тёмного?
поток не может существовать без функции, а объекты типа thread это обертки для этой самой функции потока. у потока есть свой собственный стек и у каждой функции потока свои локальные переменные. и параметры передавай в функцию потока какие вздумается. это я так, для общего ликбеза.
321 Кирпич
 
07.06.13
09:52
+(318) и на "чистопородистом С" никто не мешает писать программы в стиле ООП (например GTK+). Потому что ООП это парадигма, а не языки программирования.
Вы чего молчите вообще? Тему про ООП надо растягивать до 1000 постов. Такова традиция.
322 YouAreEmpty
 
07.06.13
09:55
(321) Да а что тут растягивать, большая часть задает такие вопросы, которые люди работавшие с ООП, обычно не задают. В результате обсуждение скатывается в обсуждение, а так можно в ООП или нельзя или "А это че вообще такое"? Я свою точку зрения выразил давно. Хотелось бы язык позволяющий создавать свои типы данных с поддержкой ООП-парадигмы. И еще адекватную обработку исключений
323 vde69
 
07.06.13
09:59
(318) ООП для 1с имеет смысл как расширение языка.

Объясню:

во встроенный язык нельзя ввести процедуры которые оперируют конкретными метаданными, например пересчет курса из одной валюты в другую. Именно такой функционал и следует перенести в объекты ООП, и уже основываясь на этих объектах строить дальше.

В объект ООП можно и нужно поместить проведение документа, но форму и ее реакцию - это большой вопрос...

Вот какие границы применения ООП я себе вижу....
324 Кирпич
 
07.06.13
10:09
А мне глубоко наплювать, что в 1с нету ООП. В 1с я о нём не вспоминаю никогда. Что бог дал - на том и зарабатываем.
326 vde69
 
10.06.13
13:48
начал систематизоровать свое отношение к 1с в целом как к системе, в том числе и в разрезе ООП

http://infostart.ru/public/190375/
327 Chai Nic
 
10.06.13
13:58
(326) На 101% согласен с первой частью. Файл-серверная архитектура при многопользовательском доступе - зло.