Модуль менеджера или статические методы класса?

04.07.10

Разработка - Математика и алгоритмы

Зачем в платформе 8.2 добавили модуль менеджера объекта, как его использовать? Попробуем разобраться.

Скачать файлы

Наименование Файл Версия Размер
StaticMethods.zip
.zip 9,30Kb
112
.zip 9,30Kb 112 Скачать

Собственно, суть статьи уже отражена в ее названии и те, кто все сразу понял, могут дальше не читать. Все нижеизложенное писалось для таких же, как я, новичков в программировании, для тех, кто при виде новой сущности "Модуль менеджера" подумал: "Что за черт! Мало что ли общих модулей?"

Итак, для начала немного "пожуем" ООП.

Вызовы методов классаВ ООП существует такое понятие, как "статический метод класса". Если говорить кратко, это такой метод, который не использует свойства класса и может быть вызван без создания экземпляра класса. Если вдаваться в подробности (не глубоко), то существование таких методов обосновано способом организации хранения объектов в памяти. Тогда как свойства занимают место в памяти для каждого создаваемого объекта (иначе чем бы они различались?), его методы хранятся только в разделе описания самого класса и не дублируются для каждого экземпляра. Таким образом, вызывая метод конкретного объекта мы обращаемся к коду описанному в блоке описания класса передавая ему некий "контекст" свойств конкретного объекта. Но если метод не использует никаких данных из передаваемого "контекста" и сам "контекст" ему по сути не нужен, то почему бы не вызывать его напрямую? Такие методы, не нуждающиеся в "контексте" и назвали "статическими".

Конечно, технически все это наверное не относится к 1С, но статические методы это не только особый способ обращения к методам, но и часть парадигмы ООП, определяющая сам стиль программирования.

Как мы можем использовать все это на практике? Рассмотрим пример.

Пусть у нас существует документ "Заказ", который может иметь два состояния: Предварительный и Окончательный. Причем, для предварительного и окончательного заказов набор обязательных для заполнения реквизитов разный. Как можно проверять этот момент и не давать записывать документ при не заполненных обязательных реквизитах? Конечно, можно организовать проверку непосредственно в событии "ПередЗаписью", но более универсальным способом было бы сделать функцию ПолучитьСписокОбязательныхРеквизитов(Режим), в которую можно было бы передать режим, и которая возвращала бы список обязательных реквизитов для документа. И вот, главный вопрос: куда поместить эту функцию?

Небольшой исторический экскурс. В 1С 7.7 было только одно место где можно было описывать функции сразу доступные отовсюду - это глобальный модуль (про разные ухищрения говорить не будем). И в больших конфигурациях он, несмотря на все усилия по сохранению в нем порядка, обычно превращается в "помойку функций", в которой очень сложно что-либо найти или даже разобраться в логике работы.

В восьмой версии появилась возможность добавлять общие модули в произвольном количестве и это позволило навести некоторый порядок, но все-равно оставались модули с названием вроде "Разное" или "Дополнительно" в которых обычно мы видим тот же глобальный модуль 7.7, только меньше. Так же бывает так, что количество общих модулей стремится вырасти до количества типов объектов метаданных. Разработчики делают справочник "Товары" и общий модуль "Товары" для функций связанных с товарами. На мой взгляд это не очень хорошо, хоть и удобно.

Но вернемся к нашей функции ПолучитьСписокОбязательныхРеквизитов. Конечно, можно поместить ее в модуль формы, но тогда она не будет доступна из других частей конфигурации (без получения формы), а узнать какой реквизит обязателен для заполнения может понадобиться когда угодно, например в какой-нибудь обработке заполнения. Поэтому лучше было бы поместить ее в модуль объекта. Но нужно помнить, что в 8.2 нельзя просто так обратиться к методам модуля объекта (без записаного объекта или вызова "ДанныеФормыВЗначение"), а проверить реквизиты нужно. К тому же для вызова метода конкретный объект по сути не нужен.

И вот наступил тот самый момент, когда две части этой статьи сходятся в одной точке. Такую функцию можно назвать "статическим методом класса", так как для ее работы не нужен конкретный экземпляр класса (объект, конкретный документ), но она очень тесно логически связана с самим классом, обязательность-то мы проверяем у конкретного вида документа. И ее можно смело помещать в модуль менеджера этого документа. К тому же ее вызов очень изящно оформляется через объект "Документы":

спОбязателньыеРеквизиты = Документы.Заказ.ПолучитьСписокОбязательныхРеквизитов(Объект.ВидЗаказа);

Надеюсь, теперь всем, кто дочитал до этого места понятно зачем же можно (и нужно) использовать модуль менеджера.

Спасибо за внимание и хорошего вам кода.

Черновик статьи в блоге автора.

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1753    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4415    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

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

1 стартмани

09.06.2023    7447    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7846    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4443    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8828    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7796    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ish_2 1104 02.07.10 17:58 Сейчас в теме
И не знаю , что скажут наши "гуру".
Как начинающий скажу :
Статья хорошо написана. Кратко , точно, изящно.
2. zfilin 2337 02.07.10 18:28 Сейчас в теме
3. leosoft 165 02.07.10 19:50 Сейчас в теме
Полезная статья, спасибо! Пишите еще! :)
4. mirco 74 02.07.10 21:08 Сейчас в теме
Спасибо, хорошо описан материал.
5. script 128 03.07.10 00:19 Сейчас в теме
6. rasswet 82 03.07.10 18:33 Сейчас в теме
для полного завершения не хватает примера, как проверить на заполненность реквизит такой-то.
8. zfilin 2337 03.07.10 23:38 Сейчас в теме
(6) На самом деле в прилагаемом файле проверяются реквизиты, просто я не стал об этом упоминать в статье, чтобы оставить в ней только главное (на мой взгляд).
7. CheBurator 3119 03.07.10 23:17 Сейчас в теме
за "..И в больших конфигурациях он, несмотря на все усилия по сохранению в нем порядка, обычно превращается в "помойку функций", в которой очень сложно что-либо найти или даже разобраться в логике работы."
- атата!
.
лично мне кажется, что разобраться в логике работы или что-нибудь найти - в 8-ке будет посложнее... так что наезды на 7.7-ые подходы - совершенно излишни..
SilinaAlena0303; koden@list.ru; ilaurel; mexedov; +4 Ответить
9. Ish_2 1104 03.07.10 23:46 Сейчас в теме
(7) По-человечески понятно.
Что только не придумаешь , чтобы самооправдать непереход на 8.
11. CheBurator 3119 03.07.10 23:53 Сейчас в теме
(9) не надо гнать волну... ;-) 8-ке - свое место, 7-ке - свое... Переход на 8-ку должен быть обоснован, а если необходимости нет - то на нет и суда нет.. сижу пока что потихоньку 8-ку осваиваю...
koden@list.ru; +1 Ответить
12. zfilin 2337 03.07.10 23:57 Сейчас в теме
10. zfilin 2337 03.07.10 23:52 Сейчас в теме
(7) Все субъективно, на самом деле. Я совсем не против того, что можно очень упорядочено и организовано вести глобальный модуль 7.7, комментировать, может быть писать сопровождающие спецификации и тогда любые восьмерки становятся слишком громоздкими и неудобными по сравнению с простой 7.7
Но мне почему-то чаще встречаются конфигурации "закрученные" настолько, что их просто неудобно читать, реже такие, что и логика начинает теряться в нагромождениях функций. Что очень печально.
13. CheBurator 3119 03.07.10 23:57 Сейчас в теме
14. zfilin 2337 04.07.10 00:06 Сейчас в теме
(7) (10) Не-не-не, я совсем не против, что в 8-ке тоже можно ТАКОГО сделать, что просто ужас.
15. coach 102 04.07.10 08:30 Сейчас в теме
В 8.2 МОЖНО обращаться к экспортным методам объекта, не записывая его. Даже из модуля формы.
См. функцию глобального контекста ДанныеФормыВЗначение().
16. zfilin 2337 04.07.10 17:01 Сейчас в теме
(15) Спасибо, действительно можно.
А в ваших видеоуроках (во всяком случае в начале, 12-я часть 1-го бонуса) говорится, что нельзя.
Статью поправлю.
wunderland; +1 Ответить
17. coach 102 04.07.10 18:01 Сейчас в теме
(16) Да, сейчас прослушал видео-урок, действительно его нужно расширить.
Эти видео-уроки писались достаточно давно, и сейчас требуют переработки.
Поставил замечание в туду :)
19. Трактор 1246 06.07.10 16:19 Сейчас в теме
(17)
Поставил замечание в туду

Не в туду, а в сюду.
doleynikov; +1 Ответить
20. Асисяй 08.07.10 08:18 Сейчас в теме
(19)
Не в туду, а в сюду.


