Имя: Пароль:
1C
1С v8
Использование паттернов проектирования
, ,
0 AlexSmolensky
 
26.07.12
23:45
1. Бывало 50% (1)
2. А что это? 50% (1)
3. Использую 0% (0)
4. Нет 0% (0)
Всего мнений: 2

Кто-нить использует паттерны в проектировании своих систем на 1С?
1 Asmody
 
26.07.12
23:46
это какие?
2 zak555
 
26.07.12
23:46

А что это?
3 Steel_Wheel
 
26.07.12
23:47
(0) А какие ты видишь паттерны, которые можно использовать в 1С?

Я только "Одиночка" и "Строитель"...
4 Asmody
 
26.07.12
23:47
нарисуйте синглетон на 1С, пожалуста…
5 Steel_Wheel
 
26.07.12
23:48
(4) Запуск 1-го экземпляра определенной обработки очень часто встречается. Реализуется через константу или файлы
6 Steel_Wheel
 
26.07.12
23:49
А на "Строителе" отчеты не через СКД сделаны (т.е. ты его используешь, но сделан он самой 1С)
7 Asmody
 
26.07.12
23:51
(5) да ой! типа я не могу использовать обработку _кроме как_ через константу?
8 vde69
 
26.07.12
23:51
(4) любой глобальный модуль можно расматривать как отдельный синглетон, правда без наследования.

хотя сейчас они стали делать 4 глобальника, один из которых преднозначен для расширения пользователем
9 Asmody
 
26.07.12
23:51
(6) то, что 1С'ю реализовано, мы в расчёт не берём
10 Asmody
 
26.07.12
23:53
(8) с фигали глобальник синглтон?
11 Asmody
 
26.07.12
23:53
(9)+ в платформе
12 Steel_Wheel
 
26.07.12
23:57
(9) ок, тогда строителя нет
(7) а как? Если обработка будет "смотреть" на константу, и перед открытием, если константа не в нужном состоянии, не открываться?
13 H A D G E H O G s
 
26.07.12
23:58
Кто все эти люди?
14 Steel_Wheel
 
26.07.12
23:59
+12 подразумеваем, что, когда обработка открывается и закрывается, она сама меняет константу. Если константа в "плохом" состоянии, обработка не открывается, появляется сообщение об ошибке
15 H A D G E H O G s
 
27.07.12
00:03
Паттерны, ООП (в 1С), UML и прочая, прочая, прочая напоминают мне математику.
Прикладники пытаются сделать науку из инструмента. Накуа? За красивые фразы платить больше не будут. Идите кодить, заводы стоят.
16 H A D G E H O G s
 
27.07.12
00:08
Автору пройти тест из
Матрица компетентности программиста
Вы созданы друг для друга.
Уверен, ты наберешь там неплохо баллов и поднимешь свое ЧСВ получше, чем (0) пост.
17 NS
 
27.07.12
00:18
(4) У меня куча загрузок с других баз, и для исключения конфликтов (дублей и наоборот пропавших документов) может быть запущен только один экземпляр обработки одновременно. Естественно сделано не через константу, и не через файлы - что чревато глюками, а через блокировку служебного элемента служебного справочника.
18 Asmody
 
27.07.12
00:19
(17) это не синглтон
19 NS
 
27.07.12
00:22
(18) интересно, а чем-же является этот служебный элемент этого служебного справочника?
20 Asmody
 
27.07.12
00:25
(19) элементом справочника он является
21 NS
 
27.07.12
00:26
(20) И чем же конкретно он не синглтон?
22 Asmody
 
27.07.12
00:28
написать синглтон на 1С можно, например, с помощью параметров сеанса, но это будет синглтон внутри сеанса, а не системы в целом
23 serffer
 
27.07.12
00:28
(21) а если через фоновое-регламентное задание с уникальностью по ключу.

Бывало
24 Asmody
 
27.07.12
00:29
(21) потому что это не синглтон
25 NS
 
27.07.12
00:29
(24) Синглотон это объект обладающий некоторыми свойствами.
Какими свойствами необходимыми синглтону он не обладает?
26 Asmody
 
27.07.12
00:31
классический синглтон — это объект, создание которого возможно только в единственном экземпляре. любое повторное создание того же объекта должно возвращать тот же объект
27 Asmody
 
27.07.12
00:32
(25) иди читай GoF, там всё написано
28 NS
 
27.07.12
00:32
(26)  Так и есть. Он создается (если не существует) при попытке прочитать выгрузку с удаленной базы.
Если он уже есть - то он не создается, а используется текущий объект.
29 NS
 
27.07.12
00:33
(27) А сам прочитать не можешь?
30 Asmody
 
27.07.12
00:33
фасады, фабрики на 1С делаются легко (ну почти), куча паттернов пеализует сама платформа
31 Asmody
 
27.07.12
00:35
(28) только "синглетонность" — это свойство самого объекта, а не его окружения
32 NS
 
27.07.12
00:39
(31) у объекта есть методы. И если при инициализации (использования метода инициализация) объекта в случае его существования мы не плодим новый, а взвращаем существующий, а в случае отсутствия создаем - это уже синлтон.
33 Asmody
 
27.07.12
00:40
(32) и? или в 1С внезапно появились конструкторы?
34 AlexSmolensky
 
27.07.12
00:41
(15) Программирование уже давно стало наукой, пока еще молодой и бурно развивающейся.
По своей сути, любая наука - это структурированные знания, которые используют в решении практических задач.

ООП родилось не как предмет для изучения студентами, а как необходимость. Хоть язык 1С и не является ООП, но зная принципы (не определения, а именно откуда ноги растут) можно создавать конфигурации, которые будет легче поддерживать и развивать.
35 NS
 
