Имя: Пароль:
1C
 
Помогите, пожалуйста, с кодом для переключателей.
0 Niakris_ka
 
06.01.09
14:18
В документе на форме есть два переключателя. Надо прописать модуль, чтобы при выборе одного из переключателей число в поле "А" делилось либо на число в поле "В" и ответ прописывался в "С", либо "А" делилось на поле "D" и ответ в "Е". Вот! Огромная просьба - помогите новичку!
1 ТелепатБот
 
гуру
06.01.09
14:18
3 Niakris_ka
 
06.01.09
14:21
(2) ???
4 ДенисЧ
 
06.01.09
14:22
В формулу переключателя функцию ПриВыбореПереключателя()

в модуле формы
Функция ПриВыбореПереключателя()
 Если флПерекл = 1 Тогда //выбран первый
   С = А / Б;
 ИначеЕсли флПерекл = 2 Тогда //выбран второй
   Е = А / Д;
 КонецЕсли;
КонецФункции
5 Niakris_ka
 
06.01.09
14:37
(4) Попробовала, пишет для строк
Если флПерекл = 1 Тогда //выбран первый (и второй аналогично)
что переменная не определена.
Надо как то флажки определить, какой первый какой второй?
6 ДенисЧ
 
06.01.09
14:38
(5) флажки выстраиваешь по порядку в диалоге порядка обхода. Первому из них даёшь идентификатор флПерекл и "Первый в группе"
15 ДенисЧ
 
06.01.09
14:57
(11)

   Б = 1;
   С = А / Б;
 ИначеЕсли флПерекл = 2 Тогда //выбран второй
   Д = 1;
   Е = А / Д;


На строку ты не разделишь...
16 Niakris_ka
 
06.01.09
14:58
(13) (15) У меня у всех полей числовой тип
17 ДенисЧ
 
06.01.09
14:59
С = А / ?(Б=0,1,Б);
Е = А / ?(Д=0,1,б);
18 Niakris_ka
 
