|
Вывод сообщения о незаполненном поле документа | ☑ | ||
---|---|---|---|---|
0
LivingStar
20.09.19
✎
14:08
|
УТ 11, Документ.ЗаказКлиента.
При записи документа нужно выводить сообщение о том что не заполнено одно из полей на форме. В зависимости от выбранного значения в списке другого поля. Подскажите пожалуйста. Где правильно это сделать? В какой процедуре? В модуле формы или модуле объекта? |
|||
1
GROOVY
20.09.19
✎
14:11
|
В обработкеПроверкиЗаполнения
|
|||
2
LivingStar
20.09.19
✎
14:13
|
В процедуре ОбработкаПроверкиЗаполненияВМодулеФормы ?
|
|||
3
Mankubus
20.09.19
✎
14:14
|
объекта
|
|||
4
trooba
20.09.19
✎
14:15
|
(2) Пример из типовой, тут есть обращение к обеим функциям, думаю разберетесь:
Если УчетТоваров.НеУказанаСтранаПроисхождения(СтрокаТовары.НомерГТД, СтрокаТовары.СтранаПроисхождения) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Колонка",, НСтр("ru = 'Страна происхождения'"), СтрокаТовары.НомерСтроки, ИмяСписка); Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", СтрокаТовары.НомерСтроки, "СтранаПроисхождения"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "Объект", Отказ); КонецЕсли; |
|||
5
LivingStar
20.09.19
✎
14:33
|
(4) Обязательно так сложно делать?
Может перед записью? Если значение поля не такое то, и если не заполнено такое то поле, то сообщить то то? (4) Это сходу не понять. (3) В модуле документа? Я видел процедуру (2) в модуле формы. То есть нужно её сейчас искать именно в модуле объекта? |
|||
6
LivingStar
20.09.19
✎
14:34
|
(1) (3) Вижу процедуру ОбработкаПроверкиЗаполнения в модуле объекта.
То есть нужно делать именно в ней? А в какой момент она выполняется? |
|||
7
palsergeich
20.09.19
✎
14:39
|
(6) когда происходит проверка заполнения.
Она вызывается штатно платформой, так и может быть вызвана из кода. Рекомендую почитать на ИТС или на ИС про это |
|||
8
GROOVY
20.09.19
✎
14:40
|
(6) Там в синтакс-помощник все ОЧЕНЬ подробно описано.
|
|||
9
LivingStar
20.09.19
✎
14:59
|
Делаю в расширении в модуле объекта.
Почему выходит ошибка? {ДМ_Документ_ЗаказКлиента Документ.ЗаказКлиента.МодульОбъекта(39,29)}: Переменная не определена (Объект) Если Не ЗначениеЗаполнено(<<?>>Объект.ДополнительнаяИнформацияПоДоставке1) Тогда (Проверка: Сервер) ////////////////////////////////////////////////////////////// // LivingStar 2019_09_20 -> &После("ОбработкаПроверкиЗаполнения") Процедура ДМ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Не СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(Объект.ДополнительнаяИнформацияПоДоставке1) Тогда КонецЕсли; КонецЕсли; КонецПроцедуры // <- |
|||
10
LivingStar
20.09.19
✎
15:49
|
Я сдела вот так, почему то по коду проходит, но сообщение не показывается (((((
&После("ОбработкаПроверкиЗаполнения") Процедура ДМ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Не СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(ЭтотОбъект.ДополнительнаяИнформацияПоДоставке) Тогда Сообщить("Не заполнено поле <<Контактная и дополнительная информация по доставке !>>", СтатусСообщения.Информация); КонецЕсли; КонецЕсли; КонецПроцедуры Почему? |
|||
11
LivingStar
20.09.19
✎
15:56
|
Сообщение не показывается. Что я не так делаю?
&После("ОбработкаПроверкиЗаполнения") Процедура ДМ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Не СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(ЭтотОбъект.ДополнительнаяИнформацияПоДоставке) Тогда Сообщить("Не заполнено поле <<Контактная и дополнительная информация по доставке !>>", СтатусСообщения.Информация); Текст = "Не заполнено поле <<Контактная и дополнительная информация по доставке !>>"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
12
LivingStar
20.09.19
✎
16:03
|
Подскажите пожалуйста! Где мое сообщение????? Почему оно не показывается? Что я не так сделал??????
|
|||
13
Кодер
20.09.19
✎
16:06
|
Последний вопрос, конечно, провоцирует...
Ты на УФ? Тогда зачем используешь "Сообщить"? |
|||
14
palsergeich
20.09.19
✎
16:08
|
Проверка заполнения сама плюется сообщениями, надо только поиграть с МассивПроверяемыхРеквмзитов
Я думал ты таки справку то почитал, там же усё написано( |
|||
15
palsergeich
20.09.19
✎
16:10
|
(14) ой проверяемыереквизиты, вот с ней надо поиграться
|
|||
16
Механик
20.09.19
✎
16:21
|
(13) А разве "Сообщить" на УФ не работает?
|
|||
17
LivingStar
20.09.19
✎
16:29
|
(13) Я как то хочу вывести сообщение. Как угодно. Что бы оно осталось. А то я нажимаю записать и закрыть, документ закрывается, велетает и пропадает какое то сообщение не мое а моего нет ((((( Мне хоть как бы , любым способом. Почему не срабытывает? Помогите!!!!!!
|
|||
18
LivingStar
20.09.19
✎
16:30
|
Может эта процедура дурная????
ОбработкаПроверкиЗаполнения И нужно делать в при записи и все будет работать? Что не так у меня, подскажите? |
|||
19
Кодер
20.09.19
✎
16:31
|
Дамочка, прекратите истерику.
Не можете творить - не надо, копируйте чужой удачный код. И это не работает - почитайте документацию. Не поможет и это - мне надо керамогранит уложить в Зеленограде, бетономешалку дам, всему научу. |
|||
20
craxx
20.09.19
✎
16:32
|
(18) Андрюха, завязывай тупить
|
|||
21
LivingStar
20.09.19
✎
16:35
|
Я с утра бывает могу хорошо работать, а после полудня ещё и под вечер, голова выключается. Вот дошел до того что не могу вывести сообщение ((( Что делать то?
|
|||
22
ам794123
20.09.19
✎
16:35
|
(17) вам же в (4) сказали как делать
|
|||
23
SadrArt
20.09.19
✎
16:36
|
(18) нет, это кто то другой дурной
|
|||
24
LivingStar
20.09.19
✎
16:36
|
дело в параметрах да?
ТекстСообщения, ЭтотОбъект, Поле, "Объект", Отказ); |
|||
25
SadrArt
20.09.19
✎
16:38
|
у тебя сообщения выводятся, но ты их не видишь, потому как форма закрывается
сделай так, чтобы форма не закрывалась |
|||
26
SadrArt
20.09.19
✎
16:39
|
(13) + "ЭтотОбъект" в модуле объекта тоже кажется моветон
|
|||
27
Очевидно
20.09.19
✎
16:39
|
||||
28
LivingStar
20.09.19
✎
16:42
|
(25) Вечер, как не пытайся а мозгов в голове уже нет (((((( Теперь с утра нового дня уже.
|
|||
29
LivingStar
20.09.19
✎
17:06
|
Как мне привязывать к форме сообщение то, если форма закрывается!
Как что бы оно осталось пользователю то, если документ закрылся? |
|||
30
Очевидно
20.09.19
✎
17:09
|
(29) в ссылке из (27) есть пример для копипаста
|
|||
31
LivingStar
20.09.19
✎
17:21
|
Скажите я в правильном месте делаю вывод сообщения?
Форма то закрывается!!! Как что бы сообщение осталось? Не знаю что это даст // LivingStar 2019_09_20 -> &После("ОбработкаПроверкиЗаполнения") Процедура ДМ_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Не СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(ЭтотОбъект.ДополнительнаяИнформацияПоДоставке) Тогда Сообщить("Не заполнено поле <<Контактная и дополнительная информация по доставке !>>", СтатусСообщения.Информация); Текст = "Не заполнено поле <<Контактная и дополнительная информация по доставке !>>"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "ДополнительнаяИнформацияПоДоставке","Объект.ДополнительнаяИнформацияПоДоставке"); КонецЕсли; КонецЕсли; КонецПроцедуры // <- Пробую. Мне нужно что бы сообщение осталось! |
|||
32
LivingStar
20.09.19
✎
17:22
|
(31) Какое то сообщение показывается, не моё, и все закрывается. Моего так и нет (
|
|||
33
LivingStar
20.09.19
✎
18:02
|
может быть само положение сообщения куда то скрыто?
Так тоже не работает. &НаСервере Процедура ДМ_ПриЗаписиНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если Не Объект.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(Объект.ДополнительнаяИнформацияПоДоставке) Тогда Сообщить("Не заполнено поле <<Контактная и дополнительная информация по доставке !>>", СтатусСообщения.Информация); //Текст = "Не заполнено поле <<Контактная и дополнительная информация по доставке !>>"; //ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "ДополнительнаяИнформацияПоДоставке","Объект.ДополнительнаяИнформацияПоДоставке"); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
34
LivingStar
20.09.19
✎
19:00
|
||||
35
LivingStar
20.09.19
✎
19:07
|
Не работает
&НаКлиенте Процедура ДМ_ПередЗаписьюПеред(Отказ, ПараметрыЗаписи) //ВсеОкна = ПолучитьОкна(); //РабСтол = ВсеОкна[0]; //РабСтол.Активизировать(); // ОкнаКлиентскогоПриложения = ПолучитьОкна(); Для каждого ОкноКлиентскогоПриложения Из ОкнаКлиентскогоПриложения Цикл Если ОкноКлиентскогоПриложения.Основное Тогда ОкноКлиентскогоПриложения.Активизировать(); Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры // <- |
|||
36
LivingStar
20.09.19
✎
19:22
|
Кто либо понимает о чем я говорю? Нажатие кнопки провести и закрыть закрывает документ и нет сообщения ( !!! Как что бы оно было после закрытия документа?
|
|||
37
Fram
20.09.19
✎
21:33
|
(36) ты документацию принципиально не читаешь?
|
|||
38
LivingStar
21.09.19
✎
06:13
|
(37) Ну подскажите что читать? Какое решение? Везде пишут что это не возможно или какие то примеры которые не работают.
|
|||
39
PuhUfa
21.09.19
✎
06:19
|
(38) не знай что ты где читаешь, но все возможно и все выше тебе уже подсказали. в той же ут11 примеров твоей "задачи" полно
|
|||
40
LivingStar
21.09.19
✎
06:59
|
(39) Вы понимаете что мне нужно вывести сообщение по провести и закрыть?
Форма документа закрывается и нет никаких сообщений. Я пробовал все возможные варианты. Подскажите хоть один я попробую. |
|||
41
LivingStar
21.09.19
✎
07:01
|
Не нужна мне процедура ОбработкаПроверкиЗаполнения.
То о чем я пишу принципиальная проблема, и по ней есть много статей, где это разбирается. Одно из решений 2). Довольно часто необходимо вывести сообщение в обработке проведения документа, причем не только когда возникла ошибка при проведении, но и в том случае, когда документ успешно проведен. Проблема возникает когда пользователь использует команду “Провести и закрыть”. Сообщение привязывается к окну содержащему форму текущего документа, которое в случае успешного проведения тут же закрывается и пользователь его не видит. Все дело в том что метод Сообщить() объекта СообщениеПользователю выводит сообщение в АКТИВНОЕ окно, документ как правило открывается в дополнительном окне, которое в данном случае и является активным. Таким образом, что бы пользователь смог прочитать сообщение после закрытия формы документа, необходимо перед использованием метода Сообщить() активизировать основное окно управляемого приложения. Один из вариантов – сделать это в событии формы ПередЗаписью(), например так: &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) ОкнаКлиентскогоПриложения = ПолучитьОкна(); Для каждого ОкноКлиентскогоПриложения Из ОкнаКлиентскогоПриложения Цикл Если ОкноКлиентскогоПриложения.Основное Тогда ОкноКлиентскогоПриложения.Активизировать(); Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры После этого в обработке проведения можно смело выводить сообщение, теперь оно будет привязано к основному окну, и пользователь сможет прочитать его даже после закрытия формы документа. Процедура ОбработкаПроведения(Отказ, РежимПроведения) // ..... Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Проведен документ " + Ссылка; Сообщение.КлючДанных = Ссылка; Сообщение.Сообщить(); // ..... КонецПроцедуры Но у меня это не работает! Форма закрывается и моего сообщения нет |
|||
42
LivingStar
21.09.19
✎
09:17
|
up
|
|||
43
hhhh
21.09.19
✎
09:44
|
(42) а точно окно основное? У тебя же не основное окно.
|
|||
44
rphosts
21.09.19
✎
09:47
|
(0) о! ЛивингСтар! (42) см (1) там всё есть!
(41) а где вот это самое: Отказ = Истина; |
|||
45
LivingStar
21.09.19
✎
09:54
|
(44) Что такое отказ истина? Эточто бы документ оставался открытым при этом сообщении????
Этого не нужно. Нужно что бы документ закрылся и вывелось сообщение. Как это сделать? (43) Вы про какое окно? Вот http://joxi.ru/GrqW64zi4DaqP2 Я пытаюсь понять как это сделать и можно ли вообще. Пользователь, нажимает "записать и закрыть", ему нужно вывести сообщение. Вот такая задача, подскажите кто в теме, поправьте, или подскажите способ, что бы предметно и детально его испробовать, если есть рабочий. |
|||
46
hhhh
21.09.19
✎
10:02
|
(45) какое из всех этих окон Основное? Непонятно
|
|||
47
rphosts
21.09.19
✎
10:02
|
это значит отказаться от продолжения процесса на этом этапе.
|
|||
48
Kashey
21.09.19
✎
10:07
|
(45) Если проверяемое поле не заполнено, то документ должен проводиться или нет?
|
|||
49
hhhh
21.09.19
✎
10:07
|
(47) ему не нужно отказываться, просто сообщить и двигаться дальше.
|
|||
50
LivingStar
21.09.19
✎
10:09
|
(45) Основное - Это рабочий стол конфигурации. Основное окно конфигурации.
(48) Все должно выполняться как выполняется, без ограничений. Нужно только пользователю вывести окно и все. |
|||
51
LivingStar
21.09.19
✎
10:11
|
(47) Не нужно не от чего отказываться.
Пользователь жмет Записать и закрыть. Окно закрывается. А пользователю выводится сообщение, - Если Не СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда Если Не ЗначениеЗаполнено(ЭтотОбъект.ДополнительнаяИнформацияПоДоставке) Тогда Сообщить("Не заполнено поле <<Контактная и дополнительная информация по доставке !>>", СтатусСообщения.Информация); Текст = "Не заполнено поле <<Контактная и дополнительная информация по доставке !>>"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "ДополнительнаяИнформацияПоДоставке","Объект.ДополнительнаяИнформацияПоДоставке"); КонецЕсли; КонецЕсли; Или как там его вывести. Любым способом, что бы оно осталось. В обычных формах с этим бы не было бы проблем. |
|||
52
rphosts
21.09.19
✎
10:11
|
(49) ну значит закроется вместе с сообщением оконце
|
|||
53
rphosts
21.09.19
✎
10:13
|
(51) если у вас такие извращения... прячьте кнопки ЗаписатьИЗакрыть, Ок, Провести и втыкайте вместо них свои со своей логикой
|
|||
54
LivingStar
21.09.19
✎
10:15
|
(53) Не нужно ничего прятать. Нужно сделать как заявлено.
Пользователь жмет, записать и закрыть. Документ закрывается. И если не заполнено это поле, то выводится сообщение об этом, и отображается. А то сколько я его не вывожу его нет нигде. |
|||
55
hhhh
21.09.19
✎
10:17
|
(54) Ну, потому что рабочий стол это не основное окно. Ты где прочитал, что оно основное?
|
|||
56
rphosts
21.09.19
✎
10:19
|
(54) оконце снизу - тексты всех вызовов Сообщить в нём. Если так нужно ещё и вернуться в закрытый уже документ - выкидывай туда этого документа Ссылку
|
|||
57
LivingStar
21.09.19
✎
10:24
|
(55) Я же вот вам подчеркнул http://joxi.ru/GrqW64zi4DaqP2
Я не сам это придумал а взял решение, про которое говорят что оно работает (41) Но оно не работает!!!!!!! (56) Я не понимаю. Можете по коду подсказать? Я перепробовал все что можно, ничего не работает!!!!! |
|||
58
hhhh
21.09.19
✎
10:31
|
(57) а какого года это решение в (41) ? Может оно столетнее? Точно на такси?
|
|||
59
hhhh
21.09.19
✎
10:33
|
(57) А рабочий стол открывал после проведения? Может ты забыл открыть рабочий стол и там посмотреть?
|
|||
60
LivingStar
21.09.19
✎
10:41
|
(59) После проведения и закрытия, когда документ закрывается
остается же рабочий стол???? Я СДЕЛАЛ ВОТ ТАК. ВСЕХ УСТРАИВАЕТ? ИЛИ ЧТО ТО НЕ ТАК? НЕ ВИЖУ ДРУГИХ ВАРИАНТОВ. ЕСЛИ ВСЕ ЧТО И БЫЛО ТО СТОЛЕТНЕЕ. Я делаю в конфигурации УТ 11.4.7.141 ///////////////////////////////////////////////////// // LivingStar 2019_09_21 -> Если Не Объект.СпособДоставки = ЗначениеСамовывоз() Тогда Если Не ЗначениеЗаполнено(Объект.ДополнительнаяИнформацияПоДоставке) Тогда Предупреждение("Не заполнено поле" + Символы.ПС + "<<Контактная и дополнительная" + Символы.ПС + "информация по доставке !>>"); КонецЕсли; КонецЕсли; // КонецПроцедуры // Функция ЗначениеСамовывоз() Возврат Перечисления.СпособыДоставки.Самовывоз; КонецФункции // <- |
|||
61
hhhh
21.09.19
✎
10:43
|
(60) нет, рабочий стол не остаётся.
|
|||
62
LivingStar
21.09.19
✎
10:44
|
(61) Ну не знаю тогда. Что сделать то что бы сообщение осталось???
Я уже не соображаю по этому поводу и решил остановиться на (60). |
|||
63
hhhh
21.09.19
✎
10:45
|
Поэтому вам не пойдёт это решение. Пользователю ещё кучу кнопок нажимать, чтобы перейти на рабочий стол и там потом внизу где-то смотреть, пришло ему сообщение или нет.
|
|||
64
LivingStar
22.09.19
✎
08:41
|
(63) Какое решение тогда этой задачи?
Пользователь нажимает "Провести и закрыть", форма документа закрывается, нужно вывести сообщение пользователю. |
|||
65
Мимохожий Однако
22.09.19
✎
08:44
|
(51) Правильнее и логичнее (ИМХО) при обязательных незаполненных полях делать отказ в записи документа, проведения и закрытии. Тогда не придётся городить огород с оповещением.
|
|||
66
Фрэнки
22.09.19
✎
09:22
|
продолжу пост выше - при том, что в топике задано, что форма документа отрыта и Запись документа с проведением делается из его формы. И исходя из того, что нужен контроль на заполненные поля, либо реквизиты объекта в форме.
Перехват события, которым пользователь будет Закрывать с Записью и Проведением, либо просто Запись перед Проведением - это все можно спокойно перехватить обработчиками событий прямо на форме или повесть свое собственное событие. Но на форме и вариантов можно придумать много разных. Если потребуется, то можно использовать и вызовы процедур в контексте Сервер. Но вся клиентская муть останется на клиенте и обработчиках событий клиента. И даже без оповещений можно обойтись. з.ы. решение будет довольно простым и примитивным. |
|||
67
Fram
22.09.19
✎
11:04
|
(64) правильнее будет задать вопрос какой смысл в этом сообщении после закрытия формы?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |