![]() |
![]() |
![]() |
|
Хотите ли вы переменные Static в 1С? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
Гений 1С
гуру
20.07.07
✎
11:35
|
сабж.
|
|||||||
1
Ненавижу 1С
гуру
20.07.07
✎
12:03
|
Но это не самое необходимое
да |
|||||||
2
Ненавижу 1С
гуру
20.07.07
✎
12:18
|
Пора вернуться к вопросу о написании платформы, ты уже снова созрел
|
|||||||
3
Mort
20.07.07
✎
12:29
|
Лучше модификаторы доступа private, public и модификатор const для реквизитов и функций.
нет |
|||||||
4
vogenut
20.07.07
✎
12:38
|
А неэкспортируемые переменные модуля разве не static?
нет |
|||||||
5
Гений 1С
гуру
20.07.07
✎
12:53
|
(4) речь идет о переменных функций. А в общих модулях нельзя юзать глобальные переменные.
|
|||||||
6
SergeyKVM
20.07.07
✎
13:37
|
зачем такой изврат
нет |
|||||||
7
Dionisious
20.07.07
✎
13:40
|
Почему я угадал автора?
|
|||||||
8
vogenut
20.07.07
✎
13:42
|
(5) Дык, даже если будут статические переменные функций, то в общих модулях их все равно нельзя будет использовать. Общие модули не должны иметь состояния.
|
|||||||
9
Фокусник
20.07.07
✎
13:45
|
(7) +1
|
|||||||
10
Гений 1С
гуру
20.07.07
✎
14:02
|
(8) видишь ли, параметры сеанса имеют не все возможные в 1С типы, например таблица значений или структура не канают.
|
|||||||
11
Гений 1С
гуру
20.07.07
✎
14:02
|
Банальное хеширование приходится делать через задницу
|
|||||||
12
dimzon
20.07.07
✎
14:04
|
(11)
тогда уж лучше говори о введении ООП - честные объекты со статическими методами и членами класса и.т.д. |
|||||||
13
romix
20.07.07
✎
14:34
|
Хочу ООП в 8-ке, без него все несерьезно.
Тем более что оно делается простым препроцессированием. |
|||||||
14
dimzon
20.07.07
✎
15:09
|
(13)
кхм кхм... по поводу "оно делается простым препроцессированием" - ой, батенька, гоните... |
|||||||
15
romix
20.07.07
✎
15:16
|
(14) Как же оно делается в 1С++?
|
|||||||
16
Vozhd
20.07.07
✎
15:16
|
(14) Возможно он имеет ввиду крайне ограниченную реализацию ООП (т.е. в стиле 1С)
|
|||||||
17
Ненавижу 1С
гуру
20.07.07
✎
15:21
|
romix прав, ООП по сути лишь удобная нотация, все реализуется процедурным языком:
1. инкапсуляция - анализатором проверки доступа 2. наследование - препроцессором 3. полиморфизм - препроцессором Именно об этом я говорил в SQL и ООП |
|||||||
18
Vozhd
20.07.07
✎
15:23
|
(17) "полиморфизм - препроцессором" - это как?
|
|||||||
19
Ненавижу 1С
гуру
20.07.07
✎
15:25
|
(18) это так
пишем Объект.Метод(); //не знаем какого типа объект препроцессор разворачивает данный код в виде: Если Тип(Объект)="Класс1" Тогда Объект.МетодКласс1(); ИначеЕсли Тип(Объект)="Класс2" Тогда Объект.МетодКласс2(); ... |
|||||||
20
vogenut
20.07.07
✎
15:26
|
(9) А хранилище значений заюзать нельзя?
(13) А чем ОП не устраивает? Тем более в 1С, например любой конкретный справочник есть наследник класса справочника абстрактного. Свои классы элементарно эмулируются структурами. (14) Извращение. Все можно сделать гораздо проще и без препроцессора. |
|||||||
21
Живой Ископаемый
20.07.07
✎
15:31
|
Так себе и представляю, что тех кто ответил "хотим", Гений 1С дает их ники дьяволу - и говорит - эти люди хотят переменные статик и готовы продать свою душу. Во сне к ним приходит дьявол и говорит:
-- Хотел переменные "статик" - продавай душу? Те думают что сон, говорят, ну ладно. бери, только отстань... Короче, накпил нужное количество душ, потом дьявол идет к программистам 1С и стращает их адскими муками, если те не сделают переменные "Статик". Программисты в 1С пугаются. и делают... |
|||||||
22
spock
20.07.07
✎
15:34
|
(19)никому больше не показывай это.
|
|||||||
23
Vozhd
20.07.07
✎
15:39
|
(19) При изменении одного модуля перепроцессить всю конфу? Сильное решение...
|
|||||||
24
vogenut
20.07.07
✎
15:41
|
(20) Вместо 14, надо читать 19
|
|||||||
25
dimzon
20.07.07
✎
15:44
|
(19) жесть
(21) чуствуется что у человека уже пятница в разгаре :) |
|||||||
26
marvak
20.07.07
✎
15:52
|
я не понимаю, почему не нравится использовать глобальные переменные?
нет |
|||||||
27
Vozhd
20.07.07
✎
15:54
|
(25) Может ему просто Нуралиев в кошмар является? :-)
|
|||||||
28
Ненавижу 1С
гуру
20.07.07
✎
16:07
|
Конечно это изврат, давайте тогда сделаем свое с полноценным ООП
|
|||||||
29
vogenut
20.07.07
✎
16:12
|
(28) Для начала, когда в 1С написано:
Объект.Метод(); адресат не известен! В 1С язык не типизированый. Практически все фичи ООП в 1С уже все есть - это обработка. Кто мне скажет чего не хватает из ОПП в 1С? |
|||||||
30
dimzon
20.07.07
✎
16:13
|
наследование реализации/интерфейсов как минимум
статических членов классов |
|||||||
31
vogenut
20.07.07
✎
16:23
|
(30) Наследование? Еще раз - язык 1С не типизирован. В ОПП языках ты должен делать виртуальные функции, что-бы была возможность их перекрыть. В 1С читай все функции виртуальные. Далее, в ООП языках типа С++ нет понятие класса во время выполнения, считай что описания двух классов мержуются на этапе компиляции. Кто тебе запрещает в 1С в классе наследнике держать поле с объектом базового класса? И делегировать вызовы ему, тем более это и в ОПП языках необходимо (делегирование).
Статические члены класса не более чем область видимости глобальной переменной. |
|||||||
32
Mort
20.07.07
✎
16:41
|
(29) Приватных членов
|
|||||||
33
Vozhd
20.07.07
✎
16:44
|
(31) Вы случайно не путаете наследование с агрегрированием? И почему за пример ООП языка Вы взяли С++, а не смолток?
|
|||||||
34
Vozhd
20.07.07
✎
16:44
|
(31) Кстати, как в 1С реализовать переменную класса? :-)
|
|||||||
35
Mort
20.07.07
✎
16:46
|
Например в одном доке изменение реквизита должно обязательно вызывать обработку.
Я то напишу УстановитьХХХХ(ххх) и буду её юзать. А вот кто придет после меня отчебучит Объект.ХХХ = 2 и накроется механизм медным тазом. Статические члены класса не более чем область видимости глобальной переменной - хорошо сказал.., я аж икать перестал. |
|||||||
36
dimzon
20.07.07
✎
16:51
|
(31) бррр... то-ли бред то-ли неграмотное (с точки зрения терминологии) изложение то-ли и то и другое...
|
|||||||
37
vogenut
20.07.07
✎
17:18
|
(32) Неэкспортируемая переменная модуля объекта обработки это и есть.
(33) Конечно, мой пример упрощен и больше смахивает на агрегацию. Для полноценного наследования надо по хорошему эмулировать механизм виртуальных функций, что-бы из базового класса вызывались наследники. По поводу С++, он как раз дальше от 1С, чем Smalltalk. (34) См. ответ на 32. (35) Не надо давать пользоваться реквизитами снаружи. Насчет икоты. Когда у тебя есть переменная в модуле приложения, то в коде ты пишешь МояПеременная = 123; сейчас ты хочешь писать МойКласс.МояПеременная = 123; Вот "МойКласс." это и есть область видимости. |
|||||||
38
Ненавижу 1С
гуру
20.07.07
✎
17:24
|
(37) статичные члены не просто для области видимости, они еще и наследуются классами наследниками
|
|||||||
39
Immortal
20.07.07
✎
17:24
|
некуй обосновывать.
опять из вирталёта трактор делать что ли собрались? нет |
|||||||
40
Ненавижу 1С
гуру
20.07.07
✎
17:25
|
(39) я прошу прощения, 1С вертолет?
|
|||||||
41
vogenut
20.07.07
✎
17:30
|
(38) Каким образом наследуются?
|
|||||||
42
Immortal
20.07.07
✎
17:35
|
(40) для того круга задач (как её позиционируют) - да.
|
|||||||
43
Vozhd
20.07.07
✎
17:47
|
(37) "Неэкспортируемая переменная модуля объекта обработки это и есть" - это переменная объекта. Спрашиваю еще раз, как создать переменную класса, а не объекта?...
|
|||||||
44
Vozhd
20.07.07
✎
17:48
|
(42) Для этого круга задач, 1С - тормозной каток, а не вертолет...
|
|||||||
45
Ненавижу 1С
гуру
20.07.07
✎
17:55
|
(41)
TA=class class var X:integer; end; TB=class(TA) end; 2 "полуглобальные" переменные TA.X и TB.X |
|||||||
46
Immortal
20.07.07
✎
17:55
|
(44) есть альтернатива?
|
|||||||
47
Vozhd
20.07.07
✎
18:00
|
(46) В качестве платформы альтернатив масса. В качестве готовых решений - почти нет, особенно для ларьков...
|
|||||||
48
vogenut
20.07.07
✎
18:20
|
(43) Прямой конструкции для создания переменных класса в языке 1С нет. Но эмулировать опять же можно, а лучше вообще стараться не использовать, ибо глобальные переменные (чем переменная класса и является) есть зло.
(45) Это как я понимаю Delphi? Т.е. в Delphi TA.X и TB.X по сути есть разные переменные или все-же одна? |
|||||||
49
dimzon
20.07.07
✎
18:53
|
(48) а как ты синглтон сделаешь?
|
|||||||
50
vogenut
20.07.07
✎
19:15
|
(49) к синглетону доступ должен быть через глобальный метод (или статический метод класса, если есть), а не через глобальную переменную. А уж как этот метод реализован это другой вопрос. Через глобальную переменную ли, через параметры сеанса или что-то еще.
|
|||||||
51
dimzon
20.07.07
✎
20:44
|
(50) ну так всё равно хранить то в глобальной переменной надо (вернее - в статическом приватном члене класса)
|
|||||||
52
floverr
20.07.07
✎
23:15
|
(0) надо было сделать 3-й вариант: Поффиг!
|
|||||||
53
Ненавижу 1С
гуру
23.07.07
✎
12:53
|
(48) да это делфи, это 2 разные переменные
|
|||||||
54
vogenut
24.07.07
✎
10:11
|
(53) Вы уверены в этом? Если выполнить следующий код, что будет в переменных?
TA.X := 1; TB.X := 2; К сожалению у меня нет Delphi, но насколько я знаю, ни один из известных мне языков не поддерживает такую фичу. |
|||||||
55
Vozhd
24.07.07
✎
10:14
|
(50) Привидете, пожалуйста, пример реализации синглтона только через статический метод класса.
|
|||||||
56
tesei
24.07.07
✎
10:18
|
вам шашечки или ехать?
нет |
|||||||
57
Регистратор
24.07.07
✎
10:21
|
увлекаться переменными для передачи чегото нехарашо, лучше передавать явно. на крайний случай использовать обычные
нет |
|||||||
58
Ненавижу 1С
гуру
24.07.07
✎
10:44
|
||||||||
59
vogenut
24.07.07
✎
10:55
|
(55) Например реализация с использованием параметров сеанса для 1С. Если объект является константным, то его вообще можно конструировать каждый раз при получении из БД или файла.
(58) Значит все таки одна переменная, а то я уж было испугался... |
|||||||
60
Ненавижу 1С
гуру
24.07.07
✎
11:14
|
(59) одна, а жаль...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |