Имя: Пароль:
1C
 
исходный код калькулятора
0 ПульсЪ
 
24.09.10
12:12
есть у кого нибудь исходный код калькулятора:?

или хотябы помогите

Процедура Кнопка1Нажатие(Элемент)
перем1 = ЭлементыФормы.ПолеВыводаРезультата.Значение;
ЭлементыФормы.ПолеВыводаРезультата.Значение = перем1*10+1;
КонецПроцедуры
Процедура Кнопка2Нажатие(Элемент)
перем2 = ЭлементыФормы.ПолеВыводаРезультата.Значение;
ЭлементыФормы.ПолеВыводаРезультата.Значение = перем2*10+2;
КонецПроцедуры

и т.д.

Процедура КнопкаРавноНажатие(Элемент)
   
КонецПроцедуры

Процедура КнопкаСложениеНажатие(Элемент)
   
КонецПроцедуры


мне никак не осуществить процесс сложения.
1 IronDemon
 
24.09.10
12:15
В школе на информатике уже не учат этому?
2 ПульсЪ
 
24.09.10
12:16
я конечно могу сделать два поля вписывать в них циферки и складывать, но это не вариант
3 ПульсЪ
 
24.09.10
12:17
хочу сделать аналог калькулятора на винде
4 ПульсЪ
 
24.09.10
12:18
одно поле, кнопки - цифры и кнопки -операции и кнопка = равно
5 birkoFFFF
 
24.09.10
12:19
Куда катится этот мир...
6 Mikeware
 
24.09.10
12:19
нормальный курсовой для 1 курса.
7 birkoFFFF
 
24.09.10
12:20
(6) ты хотел сказать лабораторная работа ?
8 ПульсЪ
 
24.09.10
12:22
никто не поможет?
9 Адинэснег
 
24.09.10
12:22
(6) на курсовых обычно обвязки к БД уже пишут, или задачки из МатАна решают =)
10 H A D G E H O G s
 
24.09.10
12:23
(9) МатАн на курсовых не решают.
ВычМат решают.
11 Mikeware
 
24.09.10
12:26
(7)(9) Смотря на каких специальностях.
Впрочем, 2/3 миздюков  "с верхним образованием и опытом от 10 лет"  калькулятор не напишут...
12 patapum
 
24.09.10
12:28
(3) лучше перепиши винду целиком на 1с )))
13 ПульсЪ
 
24.09.10
12:29
хаха, смешно, ты сам то смошешь калькуль накатать, я почему то уверен что нет
14 patapum
 
24.09.10
12:30
(13) муторно и непонятно зачем. вообще и более сложные вещи писал
15 Mikeware
 
24.09.10
12:31
(14) Ну, зачем лабораторные/семестровые/курсовые делают? для обучения!
16 ПульсЪ
 
24.09.10
12:31
обучение на любом языке начинается с написания калькулятора
17 ПульсЪ
 
24.09.10
12:32
(14) согласен
18 IamAlexy
 
24.09.10
12:34
развод? :)
19 ПульсЪ
 
24.09.10
12:34
какой развод?)
20 ПульсЪ
 
24.09.10
12:36
просто (11)хорошо подметил
21 skunk
 
24.09.10
12:37
кошмар
22 patapum
 
24.09.10
12:38
(11), (20) заявление с потолка. статистику никто не составлял
23 ПульсЪ
 
24.09.10
12:39
вообщем пробывал делать, что то такое получается, суть должна быть понятна, но алгоритм не правильный.. в чем ошибка?

Процедура КнопкаРавноНажатие(Элемент)
если  ЭлементыФормы.ПолеВвода2.Значение = 0 тогда
         сложение = ЭлементыФормы.ПолеВыводаРезультата.Значение + ЭлементыФормы.ПолеВвода1.Значение;
иначе сложение = ЭлементыФормы.ПолеВвода1.значение + ЭлементыФормы.ПолеВвода2.значение;
КонецЕсли;      
ЭлементыФормы.ПолеВыводаРезультата.Значение = сложение;
КонецПроцедуры

Процедура КнопкаСложениеНажатие(Элемент)
   
если сч = 0 тогда
   ЭлементыФормы.ПолеВвода1.Значение = ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = 0;
   сч = 1;
Иначе  
   ЭлементыФормы.ПолеВвода2.Значение = ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = 0;
   сч = 0;
конецЕсли;




КонецПроцедуры
24 skunk
 
24.09.10
12:39
это полный миздец
25 skunk
 
24.09.10
12:40
блин я тормоз ... седня же пятница
26 Адинэснег
 
24.09.10
12:40
тролль?
27 ДенисЧ
 
24.09.10
12:41
стр = "";
ВвестиСтроку(стр, "Введите выражение", 100);
Сообщить("Результат:");
Сообщить(Шаблон("["+стр+"]"));
28 patapum
 
24.09.10
12:43
(26) нет, очень культурный человек. сам не может, считает что другие тоже, но совета спрашивает
29 Mikeware
 
24.09.10
12:44
(23) "... в чем ошибка???
-В ДНК!!!"©
30 ПульсЪ
 
24.09.10
12:44
(28) не ну извини, все только *издят не поделу, один базар, как на рынке, а толку нету, я то же могу зайти куда нить постебатсья, поумничать, а итог нулевой
31 ПульсЪ
 
24.09.10
12:48
(27), спасибо, интересный вариант) только не совсем то что нужно
33 skunk
 
24.09.10
13:33
по-моему пора тебе отдохнуть децел
34 Ненавижу 1С
 
гуру
24.09.10
13:34
35 МихаилМ
 
24.09.10
13:35
(32) флудеры поднимают Вашу не очень интелектуальную тему уровня уроков информатики в школе.
36 ПульсЪ
 
24.09.10
13:37
(33) а что я что то не то сказал?
37 ПульсЪ
 
24.09.10
13:37
(33) или неправду
38 ПульсЪ
 
24.09.10
13:40
(35) 1) ну в школе на информатике програмирование не проходят, ну покрайней мере в моей школе не было
2) для Вас с Вашим опытом она может и не очень интелектуальная, а для меня с моим опытом еще как интелектуальная.
39 skunk
 
24.09.10
13:41
(36)подумай ... повториться накажем
40 skunk
 
24.09.10
13:42
(38)яндексом вас тоже не учили пользоваться?
41 ПульсЪ
 
24.09.10
13:44
(39) Ну возможно переборщил немногов (32)... это да... но с другой стороны неприятно, когда спрашиваешь что то, а тебя стегать начинают не предложив не одного варианта.. такое ощущение что все сразу такими умными родились, что сели и сразу все сделали.
42 Ненавижу 1С
 
гуру
24.09.10
13:44
(41) в (34) прям таки ни одного?
43 ПульсЪ
 
24.09.10
13:45
(40) я и яндексом, и гуглем.. поиск результата не дал.. под 1С калькуль нашел одну тему, где такой же вопрос поднимался. результат - одинаковый, только одни разговоры
44 ПульсЪ
 
24.09.10
13:46
тема кстате на этом же форуме
45 ПульсЪ
 
