Имя: Пароль:
1C
1С v8
Функция вопрос() на тонком клиенте
,
0 AlexToo
 
07.01.14
15:28
Здравствуйте, работаю с конфигурации унф тонкий клиент, при нажатии на кнопку провести, перед проведением необходимо проверить условие и если оно не выполнено задать вопрос. Процедура "Перед записью", в которой я пытаюсь добавить это условие и функцию вопрос, выполняется на сервере, как правильно тогда задать вопрос?
1 Мимохожий Однако
 
07.01.14
15:30
Если условие не выполняется, то надо выводить сообщение и отказ от проведения. Иначе при групповом проведении умрут все
2 AlexToo
 
07.01.14
15:32
это понятно, проблема в том что я не понимаю, как правильно вывести сообщение, функция вопрос() на сервере не выполняется
3 Пеппи
 
07.01.14
15:32
Сообщить() ?
4 GROOVY
 
07.01.14
15:35
Описать процедуру ПередЗаписью в модуле формы. Она на клиенте выполняется.
5 AlexToo
 
07.01.14
15:35
Сообщить() не подходит, ситуация такая есть документ в нем поле "основание", при проведении проверяется заполнено поле или нет, и если не заполнено появляется вопрос "Основание не заполнено, продолжить проведение документа" если пользователь нажимает "да"-то проводим, если "нет"-то соответственно не проводим. Как правильно прописать в коде этот вопрос?
6 AlexToo
 
07.01.14
15:36
(4) т.е. из сервера перенести в модуль формы?
7 GROOVY
 
07.01.14
15:38
Все, что связано с интерфейсом и взаимодействием с пользователем ОБЯЗАНО быть в модулях форм.
8 AlexToo
 
07.01.14
15:39
(7) данная процедура в модуле объекта описана, если я ее перенесу она не будет выполнятся
9 Wobland
 
07.01.14
15:42
(5) если не заполнено тогда сообщить+отказ. и всё
10 GROOVY
 
07.01.14
15:42
(8) Еще раз, не надо в модуль объекта пихать интерфейсные события. Для этого СПЕЦИАЛЬНО предназначен модуль формы. В модуле формы есть предопределенное событие ПередЗаписью, оно отрабатывает на клиенте.
11 Wobland
 
07.01.14
15:42
(9) +возврат
12 Wobland
 
07.01.14
15:43
(10) поубивал бы тех, кто мне мешает записывать неправильные документы ;)
13 AlexToo
 
07.01.14
15:45
(10) ну так-то не по моей воле в модуле объекта процедура, это типовая конфигурация. но о чем вы говорите поняла, спасибо)) (12) настаивают на том что бы именно был вопрос с выбором действия, поэтому сообщить не канает
14 Alexman13
 
07.01.14
15:46
фотку еще не просили?))
15 Wobland
 
07.01.14
15:46
(13) каких действий?
16 Wobland
 
07.01.14
15:47
(14) стартуй!
17 AlexToo
 
07.01.14
15:48
(15) либо проведение без основания, либо с закрытием вопроса и выбора основания
18 Wobland
 
07.01.14
15:49
(17) убедила. в форме и опиши свой вопрос. разумеется, после небольшой демонстрации
19 Wobland
 
07.01.14
15:49
(17) а твой вопрос к проведению не имеет никакого отношения
20 GROOVY
 
07.01.14
15:49
(13) В твоей воле написать процедуру в модуле формы.


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЧтоВКлюче = Ложь;
    Если НЕ ПараметрыЗаписи.Свойство("ЗаписатьБезВопросов") Тогда        
        ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьОтвет", ЭтотОбъект);
        ПоказатьВопрос(ОписаниеОповещения, "Все в порядке?",РежимДиалогаВопрос.ДаНет, 60);
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

//Вынести в отдельную процедуру
&НаКлиенте
Процедура ОбработатьОтвет(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
        Записать(Новый Структура("ЗаписатьБезВопросов", Истина));
    КонецЕсли;
    
КонецПроцедуры
21 AlexToo
 
07.01.14
15:58
(20) спасибо, попробую
22 sikuda
 
07.01.14
17:02
(20) А как сделать чтобы в 8.2.19.83 не ругался на "Тип не определен ОписаниеОповещения()"? Или только для 8.3?
24 GROOVY
 
07.01.14
17:25
8.3
25 TamerlanDE
 
07.01.14
17:33
(0) ОбработкаПроверкиЗаполненияНаСервере
26 GROOVY
 
07.01.14
17:35
(25) Мимо!
27 TamerlanDE
 
10.01.14
11:35
&НаСервере
Функция ПроверкаУсловия()
    Возврат (Объект.Реквизит1 <> Объект.Реквизит2);
КонецФункции

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
    Отказ = ПроверкаУсловия();
    ОшибкаПроверки = Отказ;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ПодключитьОбработчикОжидания("ПоказатьПредупреждение", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьПредупреждение()
    Если ОшибкаПроверки Тогда
        Ответ = Вопрос("Исправить ошибку?", РежимДиалогаВопрос.ДаНет);
        Если Ответ = КодВозвратаДиалога.Да Тогда
            Объект.Реквизит2 = Объект.Реквизит1;
        КонецЕсли;
    Иначе
        ПодключитьОбработчикОжидания("ПоказатьПредупреждение", 0.1, Истина);
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    ОтключитьОбработчикОжидания("ПоказатьПредупреждение");
КонецПроцедуры
28 Жан Пердежон
 
10.01.14
11:51
(27) изврат
29 Жан Пердежон
 
10.01.14
11:52
кстати, документ провести еще могут из формы списка, выбора и т.д.
Основная теорема систематики: Новые системы плодят новые проблемы.