06.01.09
15:08
(17) Так даже лучше, спасибо. А для второго переключателя точно не надо идентификатора? Что он у меня все равно не делит ((
Автоматом значение "А" прописывает в "С" и "Е", но вводимые в "Б" и "Д" значения он не делит :(
19 ДенисЧ
 
06.01.09
15:10
(18) Отладчиком посмотри, что происходит.
20 Niakris_ka
 
06.01.09
15:16
(19) Хнык ( Я не умею им пользоваться. Так вроде синтаксических ошбок не видит
21 ДенисЧ
 
06.01.09
15:19
(20) Встаешь в своём коде на первый Если, нажимаешь Действия - Открыть в отладжчике, там не сходя с места - отладка - установить точку прерывания, в предприятии запускаешь выполнение (выбираешь переключатель) - отладчик должен актифизироваться на нужной строке. Там уже смотри значение переменных (Shift-F9) и пошагово смотри, куда пойдёт выполнение (F10)
22 Niakris_ka
 
06.01.09
15:25
Ну пошагово сделала все, что написали, про первую "если" пишет "ошибка в выражении", а вторую вообще пропускает.
Может все таки во втором переключателе тоже идентификатор нужен?
23 ДенисЧ
 
06.01.09
15:25
(22) Не нужен. Чему равен сам флПерекл?
24 Niakris_ka
 
06.01.09
15:26
(23) В смысле чему?
25 Дядя Васька
 
06.01.09
15:32
(24) В смысле Shift-F9
26 Дядя Васька
 
06.01.09
15:34
+(25) И код покажь, последнюю версию, а то безпредметный разговор..
27 Niakris_ka
 
06.01.09
15:43
(23)  флПерекл = 2
28 Niakris_ka
 
06.01.09
15:45
Последняя версия кода:

Функция ПриВыбореПереключателя()
 Если флПерекл = 1 Тогда //выбран первый
  С= А/ ?(Б=0,1,Б);
 ИначеЕсли флПерекл = 2 Тогда //выбран второй
  Е= А / ? (Д=0,1,Д);
 КонецЕсли;
КонецФункции
29 Дядя Васька
 
06.01.09
15:52
(28) В "Е= А / ? (Д=0,1,Д);" после вопроса пробел убери
30 Злопчинский
 
06.01.09
15:54
елена, вы различаете переменные с типом "строка" и с типом "число"...? или вам - по барабану?
31 Злопчинский
 
06.01.09
15:54
елена, вы различаете переменные с типом "строка" и с типом "число"...? или вам - по барабану?
Что значит "считать не хочет"? раскройте тайну поподробнее
32 Niakris_ka
 
06.01.09
15:56
(29) Убрала,все равно не считает.
(30) Различаю, все числовые у меня
33 Niakris_ka
 
06.01.09
15:57
(31) В самом начале описано, что должно считаться
34 Niakris_ka
 
06.01.09
15:57
+ (33)
при выборе одного из переключателей число в поле "А" делилось либо на число в поле "В" и ответ прописывался в "С", либо "А" делилось на поле "D" и ответ в "Е"
35 Дядя Васька
 
06.01.09
15:59
(32) Значит где-то пустое значение затесалось. Это не то же самое что ноль. Задай начальные значения всем переменным.
36 Niakris_ka
 
06.01.09
16:05
В общем потестила, в принципе он считает. Только так: в поле А вводится число, выбирается один из переключателей и если водить данные в остальные поля, то ответ не считается. Надо переключатели "пощелкать", тогда только. ((
Это можно исправить?
37 Злопчинский
 
06.01.09
16:03
(12) эксель - не зависает, он думает...
решений несколько, выбирай на вкус
- патч от Ромикса: один из вариантов можно взять здесь: http://www.infostart.ru/projects/323/
- проект Йоксель: http://infostart.ru/projects/1753
//
на мой взгляд - через Йоксель - гламурнее!
38 Дядя Васька
 
06.01.09
16:09
(36) В ПриОткрытии() флПереключатель=1; Там-то у тебя пустое значение и сидит.
39 Niakris_ka
 
06.01.09
16:14
(38) А поподробнее? Что с ним сделать?
40 Злопчинский
 
06.01.09
16:15
39) да ничего! когда ворма открывается - в каком положении переключатель должен быть?
41 Niakris_ka
 
06.01.09
16:19
(40) он не активирован, то есть ни каком положении его нет
42 Злопчинский
 
06.01.09
16:31
(41) ну так в (38) и написано - при открытии активизировать переключатель "умолчальным" значением.
..настоятельно рекомендуется почитать что-либо по основам программирования вообще (а не по 1С)
43 Niakris_ka
 
06.01.09
16:40
(42) активировала первый переключатель при открытии. Он все равно считает только если переключатели пощелкать. А ихмо это сильно неудобно
44 Гефест
 
06.01.09
16:55
(43)Так ты напиши ПриОткрытии чтобы не только активировался переключатель, но и считалось
45 Злопчинский
 
06.01.09
16:59
(43) программа, блин, не телепат! у тебя задано выполнениепроцедуры ПРИ РУЧНОМ ЩЕЛКАНИИ ЮЗЕРОМ! поэтому как в (43) написано сделай:

Процедура ПриОткрытии()
 флПереключатель=1;
 МояПроцедураПриИзмененииПереключателя();
 //читать каждый день ЖКК
46 Niakris_ka
 
11.01.09
00:50
(45) А надо всю функцию туда писать? Или только название?
47 lals2
 
11.01.09
02:42
Станислав Митичкин (основатель этого форума) написал замечательный самоучитель скачай его и там очень даже хорошо прописано.
http://mista.ru/tutor_1c
Скачай или смотри прямо на сайте
48 lals2
 
12.01.09
01:23
А вообщето процедурку запускать надо после ввода цифирок в А, Б, С И так далее
и вней проверять состояние переключателя и проводить вычисления, если я правильно понял автора в (36), а у нее она запускается только после переключения (пощелкать)
49 Aswed
 
12.01.09
02:43
(47), (48) А Ето как??????
(47) в 2.42 а (48) в 1.23:))))))))))))))))))))))))
50 lals2
 
12.01.09
21:39
(49) Ну там еще дата есть, конечно просто  11-го небыло охота разбираться а 12-го заглянул и понял что суть вопроса немножко не та на которую отвечают.
а вообще то прикольно? да?
а по сути вопроса вот такой код должен быть-
Перем Стр;
//***************************************
Процедура ПриОткрытии()
   флПерекл = 1;      // устанавливаем зараннее флаг  в первую позицию
КонецПроцедуры
//****************************************
Процедура Обр()
   Если флПерекл = 1 Тогда //выбран первый  
       Если Б <> 0 Тогда      //проверяем чтобы не было ошибки деления на ноль
           С = А / Б;
           Е = 0 ;
           Стр = "";
       иначе    
           Стр = " Ничего не делаю Б = 0";    
       КонецЕсли;    
   ИначеЕсли флПерекл = 2 Тогда //выбран второй
       Если Д <> 0 Тогда
           Е = А / Д;
           С = 0;
           Стр = "";
       иначе    
           Стр = " Ничего не делаю Д = 0";
       КонецЕсли;    
   КонецЕсли;
КонецПроцедуры
//*************************
Функция ПриВыбореПереключателя()
   Обр();
КонецФункции
процедура Обр() запускается после введения любого из чисел А,Б,Д или изменения статуса переключателя