|   |   | 
| 
 | Вывод сообщения о незаполненном поле документа | ☑ | ||
|---|---|---|---|---|
| 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) правильнее будет задать вопрос какой смысл в этом сообщении после закрытия формы?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |