Имя: Пароль:
1C
 
Хотите ли вы переменные Static в 1С?
0 Гений 1С
 
гуру
20.07.07
11:35
1. да 0% (0)
2. нет 0% (0)
Всего мнений: 0

сабж.
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) одна, а жаль...
AdBlock убивает бесплатный контент. 1Сергей