В туду значит "в TODO"
18. Rusmus 45 05.07.10 12:53 Сейчас в теме
совсем замечательно будет, если еще добавят модуль ссылки, функции в котором получали бы в качестве контекста запись таблицы. Сейчас подобное реализуемо, если в функцию в модуле менеджера передавать ссылку через параметры, но как-то это не совсем удобно
36. AlexO 135 17.06.12 01:44 Сейчас в теме
(18) Rusmus,
совсем замечательно будет, если еще добавят модуль ссылки, функции в котором получали бы в качестве контекста запись таблицы.

что вы пониматете под "модуль ссылки"? какие функции он должен нести?
А где вы вообще в 1С8 нашли хоть какой-то контекст объектов - форм, документов, табличных частей? А тем более - в полном запрете в 8.2 использования какого-либо "контекста" объектов при разделении на Клиента и Сервер, требующего принудительной передачи "туда-сюда" данных.
Если же вы хотите получать ДАННЫЕ ТЧ, вкладки, поля и т.д., то в 8.2 ССЫЛКА на "объект" сама по себе имеет отдаленное отношение к данные этого объекта. Т.к. - см. выше: ссылку-то с динамической формы на сервере мы видим, а вот данные - нет.
И, боюсь, у 1С в этом случае (при уже созданной кошмарной системе УФ 8.3) останется только один вариант: делать модуль ТЧ, модуль ПоляВвода, модуль Вкладки...
Сейчас подобное реализуемо, если в функцию в модуле менеджера передавать ссылку через параметры, но как-то это не совсем удобно

А из переданного в модуль менеджера объекта вы ссылку на него получить не можете? :)
21. akama2001 08.04.11 22:30 Сейчас в теме
спОбязателньыеРеквизиты = Документы.Заказ.ПолучитьСписокОбязательныхРеквизитов(Объект.ВидЗаказа);
вот это жесть написана!!! Объект = Это же заказ!!! т.е. объект уже создан зачем нужно вызывать статический метод класса и передавать туда экземпляр класса то бишь объект...
koden@list.ru; ivv1970; +2 Ответить
22. zfilin 2337 09.04.11 11:55 Сейчас в теме
(21) Да, не совсем удачный пример. На самом деле бывает же, что вид заказа есть, а объекта нет.
33. AlexO 135 17.06.12 01:30 Сейчас в теме
(21) akama2001,
спОбязателньыеРеквизиты = Документы.Заказ.ПолучитьСписокОбязательныхРеквизитов(Объект.ВидЗаказа);
вот это жесть написана!!! Объект = Это же заказ!!! т.е. объект уже создан зачем нужно вызывать статический метод класса

Т.е. вас смущает, что в "объект" передается сам же объект (часть его)? А меня вот не смущает - т.к. я знаю, где ООП, а где 1С, где объекты ООП, и "объекты" 1С :)
и передавать туда экземпляр класса то бишь объект...

ну вот, о чем и говорил - уже нашли и классы, и ООП... и вообще, "курят" 1с не как я - затягиваются :))
35. zfilin 2337 17.06.12 01:35 Сейчас в теме
(33) AlexO, Спасибо за интерес к статье, но вот прямо сейчас я, право слово, не готов даже прочесть ваш весьма развернутый комментарий. Поддался минутной слабости и шлепнул коньячку. Боюсь, что сейчас вам "наотвечаю". =)

Но непременно посмотрю и отвечу по-делу. Наверняка вы неравнодушны к вопросу ООП в 1С, раз так подробно изложили своем мнение, а значит в какой-то степени мы с вами единомышленники, даже если и оппоненты.
37. AlexO 135 17.06.12 01:46 Сейчас в теме
(35)
значит в какой-то степени мы с вами единомышленники, даже если и оппоненты.

я только за то, чтобы вы, как человек, знакомый с ООП, не подменяли термины, следуя "1С-стайл", и путались сами :)
23. i132 122 22.09.11 17:20 Сейчас в теме
В таком модуле можно написать погашение заказа несколькими документами, например для заказа: отмена заказа или накладная (или в наборе записей, если регистр один)
24. a-novoselov 1155 28.11.11 14:36 Сейчас в теме
Модуль менеджера объекта (только платформа 8.2)

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

http://www.lessons1c.ru/articles/55-moduly82.html

можете по поводу обработки выбора что-то пояснить?
34. AlexO 135 17.06.12 01:34 Сейчас в теме
(24) a-novoselov,
Вызов экспортных методов менеджера не требует создания самого объекта.

только вот что-то нет примеров применения модуля менеджера не из самого - уже созданного, - объекта для получения доступа к данным формы/процедуре модуля этого же объекта, а вызова функции в этом "модуле менеджера" другого, не текущего объекта.
Везде требуется - передача "указателя" (см. пост (31) ) на "объект". Который должен быть создан для получения этого "указателя".
Т.е. требует создания, требует.
И никак иначе.
Посмотрел внимательно этот "урок" - что-то дурной он какой-то. В частности, по модулю менеджера:
Основное предназначение данного модуля – это переопределение стандартного события выбора, которое возникает в момент ввода по строке и расширение функционала менеджера

Ввод по строке в 8.2 - вообще вещь неуправляемая, и каким боком тут модуль менеджера - непонятно.
Модуль компилируется на стороне сервера.

это верно. Собственно, это определется его (модулем менеджера) предназначением - исполняться на сервере, и быть привязанным к объекту, чтобы "светить" процедурами вовне.
А вот про модуль команды не указано, что он компилируется - и виден, - только на клиенте и исполняется только по "кнопке"-владельцу, и больше ниоткуда.
47. a-novoselov 1155 18.06.12 10:42 Сейчас в теме
(34)
Предопределенная процедура из модуля менеджера объекта:
ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)
Синтаксис:

ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)

Описание:

Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.


И почему же ввод по строке вещь неуправляемая? Вполне даже можем управлять, формировать собственный список найденных элементов и помещать его в данные выбора и т.д.

Далее.
Насчет обращения к методам объекта без создания самого объекта. В типовых конфигурациях, например, уже давно процедуры печати перенесены из модуля объекта в модуль менеджера. Зачем? Поясню. У нас есть ссылка на документ (скажем ОрдерСсылка), мы хотим его напечатать. Если экспортная процедура печати расположена в модуле объекта, то для печати документа нам нужно будет вызвать ее следующим образом: ОрдерСсылка.ПолучитьОбъект.Печать();
Если же процедура расположена в модуле менеджера, то нам ее нужно будет вызывать как: Документы.Ордер.Печать(ОрдерСсылка);
Для чего это нужно? Во-первых, избегаем лишнего вызова функции получения объекта по ссылке. Во-вторых, в параметры процедуры мы можем передать список документов для пакетной печати. Если раньше для пакетной печати какого-либо вида документов делалась отдельная обработка или функции печати выносились в общий модуль, то теперь функции можно расположить в модуле менеджера, что логичнее и уменьшает количество неразберихи в конфигурации.
programmer_87; +1 Ответить
49. AlexO 135 18.06.12 10:57 Сейчас в теме
(47) a-novoselov,
Насчет обращения к методам объекта без создания самого объекта.

вот именно, обращения к методам объекта БЕЗ ПЕРЕДАЧИ ИНФО ОБ УЖЕ СОЗДАННОМ ОБЪЕКТЕ.
Приходится писать крупно, потому что вы, как тру-1сник, уводите меня в сторону :)
Причем тут МодульМенеджера и печать, когда туда (в начале обработки печати) передается этот самый созданный объект, и - вау! - вы вызываете МодульМенеджера обрабатываемого в данный момент объекта, данные о котором в полном объеме (для УФ 8.2) присутствуют и кочуют из одного общего модуля в другой, пока не дойдет это все до МодульМенеджер объекта, данные из которого и выводится на печать.
А вы вызовите из внешнего модуля на печать не текущий документ, а любой другой. И посмотрим, как не будет создаваться объект.
И обсудим.
И почему же ввод по строке вещь неуправляемая?

потому, что неуправляемая. Или, может я не добрался еще до этого в 8.2, покажите запрос или мезанизм, который управляет вводом по строке.
А также - возможность его отключить :)
Или что вы понимаете под "ввод по строке"?
64. saiten 246 21.06.12 00:11 Сейчас в теме
(49)
Причем тут МодульМенеджера и печать, когда туда (в начале обработки печати) передается этот самый созданный объект, и - вау! - вы вызываете МодульМенеджера обрабатываемого в данный момент объекта, данные о котором в полном объеме (для УФ 8.2) присутствуют и кочуют из одного общего модуля в другой, пока не дойдет это все до МодульМенеджер объекта, данные из которого и выводится на печать.
В (47), в общем-то, всё достаточно подробно расписано. Без создания объекта - чтобы не тащить в память из БД все реквизиты и таблицы объекта: в функцию модуля передаётся ссылка, по ссылке запросом берём только то, что нужно для печати. И никакого тягания объекта из модуля в модуль. А почему в модуле менеджера, а не в общем модуле - об этом как раз публикация.
Кстати, обвинять эту статью в притягивании за уши парадигм ООП к 1С - это, даже не знаю, паранойя что ли... Скорее, это демонстрация людям, знакомым с ООП, концепции использования модуля менеджера через аналогию со статическими методами класса. Аналогию, кстати, весьма удачную, на мой взгляд: по сути, прочитал название - и сразу всё понятно.
programmer_87; +1 Ответить
67. zfilin 2337 21.06.12 10:15 Сейчас в теме
(64) saiten, Спасибо большое, как вы ловко всё пояснили. Я про свою статью лучше бы не сказал. =)
25. zfilin 2337 29.11.11 21:43 Сейчас в теме
Да, речь идет о предопределенной процедуре "ОбработкаПолученияДанныхВыбора", которая вызывается, когда вы в поле ввода начинаете вводить текст (поле ввода должно быть типа "класса" в котором вы определяете процедуру). С ее помощью можно организовывать собственный "быстрый выбор" (или как оно называется).
Почитайте в синтакс-помощнике, там толково написано.
26. naf2000 23.12.11 12:15 Сейчас в теме
Нашел единственное отличие методов модуля менеджера от статических:
В методе объекта можно просто по имени вызывать такой статический метод (без упоминания самого класса): Печать(Чтото);
Для метода менеджера все таки надо написать побольше: Документы.ЗаказПокупателя.Печать(Чтото);

И да: даешь модуль ссылки!
yuraos; hansolo686; +2 Ответить
27. dandrontiy 26.04.12 14:38 Сейчас в теме
Почему объектно-ориентированное программирование провалилось?

Прошло ровно 10 лет с публикации известной и классической в мире программирования статьи, написанной Ричардом Гэбриелом, название которой стало уже нарицательным и вынесено в заголовок заметки.

Его статья стала настолько острой и злободневной для своего времени, что вызвала бурный всплеск обсуждений в сообществе программистов, целый ряд известных программистов включились в открытую полемику с автором, от редакции известнейшего американского программистского журнала Др.Доббс, до таких ученых как Энди Танненбаум.

Мы решили вернуться к этой горячей теме и просто напомнить нынешнему поколению «плотно сидящему на чудесном ООП» о некоторых идеях, которые были высказаны в той знаменитой полемике.




Битва при рядовой конференции

Автор этой нашумевшей статьи, доктор компьютерных наук Стэнфорда, старший архитектор по разработке ПО сначала Sun, а потом и IBM, Ричард Гэбриел, никогда не скрывал своего скептического отношения к парадигме ООП. В 2002 году, по прошествии 2 лет после первоначальной публикации своей критической статьи, автора пригласили выступить, теперь уже живьем и перед большой аудиторией, — изложить свои критические взгляды на ежегодной конференции OOPSLA (центральная конференция IT-специалистов по объектно-ориентированным языкам и методологиям разработки ПО).

И, чтобы по старой доброй американской традиции, превратить это в горячее шоу, в качестве его оппонента одновременно пригласили Гая Стили, отца-разработчика языка Scheme, крупнейшего специалиста-теоретика по ООП, авторитет которого в американской академической среде непререкаем. Чтобы максимально отразить позиции выступающих, их решили усилить ещё двумя выступающими.

В качестве «анти-объектника» дополнительно пригласили Пола Грэма, крупнейшего специалиста по Lisp, автора многочисленных книг и стандартизаций Lisp, кстати, согласно Википедии в 1995 году создавшего вместе с Робертом Моррисом первое в мире web-приложение — Viaweb, которое затем выкупило у них Yahoo (как мы все знаем, Роберт Моррис, близкий друг и коллега Пола, этим историческим достижением не ограничился, до этого он уже успел написать пожалуй самый знаменитый сетевой червь в истории интернета, но это уже совсем другая история).

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

Но факт остаётся фактом: сторона представлявшая объектно-ориентированное программирование, во время открытой дискуссии со своими идейными противниками, под громкий смех зала, даже умудрилась запутаться в своих же концепциях.


ООП как... методология мифология разработки

Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp’еров была куда убедительней и последовательней, чем сторонников ООП (любопытно, что главным докладчиком по ООП был создатель языка Scheme — главного современного диалекта того же Lisp’а).

Пол Грэм, утверждал, что половина всех концепций ООП являются скорее плохими, чем хорошими, в связи с чем он искренне сочувствует ООП-программистам.
Тогда как вторая половина от оставшихся концепций — и вовсе не имеет никакого отношения к ООП, с которыми их почему-то постоянно ассоциируют

Например, он говорит:

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

Хотя иногда объектно-ориентированный код действительно годится для повторного использования, таким его делает вовсе не объектно-ориентированность, а программирование в стиле „снизу вверх“. Возьмём, например, библиотеки: их можно подгружать и повторно использовать сколько угодно, потому что, по сути, они представляют собой отдельный язык. И при этом, совсем неважно, написаны ли они в объектно-ориентированном стиле или нет.»



Классик программирования Дейкстра, чрезвычайно остро не любит только две вещи: ООП и Калифорнию

Другой крупный критик ООП — это известный специалист по программированию — Александр Степанов, который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL).

Александр Александрович полностью разочаровался в парадигме ООП, в частности он пишет:

«Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой.

Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг — из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле».
Ричард Столлман также известен своим критическим отношением к ООП, особенно он любит шутить насчет мифа объектников что ООП «ускоряет разработку программ»:


«Как только ты сказал слово „объект“, можешь сразу забыть о модульности»

«ООП ради самой ООП уже давно превратилось в замкнутый круг. Конечно, можно считать C# в .NET 3.5 с более чем 50,000 реализованных классов „венцом эволюции“. Добавить в следующей версии .NET ещё миллион классов — что может быть более правильным и более вожделенным, с точки зрения ООП-программиста? Говорите, это и есть то самое бегство от сложности?» (на этом месте интервью Ричард демонстративно делает паузу и выкашливается от приступа смеха).
Томас Поток из MIT даже провел масштабное прикладное исследование, которое продемонстрировало, что нет никакой заметной разницы в производительности между программистами работающими в ООП и в обычном процедурном стиле программирования. «Это просто миф, который отлично работает вкупе с невежеством масс — если вы никогда не видели ничего кроме ООП, как же вообще вы можете в ней сомневаться?».

Никлаус Вирт, создатель языков Паскаль и Модула, один из создателей структурного программирования, утверждает, что ООП — не более чем тривиальная надстройка над структурным программированием, и преувеличение её значимости, выражающееся, в том числе, во включении в языки программирования всё новых модных «объектно-ориентированных» средств, безусловно, вредит качеству разрабатываемого программного обеспечения. Никлаус очень удивлен тем вниманием, которое уделяется ныне ООП.


Идеальная разработка с точки зрения ООП...

Ещё один ветеран программистского ремесла, Джоэл Спольски, рассказывает, что во время его работы в Microsoft его так достали тамошние адепты-инженеры ООП, что даже сейчас, по прошествии почти десяти лет, его передергивает от людей, «с головой погрязших» в этой парадигме. Джоел — автор популярного в англоязычной литературе шутливого термина Архитектурные Астронавты, который пошел гулять из его популярной статьи «Не дайте Астронавтам Архитектуры вас запугать», посвященной именно тем самым архитекторам-инженерам из Microsoft, которые так упорно преследовали Джоела со своими абстрактными ООП-концепциями и шаблонами.

О том самом выступлении...

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

К сожалению, вероятно из-за того, что как я уже сказал выше, ответное выступление объектников «Почему ООП не провалилось» получилось несколько скомканным из-за интеллектуального натиска Lisp’еров, выступающие так и не оформили впоследствии свою позицию преимуществ ООП в развернутом виде. В интернете сохранилось лишь очень краткое содержание-конспект их выступления, которое также существует как в английской оригинальной версии, так и в русском переводе.



Сектантство в академической науке

Чтобы вскрыть корни подобного «культа отдельно-взятой технологии», Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла «тихая революция». Молодые сторонники теории относительности, массово пришедшие в номенклатуру университетов, тогда постепенно захватили власть в области преподавания физики, навязав свою малоизвестную, но столь любимую интеллектуалами того времени теорию относительности уже широким массам физиков.

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

После чего эфир был незаслуженно «закрыт» и отправлен в отставку, и вот, уже нынешнее поколение студентов-физиков даже и не знает о тех весьма успешных опытах по обнаружению эфирного ветра.

«Ну и где мы теперь, с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни после целого века её ковыряния и массового насаждения?» — как всегда язвительно вопрошает Гэбриел.
По мнению Ричарда, абсолютно с точностью тоже самое произошло и с ООП, которая в 80-ых годах была провозглашена «серебряной пулей» в «борьбе со сложностью программистского бытия», была искусственно и безальтернативно навязана в академической среде, причем мифы, которые кочуют из учебника в учебник по ООП — «часто забавны и высосаны буквально из пальца».
Вместо заключения

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



И да, будьте смелее в своих поисках и размышлениях, не нужно бояться, если в очередной раз в истории вдруг окажется, что... «король-то голый»!
user1706724; programmer_87; Monex; doleynikov; Mentok; life-wayfarer; DarkUser; jekichan; It-developer; talych; krv2k; babys; SeiOkami; kiros; vladir; +15 Ответить
30. AlexO 135 23.05.12 17:58 Сейчас в теме
(27) dandrontiy,
ПО сначала Sun, а потом и IBM

и много он там ПРИКЛАДНЫХ приложений написал?
Другой крупный критик ООП — это известный специалист по программированию — Александр Степанов, который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL).

Т.е. хаял то, что впервые ввели в С++ - объекты и классы? А потом, продолжая хаять, еще и учавствовал в создании библиотек классов?? Он кем там работал - уборщицей? И так же что-ли шипел вслед разработчикам про их "дурацкий ООП, грязь от него одна да песок"? :))
Все-таки, более вероятно, что в статье многое переврано.
Ричард Столлман:
можно считать C# в .NET 3.5 с более чем 50,000 реализованных классов „венцом эволюции“. Добавить в следующей версии .NET ещё миллион классов — что может быть более правильным и более вожделенным, с точки зрения ООП-программиста?

И где Столлман нес такую чепуху? И где Степанов нес подорбную ахинею про программирование и математику? Что-то ссылки дают только более полный текст этой самой статьи, которая, судя по дальнейшим фразам "парни, не путайте генеалогию с гинекологией!", "Ни в каком моделировании наследования не существует — ни в электронике, ни в бухгалтерии, ни в политике, ни где бы то ни было еще." написана отнюдь не для разбора проблем, а для какого-то околокомпьютерного журнала для подростков.
Для незнающих, куда причислили и Степанова - про математику:
Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств.... Т.е. в математике вы заканчиваете аксиомой

Аксиомы потому и названы аксиомами, что они приняты без доказательств как базовые не требущие подтверждения правила для дальнейших рассуждений и математических доказательств. Потому никак нельзя начать с доказательств, чтобы прийти к аксиомам. Все ровно наоборот.
Да и сам автор, - если это был действительно он, - пытается оправдаться за безграмоность "отсутствием времени" и "в статье не ставились цели что-то доказать", а только "эта статья – чисто исторический обзор двух известных выступлений “Почему ООП провалилась“ и “Почему ООП не провалилась“.
неразберихи в ООП так популярен рефакторинг
- рефакторинг как никогда популярен у 1с, которая ни разу ни ООП. Но, конечно же, это говорит только о том, что рефакторинг - это неотъемлемая часть ООП... Вот оно, доказательство (нет, не аксимоам - у нас же аксиома идет после доказательства): 1С - это 100%-ое ООП! :)
Release; CodeNull; ivv1970; DarkUser; kiros; Nelli_A86; +6 Ответить
28. zfilin 2337 26.04.12 16:24 Сейчас в теме
Спасибо, читал эту публикацию и даже сам не ее ссылался. =)
29. Sunhare 4 05.05.12 10:36 Сейчас в теме
Спасибо, написано доходчиво )
31. AlexO 135 17.06.12 01:06 Сейчас в теме
(0)
В ООП существует такое понятие, как "статический метод класса".

Мы с вами спорим по теме "ООП в 1С?" уже давно, вот и тут - где в 1С классы? А если никаких классов в 1С нет - то почему статья упорно намекает, что документы-справочники - это "классы", а МодульМенеджера - это метод "статического класса"? :)
Вот здесь:
Такую функцию можно назвать "статическим методом класса", ... не нужен конкретный экземпляр класса (объект, конкретный документ), но она очень тесно логически связана с самим классом ... у конкретного вида документа.

Или вот, по теме статьи.
1С уже настолько запуталась в своих "инновациях" в своем продукте, что скоро потонет в своих придумках.
Нет, чтобы сделать обыкновенный ООП: модуль формы, и - любое количество модулей к объекту; объявляешь экспортной - функция доступна во всех остальных объектах.
Все.
Ну да, еще надо разобраться с областями видимости всего и вся, где 1с наоборот, вносит еще больше путаницы своими доработками платформы.
А у нас НаКлиенте, НаСервере, модуль объекта, модуль менеджера... теперь народ еще и "модуль ссылки" просит...
И в результате просто форменное издевательство над программистами - да вот этот же ДанныеФормыВЗначение взять, к примеру.
(15) coach,
В 8.2 МОЖНО обращаться к экспортным методам объекта, не записывая его. Даже из модуля формы.
См. функцию глобального контекста ДанныеФормыВЗначение().

Ну и как содержание процедур/функций зависит от записи-не записи объекта?
Ладно, дальше, если разбираться с этим ДанныеФормыВЗначение, все еще интереснее.
Для наглядности приведу код с ипользованием ДанныеФормыВЗначение (РеквизитФормыВЗначение - аналогично, только передается не "объект", а имя реквизита формы).
	ДокументПродажи = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ЗаданиеТорговомуПредставителю"));
	ДокументПродажи.ЗаполнитьУсловияОбслуживанияПоУмолчанию();
   ЗначениеВДанныеФормы(ДокументПродажи,Объект);

Этот код пишется в модуле формы. "ЗаполнитьУсловияОбслуживанияПоУмолчанию" - экспортная (заметьте, в ООП этого было бы достаточно для получения к ней доступа, но не такова 1С - чем сложнее, тем, видимо, лучше) процедура этого же объекта (документа).
Что же здесь происходит?
Исполняется код модуля формы. Но вот незадача - разделение кода на "клиента" и "сервер" (которое программист еще и должен делать сам) не позволяет делать элементарные операции (посмотреть там значение справочника, сравнить с чем-нибудь в базе, запрос запросить) обработки данных, а требует это делать "НаСервере".
Ну, т.е. вы поняли - "держать" операционную систему на себе современный ТСД может, а работать с БД на 1С как равноправный участник процесса - не может.
1С посчитала, что не справится, нечего его "загружать так сильно", и запретила. Сказала, что не царское это дело, и пусть-ка программисты заниматся бесконечным делением НаКлиента и НаСервер. А вдруг кому-то понравится?!
(И ведь нравится! Форумы почитаешь - "курю новую трехзвенку 8.2. Уже начал въезжать!", "Понял разделение на Клиента и Сервер! Скоро уже изучу нюансы!" и т.д. Школьники. Студенты.
Я вот сколько под "тонкого клиента" 8.2 не писал - никак не могу найти ответ на один главный вопрос: ЗАЧЕМ ВСЯ ЭТА ЗАТЕЯ?!)
Но возвращаемся к нашему примеру. Итак, делать ничего нельзя НаКлиенте, но делать что-то все-же надо. Тогда пишем процедуру - НаСервере. И начинаем получать всякие нужные нам данные из базы, сравнивать, делать выводы...
Но тут опять незадача! На сервере теперь уже недоступна наша форма-объект как таковая и данные с неё.
А их, опять же в рамках нормальной логики обработки данных - надо получать периодически во время "серверных" расчетов. И желательно актуальные (часто же невозможно сразу все нужные данные и в нужном виде передать в процедуру НаСервер).
Вот для этого и используется в даннном случае ДанныеФормыВЗначение.
В модуле формы исполняем процедуру НаСервере (а не непосредственно с динамической формы вызываем процедуру модуля объекта - как может показаться из фразы "МОЖНО обращаться ... из модуля формы" - код-то все равно передается на сервер для исполнения, пусть даже он и записан в "модуле формы"; сия запутанность "в форме, но на сервере, потом снова на форме" опять же относится к "великим загадкам" 1с - да за ради чего это надо?), чтобы можно было хоть что-то сделать с данными этой самой формы.
А тут в процессе опять понадобились еще данные с формы, или текущая модификация этих данных, или выполнение/проверка с помощью какой-либо процедуры модуля объекта.
Тогда и запускаем ДанныеФормыВЗначение, где через "серверную" процедуру на сервер передается как-бы ссылка на "объект" (и это не ОбъектСсылка - тот просто еще один "объект" по фантазии 1С), - а указатель на объект динамической формы в памяти, с помощью которого (и указания типа данных, которые нужно искать с помощью этого "указателя") ДанныеФормыВЗначение "читает" объект и создает на сервере копию-"объект" от запрошенного, с "его" данными; а если бы это было не так - а, скажем, в ДанныеФормыВЗначение передается Объект со всеми его данными и сруктурой, - то в этом случае совсем все плохо: и передаем-то полный объект со всей вытекающей нагрузкой, и если он уже "с данными" - мы ж и так "на сервере", так зачем тогда еще раз через ДанныеФормыВЗначение получать данные "объекта"... в общем, уж совсем кривая схема получается).
Потом мы из этого копии-объекта обращаемся или к его процедуре модуля объекта, или получаем значение реквизита, или еще как-то работаем с формой и данными "на ней", т.е. работаем на НаСервере как-будто "изнутри" самой формы через созданный копию-"объект".
Собственно, с этими "указателями" на объект и работой механизма ДанныеФормыВЗначениеРеквизитФормыВЗначение) далеко не все ясно, но, как всегда, инфо от 1С по непосредственной работе платформы и "как оно там все крутится" есть ноль, поэтому это просто мои догадки на основе моих же предположений. Но это только и остается, т.к уж про справку и говорить нечего (хотя тру-1сники усиленно её нахваливают - но, видимо, я не умею её "правильно" (по 1с-овски) читать):
ДанныеФормыВЗначение(<Объект>, <Тип>)
Параметры:
<Объект> (обязательный)
Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура; ДанныеФормыДерево.


Так вот, этот самый "Тип" параметра "Объект" везде и всюду в данной команде - задается именно как тип объектов конфигураций 1с: СправочникОбъект.ВидыТоваров, ДокументОбъект.ПеремещениеТоваров и т.д.
А никак не тип "ДанныеФормыСтруктураСКоллекцией". И далее по справке - такая же муть, даже без примеров, и - как всегда, - без объяснения, для чего же опять это все напридумано (ну, для чего все-таки нужна ДанныеФормыВЗначение - надеюсь, я выше описал понятно).
В конце примера - даже можем через ЗначениеВДанныеФормы(..) чего-то модифицированное вернуть на форму...
Вот такие "выкрутасы", - и после этого меня уже не удивляют тормоза в динамических формах, и откуда такие задержки, и прочая пакость в реализации УФ (а ведь это и было той самой главной и знаменитой целью создания и продвижения УФ - упростить и облегчить, чтоб быстро, незаметно и без "излишней нагрузки").
И вот после написания этой небольшой "статьи" - так и остается все тот же вопрос: ЗАЧЕМ и для кого эта система придумана?
user1706724; Spartacus; DarkUser; KatyariK; ybatiaev; mexedov; jsr; kiruha; talych; sound; inteh; BorovikSV; kiros; yuraos; OksDallas; +15 Ответить
39. hogik 443 17.06.12 18:10 Сейчас в теме
(31)
"... вопрос: ЗАЧЕМ и для кого эта система придумана? "©
AlexO.
1) Для кого.
Для программистов, которые рассматривают "любую систему сугубо под углом RAD"(с).
2) Зачем.
Думаю, надо для начала ответить на вопрос - "почему?".
"...классическая реляционная модель не имеет готовых средств для поддержки иерархии данных и ее реализация всегда требует кропотливой работы."(с) [ http://v8.1c.ru/metod/architecture/ ]
И при этом разработчики 1С-а путают модель СУБД с её ЯМД. ;-)
На мой взгляд, вся суть "развития" 1С-продуктов - это попытка приспособить SQL для задач предметной области, где требуется "иерархия данных".
40. AlexO 135 17.06.12 21:01 Сейчас в теме
(39) hogik,
под углом RAD

про RAD - вот здесь я уже написал свое мнение:
"RAD - это среда быстрой разработки приложений. ПРИЛОЖЕНИЙ. Любых. Универсальных и не очень. Простых и сложных. Гибких и дубовых.
А не тюнинг 1с-базы под нужды пользователя с параллельным изучением текущих взглядов на мир Бориса Нуралиева."
Для программистов

для каких программистов? для кодеров - может быть. Для программистов - что-то не вижу ни смысла, ни цели. Одни палки в колеса.
Мелкие исправления-поблажки с 8.2.14 - не перетягивают болото УФ.
user1706724; talych; +2 Ответить
42. hogik 443 17.06.12 21:54 Сейчас в теме
(40)(41)
... (AlexO).
Извините, давая ссылку на статью, я не предполагал её чтения Вами.
Просто, обязан был дать ссылку на первоисточник. ;-)
А, вот, на цитате про RAD забыл дать ссылку. ;-)
43. AlexO 135 17.06.12 21:58 Сейчас в теме
(42) hogik,
да я еще в 2003, когда там стали появляться "базовые" статейки - забросил с их чтением: ничего путного и практичсекого, только время теряешь :)
41. AlexO 135 17.06.12 21:27 Сейчас в теме
(39) hogik,
И при этом разработчики 1С-а путают модель СУБД с её ЯМД

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

Ну да, хоть что-то путное приспособить для хоть какой-то работы. Сравните, как работает "чистый" 1С в файловом варианте с её-нной БД.
где требуется "иерархия данных".

что за иерархия данных такая дивная, как работает, как её эффективно использовать, и чем она полезна разработчикам - так и осталось за кадром со времен этой статейки с 2004 года.
Вообще, та статья - очередная агитка от 1с, не стоящая серьезного внимания:
Идеология использования метаданных в самых общих словах сводится к простому тезису: "Давайте не будет программировать все функции разрабатываемого решения. Расскажем платформе о составе, структуре, особенностях и взаимосвязи различных его частей, и пусть остальное она сделает сама".

орфография статьи сохранена.
Т.е. на самом деле - 1С наоборот, все старается переложить на программиста (разделение клиент-сервер в УФ, платформа не может самостоятельно определить тип данных, заполненность значения (ЗначениеЗаполнено работает с переменными, но не с данными), правильно обработать ошибки, легко связывать кнопки, ТЧ и документы, просто заполнить отчет на основании таблицы регистра или другого "объекта" без дополнительных плясок(а их и нет - "полных" таблиц)... и т.д.
Правильно в конце приписка - "Расскажем платформе о составе, структуре, особенностях и взаимосвязи различных его частей", как хранить, что писать, куда писать - а больше ей и делать ничего не надо, лишь бы в ссылках не запуталась.. Только вот с "не программировать все функции разрабатываемого решения" - это никак не вяжется. Наоборот, все надо предусматривать наперед.
С одной стороны необходимо обрабатывать большие объемы данных, а с другой - обеспечивать широкую функциональность и высокую производительность.

а обработка больших объемов и производительность - оно не связано, нет? И вообще, как SQL и остальных СУБД удается сочетать и то, и другое, и третье, и прочее...
В "1С:Предприятии" используется смешанный подход

не смешанный, а смешной там подход используется :)
Для всех операций модификации данных (создания, изменения и удаления) в "1С:Предприятии" применяется исключительно объектная техника. Это означает, что разработчик взаимодействует с БД не на уровне записей, а с помощью объектов, соответствующих хранимым в БД сущностям. ... Разработчик имеет при этом возможность написать обработчики событий, связанных с изменением данных, выполняя с их помощью различные проверки ... Система обеспечивает ... поддержку объектного подхода, осуществляя, например, кэширование объектов, контроль объектной и ссылочной целостности и т.д.

гладко было на бумаге, да забыли про овраги. Особенно доставляет удовольствие про "контроль объектной и ссылочной целостности". Наверняка, <Объект не найден> и ошибки SDBL - это происки sql-щиков. Вот как они 1С не любят - пакостят как только могут..
А про "разработчик взаимодействует с БД не на уровне записей" - так это я уже тут всем доказываю десять лет. Что нет никакой РБД в 1С, нет никаких "записей-объектов", нет никаких индексов и оптимизации, и прочего ничего нет из реального мира хранения данных, а есть каша из ссылок и вообще свалка и бардак.
Одним из ключевых преимуществ объектно-реляционной парадигмы управления данными является наглядность и простота разработки приложений.

и где в 1С такая парадигма реализована? Типа, сложили РБД SQL и скрипты 1С (назвав их "объектами") - и получили "объектно-реляционную парадигму" (видимо, настолько сильная парадигма, что 1С её не выкладывает из-за её сложности и эффективности - вдруг украдут).
Декларативное описание запросов, в свою очередь, позволяет получать сколь угодно сложные выборки данных и предоставляет мощные возможности агрегирования, необходимые для решения аналитических задач.

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

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

необходимая гранулярность - это жестко определенная 1с порция в 21 запись? Это я уже не говорю про применение выборок "на больших объемах данных" (читаем: для них-то и сделаны эти Выборки!), когда наоборот, рекомендуют использовать запросы и не заморачиваться "выборками". И чем, интересно, эти выборки заточены под "большие объемы", когда как набор условий - минимален, перебирает - все данные источника порциями, и т.д.
В общем, классическая 1С-агитка.
user1706724; ybatiaev; semario; orfos; talych; sound; vladir; hogik; +8 Ответить
44. hogik 443 17.06.12 23:49 Сейчас в теме
(41)(43)
... (AlexO).
Вы действительно считаете, что попытка "что-то путное приспособить"(с) в лице SQL - не является корнем (причиной), критикуемых Вами, "решений" от 1С-а?
45. AlexO 135 18.06.12 01:34 Сейчас в теме
(44) hogik,
ну давайте не будем опять :) ...
я уже лет пять назад устал доказывать - курица или яйцо, т.е. кто на что влияет - SQL, который сам по себе самодостаточная СУБД, но возможности которой используюся 1С процентов на 10. Или 1С, которая вдруг взяла - и выбрала MS SQL для хранения своих таблиц.
Как один их "дешевых" из платных. И не таких сложных.
46. hogik 443 18.06.12 02:14 Сейчас в теме
(45)
"ну давайте не будем опять :) ... я уже лет пять назад устал доказывать"(с)
... (AlexO).
Лично, мне - Вы ничего не доказывали. :-)
Надеюсь в фразе "SQL, который сам по себе самодостаточная СУБД,"(с) Вы описались.
Я Вас не спрашивал почему 1С-ы выбрали ту или иную СУБД.
Я Вас спрашивал про SQL, как - ЯМД. И его "особенности" при работе с "иерархическими данными". На коих стоит вся наша около-1С-овая деятельность. Которую Вы охарактеризовали как: "ничего нет из реального мира хранения данных, а есть каша из ссылок и вообще свалка и бардак."(с).
48. AlexO 135 18.06.12 10:46 Сейчас в теме
(46) hogik,
И его "особенности" при работе с "иерархическими данными".