27.07.12
00:43
(33) Неважны средства которыми ты создал объект который ведет себя как синглтон.
Вот по сути определение сингтона -
Singleton* Singleton::Instance() {
 if(_instance == 0){
    _instance = new Singleton;
 }
 return _instance;
}
36 Asmody
 
27.07.12
00:46
(35) только ты забыл, что _instance у тебя — static.
37 H A D G E H O G s
 
27.07.12
00:46
(34) "молодой и бурно развивающейся"

Ага, ага. Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё.
38 Steel_Wheel
 
27.07.12
00:47
А если Синглтон себя не возвращает -- это не синглтон?
39 Asmody
 
27.07.12
00:47
как сделать так, чтобы обработка всегда открывала один и тот же экземпляр в рамках всей системы (а не сеанса)?
40 Steel_Wheel
 
27.07.12
00:47
Кмк, это не основная его черта. Основная -- единственность
41 H A D G E H O G s
 
27.07.12
00:47
(34) Принципы ООП никак не помогут
"создавать конфигурации, которые будет легче поддерживать и развивать".
42 NS
 
27.07.12
00:48
(36) Нет. У меня сотня пользователей в базе. И соотвественно у каждого свой _instance
43 Steel_Wheel
 
27.07.12
00:48
(39) Да, нетрудно, на самом деле. НО зачем?
44 Asmody
 
27.07.12
00:48
(38) синглтон вообще может ничего не возвращать. главное — что он один.
45 H A D G E H O G s
 
27.07.12
00:49
(39) Я могу это сделать. Но это будет пляска в ВК, OLE и медленно и печально.
46 Asmody
 
27.07.12
00:49
(42) тогда это не синглтон
47 Asmody
 
27.07.12
00:51
(45) допустим, я могу это сделать без вк и оле, но это точно будет медленно.
48 NS
 
27.07.12
00:51
(46) Если поищешь, то ты найдешь первое определение синглтона, 1994-го года. И этот служебный элемент справочника (с его методами) - чисто подходит под это опредление.
http://habrahabr.ru/post/147373/
49 Asmody
 
27.07.12
00:51
(47)+ и "честным" синглтоном это не будет
50 Steel_Wheel
 
27.07.12
00:52
(44) Так вот, в чем проблема тогда?
Алгоритм примерно такой:
1. При открытии обработка смотрит: есть ли блокировка на константе, элементе справочника, файле. Если есть -- выход, нет -- блокировка и п.2
2. Начинаем делать что-то в транзакции (или нет -- не важно, суть не в этом)
3. Если не произошло ошибок, то коммитим транзакцию
4. Освобождаем блокировку
5. Закрываемся...

Мы п.1 гарантируем единственность инстанса обработки для всех пользователей внутри системы. Да, мы ничего не возвращаем, но это и не надо.
51 Steel_Wheel
 
27.07.12
00:54
Хотя, можно и вернуть... Но я бы не стал. Возврат можно сделать за счет другого доступного элемента метаданных: там мы сохраним прогресс и восстановим состояние у копии
52 Asmody
 
27.07.12
00:56
(48) элемент справочника не может быть синглтоном по определению, ибо ничто не мешает мне насоздавать сотни элементов справочника, не записывая их. и это будут разные объекты
53 Asmody
 
27.07.12
00:58
(50) в том то и фишка, что при созжании объект должен создасться, либо вернуться тот же самый. а так это простой семафор, а не синглтон
54 Asmody
 
27.07.12
00:59
(51) у синглтона не может быть копии, либо все копии должны быть синхронизированы
55 Steel_Wheel
 
27.07.12
01:08
(54) ну, допустим, я могу вернуть копию. Хоть это и пляска с бубном.
Я сделаю, сериализацию в XML по тику. XML буду хранить в Хранилище Значений, или файле. Но это уже медленно.

Просто, в 1с, если мы гарантируем 1-у копию чего-нить, то это очень важное что-то, чтобы давать кому-то другому, доступ у нему.

(53) а как же 44: синглтон вообще может ничего не возвращать. главное — что он один.
Это ведь твои же собственные слова
56 NS
 
27.07.12
01:49
(54) В данном случае возвращается копия. Именно при использовании как семафора (непонятно почему синглтон не может использоваться как семафор)
http://yandex.ru/yandsearch?text=cbyuknjy+ctvfajh&from=os&lr=2
, при этом копия полноценная. И признак блокировки не лажается никогда.
57 NS
 
27.07.12
01:55
Вот интересное обсуждение, что-же такое синглтон.
http://www.ljpoisk.ru/archive/7211958.html
58 NS
 
27.07.12
01:58
синглтон может управлять очередностью доступа к себе в многопоточных программах
...
Синглтон - это объект, существующий в единственном экземпляре.
Синглтон - это НЕ объект. Это код на ЯП который обеспечивает существование объекта в единственном экземпляре.

Паттерны, шаблоны программирования - это НЕ объекты, а способы написания классов, создания и взаимодействия объектов.
...
И с такой точки зрения, этот объект, и его методы (инициализация, загрузка из удаленной базы, и установка/получение статуса блокировки для управления загрузкой) - это самый настоящий синглтон.
59 AlexSmolensky
 
27.07.12
12:41
(37) "Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё."
Кроме самих языков, развивается подход к решению задач. Например был метод Буча, сейчас Паттерны проектирования.
Так же есть и методы работы команды специалистов над проектом - что так же является частью программирования.

(41) "Принципы ООП никак не помогут"
Я так не думаю. В типовых конфигурациях явно видно их отсутствие:
1. В типовых конфигурациях излишне много используют глобальные переменные разного уровня, как результат - больше времени уходит на поддержку и невозможность повторного использования кода.
2. Срок жизни конфигурации - на сегодня составляет несколько лет, потом переписывают заново.