Имя: Пароль:
1C
1С v8
получение данных в кнопке
0 dron4ikkk
 
11.09.14
10:05
на форму поместил кнопку, в коде кнопки надо вызвать процедуру
, но у процедуры параметры отказ, текущийобъект, параметрызаписи пустые и неопределены Вопрос : каким образом из кнопки из клиента вызвать такую процедуру?



&НаКлиенте
Процедура Применить(Команда)
    
  ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи);

    
    
КонецПроцедуры
1 Timon1405
 
11.09.14
10:09
1) выкинуть кнопку
2) добавить команду
3) перетащить команду на форму
4) ПКМ по кнопке команды - создать клиентскую и серверную процедуры
5) profit!
2 dron4ikkk
 
11.09.14
10:10
(1) что значит выкинуть кнопку?
3 _fvadim
 
11.09.14
10:10
вынести содержимое ПередЗаписьюНаСервере в функцию МояПередЗаписью.
по кнопке и из ПередЗаписьюНаСервере вызывать МояПередЗаписью
4 dron4ikkk
 
11.09.14
10:13
(3) допустим вынес содержимое в МояПередЗаписью, дальше в кнопке просто вызвать эту функцию чтоли?
5 _fvadim
 
11.09.14
10:15
(4) да, также как ты делал это в (0)
6 dron4ikkk
 
11.09.14
10:16
(5) но функция с параматерами же, а так как в кнопке эти параметры пусты, то ничего не получиться же.
7 _fvadim
 
11.09.14
10:17
(6) ты там записываешь что-то по отдельной кнопке?
8 dron4ikkk
 
11.09.14
10:17
(7) да.
9 dron4ikkk
 
11.09.14
10:18
просто в этой процедуре код, что эти параметры, не доступны на клиенте.
10 _fvadim
 
11.09.14
10:18
(8) а чем стандартная "записать" не устраивает?
11 Любопытная
 
11.09.14
10:19
(6) а почему они пусты?
12 ДенисЧ
 
11.09.14
10:21
Явно вызывать обработчик события - за это полагается 10 лет строгого режима. Без права переписки.
13 АбсолютноТемное Тело
 
11.09.14
10:21
(4) Просто сделай Записать  и ПередЗаписьюНаСервере сама "вызовется"  )
14 kosts
 
11.09.14
10:25
(0)
Может что-то в этом роде


&НаКлиенте
Процедура Применить(Команда)
    
    Записать();
    
КонецПроцедуры
15 dron4ikkk
 
11.09.14
10:26
(13) щас попробую
16 dron4ikkk
 
11.09.14
10:33
вы гении! всем спасибо)
17 dron4ikkk
 
11.09.14
10:39
еще проблемка.. при нажатии кнопки "применить" происходит вызов события записать() мы попадаем в процедуру ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) и есть другая кнопка "Записать закрыть" стандартная и она тоже вызывает процедуру ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) . Проблема в том что надо сделать так:

в коде процедуры надо сделать условие:
если идкнопки "применить" то выполнить участок кода  такой, если идкнопки "записатьзакрыть". как получить уникальный идентификатор кнопок?
18 АбсолютноТемное Тело
 
11.09.14
10:43
Можно попробовать передать имя кнопки через ПараметрыЗаписи  из метода Записать(ПараметрыЗаписи) в  ПередЗаписьюНаСервере(...,...,ПараметрыЗаписи)
19 dron4ikkk
 
11.09.14
10:54
(18) Спасибо, щас попробую.
20 dron4ikkk
 
11.09.14
10:55
(18) стоп а что за параметрызаписи?
21 АбсолютноТемное Тело
 
11.09.14
10:56
&НаКлиенте
Процедура Применить(Команда)
        ПараметрыЗаписи=Новый Структура;
    ПараметрыЗаписи.Вставить("ИмяКнопки",Команда.Имя);
        Записать(ПараметрыЗаписи);
КонецПроцедуры

Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ПараметрыЗаписи.Имя="МояКнопка" Тогда
...
Иначе
КонецЕсли;

КонецПроцедуры
22 dron4ikkk
 
11.09.14
10:56
(21) ааа вот как...спасибо!
23 dron4ikkk
 
11.09.14
11:10
(21) а зачем вообще в процедурах таких как ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) нужен параметызаписи, если он ничего не содержит....
24 dron4ikkk
 
11.09.14
11:11
и если я щас его заменю своим параметром записи, ничего не нарушится ли?
25 dron4ikkk
 
11.09.14
11:13
(24) или как раз таки параметрзаписи и нужен например для таких ухищрений как у меня?
26 АбсолютноТемное Тело
 
11.09.14
11:21
Там  передается РежимЗаписи как минимум, а дополнительно ты можешь ДОБАВЛЯТЬ в структуру все что хочешь.  И эти параметры  как раз и нужны для  обмена данными между подобными процедурами. Можно делать и по другому, но  рекомендуется этот способ.
27 dron4ikkk
 
11.09.14
11:26
(26)  ситуация стала такая...:

если ПараметрыЗаписи.Применить="Применить" тогда
сообщить("1");
иначе
сообщить("2");
конецесли;

если в случае нажатия кнопки стандартной "записать закрыть", то пишет ошибку, что не содержится в параметрызаписи применить. т.е. условие не подходит(
28 dron4ikkk
 
11.09.14
11:26
Поле объекта не обнаружено (Применить)
29 АбсолютноТемное Тело
 
11.09.14
11:37
Если ПараметрыЗаписи.Свойство("Применить") тогда
    Если ПараметрыЗаписи.Применить="Применить" тогда
      сообщить("1");
    КонецЕсли;
Иначе
сообщить("2");
КонецЕсли;
30 dron4ikkk
 
11.09.14
11:42
(29) Если ПараметрыЗаписи.Количество() = 1 Тогда


так сделал))))))))))