24.09.10
13:47
поиск дает такое: ????? ???????????

возможно прокси виноват
46 Mort
 
24.09.10
13:49
Не удивлюсь если окажется, что 50% 1С-ников не могут осилить накатать калькулятор.
47 ДенисЧ
 
24.09.10
13:49
(46) 80%...
48 МихаилМ
 
24.09.10
13:51
(41)
некоторые сразу родились, некоторые учились.
профессия программиста подразумевает высшее образование.
И как следствие - умение программировать не только на 1с.

А Ваш вопрос говорит, что уровень Вашей компетенции в вопросах
пограммирования ниже базовых.
Следственно понимание Вашей проблемы и отзывчивость
Вы надёте на форуме студентов и школьников а не разработчиков.
49 skunk
 
24.09.10
13:52
50 skunk
 
24.09.10
13:53
(46)а чего там катать-то?
51 ДАртаньян
 
24.09.10
13:53
тупые и жадные такие тупые и жадные. (0) человеку интересно, не всё-ж время на скд отчёты по продажам ваять, может скоро займётся написанием отказоустойчивого и быстрого движка базы данных... на 1с скрипте...
52 skunk
 
24.09.10
13:54
там больше умение картинки рисовать надо умееть... абы красявый был
53 Mort
 
24.09.10
13:56
(50) В этом то и вся печаль.
54 ДАртаньян
 
24.09.10
13:56
или будет из трактора велокат делать. Богата левшами земля русская
55 ПульсЪ
 
24.09.10
13:56
(48) я на 3 курсе высшего, до этого колледж, изучал паскаль, делфи, с програмированием знаком.

на форму школьников и студентов ответы не найти.

людей, которые родились и сразу сели програмировать и все делали, таких нету.. все учатся годами
конечно,  если  нас закормят продуктами ГМО , то такие умники может и начнут появляться
56 Ненавижу 1С
 
гуру
24.09.10
13:57
(0) автор, сколько платишь?
57 skunk
 
24.09.10
13:57
(55)я до первого курса уже вирусы писал ... а ты на 3 еще до сих пор калькулятор осилить не можешь?
58 Mort
 
24.09.10
13:58
(55) На третьем курсе и ещё дискретные автоматы не проходили?
59 ПульсЪ
 
24.09.10
14:00
(57) ну ты молодец, а я внонтакте ломал, да пароли угонял от мыла и что?

(55) нет не проходили
60 Я не курил
 
24.09.10
14:03
Автор, ты серьезно?
61 ДАртаньян
 
24.09.10
14:04
(55) покупаешь самый дешёвый китайский калькулятор и долго не отрываясь на него смотришь. Потом закрываешь глаза и представляешь, что ты - большой такой калькулятор. У тебя есть кнопочки с закорючками и окошко, где ты показываешь результат.. когда на кнопочки нажимают, ты пикаешь.. сидишь так недельку не двигаясь, и из тебя получится хороший овощ(калькулятор).
62 ПульсЪ
 
24.09.10
14:05
(61) при таком раскладе, скорее из меня получится хороший овощЪ)
63 skunk
 
24.09.10
14:07
(59)конечно ... звидеть не мешки тягать ... хацкер незнающий как написать на калькулятор это нонсен
64 ПульсЪ
 
24.09.10
14:09
(59) вот вот, ты хоть знаешь кто такой хакер и историю происхождения?) то же мне вирусописец)

ща сразу в гугль или яндекс)
65 ПульсЪ
 
24.09.10
14:10
(64) ну и что такое вирусная матрица?)
66 Mort
 
24.09.10
14:10
(61) На такое мероприятие травы не напасёшься.
67 ПульсЪ
 
24.09.10
14:11
(66) )
68 skunk
 
24.09.10
14:13
(66)+1 ...

(64)откуда ... ты вон лучшее шлепай калькулятор пёши ищо ... как осилишь я тебе попрошу сказать пароль к моему мылу ... ну а там будем глядеть, что ты знаешь о матрицах, хакерах и историю их происхождений
69 strange2007
 
24.09.10
14:17
Помню у нас 2 прогера почти месяц ваяли мега калькулятор для проги, которая на MS SQLе крутилась. Сделали! Были баги и мега ограничения но сделали. Пришел студент и предложил юзать execute, типа спрашивать у пользователя что посчитать и пихнуть SQLю
Вот чем-то напоминает ветка
70 ПульсЪ
 
24.09.10
14:20
(64) дык я не хвастаюсь тут что я такой сякой, я просто решил попросить умных людей помочь с вопросом, а вместо помощи получил 68 сообщений флуда.. как по твоему это нормально? меня когда кто либо спрашивает о чем нибудь, я если знаю помогаю, мне вот не в облом помочь в чем то кому то.
71 skunk
 
24.09.10
14:21
в наше время путь становления программера начинался с разработки своего калькулятора и текстового редактора ... интересно с чего начинают программировать теперешнее поколение некст
72 Я не курил
 
24.09.10
14:21
В упрощенном виде будет примерно как-то так:

Перем ВыражениеДляВычисления;

Процедура Кнопка1Нажатие(Элемент)
   ЭлементыФормы.ПолеВыводаРезультата.Значение = ЭлементыФормы.ПолеВыводаРезультата.Значение+"1";
КонецПроцедуры
Процедура Кнопка2Нажатие(Элемент)
   ЭлементыФормы.ПолеВыводаРезультата.Значение = ЭлементыФормы.ПолеВыводаРезультата.Значение+"2";
КонецПроцедуры

...

Процедура КнопкаРавноНажатие(Элемент)
   
   ВыражениеДляВычисления = ВыражениеДляВычисления + ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ВыражениеДляВычисления = Вычислить(ВыражениеДляВычисления);
   
КонецПроцедуры

Процедура КнопкаСложениеНажатие(Элемент)
   ВыражениеДляВычисления = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение) + "+";
   ЭлементыФормы.ПолеВыводаРезультата.Значение = "";
КонецПроцедуры
...
73 GROOVY
 
модератор
24.09.10
14:21
(71) А корень и факториал твой калькулятор считать будет?
74 GROOVY
 
модератор
24.09.10
14:22
(73) к (70)
75 skunk
 
24.09.10
14:23
(70)а чем тебе хвастаться ... тем, что ты на третьем курсе не можешь написать кальк? ... что ты угонял пассворды от мыла и приэтом не увидал ссылку по которой сможешь скачать целых два каклькулятора?
76 Mort
 
24.09.10
14:23
77 el-gamberro
 
24.09.10
14:23
(70) В проблема то калькулятор написать?
78 skunk
 
24.09.10
14:23
(73)неужели и это проблема?
79 Я не курил
 
24.09.10
14:24
ТОесть так правилнее

Перем ВыражениеДляВычисления;

Процедура Кнопка1Нажатие(Элемент)
   ЭлементыФормы.ПолеВыводаРезультата.Значение = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение)+"1";
КонецПроцедуры
Процедура Кнопка2Нажатие(Элемент)
   ЭлементыФормы.ПолеВыводаРезультата.Значение = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение)+"2";
КонецПроцедуры

...

Процедура КнопкаРавноНажатие(Элемент)
   
   ВыражениеДляВычисления = ВыражениеДляВычисления + ЭлементыФормы.ПолеВыводаРезультата.Значение;
   лементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
   
КонецПроцедуры

Процедура КнопкаСложениеНажатие(Элемент)
   ВыражениеДляВычисления = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение) + "+";
   ЭлементыФормы.ПолеВыводаРезультата.Значение = "";
КонецПроцедуры
...
80 Mort
 
24.09.10
14:24
(71)
- Зарегился на мисте
- Подал резюме на отстатыщ
...
- profit !
81 Mort
 
24.09.10
14:27
(72) Садись два.
82 ПульсЪ
 
24.09.10
14:30
(79) да, первый вариант не прокатил, ща этот попробую, суть вроде понимаю, ща сек
83 ДАртаньян
 
24.09.10
14:30
(70) имхо, миста=90% флуда
(0) как я понимаю, для (0) не нужны конечные автоматы, для одинарных операций тупо вызывать функцию с агрументом из поля ввода по кнопке(1/x например), для операций с двумя аргументами( первый сохранять во вторую переменную, получать значение операции(+,-,/,* - всего 4 ), по нажатию = вычислять переменная1 операция переменная2 -  всё это пишется за день в опохмелённом состоянии. если хочется каких нибуть крутых функций вроде е в степени х, или статистические ... придётся матан вспоминать.
84 ado
 
24.09.10
14:32
(58) Ты чего ругаешься. Не видишь, человек делфи, паскаль изучал.
85 ПульсЪ
 
24.09.10
14:34
(79) спасибо огромное хороший человек) суть понял, доделал все рабит, дальше сам теперь все остально сделаю!)) еще раз спасяб!)
86 ado
 
24.09.10
14:36
(83) То что ты описал, это и есть конечный автомат ;-)
87 ДАртаньян
 
24.09.10
14:42
не обязательно(даже излишне) знать теорию конечных автоматов, чтобы написать калькулятор. Нужно чуть-чуть мозга(intelligence = 11) и методом тыка всё получится
88 ado
 
24.09.10
14:49
(87) Не обязательно, но отнюдь не излишне.
89 Mort
 
24.09.10
14:52
А после нажатия "+" первая переменная стирается? Не пойдет...
90 trdm
 
24.09.10
14:52
(1) Задачка совсем детская...
91 ПульсЪ
 
24.09.10
14:54
(89) она не стирается, а просто поле очищается
92 trdm
 
24.09.10
14:54
(71) >>>интересно с чего начинают программировать теперешнее поколение некст.
С пивной бутылки и пересадки мозга :)
93 ПульсЪ
 
24.09.10
14:55
(79) нашел косяк при вычислении больших чисел
{(1,1)}: Неправильная константа типа Число

маленькие считает, большие нехочет
94 skunk
 
24.09.10
14:55
(93)вау
95 Mort
 
24.09.10
14:56
(91) Я это и имел ввиду. Запусти вин калькулятор и посмотри как там. Кажется мелочь, а на самом деле серьёзный провал в функциональности.

А если нажимать 123 + 234 + 345 ? Или нужно всё время "равно" дергать?
96 ПульсЪ
 
24.09.10
14:57
(91) это позже доделаю
97 skunk
 
24.09.10
14:57
(92)всмысле? ... им что от обезъян мозг пересаживают?
98 ShoGUN
 
24.09.10
14:57
Жесть. Не, я понимаю, я сам когда дотнет впервые открыл - взялся там рисовать свой калькулятор) Но вроде я в курсе был как калькулятор функционирует...
99 PuhUfa
 
24.09.10
15:01
(46)(47) а не провести ли на форуме конкурс "кто красивее нарисует калькулятор"? -)
100 skunk
 
24.09.10
15:05
сотка
101 skunk
 
24.09.10
15:06
(99)сделай ©Волшебник
102 ПульсЪ
 
24.09.10
15:09
(99) ага сделать конкурс, и объявить его тогда, когда  до конца осталось часов 5 ) работ будет не много)
103 ПульсЪ
 
24.09.10
15:11
{(1,1)}: Неправильная константа типа Число
<<?>>1 009+99 999
{(1,7)}: Неправильная константа типа Число
1 009+<<?>>99 999
104 skunk
 
24.09.10
15:12
жестко
105 ЗлобнийМальчик
 
24.09.10
15:17
(11) это какой? с обратной польской записью придется сначала матчасть почитать. А простенький виндовый - не вижу даже в теории проблем
106 ЗлобнийМальчик
 
24.09.10
15:20
(0) чернобыль походу повлиял...
107 skunk
 
24.09.10
15:20
в винде уже далеко непростенький калькулятор ... кстати да согласен ... виндовый кальк не напишет процентов 80 одинэснигов
108 ShoGUN
 
24.09.10
15:23
(107) Инженерный? Или простой? :) Или полный аналог, переключаемый?
109 ПульсЪ
 
24.09.10
15:25
{(1,1)}: Неправильная константа типа Число
<<?>>1 009+99 999
{(1,7)}: Неправильная константа типа Число
1 009+<<?>>99 999

ошибка исчезает если делать полезначение ПоляВвода не число а строка
110 skunk
 
24.09.10
15:29
(108)в винде сейчас три калькулятора ... и именно его с имитировать у многих обламается...
111 ЗлобнийМальчик
 
24.09.10
15:30
(107) я про упрощенную версию  - вроде в (0) именно такой надо сделать
112 ЗлобнийМальчик
 
24.09.10
15:31
+(111) а вот научный  я так сходу не возьмусь - читать придется...
113 ShoGUN
 
24.09.10
15:32
(110) В семёрке вроде 4. Простой, инженерный, статистический и программерский.
114 ПульсЪ
 
24.09.10
15:35
(111) сначала простой, потом сложный

мой калькуль уже считает и вычитание


Процедура КнопкаРавноНажатие(Элемент)
   если перемВыч = 1 тогда
       ВыражениеДляВычисления = ВыражениеДляВычисления - ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
   перемВыч = 0;
   Иначе
ВыражениеДляВычисления = ВыражениеДляВычисления + ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
   конецесли;
КонецПроцедуры

Процедура КнопкаСложениеНажатие(Элемент)
ВыражениеДляВычисления = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение) + "+";
   ЭлементыФормы.ПолеВыводаРезультата.Значение = "";
       
КонецПроцедуры

Процедура КнопкаВычитаниеНажатие(Элемент)
   перемВыч = 1;
   ВыражениеДляВычисления = СокрЛП(ЭлементыФормы.ПолеВыводаРезультата.Значение) - "+";
   ЭлементыФормы.ПолеВыводаРезультата.Значение = "";
КонецПроцедуры
115 ПульсЪ
 
24.09.10
15:36
сколько же тогда строк понадобится для пары десятков операций..
116 trdm
 
24.09.10
15:38
(95) >>А если нажимать 123 + 234 + 345 ? Или нужно всё время "равно" дергать?
Не нужно, только после ввода 345.
ПС. Что за кальк там у тебя??
117 ShoGUN
 
24.09.10
15:39
(114) Это называется "индусский код". http://lurkmore.ru/Индусский_код
118 skunk
 
24.09.10
15:40
(113)блин про статистический я и забыл (((
119 mzelensky
 
24.09.10
15:41
(55) 3 курс??? ИЗУЧИЛ ДЕЛФИ????чувак...и ты не можешь калькулятор написать??? я на первом курсе на делфяке сервер алимпиадных задач писал, на 2 курсе на Си написал своего радмина (пусть и немного упрощенную версию, но удаленное управление компом реализовал)...на 3 курсе уже автоматизировал участок производства на сахарном заводе (на 1С)... где ты учишься????
120 Mort
 
24.09.10
15:42
(116) Я имел ввиду тот что автор мутит, в (114) вот.
121 ПульсЪ
 
24.09.10
15:43
(119) ну может ты с самого детства задротствуешь за ПК, тогда не удивительно) все дело в том кто когда начала учится
122 ПульсЪ
 
24.09.10
15:43
(116) нужно равно дергать
123 trdm
 
24.09.10
15:45
function Calculator(ui)
{
    this.ui = ui;

    this.pendingAdditiveOperator = "";
    this.pendingMultiplicativeOperator = "";
    this.sumInMemory = 0;
    this.sumSoFar = 0;
    this.factorSoFar = 0;
    this.waitingForOperand = true;

    with (ui) {
        display.text = "0";

        zeroButton.clicked.connect(this, this.digitClicked);
        oneButton.clicked.connect(this, "digitClicked");
        twoButton.clicked.connect(this, "digitClicked");
        threeButton.clicked.connect(this, "digitClicked");
        fourButton.clicked.connect(this, "digitClicked");
        fiveButton.clicked.connect(this, "digitClicked");
        sixButton.clicked.connect(this, "digitClicked");
        sevenButton.clicked.connect(this, "digitClicked");
        eightButton.clicked.connect(this, "digitClicked");
        nineButton.clicked.connect(this, "digitClicked");

        pointButton.clicked.connect(this, "pointClicked");
        changeSignButton.clicked.connect(this, "changeSignClicked");

        backspaceButton.clicked.connect(this, "backspaceClicked");
        clearButton.clicked.connect(this, "clear");
        clearAllButton.clicked.connect(this, "clearAll");

        clearMemoryButton.clicked.connect(this, "clearMemory");
        readMemoryButton.clicked.connect(this, "readMemory");
        setMemoryButton.clicked.connect(this, "setMemory");
        addToMemoryButton.clicked.connect(this, "addToMemory");

        divisionButton.clicked.connect(this, "multiplicativeOperatorClicked");
        timesButton.clicked.connect(this, "multiplicativeOperatorClicked");
        minusButton.clicked.connect(this, "additiveOperatorClicked");
        plusButton.clicked.connect(this, "additiveOperatorClicked");

        squareRootButton.clicked.connect(this, "unaryOperatorClicked");
        powerButton.clicked.connect(this, "unaryOperatorClicked");
        reciprocalButton.clicked.connect(this, "unaryOperatorClicked");
        equalButton.clicked.connect(this, "equalClicked");
    }
}

Calculator.prototype.abortOperation = function()
{
    this.clearAll();
    this.ui.display.text = "####";
}

Calculator.prototype.calculate = function(rightOperand, pendingOperator)
{
    if (pendingOperator == "+") {
        this.sumSoFar += rightOperand;
    } else if (pendingOperator == "-") {
        this.sumSoFar -= rightOperand;
    } else if (pendingOperator == "*") {
        this.factorSoFar *= rightOperand;
    } else if (pendingOperator == "/") {
        if (rightOperand == 0)
        return false;
        this.factorSoFar /= rightOperand;
    }
    return true;
}

Calculator.prototype.digitClicked = function()
{
    var digitValue = __qt_sender__.text - 0;
    if ((digitValue == 0) && (this.ui.display.text == "0"))
        return;
    if (this.waitingForOperand) {
        this.ui.display.clear();
        this.waitingForOperand = false;
    }
    this.ui.display.text += digitValue;
}

Calculator.prototype.unaryOperatorClicked = function()
{
    var operand = this.ui.display.text - 0;
    var result = 0;
    if (__qt_sender__.text == "Sqrt") {
        if (operand < 0) {
            this.abortOperation();
            return;
        }
        result = Math.sqrt(operand);
    } else if (__qt_sender__.text == "x^2") {
        result = Math.pow(operand, 2);
    } else if (__qt_sender__.text == "1/x") {
        if (operand == 0.0) {
            this.abortOperation();
            return;
        }
        result = 1 / operand;
    }
    this.ui.display.text = result + "";
    this.waitingForOperand = true;
}

Calculator.prototype.additiveOperatorClicked = function()
{
    var operand = this.ui.display.text - 0;

    if (this.pendingMultiplicativeOperator.length != 0) {
        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {
            this.abortOperation();
            return;
        }
        this.ui.display.text = this.factorSoFar + "";
        operand = this.factorSoFar;
        this.factorSoFar = 0;
        this.pendingMultiplicativeOperator = "";
    }

    if (this.pendingAdditiveOperator.length != 0) {
        if (!this.calculate(operand, this.pendingAdditiveOperator)) {
            this.abortOperation();
            return;
        }
        this.ui.display.text = this.sumSoFar + "";
    } else {
        this.sumSoFar = operand;
    }

    this.pendingAdditiveOperator = __qt_sender__.text;
    this.waitingForOperand = true;
}

Calculator.prototype.multiplicativeOperatorClicked = function()
{
    var operand = this.ui.display.text - 0;

    if (this.pendingMultiplicativeOperator.length != 0) {
        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {
            this.abortOperation();
            return;
        }
        this.ui.display.text = this.factorSoFar + "";
    } else {
        this.factorSoFar = operand;
    }

    this.pendingMultiplicativeOperator = __qt_sender__.text;
    this.waitingForOperand = true;
}

Calculator.prototype.equalClicked = function()
{
    operand = this.ui.display.text - 0;

    if (this.pendingMultiplicativeOperator.length != 0) {
        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {
            this.abortOperation();
            return;
        }
        operand = this.factorSoFar;
        this.factorSoFar = 0.0;
        this.pendingMultiplicativeOperator = "";
    }
    if (this.pendingAdditiveOperator.length != 0) {
        if (!this.calculate(operand, this.pendingAdditiveOperator)) {
            this.abortOperation();
            return;
        }
        this.pendingAdditiveOperator = "";
    } else {
        this.sumSoFar = operand;
    }

    this.ui.display.text = this.sumSoFar + "";
    this.sumSoFar = 0.0;
    this.waitingForOperand = true;
}

Calculator.prototype.pointClicked = function()
{
    if (this.waitingForOperand)
        this.ui.display.text = "0";
    if (this.ui.display.text.indexOf(".") == -1)
        this.ui.display.text += ".";
    this.waitingForOperand = false;
}

Calculator.prototype.changeSignClicked = function()
{
    var text = this.ui.display.text;
    var value = text - 0;

    if (value > 0) {
        text = "-" + text;
    } else if (value < 0) {
        text = text.slice(1);
    }
    this.ui.display.text = text;
}

Calculator.prototype.backspaceClicked = function()
{
    if (this.waitingForOperand)
        return;

    var text = this.ui.display.text;
    text = text.slice(0, -1);
    if (text.length == 0) {
        text = "0";
        this.waitingForOperand = true;
    }
    this.ui.display.text = text;
}

Calculator.prototype.clear = function()
{
    if (this.waitingForOperand)
        return;

    this.ui.display.text = "0";
    this.waitingForOperand = true;
}

Calculator.prototype.clearAll = function()
{
    this.sumSoFar = 0.0;
    this.factorSoFar = 0.0;
    this.pendingAdditiveOperator = "";
    this.pendingMultiplicativeOperator = "";
    this.ui.display.text = "0";
    this.waitingForOperand = true;
}

Calculator.prototype.clearMemory = function()
{
    this.sumInMemory = 0.0;
}

Calculator.prototype.readMemory = function()
{
    this.ui.display.text = this.sumInMemory + "";
    this.waitingForOperand = true;
}

Calculator.prototype.setMemory = function()
{
    this.equalClicked();
    this.sumInMemory = this.ui.display.text - 0;
}

Calculator.prototype.addToMemory = function()
{
    this.equalClicked();
    this.sumInMemory += this.ui.display.text - 0;
}
124 ПульсЪ
 
24.09.10
15:45
вы вот сами сядьте ща кто такой умный и накотайте за 10 мин калькулятор как на винде.. хотя бы простой.. я вот посморю как полуится)

базарить все умеют, а по делу единицы
125 trdm
 
24.09.10
15:46
(124) >>> вы вот сами сядьте ща кто такой умный и накотайте за 10 мин калькулятор как на винде.. хотя бы простой..
Тебе что влом описать пару десятков операций с проверками?
126 ПульсЪ
 
24.09.10
15:47
(125) дык а я чем занимаюсь?
127 mzelensky
 
24.09.10
15:47
(121) не хами, хлопец!!! если ничего умного сказать не можешь - лучше вообще молчи!
128 Архитектор
 
24.09.10
15:48
Лучше игру "сапер" напиши и поиграть можно)
129 kiruha
 