1С вольна сама разрабатывать представление как угодно. И выбран далеко не самый лучший вариант - в плане обработки и целостности данных.
Лично, мне - Вы ничего не доказывали. :-)

эти споры поднимаются постоянно :)
Особенно - когда новое поколение студентов подкатывает.
Которую Вы охарактеризовали как:

да, именно так и охарактеризовал. Вы хотите поговорить об этом? А мне цитировать самого себя про "ссылка на ссылке и ссылкой погоняет" и "в результате ничего ни проверить, ни проконтролировать"? :)
SQL-то к этой 1с-ой кухне какое отношение имеет? Хорошо, раз не понимаете - другими словами, что мешало 1С выбрать более "подходящую" СУБД? Или более качественно проработать свою систему представления и хранения? Чтобы она как можно ближе ложилась на реляционные таблицы SQL? Или вообще - разработать такой 1с-сервер, который бы дублировал функции СУБД по записи, хранению, контролю, оптимизации, извлечении, анализу записей данных?
Т.е. придумали фигню, кое-как всунули ящик, фигня там скомканная и неоптимизированная, но виноват - ящик, в который положили?
Ну право слово, Вы уж сами-то подумайте, о чем мы тут можем спорить?
А то все "Я Вас спрашивал про SQL, как - ЯМД", "...в лице SQL - не является корнем...", слова всякие умные :)
60. hogik 443 18.06.12 18:08 Сейчас в теме
(48)
"Ну право слово, Вы уж сами-то подумайте, о чем мы тут можем спорить?"
... (AlexO).
Я, вроде, с Вами и не спорю. ;-)
Пытаюсь Вам подсунуть информацию для размышления на тему: "ЗАЧЕМ ВСЯ ЭТА ЗАТЕЯ?!"(с). Намекнул Вам о причине... Действительно - "виноват - ящик"(с).
Но, чувствую после такого бреда с Вашей стороны: "на реляционные таблицы SQL"(с) разговаривать с Вами бесполезно. Т.е. если "студент" ставить знак равенство между моделью СУБД и ЯМД, то ему следует повторить школьную программу. :-)
61. AlexO 135 18.06.12 18:16 Сейчас в теме
(60) hogik,
знак равенство между моделью СУБД и ЯМД

где СУБД и где SQL в 1С?
Из чего состоит трехзвенная архитектура 1с?
Как они взаимодействуют?
Я-то давно знаю, что пробелы в заниях 1с-ников - массовые и зияющие. Что в 1с, что в СУБД.
Не обижайтесь, а лучше разберитесь, и разгребите кашу по поводу СУБД и 1С :)
63. hogik 443 18.06.12 19:22 Сейчас в теме
(61)(62)
... (AlexO).
У меня такое впечатление, что Вы все мои высказывания пропускаете через "сито 1С" и свое понимание "объектности" как только методологию программирования.
Для справки:
1) Я не использую и не собираюсь использовать продукты 1С.
2) Использую СУБД и варюсь в этой сфере с начала 70-х годов.
Еще раз повторяю специально для Вас:
"вся суть "развития" 1С-продуктов - это попытка приспособить SQL для задач предметной области, где требуется "иерархия данных".
И если Вы этого пока не понимаете, то рекомендую запомнить и принять эту информацию к сведению. Возможно позже поймете... :-)
62. AlexO 135 18.06.12 18:24 Сейчас в теме
(60) hogik,
и забудьте вы про свой "ЯМД" - выдрав ЯМД из СУБД, вы обозвали так весь SQL, запутались, и наворачиваете на это новые навороты :)
65. saiten 246 21.06.12 00:22 Сейчас в теме
И, да простит меня автор за оффтоп, но заинтересовало вот это: (48)
1С вольна сама разрабатывать представление как угодно. И выбран далеко не самый лучший вариант - в плане обработки и целостности данных.
Раз выбран не лучший вариант - значит вы знаете другие? Не поделитесь знаниями, хотя бы в виде ссылок? Это не совсем праздный интерес: когда 1С стремительно начала хоронить себя в нише автоматизации торговли (УТ11, РТ2, заявление о прекращении поддержки УТ10) появилась шальная мысль - создать своё, и пока 1С не очухается и выйдет из комы пометь какой-никакой профит. Собственно, идея заглохла как только начали продумывать интерфейс библиотеки управления данными: получалось, почти один в один, как 1С:77. Что заставило крепко задуматься: то ли 1С настолько основательно разъел мозг, то ли по-другому действительно никак.
68. hogik 443 24.06.12 04:08 Сейчас в теме
(48)
... (AlexO).
Очень сильно ;-) присоединяюсь к вопросу из (65) сообщения, в части:
"...вы знаете другие? Не поделитесь знаниями, ...?"(с)
P.S. И я приношу извинения автору темы "за оффтоп"(с).
69. AlexO 135 25.06.12 17:27 Сейчас в теме
(68) hogik,
(65) saiten,
Раз выбран не лучший вариант - значит вы знаете другие?

Мне страшно становится - если вы не знаете про:
MS SQL, немного объектный реляционный ORACLE...
32. AlexO 135 17.06.12 01:18 Сейчас в теме
zfilin, рад, что не спите в столь позднее время, а следите за своими статьями :)
38. AlexO 135 17.06.12 13:00 Сейчас в теме
Еще про "ООП в 1С" - я вот тут развернуто про "объекты 1С" написал:
Запутался в менеджерах и терминологии 1с
50. zfilin 2337 18.06.12 11:32 Сейчас в теме
AlexO, Извините, мне сложно понять вашу позицию в отношении ООП и 1С, так как ваша мысль разрознена по комментариям и сводится к критике комментариев других участников. В списке ваших публикаций я не нашел статей посвященных ООП, а приведенные тут ссылки на форум опять-таки, ссылаются на ваши критические комментарии обращенные к другим участникам дискуссии.
Я понимаю, что стили изложения своей точки зрения у всех разные, но было бы проще, если бы вы последовательно и полно изложили свой взгляд в отдельной статье.

Если же это не представляется возможным, то нам лучше не не вступать в дискуссию и разрабатывать тему 1С и ООП отдельно друг от друга, поскольку мне тяжело вычитывать такие разрозненные комментарии и я не вижу как бы это помогло в нашем общем деле изучения и совершенствования 1С.
Monex; CodeNull; DarkUser; talych; Nelli_A86; +5 Ответить
51. AlexO 135 18.06.12 11:52 Сейчас в теме
(50)
какую статью по "ООП в 1С" вы хотите? "Отсутствие ООП в 1С"?
уже была масса тем, где это обсуждалось - в том числе, в последних и с вами. Берете оттуда примеры "почему ООП" или "почему не ООП" - и статья готова :)
На форуме колективный разум давно уже набросал эту статью полностью.
user1706724; +1 Ответить
52. a-novoselov 1155 18.06.12 11:58 Сейчас в теме
(50) Либо очень тонкий тролль, либо неадекват... В любом случае дискуссия не будет продуктивной.
54. AlexO 135 18.06.12 12:01 Сейчас в теме
(52) a-novoselov,
все дискуссии надменных "тру1с-ников" без агиток 1с-а сводятся к одному:
"сам вы неадекват".
Неужели ничего ни за собой нет, ни в голове, что без 1с-ового вранья - ничего больше нельзя сказать?!
user1706724; +1 Ответить
56. a-novoselov 1155 18.06.12 12:14 Сейчас в теме
(54) С 1С работаю около трех лет, до этого C++, PL/SQL, Oracle, базы данных на 10 000 пользователей. Согласен, что 1С не самая лучшая система, 100 пользователей кое-как тянет с жутким скрипом. Но как может адекватный человек задать вопрос "что вы понимаете под "ввод по строке"?"... Как ни странно, понимаю "Ввод по строке", но отвечать на такие вопросы бессмысленно.
58. AlexO 135 18.06.12 12:34 Сейчас в теме
(56) a-novoselov,
Как ни странно, понимаю "Ввод по строке",

ответ настоящего 1с-ника. Гордитесь.
(57)
Угу. Не кормите, не надо.

а что еще может предложить тру-1сник? еще и a-novoselov подскажите в черный список занести - верно, я сильно буду переживать :)
user1706724; +1 Ответить
59. AlexO 135 18.06.12 13:03 Сейчас в теме
(56) a-novoselov,
до этого C++, PL/SQL, Oracle, базы данных на 10 000 пользователей.