24.09.10
15:49
А некоторые еще в школе пишут свою ОС, антивирь и офисный пакет ))
130 skunk
 
24.09.10
15:50
(129)ну это вообще гений
131 ПульсЪ
 
24.09.10
15:50
(127) дык я про что, если НЕЧЕГО по делу сказать, то помолчи лучше, хлопец
132 mzelensky
 
24.09.10
15:50
(129) ты путаешь понятия "пишут свою ОС" и "создают свою сборку Линухи" !!!
133 ПульсЪ
 
24.09.10
15:50
(128) потом и до сапера доберусь)
134 ДАртаньян
 
24.09.10
15:51
(0) не так прост как кажется, крутые хакеры сильны в социальной инженерии, судя по (123), к 300 посту кто-нибуть другой уже напишет кальк в 1с :)(
135 ПульсЪ
 
24.09.10
15:51
(123) зверь машина)) сам писал?
136 ПульсЪ
 
24.09.10
15:52
(134) )))))))))
137 Mnemonic1C
 
24.09.10
15:53
Ого, новая ***звезда***
138 skunk
 
24.09.10
15:54
(133)лучше оставь его в покое
139 Mnemonic1C
 
24.09.10
15:54
Автор, скажи пожалуйста, а кой смысл тебе на 1С писать калькулятор?
140 ПульсЪ
 
24.09.10
15:55
(139) лишним не будет, а знания никогда не помешают
141 ПульсЪ
 
24.09.10
15:55
любые
142 Адинэснег
 
24.09.10
15:57
(114) пля... вот откуда этот код берется :D
месяц-два и это будет резюме, с опытом внедрения УПП, перепиской под нужды бизнеса или как там ща пишут (нужды бизнеса - как раз те самые калькуляторы и кнопки заполнения тч прямо на форме документа) *LOL*
143 Mnemonic1C
 
24.09.10
15:57
Насколько помню с универа, калькулятор задают с целью разобратся с работой элементов управления, обработка событий, и т.д. А в 1С это зачем, здесь это проще пареной репы, ты либо изучай "Программирование", или учи 1С
144 ДАртаньян
 
24.09.10
16:00
что такого сложного в калькуляторе с точки зрения работы элементов управления. Даже на winapi много кнопочек и одно поле ввода - элементарнейшая задача.
(142) скорее всего, сейчас коллективный разум решает  тестовое задание в какой-нибуть франч :(
145 ПульсЪ
 
24.09.10
16:01
(143) проще пареной репы, напиши, просто так, удели лишних 10 мин 1С, тоока не два поля ввода и четыре строчки сложение, выч, умн и дел, а такой, как простой виндовский хп.. можешь даже сюда не выкладывать если удастся, просто попробуй
146 kokamoonga
 
24.09.10
16:08
(145) ну я написал за 15 минут с простейшими арифметическими операциями, на большее время тратить влом. а в чем собственно задача при наличии например оператора Выполнить?
147 Злобный Фей
 
24.09.10
16:15
(145)
"И вы, в присутствии двух людей с университетским образованием, позволяете себе давать советы космического масштаба и космической же глупости о том, как всё поделить!"
"зарубите себе на носу, что вам нужно молчать и слушать, что вам говорят. Учиться и стараться стать хоть сколько-нибудь приемлемым членом социального общества!"
148 Mnemonic1C
 
24.09.10
16:16
(145) Мне что делать нечего?
149 ПульсЪ
 
24.09.10
16:16
(146)  у меня равно на 2 операции выглядит так:

Процедура КнопкаРавноНажатие(Элемент)
   если перемВыч = 1 тогда
       ВыражениеДляВычисления = ВыражениеДляВычисления - ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
   перемВыч = 0;
   Иначе
ВыражениеДляВычисления = ВыражениеДляВычисления + ЭлементыФормы.ПолеВыводаРезультата.Значение;
   ЭлементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
   конецесли;
КонецПроцедуры


а у тебя?
150 mzelensky
 
24.09.10
16:17
(146) не "выполнить" ,а "вычислить()" :)
151 mzelensky
 
24.09.10
16:20
а такой вариант как просчитаешь:

скажем набираешь: 2+4+2+6*5  ???

После каждого действия будешь равно нажимать (надо же еще правила арифметики учитывать)!!!???
152 ПульсЪ
 
24.09.10
16:21
(147) в этой ветке 150 сообщений, основная часть флуд) что слушать то? как люди с университетским образованием строят из себя мега програмеров?) глупость) в теме несколько сообщений только по делу, а остальное рыночный базар, как бабульки обсуждают все подрят, даже то что не знают, так и тут
153 ПульсЪ
 
24.09.10
16:22
(151) пока не знаю как)
154 kokamoonga
 
24.09.10
16:22
(150) с Выполнить тоже работает)) но Вычислить логичнее да)
155 ПульсЪ
 
24.09.10
16:23
(154) ну так что умник, поделишься секретом одной процедурки?) или еще не придумал?))
156 kokamoonga
 
24.09.10
16:23
(154)+



Процедура РавноНажатие(Элемент)
   
   ВычисленноеЗначение = "";
   
   ЗначениеПоляВычисления = ЭлементыФормы.ПолеВычисления.Значение;
   
   СтрокаДляВыполнения = "ВычисленноеЗначение = "+ЗначениеПоляВычисления;
   
   Выполнить(СтрокаДляВыполнения);
   
   ЭлементыФормы.ПолеВычисления.Значение = ВычисленноеЗначение;
   
КонецПроцедуры
157 kokamoonga
 
24.09.10
16:23
(155) ой)
158 Архитектор
 
24.09.10
16:24
(149) Это ЭлементыФормы.ПолеВыводаРезультата.Значение = Вычислить(ВыражениеДляВычисления);
Хороший кодер написал бы одиг раз после условия.
159 ПульсЪ
 
24.09.10
16:26
(149) а я что говорил что я хороший кодер?) если б был бы хорошим кодером, не базарил бы тут
160 ПульсЪ
 
24.09.10
16:27
(156) многообещающий кусок кода))
161 kokamoonga
 
24.09.10
16:28
(160) он работает, а я какбы и не прогер вовсе. с другой стороны для решения задачи в черновом варианте мне понадобилось 15 минут а тебе тему на форуме заводить что говорит о.
162 ПульсЪ
 
24.09.10
16:29
(160) этот кусок кода неочем не говорит)
163 Megas
 
24.09.10
16:29
(161) Читер =)
164 kokamoonga
 
24.09.10
16:30
(162) а что тебе? черновой вариант обработки выложить?)
165 kokamoonga
 
24.09.10
16:30
(164)+ черновой вариант обработки которая никогда не будет доделана ибо нафиг не надо
166 ПульсЪ
 
24.09.10
16:31
(162)хочешь выкладый, мне если честно ввсеравно уже)

ну даже если ты и написал? что из этого? ты крут?)) понтов та))
167 kokamoonga
 
24.09.10
16:31
(163)  ага, смотри, щас на hadshot нарвешься))
168 kokamoonga
 
24.09.10
16:34
(166) читай свой пост (145) до полного просветления. мне профану понадобилось 15 минут на решение этой задачи вместе с формой и элементами управления. а профам которых здесь есть, просто лень писать эту ерунду ибо на уровне алгоритма решается в уме за 2,3 секунды.
169 ПульсЪ
 
24.09.10
16:37
(168) ну я тогда написал только что винду на 1С))) грузиться прямо со съемника, прикинь, а ты не можешь... гг ))

Процедура ПриНачалеРаботыСистемы();
Форма = ПолучитьОбщуюФорму("РабочийСтол");
форма.Открыть();
КонецПроцедуры
170 ПульсЪ
 
24.09.10
16:38
(168) однобуйственно твоему коду 156
171 kokamoonga
 
24.09.10
16:41
(170) ты щас о чем ващще?
172 ПульсЪ
 
24.09.10
16:41
(171) о том что на словах любой может понт кинуть)
173 Yorik
 
24.09.10
16:43
(0) А для чего тебе нужно задание это выполнить?
174 kokamoonga
 
24.09.10
16:44
(172) понты ты тут кидаешь) еще раз (145) читай.
175 ПульсЪ
 
24.09.10
16:44
(174) ну ты чудной)
176 ПульсЪ
 
24.09.10
16:45
ща еще +100 сообщений = ЧТО ТАКОЕ ПОНТ?)
177 Mort
 
24.09.10
16:45
Дело было в пятницу.. Короче щас выложу пример с автоматом на 8.2
178 kokamoonga
 
24.09.10
16:45
(175) даже не представляешь насколько))
179 ПульсЪ
 
24.09.10
16:46
(173) для саморазвития
180 ПульсЪ
 
24.09.10
16:46
(178) давай код, посмотрим насколько ты чудной
181 kokamoonga
 
24.09.10
16:47
(180) код чего?
182 ПульсЪ
 
24.09.10
16:47
(181) код твоего калькулятора, посмотрим на зверя
183 kokamoonga
 
24.09.10
16:50
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   Для Сч = 1 По 10 Цикл
       
       ИмяЦифровойКнопки = "Кнопка"+Строка(Сч);
       Кнопка = ЭлементыФормы[ИмяЦифровойКнопки];
       Кнопка.Заголовок = Сч;
       
       ДействиеКнопки = Новый Действие("ДействиеКнопки");
       Кнопка.УстановитьДействие("Нажатие",ДействиеКнопки);
       
   КонецЦикла;
   
КонецПроцедуры

Процедура ДействиеКнопки(Кнопка)
   
     ЗначениеПоляВычисления = ЭлементыФормы.ПолеВычисления.Значение;
     
     ЗначениеПоляВычисления = ""+ЗначениеПоляВычисления+Кнопка.Заголовок;    
           
     ЭлементыФормы.ПолеВычисления.Значение = ЗначениеПоляВычисления;
     
КонецПроцедуры

Процедура РавноНажатие(Элемент)
   
   ВычисленноеЗначение = "";
   
   ЗначениеПоляВычисления = ЭлементыФормы.ПолеВычисления.Значение;
   
   СтрокаДляВыполнения = "ВычисленноеЗначение = "+ЗначениеПоляВычисления;
   
   Выполнить(СтрокаДляВыполнения);
   
   ЭлементыФормы.ПолеВычисления.Значение = ВычисленноеЗначение;
   
КонецПроцедуры

Процедура СНажатие(Элемент)
   ЭлементыФормы.ПолеВычисления.Значение = "";
КонецПроцедуры

Процедура BackspaceНажатие(Элемент)
   ЗначениеПоляВычисления = ЭлементыФормы.ПолеВычисления.Значение;
   
   ЗначениеПоляВычисления = Лев(ЗначениеПоляВычисления,СтрДлина(ЗначениеПоляВычисления));
   
   ЭлементыФормы.ПолеВычисления.Значение = ЗначениеПоляВычисления;
КонецПроцедуры



представить не могу на что тут посмотреть можно... но смотри конечно)
184 ПульсЪ
 
24.09.10
16:50
(181) или удалил уже?) а заного лень писать?)
185 ado
 
24.09.10
16:55
Автор, брось 1С, вот среда для реальных пацанов: Вышел Qt 4.7.0
186 Mort
 
24.09.10
16:57
http://ifolder.ru/19459590 вот пжлста. Плюс, минус. Добавить операцию - создать команду и прописать пару строк, в коде всё описано.
187 Megas
 
24.09.10
17:01
(186) ... Да блин +и - сделать легко ... и * сделать легко а вот / и всё остальное сложнее... еслиб было время то подумал бы как а так времени нет.
188 Маус
 
24.09.10
17:02
(185) Ура!
189 ПульсЪ
 
24.09.10
17:03
(183) это весь код??))
190 kokamoonga
 
24.09.10
17:04
(189) да, а что тебе еще надо? обвески? это уже без меня.
191 ПульсЪ
 
24.09.10
17:04
(186) посмотрю, только попозже, ща времени нету, спс
192 ПульсЪ
 
24.09.10
17:05
(189) а где вычитание? деление? умножение?
193 ПульсЪ
 
24.09.10
17:06
(189) а все понял технику)
194 kokamoonga
 
24.09.10
17:07
(193) техника проста до абсурда. только если бы задача стояла серьезно а не налабать за 10 минут кусок г... простите кода, было бы все иначе
195 ПульсЪ
 
24.09.10
17:08
(190) садись, двойка
196 kokamoonga
 
24.09.10
17:09
(195) за что учитель?))
197 ПульсЪ
 
24.09.10
17:10
(196) что то я не вижу кнопочек сложение, вычитание, деление, умножение..)
198 kokamoonga
 
24.09.10
17:10
(197) просто ты тупишь


Процедура ДействиеКнопки(Кнопка)
   
     ЗначениеПоляВычисления = ЭлементыФормы.ПолеВычисления.Значение;
     
     ЗначениеПоляВычисления = ""+ЗначениеПоляВычисления+Кнопка.Заголовок;    
           
     ЭлементыФормы.ПолеВычисления.Значение = ЗначениеПоляВычисления;
     
КонецПроцедуры
199 ДАртаньян
 
24.09.10
17:10
(134)->(186) ЧТД !!!
ПульсЪ, хочу стать хакером, где такому учат ?
200 ПульсЪ
 
24.09.10
17:12
200
201 ПульсЪ
 
24.09.10
17:12
(198) я понял, слухай, так и я могу) дело то вкнопках заключается)
202 ПульсЪ
 
24.09.10
17:13
(199) в книжках учат)
203 Злобный Фей
 
24.09.10
17:14
ПульсЪ = гений 1С ? Уж очень стиль на фиксу похож.
204 ДАртаньян
 
24.09.10
17:14
ты по каким учился?
205 kokamoonga
 
24.09.10
17:14
(201) представь себе да. дело в кнопках.
206 ПульсЪ
 
24.09.10
17:15
(203) я не гений, я всего лишь начинающий))
207 Архитектор
 
24.09.10
17:15
(203)г1с уж калк бы наверно написал
208 ПульсЪ
 
24.09.10
17:15
(204) google.ru, ya.ru
209 Злобный Фей
 
24.09.10
17:17
(207) Ну может последователь..
210 ShoGUN
 
24.09.10
17:18
(209) Сын? О_о Племянник? О_о
Заеб*т же всех...
211 Архитектор
 
24.09.10
17:19
(209)наверно,) подрастает смена
212 ПульсЪ
 
24.09.10
17:19
АХхАхХ)))
213 g_frost
 
24.09.10
17:27
(0) Давал подобную задачу "студентам"
получив решение понял что RTFM это священный завет

Встроенные функции языка (Script functions)
Вычислить (Eval)
Синтаксис:

Вычислить(<Выражение>)
Параметры:

<Выражение> (обязательный)

Тип: Строка. Выражение, которое требуется вычислить.
Возвращаемое значение:

Результат вычисления выражения. Тип возвращаемого значения зависит от типа выражения.
Описание:

Вычисляет переданное выражение. С помощью метода можно вычислять математические и логические выражения, а также операции конкатенации. Подробнее про выражения см. раздел "Выражения языка".

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

А = Вычислить("500 + 500*20/100");
А = Вычислить("Истина и Ложь");
А = Вычислить("""Иван"" + "" "" + ""
214 g_frost
 
24.09.10
17:29
(213) а я то надеялся что начнут строки парсить, скобки, приоритеты операций в стек складывать ... =)
215 Mort
 
24.09.10
17:30
Вот развитие (186): легким движением руки добавляются умножение, деление, корень, смена знака, обработка /0:

http://ifolder.ru/19460137

автоматы рулят
216 Mort
 
24.09.10
17:33
Исходник:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Сост = 3;
   Стэк = 0;
   Табло = "0";
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьРасчет(Отказ = Ложь)
   Если ТекОперация = "Плюс" Тогда
       Стэк = Стэк + Число(Табло);
   ИначеЕсли ТекОперация = "Минус" Тогда
       Стэк = Стэк - Число(Табло);
   ИначеЕсли ТекОперация = "Умножить" Тогда
       Стэк = Стэк * Число(Табло);
   ИначеЕсли ТекОперация = "Делить" Тогда
       Если Число(Табло) = 0 Тогда
           Отказ = Истина;
           Табло = "Ошибка";
           Возврат;    
       Иначе
           Стэк = Стэк / Число(Табло);
       КонецЕсли;
   КонецЕсли;
   Табло = Формат(Стэк, "ЧН=0; ЧГ=");
КонецПроцедуры

&НаКлиенте
Процедура Равно(Команда)
   Если Сост = 1 Или Сост = 2 Тогда
       Отказ = Ложь;
       ВыполнитьРасчет(Отказ);
       Если Отказ Тогда
           Сост = 4;
       Иначе
           Сост = 3;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Цифра(Команда)
   Цифра = Прав(Команда.Имя, 1);
   Если Сост = 1 Тогда
       Если Табло = "0" Тогда
           Табло = Цифра;    
       Иначе
           Табло = Табло + Цифра;
       КонецЕсли;
   ИначеЕсли Сост = 2 Тогда
       Табло = Цифра;
       Сост = 1;
   ИначеЕсли Сост = 3 Тогда
       Табло = Цифра;
       Стэк = 0;
       ТекОперация = "Плюс";
       Сост = 1;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Операция(Команда)
   Операция = Команда.Имя;
   Если Сост = 1  Тогда
       Отказ = Ложь;
       ВыполнитьРасчет(Отказ);
       Если Отказ Тогда
           Сост = 4;
           Возврат;
       КонецЕсли;
       ТекОперация = Операция;
       Сост = 2;
   ИначеЕсли Сост = 2 Тогда    
       ТекОперация = Операция;
       Сост = 2;
   ИначеЕсли Сост = 3 Тогда    
       ТекОперация = Операция;
       Сост = 2;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Преобразование(Команда)
   
   Если Сост =1 ИЛИ Сост = 2 ИЛИ Сост = 3 Тогда
       Преобразование = Команда.Имя;
       Если Преобразование = "Корень" Тогда
           Стэк = Sqrt(Число(Табло));
           Табло = Формат(Стэк, "ЧН=0; ЧГ=");
       КонецЕсли;
       Сост = 3;
   КонецЕсли;
   
КонецПроцедуры

&НаКлиенте
Процедура Точка(Команда)
   Если Сост = 1 Тогда
       Если Найти(Табло, ",") = 0 Тогда
           Табло = Табло + ",";
       КонецЕсли;
   ИначеЕсли Сост = 2 Тогда
       Табло = "0,";
       Сост = 1;
   ИначеЕсли Сост = 3 Тогда
       Табло = "0,";
       Стэк = 0;
       ТекОперация = "Плюс";
       Сост = 1;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура CE(Команда)
   Стэк = 0;
   ТекОперация = "Плюс";
   Сост = 3;
   Табло = "0";
КонецПроцедуры

&НаКлиенте
Процедура ПлюсМинус(Команда)
   Если Сост = 1 Тогда
       Если Табло = "0" Тогда
           Возврат;
       КонецЕсли;
       Если Лев(Табло, 1) = "-" Тогда
           Табло = Сред(Табло,2);
       Иначе
           Табло = "-" + Табло;
       КонецЕсли;
   КонецЕсли;
   Если Сост = 3 Тогда
       Стэк = -Стэк;
       Табло = Формат(Стэк, "ЧН=0; ЧГ=");
   КонецЕсли;
КонецПроцедуры
217 ПульсЪ
 
24.09.10
17:38
лана) спасибо отдельным людям кто помогал а не стебался)

а всем остальным обработочка на прощание))

Процедура ПриОткрытии()
   // Вставить содержимое обработчика.
   Для Каждого Эл из Метаданные.РегистрыСведений Цикл
       РегистрСведенийСписок.Добавить(Эл.Имя, Эл.Синоним+"("+Эл.Имя+")", ложь);
   КонецЦикла;
   Для Каждого Эл из Метаданные.Справочники Цикл
       СправочникиСписок.Добавить(Эл.Имя, Эл.Синоним+"("+Эл.Имя+")", ложь);
   КонецЦикла;
   Для Каждого Эл из Метаданные.Документы Цикл
       ДокументыСписок.Добавить(Эл.Имя, Эл.Синоним+"("+Эл.Имя+")", ложь);
   КонецЦикла;
   РегистрСведенийСписок.СортироватьПоПредставлению();
   СправочникиСписок.СортироватьПоПредставлению();
   ДокументыСписок.СортироватьПоПредставлению();
КонецПроцедуры

Процедура РегистрыСведенийУдалить()
   Если Вопрос("Удалять регистры сведений?", РежимДиалогаВопрос.ДаНетОтмена)<> КодВозвратаДиалога.Да Тогда
       Возврат;
   КонецЕсли;
   // Вставить содержимое обработчика.
   Для Каждого Эл из РегистрСведенийСписок Цикл
       Если Не Эл.Пометка Тогда
           Продолжить;
       КонецЕсли;
       ИмяРегистра=Эл.Значение;
       ПредставлениеРегистра=Эл.Представление;
       Сообщить("Очищаю регистр: "+ПредставлениеРегистра);
       НаборЗаписей=РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
       НаборЗаписей.Записать();
   КонецЦикла;
КонецПроцедуры

Процедура ДокументыУдалить()
   Если Вопрос("Удалять документы?", РежимДиалогаВопрос.ДаНетОтмена)<> КодВозвратаДиалога.Да Тогда
       Возврат;
   КонецЕсли;
   // Вставить содержимое обработчика.
   Для Каждого Эл из ДокументыСписок Цикл
       Если Не Эл.Пометка Тогда
           Продолжить;
       КонецЕсли;
       Имя=Эл.Значение;
       Представление=Эл.Представление;
       Сообщить("Очищаю документ: "+Имя);
       ПереченьОб=Документы[Имя].Выбрать();
       СписокСсылок=Новый Массив();
       Если флТранзакция Тогда НачатьТранзакцию(); КонецЕсли;
       Пока ПереченьОб.Следующий() Цикл
           Сч=СписокСсылок.Количество();
           Если Сч%10=0 Тогда
               Состояние(Сч);
               ОбработкаПрерыванияПользователя();
           КонецЕсли;
           СписокСсылок.Добавить(ПереченьОб.Ссылка);
           Если Не флУдалятьУдалитьОбъекты Тогда
               ПереченьОб.Ссылка.ПолучитьОбъект().Удалить();
           КонецЕсли;
       КонецЦикла;
       Если флУдалятьУдалитьОбъекты Тогда
           УдалитьОбъекты(СписокСсылок, ложь);
       КонецЕсли;
       Если флТранзакция Тогда ЗафиксироватьТранзакцию(); КонецЕсли;
       Сообщить("  удалено "+СписокСсылок.Количество()+" документов");
   КонецЦикла;
КонецПроцедуры

Процедура СправочникиУдалить()
   Если Вопрос("Удалять справочники?", РежимДиалогаВопрос.ДаНетОтмена)<> КодВозвратаДиалога.Да Тогда
       Возврат;
   КонецЕсли;
   // Вставить содержимое обработчика.
   Для Каждого Эл из СправочникиСписок Цикл
       Если Не Эл.Пометка Тогда
           Продолжить;
       КонецЕсли;
       Имя=Эл.Значение;
       Представление=Эл.Представление;
       Сообщить("Очищаю справочник: "+Имя);
       ПереченьОб=Справочники[Имя].Выбрать();
       СписокСсылок=Новый Массив();
       Если флТранзакция Тогда НачатьТранзакцию(); КонецЕсли;
       Пока ПереченьОб.Следующий() Цикл
           Сч=СписокСсылок.Количество();
           Если Сч%10=0 Тогда
               Состояние(Сч);
               ОбработкаПрерыванияПользователя();
           КонецЕсли;
           СписокСсылок.Добавить(ПереченьОб.Ссылка);
           Если Не флУдалятьУдалитьОбъекты Тогда
               ПереченьОб.Ссылка.ПолучитьОбъект().Удалить();
           КонецЕсли;
       КонецЦикла;
       Если флУдалятьУдалитьОбъекты Тогда
           УдалитьОбъекты(СписокСсылок, ложь);
       КонецЕсли;
       Если флТранзакция Тогда ЗафиксироватьТранзакцию(); КонецЕсли;
       //УдалитьОбъекты(СписокСсылок, ложь);
       Сообщить("  удалено "+СписокСсылок.Количество()+" элементов");
   КонецЦикла;
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Элемент)
   // Вставить содержимое обработчика.
   Если ЭлементыФормы.ГлавнаяПанель.ТекущаяСтраница.Имя="СтраницаРегистрыСведений" Тогда
       РегистрыСведенийУдалить();
   ИначеЕсли ЭлементыФормы.ГлавнаяПанель.ТекущаяСтраница.Имя="СтраницаСправочники" Тогда
       СправочникиУдалить();
   ИначеЕсли ЭлементыФормы.ГлавнаяПанель.ТекущаяСтраница.Имя="СтраницаДокументы" Тогда
       ДокументыУдалить();
   КонецЕсли;
КонецПроцедуры
218 ПульсЪ
 
24.09.10
17:39
формочку сами сделайте)
219 Злобный Фей
 
24.09.10
17:46
Ну точно лавры г1с покоя не дают..
220 Архитектор
 
24.09.10
17:54
(217) двоечка вам, товарищ
221 inspam
 
24.09.10
19:40
(217) а грабить корованы можно этой обработкой?
222 Зеленый Кот
 
24.09.10
19:43
(221)
нет - только клиентов
2 + 2 = 3.9999999999999999999999999999999...