значит, впрок не пошло. Мимо пролетело.
А меня - так вот уже достает, что ни новый проект на 1с - так куча ограничений, и часами придумывать новые и новые пути обхода 1с-ного кошмара.
А потом на форумах 1с - видеть решения "да все нормально", "да все хорошо", "ООП в 1С!" и "наши в футбол выйграют?"
user1706724; +1 Ответить
57. zfilin 2337 18.06.12 12:16 Сейчас в теме
(52) a-novoselov, Угу. Не кормите, не надо.
53. AlexO 135 18.06.12 11:59 Сейчас в теме
(50)
мне сложно понять

я не понимаю, почему вам сложно - я всегда пытаюсь найти и вытащить конкретные моменты несоответствия 1с парадигмам ООП.
А не обсуждать агитки 1с.
Но вы не хотите обсудить конкретные вопросы (например, почему "если такая ООП - такой бардак в Запутался я в терминологии 1С), а пытаетесь несуществующие, - на мой взгляд, - декларативные функции 1С обсудить в рамках "генерального сражения" - в одном месте, всеми силами, основные армии, статья противников - против агиток 1С :)
55. AlexO 135 18.06.12 12:09 Сейчас в теме
Я вот - благодаря вашей "объектной модели 1С", которую вы так рьяно защищете без каких-либо доказательств, - даже не могу программно поменять тип данных у реквизита или ПоляВвода, связанного с ним, потому как для уже созданного "объекта" свойство резко стало "ТолькоДляЧтения".
Ну, кто готов обсудить данную конкретную проблему "ООП в 1С"- почему это так, что делать, и где тут "объекты ООП"???
Ну, кому это интересно? Или агитки интереснее читать, а потом сыпать "да вы тролль, да неадекват, да наша 1с самая-пресамая!"??
Но только деградация вокруг да ветер пустоты...
66. пользователь 21.06.12 00:30
Сообщение было скрыто модератором.
...
70. yuraos 991 14.03.13 09:47 Сейчас в теме
Такс опять склоки насчет того нужен ООП или нет.

Уже как то скучно ... ну не нравится ООП 1с-овцам
и не когда они его не реализуют в платформе!!!

Хотя могли бы это и сделать...

Для меня довольно очевидным, что сама платформа 1С
была "списана" с MS Visual Basic for Application
что рулит приложениями Оффиса.
А там поддержка классов была с самого начала.
Хочешь - пользуйся, хочешь - нет
71. yuraos 991 14.03.13 09:56 Сейчас в теме
(70)
Другой вопросик меня интерисует:

Модуль объекта и Модуль менеджера объекта
фактичкски являются средством инкапсуляции и
повторного использования функционала, связанного с объектом (или классом объектов).

Покрайней мере я привык его так использовать ... в обычном приложении.

Но вот в управляемом приложении на платформе <= 8.2.14
столкнулся с такой бедой:
На стороне клиента не доступны
(как КЛАСС - извинят меня противники ООП)
ни сам Объект ни его Менеджер
Соответственно не доступен и функционал, инкапсулированный в них.

Изменилось ли что-нибудь по этой части в >= 8.2.15 и 8.3.х ???
72. AlexO 135 14.03.13 10:06 Сейчас в теме
(71) yuraos,
ни сам Объектни его Менеджер

В УФ они никогда и не были доступны. Только контекст самой формы, который надо передавать на сервер, там обрабатывать, и возвращать обратно в форму, т.к. контекст формы - недоступен напрямую на сервере.
Ни в 8.2.14, ни в каких других 8.2. Ни в 8.3.
Это - управляемое приложение, поделка от 1С, в которой ценности - на грош, зато понтов и мусора - на грузовик.
А в толстом клиенте все так и осталось - объекты доступны в контексте формы.
Только клтиента нет как такового.
А в УФ и клиента не сделали нормального, и перлопатили и извратили все так, что все приходится делать через одно место сервер на клиента, и с клиента - на сервер.
user1706724; sound; yuraos; +3 Ответить
74. yuraos 991 14.03.13 15:10 Сейчас в теме
(72)(73) AlexO,
- УРА! МЫ НАУЧИЛИСЬ ВЫРЕЗАТЬ ГЛАНДЫ!!!
- ФУУУУУУ!!!
- Через ЖЖЖЖЖЖЖЖЖЖЖЖЖ!!!!
- УУУУУУУ!!!
---
Нелюбовь к ООП, переросшая уже на клиент-серверный уровнь !!!
75. yuraos 991 06.04.13 08:44 Сейчас в теме
(72) AlexO,
самое забавное во всем этом клиент-серверном мракобесии,
что не всегда для работы формы
ей нужно обращаться
к базе занных и следовательно к серверу.
---
на этот случай наверное в свойствах
корня конфигурации добавили галку
"Использовать обычные формы в управляемом приложении"
73. AlexO 135 14.03.13 10:09 Сейчас в теме
(70) yuraos,
что сама платформа 1С
была "списана" с MS Visual Basic for Application

и близко не стояла.
То, что вам кажется, будто АВТОМАТИЗАЦИЯ (rapid app dev) в чем-то похожа - то и тут ничего подобного: MS идет от задач программирования (если пишет СРЕДСТВО ПРОГРАММИРОВАНИЯ), а 1С - от содержания плевка, упавшего с потолка, и оставленного там неизвестно кем неизвестно когда.
76. Lacrimosa0000 99 21.05.13 12:26 Сейчас в теме
Обсуждение не менее интересное и познавательное, чем статья. Спасибо, уважаемые комментаторы.)
77. yuraos 991 21.05.13 17:29 Сейчас в теме
(76) Lacrimosa0000, ага, пожалуста!
---
многие тут узнают, что это за зверь ООП
...
и что некоторые заслуженные товарищи ЕГО за что-то невзлюбили.
78. Alex1Cnic 148 22.05.13 11:36 Сейчас в теме
Объясняется просто и понятно... ПЛЮССС
79. awk 741 23.05.13 00:10 Сейчас в теме
А что такое ООП? ООП на PHP5 это эмуляция классов через модули. На JavaScript ООП реализовано через прототипы и классов там нет и в помине. В джаве, с++ и т.п. классы определены как синтаксис, но в двоичном коде отсутствуют.

Так кто сказал, что ООП - это классы?

ООП Это инкапсуляция, наследование (прототипирование) и полиморфизм.

Как реализовать полиморфизм в 1С - я знаю. (Причем, спецификация на уровне платформы не поддерживается - ковыряйся программист)

Как реализовать на 1С инкапсуляцию? Ответа - нет.
Как реализовать на 1С наследование (прототипирование)? Ответа - нет. Тот что есть - крив.
80. tindir 23.05.13 07:15 Сейчас в теме
Блин. статья интересна. теперь наверное во всех крупных решениях количество общих модулей уменьшится и все они уйдут в менеджеры,и УРА! опять переписывать все не типовые ВПФ и Отчеты! А тка идея очень хорошая и удобная. все методы для отдельных объектов будут только храниться в объекте (по идее должны)
82. yuraos 991 23.05.13 13:56 Сейчас в теме
(80) tindir,
все будет так хорошо и красиво только в обычном приложении
...
а в управляемом приложении не все так, как бы хотелось
с учетом замечаний в (71)
---
сам недавно для совместимости с управляемыми извращениями
часть функционала перетягивал из модуля объекта и модуля менеджера объекта
в те самые общие модули
81. LexSeIch 210 23.05.13 08:58 Сейчас в теме
Мир этому дому! Статья интересная. Коротко и ясно.
83. sound 535 27.05.13 11:43 Сейчас в теме
Мне вот тоже кажется, что очень уж много тупизны (ну или неразберихи, сложностей, всего того, о чем так рьяно пишет в каментах AlexO) они для этих управляемых форм понаворотили. Еще не знаю, что окажется сложнее для разработчика: переход с 7-ки на 8-ку, или переход с обычных форм на управляемые.
Вообще рассуждая на тему "Зачем они это сделали" на ум приходит две мысли:

1) Или пока не доделали, и как обычно дали сырой инструмент.
2) Или просто философия фирмы 1С направлена на какое-то запутывание чтоли, чтоб уж если ты специалист по 1С (не
в смысле сдал их же тупой экзамен на спеца), то уж точно никто другой, кроме таких же "собратьев 1С", пришедший в "отрасль 1С" "из других языков и программ" не смог бы сходу разобраться в логике работы прикладного решения, и не смог бы "вот тут мне добавить колонку" или "слегка подправить отчетик" - дайте новичку разобраться с логикой работы оборотно-сальдовой ведомости в бухгалтерии или с регламентированным отчетом. И чтобы без этого спеца было НуНиКакНеОбойтись, а что, вполне себе и франчам нормальное обеспечение куска хлеба. То бишь, сводится все это к какой-то банальной наживе чтоли, хотя может и не очень удачное выражение. Нет, я не против того, что любой труд должен быть оплачен, но получается у 1С все как-то через одно место.

По теме: статья, несмотря на всю критику 1С, в принципе, полезная :)
ybatiaev; +1 Ответить
84. zfilin 2337 27.05.13 12:07 Сейчас в теме
(83) sound, А вы посмотрите видео с четвертой встречи клуба - http://club-1c.zfilin.org.ua/2013/03/blog-post.html

На мой взгляд управляемые формы подчинены общей идее платформы и очень органично в нее вписываются. Ну, за исключением некоторых неприятных деталей, о которых тоже говорится в видео.
85. sound 535 27.05.13 12:36 Сейчас в теме
(84) Не смог посмотреть это видео, что-то со звуком, не исключаю что глюки с моей стороны.
Может быть в общую идею управляемые формы и вписываются органично, но вот в мой мозг однозначно нет :). Если же под "неприятными деталями" подразумевается постоянный "перегон" данных с клиента на сервер, и запутывание разработчика, то это имхо маразмом попахивает, хотели сделать просто и удобно, а получилось сложно и запутанно, зато органично. Ну не знаю, не знаю, время все рассудит =)
86. zfilin 2337 27.05.13 12:56 Сейчас в теме
(85) sound, Нет, перегон данных между клиентом и сервером это как раз одна из лучших фишек управляемых форм.
Жаль, что со звуком не получилось, собственно, доклад изначально рассчитан на то, чтобы "уложить управляемые формы в голову разработчику". Это его главная тема.
87. sound 535 27.05.13 15:16 Сейчас в теме
Прошу прощения у автора за оффтоп!

(86) посмотрел таки видео, не до конца правда, досмотрел до 10-й минуты 3-й части, утомило: во-первых, качество видео плохое, не видно что там на доске. Во-вторых, без обид, доклад так себе: докладчик путается в терминологии, доклад не структурирован, логика очень плохо просматривается, может быть я, как человек закончивший физмат, предъявляю слишком высокие требования к бесплатному видео? :). В-третьих, пока не увидел каких-то практических доводов, одна теория, похожая, кстати, на какие-то агитки от фирмы 1С (выражаясь языком AlexO), чувствуется какая-то заинтересованность в том, чтобы все не ломали, не украли, и под УФ писали, и наверное только у вас все 1С-ное покупали :)

Так что "уложить управляемые формы в голову разработчику", во всяком случае в мою голову, таким видео точно не удастся, ну либо я просто не разработчик вовсе, чего я собственно не исключаю :)

Ну и в-четвертых, признаюсь честно, не слишком-то много я в принципе знаком с этими управляемыми формами, поэтому сильно спорить и доказывать свою правоту не стану. Но с другой стороны, говоря о типовых конфигурациях фирмы 1С, так сказать о венце творения, что-то не заметил я тех дико функциональных конфигураций, которые бы враз затмили собой все те типовые, которые написаны под обычные формы, как 8-ка не затмила 7-ку.
Вот есть у меня типовой "Документооборот", по тупости начальства внедряли не сами, а услугами франчей, заплатили как обычно просто гигантскую сумму денег. "Документооборот" на управляемых формах, вот фигня фигней, других слов нету! И ладно бы он прям ЛЕТАЛ, а то ведь тупит, даже не так, ТУПИТ страшно. Может "тупить" от слова "типовой"? :) Весь функционал свелся к переписке служебками "чтоб история была", кароче можно было просто почту нормальную сделать, или сделать гораздо функциональнее и чтоб летало на 1С 7.7.

Да, наверно закупив еще сервачок на пару лямов все завертится, но что-то мне подсказывает что дело-то было не в бабине. Вот когда фирма 1С перепишет все типовые (или уже?) на УФ, и своим веским словом в одночасье перестанет обновлять типовые на обычных формах, как она обычно это делает (это бизнес, детка!), вот тогда я задумаюсь о серьезном изучении УФ, может заодно за это время жизнь изменится к лучшему :)
88. zfilin 2337 27.05.13 15:59 Сейчас в теме
(87) sound, Что ж, в любом случае желаю вам все-таки "разобраться и уложить", когда возникнет такая необходимость.
DarkUser; sound; +2 Ответить
89. yuraos 991 27.05.13 16:20 Сейчас в теме
(87) sound,

Вот есть у меня типовой "Документооборот", по тупости начальства внедряли не сами, а услугами франчей, заплатили как обычно просто гигантскую сумму денег. "Документооборот" на управляемых формах, вот фигня фигней, других слов нету! И ладно бы он прям ЛЕТАЛ, а то ведь тупит, даже не так, ТУПИТ страшно.

Это, я бы сказал, художественная правда жызни!
nikki_00; +1 Ответить
90. yuraos 991 27.05.13 16:23 Сейчас в теме
(89)
ЗЫ
---
А еще те, у кого "Документооборот" в клиент-серверном варианте работает
(так сказать в родной для управляемого приложения обстановке)

те наверное знают об ошибках времени исполнения,
связанных с передачей мутабельных типов с клиента на сервер...
91. yuraos 991 27.05.13 16:24 Сейчас в теме
(90)
ЗЫ
ЗЫ
---
таких ошибок по идее недолжно быть,
если разработчики тестировали свою конфу для клиент-серверной базы!
92. batlerrett 03.06.13 10:49 Сейчас в теме
Хорошая годная статья по практическому применению.
Жаль что переросла в холивор на тему 1С - это плохо/хорошо.
1С изначально придумана для решения конкретных проблем.
Думаю размышления к какой области относится 1С, должны волновать "бородатых" теоретиков),
а у нас конкретные задачи учета.
93. vvirus 20 27.01.14 12:29 Сейчас в теме
Модуль Менеджера - мощьная идея.
для реализации обращений ко всем у типу метаданных

можно убрать шаманство в виде хранения секунд в комментарии перечислений с последующим получением ч/з

ЭлементПеречисления.метаданные().Получить(ЭлементПеречисления.метаданные().Индекс)).Комментарий;

убрать функции в общих модулях и переложить их в модуль менеджера

а в части иммитатора ООП
как создание своего класса можно использовать внешние обработки

94. talych 17 28.02.14 11:21 Сейчас в теме
Спасибо за статью. Всё расписано чётко. Насчет холивара, согласен что УФ в 1С через одно место. Вместо упрощения программирования получили нечто монстрообразное ((
95. Патриот 450 21.08.14 10:51 Сейчас в теме
(0) +
статья хороша, она позволяет проследить аналогию методов решения некоторых проблем разработчиками платформы 1С с другими языками программирования, а то, что эта аналогия не является биективной и всеобъемлющей, не стоило таких сильных нападок на статью, кои разгорелись в комментах.
(93) vvirus,
как создание своего класса можно использовать внешние обработки
абсолютно согласен - у обработки есть свойства (реквизиты и экспортные переменные модуля объекта) и методы (экспортные процедуры и функции модуля объекта), есть конструктор экземпляра объекта
ОбработкаОбъект = ВнешниеОбработки.Создать("полный путь к файлу");
, деструктора в явном виде нет, но мы всегда можем принудительно осуществить его вызов, убив все ссылки на объект. Конструктор не позволяет передать параметры, в соответствии с которыми создастся объект, но всё решается одной строчкой кода
ОбработкаОбъект.Инициализировать(куча параметров);
, где "Инициализировать" это заранее прописанный программистом метод обработки, выполняющий доконструирование объекта (первоначальную инициализацию, в зависимости от переданных параметров). А теперь вопрос, а почему только об обработках речь? Вышеописанные характеристики присущи даже формам объектов, не говоря уже о документах и справочниках. Форму можно создать, не создавая при этом объект, в ней есть всё те же импровизированные свойства методы и конструктор с деструктором. Кстати, если мы хотим нагрузить деструктор какими-то более сложными действиями, чем убийство объекта, то в можно как и в случае с методом "Инициализировать" написать метод "ДеИнициализировать". А в случае с формой так вообще можно использовать событие "ПриЗакрытии", если до этого было событие "ПриОткрытии".
life-wayfarer; +1 Ответить
96. zfilin 2337 21.08.14 23:51 Сейчас в теме
97. perepetulichka 886 27.04.17 11:55 Сейчас в теме
Но нужно помнить, что в 8.2 нельзя просто так обратиться к методам модуля объекта (без записаного объекта ...

То есть получается, что обращение совершенно нового незаписанного объекта к процедуре модуля объекта "ПередЗаписью" невозможно :)
Основное назначение процедуры одной фразой отправлено в хлам.
98. zfilin 2337 28.04.17 12:20 Сейчас в теме
(97) Да, слово "записанного" в этой фразе можно убрать. Поскольку речь шла о доступе к модулю объекта извне (не из контекста самого объекта), то в этом смысле нужен какой-то существующий в базе объект (записанный).
Однако, на самом деле не обязательно. Можно создать объект, держать его в памяти, обращаться к его методам модуля, а потом спокойно его обнулить не записывая в базу. Но объект все-равно нужен.
Оставьте свое сообщение