Имя: Пароль:
1C
 
Заполнение дополнительных полей в документе
,
0 NIGHTHUNTER
 
13.04.22
04:12
Необходимо сделать доработку, что бы пользователя принудительно заставлять заполнять определенные поля.
Есть идея выдавать запрос. То есть заполнять ряд требуемых полей, по вопросу при закрытии документа.

И показывать эти поля, так же при положительном вопросе. Где это лучше делать? В процедуре ПередЗаписью() ?

То есть пользователь, создает документ. Заполняет его. Потом по "Провести и закрыть", "Записать", "Провести".
В процедуре ПередЗаписью() выдавать ему вопрос, такой то тип документа?
Если нет, то записывается, провидится, закрывается. Сохраняется.

А если да, тогда, снова показывать ему форму, где выделенными становятся дополнительные поля, которые являются обязательными для заполнения.

Как тут лучше сделать?
1 NIGHTHUNTER
 
13.04.22
04:17
Рассматриваю доработку в:

ФормаДокумента.ПередЗаписьюНаСервере()

МодульОбъекта.ПередЗаписью()
2 Aleksey
 
13.04.22
04:41
Есть же типовой механизм отметка незаполненного. чем не устраивает?
3 NIGHTHUNTER
 
13.04.22
05:34
(2) Нужна доработка.
Пользователь, как может заполнять эти реквизиты, должен. Так и не нужно ему это делать.
По этому делаю при сохранении документа, проверку.
С выводом вопроса.

Начал делать вот в этой процедуре ФормаДокумента.ПередЗаписьюНаСервере(), но она не подошла. Там не работает Оповещение.

МодульОбъекта.ПередЗаписью() - эта тоже не подойдет, так как выполняется на сервере.

Остается, - ФормаДокумента.ПередЗаписью() &НаКлинете, пробую делать все в ней теперь. Не знаю подойдет ли она.

&НаКлиенте
Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Знач ПараметрКоманды) Экспорт
    Если Результат <> КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    //
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Обработка заполнения гос. контракта.";
    Сообщение.Сообщить();
КонецПроцедуры
//
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ПараметрКоманды = Неопределено;
    Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, ПараметрКоманды);
    ТекстВопроса = "Это Государственный контракт ?";
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Проверка на государственный контракт'"));
КонецПроцедуры
4 NIGHTHUNTER
 
13.04.22
05:36
Почему то после вызова вот этой процедуры,

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

идет вызов МодульОбъекта.ПередЗаписью()

а не процедуры указанной в оповещении.
5 Aleksey
 
13.04.22
05:44
так Обработчик события ОбработкаПроверкиЗаполнения разве не для этого?
https://its.1c.ru/db/v8std/content/463/hdoc
6 NIGHTHUNTER
 
13.04.22
05:59
(5) как не дать закрыть форму при проведении документа?
7 NIGHTHUNTER
 
13.04.22
06:03
(5) Мне нужно при "Провести и закрыть", "Записать", "Провести", выдавать вопрос пользователю, и если да, не давать закрыть форму документа пока он не заполнит необходимые поля.

Как это сделать? Начал делать вопрос через оповещение, но не пойму как не давать закрыть форму документа.
8 Ненавижу 1С
 
гуру
13.04.22
06:04
(7) зачем всё это?
9 NIGHTHUNTER
 
13.04.22
06:11
(8) Пользователь может забывать заполнить некоторые реквизиты. Они могут заполняться, а могут и не заполняться.
Ему необходительно принудительно напоминать об их заполнении.
10 Aleksey
 
13.04.22
06:12
(6) ?
Параметр Отказ мы устанавливаем в значение Истина. Это значит, что документ не будет проведен, если найден хоть один незаполненный реквизит НаборСвойств для номенклатуры, являющейся материалом. Если этот параметр закомментировать, сообщения об ошибке будут выдаваться, но документ будет проведен.

https://its.1c.ru/db/pubdevguide83#content:572:hdoc
11 NIGHTHUNTER
 
13.04.22
06:14
(8) Цель такова, -

Пользователь создал документ.
При "Провести и закрыть", "Записать", "Провести", ему я выдаю вопрос. И если нажать да, то он должен заполнить необходимые поля.
Они могут появиться после этого нажатия. Либо как то ещё,

пока выясняю как не давать закрывать форму, пока не заполнены поля?
12 Aleksey
 
13.04.22
06:14
оттуда же
Программная проверка заполнения объектов конфигурации выполняется в обработчике ОбработкаПроверкиЗаполнения(), который нужно поместить в модуле объекта. Этот обработчик вызывается автоматически при сохранении любой формы или при проведении документов. Программную проверку объектов интерактивного ввода нужно делать именно в этом обработчике, а не при записи объекта.

Разве это не твой случай?
13 Aleksey
 
13.04.22
06:14
(11) а если надать нет то что?
14 NIGHTHUNTER
 
13.04.22
06:20
(12) Возможно, но не владею информацией, и методами подхода. На данном этапе. Как появится ясность, сделаю это решение.

Пока сам добываю его.

(13) Если пользователь, нажал НЕТ, то обычное "Провести и закрыть", "Записать", "Провести", без преткновений.

Пробую так, -

"Провести и закрыть", "Записать", "Провести"

//
&НаКлиенте
Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Отказ) Экспорт
    Если Результат <> КодВозвратаДиалога.Да Тогда
        Закрыть();
        Возврат;
    КонецЕсли;
    //
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Обработка заполнения гос. контракта.";
    Сообщение.Сообщить();
КонецПроцедуры
//
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    Отказ = Истина;
    Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, Отказ);
    ТекстВопроса = "Это Государственный контракт ?";
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Проверка на государственный контракт'"));
КонецПроцедуры
//
15 Мимохожий Однако
 
13.04.22
06:54
ОФФ. Забыл про паяльник и дверь.
Достаточно не давать записывать незаполненный документ. Но возможность закрывать незаполненный документ должна быть.
16 NIGHTHUNTER
 
13.04.22
07:05
(15) Сейчас этот код при нажатии на нет, ходит по кругу ((( Не давая закрыть форму, хотя должен закрыть и все.
Как его поправить?
17 NIGHTHUNTER
 
13.04.22
07:13
(12) Я вижу в модуле формы процедуру ОбработкаПроверкиЗаполненияНаСервере() вы про неё?
18 NIGHTHUNTER
 
13.04.22
07:14
(17) Там оповещение на сервере наверное нельзя использовать.
19 Мимохожий Однако
 
13.04.22
07:22
(16) Убери блокировку закрытия незаполненного документа. Это тупиковый путь
20 NIGHTHUNTER
 
13.04.22
07:24
(19) Я хочу что бы, пользователь при "Провести и закрыть", "Записать", "Провести", получал вопрос.

И при нажатии нет, документ выполнял свое "Провести и закрыть", "Записать", "Провести", как и шло.

А если он нажимает, да. То нужно будет ему заполнить некоторые реквизиты обязательно.
21 NIGHTHUNTER
 
13.04.22
07:25
(19) Это в случае, если он нажал да. Форма остается открытой, для заполнения этих реквизитов.
22 Мимохожий Однако
 
13.04.22
07:27
(21) Третий раз повторю. Это тупиковый путь. Без паяльника и двери не заставишь пользователя заполнить нужные поля. Он такой же упёртый как и ты.
23 NIGHTHUNTER
 
13.04.22
07:28
(22) Пользователь попросил так сделать, я пытаюсь. Ищу способы.
Пользователь заполнил документ, и не подумал про необходимые поля. Записывает его, ему выходит вопрос.
И остается форма если он ответил да. Если нет она закрывается.
Как это сделать?
24 Мимохожий Однако
 
13.04.22
07:29
Вопрос надо задавать не при закрытии формы, а перед записью
25 NIGHTHUNTER
 
13.04.22
07:29
(22) Вот это тупиковая задача (20) ?
26 Мимохожий Однако
 
13.04.22
07:31
(25) см (24)
27 NIGHTHUNTER
 
13.04.22
07:33
(26) Понял. Не вовремя увидел (24).
Я делал это в процедуре МодульФормы.ПередЗаписью() .

Но столкнулся с трудностью, как по да, составлять открытой форму, а по нет не препятствовать ее закрытию ?

Нашел код, с примером ПередЗакрытием(), понял он неподходящий.
28 NIGHTHUNTER
 
13.04.22
07:36
(26) Как тут можно выправиться, по да оставлять форму, а по нет закрывать ?

//
&НаКлиенте
//Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Знач ПараметрКоманды) Экспорт
Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Отказ) Экспорт
    Если Результат <> КодВозвратаДиалога.Да Тогда
        Отказ = Ложь;
        //Закрыть();
        Возврат;
    КонецЕсли;
    //
    Отказ = Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Обработка заполнения гос. контракта.";
    Сообщение.Сообщить();
КонецПроцедуры
//
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    //ПараметрКоманды = Неопределено;
    //Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, ПараметрКоманды);
    Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, Отказ);
    ТекстВопроса = "Это Государственный контракт ?";
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Проверка на государственный контракт'"));
    q=1;
КонецПроцедуры
//
29 NIGHTHUNTER
 
13.04.22
07:40
(26) При записи, форма документа сразу закрывается. И стоит диалог вопроса, так форма закрылась уже (((.
30 NIGHTHUNTER
 
13.04.22
07:40
(29+) ПередЗаписью() то есть.
31 Мимохожий Однако
 
13.04.22
07:42
(29) см (2)
32 NIGHTHUNTER
 
13.04.22
07:48
Сейчас я не могу по вопросу, закрыть форму

//
&НаКлиенте
//Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Знач ПараметрКоманды) Экспорт
Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Отказ) Экспорт
    Если Результат <> КодВозвратаДиалога.Да Тогда
        Отказ = Ложь;
        Возврат;
    КонецЕсли;
    //
    Отказ = Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Обработка заполнения гос. контракта.";
    Сообщение.Сообщить();
КонецПроцедуры
//
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    //ПараметрКоманды = Неопределено;
    //Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, ПараметрКоманды);
    Отказ = Истина;
    Оповещение   = Новый ОписаниеОповещения("ПроверкаНаГосударственныйКонтракт", ЭтотОбъект, Отказ);
    ТекстВопроса = "Это Государственный контракт ?";
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Проверка на государственный контракт'"));
    q=1;
КонецПроцедуры
//
33 NIGHTHUNTER
 
13.04.22
07:50
(31) Мне нужно задавать вопрос. По нет, закрывать и проводить, записывать. По да, оставлять форму для заполнения, напоминая об этом.
34 NIGHTHUNTER
 
13.04.22
07:51
почему в (32) по нет не закрывается форма?
35 Мимохожий Однако
 
13.04.22
07:54
(32) Какой смысл копировать сюда один и тот же код?
Процедуру проверки перенеси в обработчик проверки заполнения.
(34) Событии записи не связано  с событием закрытия формы. А событие закрытия не должно быть связано с заполнением формы.
...
Начни заново с постановки задачи и поймешь (я надеюсь), что ходишь по кругу из-за непонимания конечной цели.
36 NIGHTHUNTER
 
13.04.22
07:57
(35) В эту процедуру? Оттолкнуло что она выполняется на сервере ОбработкаПроверкиЗаполненияНаСервере()
37 Мимохожий Однако
 
13.04.22
07:57
38 NIGHTHUNTER
 
13.04.22
08:00
(37) нет доступа
39 NIGHTHUNTER
 
13.04.22
08:00
смотрю примеры сейчас в конфигурации
40 Мимохожий Однако
 
13.04.22
08:01
(38) Демо доступ на неделю можно получить при регистрации на сайте
41 NIGHTHUNTER
 
13.04.22
08:02
(40) Подскажите по алгоритму. У меня есть сейчас 3 реквизита. Которые нужно заполнить по положительному ответу на вопрос.
Я в модуле документа заполняю массив проверяемых реквизитов и там же задаю вопрос?
42 NIGHTHUNTER
 
13.04.22
08:06
(37) Вы мне показали что нужно поставить галку, проверка заполнения, выбрать в свойстве, выдавать ошибку. Это то мне не подходит.
43 Мимохожий Однако
 
13.04.22
08:06
(42) Я всё сказал
44 NIGHTHUNTER
 
13.04.22
08:07
(43) Смысл во всем сказанном, если я не сдвинулся с места ?
45 Мимохожий Однако
 
13.04.22
08:08
(44) см (35) Проблема в тебе
46 NIGHTHUNTER
 
13.04.22
08:08
Завел я доступ посмотрел. И что мне это даст? Я описал уже не раз что мне нужно, и проверка заполнения обычная мне не подходит.
Нужно задавать вопрос, потом только давать заполнять принудительно эти реквизиты, или нет.
47 NIGHTHUNTER
 
13.04.22
08:09
(45) Это тоже никто не оспаривает. И я ищу тут решение, которое можно применить и увидеть результат!!!!!!!
Пока голова моя его не выдала, что пробовал, не завершилось ничем. думаю по другому как быть.
48 Ненавижу 1С
 
гуру
13.04.22
08:10
(46) поверь мне, этот вопрос бесполезен - все будут отвечать так, чтобы не заполнять реквизиты
49 Мимохожий Однако
 
13.04.22
08:15
(46) "Завел я доступ посмотрел. И что мне это даст?"
Это даст знания. Знания при должном размышлении дадут путь к решению.
50 NIGHTHUNTER
 
13.04.22
08:17
(48) Дело в том что, эти реквизиты, можно заполнять , а можно не заполнять.
Тогда, я вижу такое решение. Но не знаю на сколько оно правильное.
Поле, но не галка. Обязательное для заполнения. А потом уже и реквизиты в зависимости от его заполнения.
А поле это будет, типа список. гос. заказ или не гос заказ. Верно ли так?
Подскажите идею как правильно сделать? Что нужно я описал. И вижу то что тут написал, как один из вариантов.
51 NIGHTHUNTER
 
13.04.22
08:19
Я хотел все решить вопросом, при проведении, записи документа. И дальнейшими действиями, но получается не возможно это сделать.
52 Мимохожий Однако
 
13.04.22
08:23
(50) Я рад, что ты вернулся к обсуждению постановки задачи. Если реквизит можно не заполнять, то он не является обязательным. В этом случае не должно быть никаких вопросов и предупреждений. Достаточно дать сообщение, что этот реквизит не заполнен.
Поэтому твоё решение является неверным, т.к. необязательность заполнения противоречит ответу на вопрос. Ответ ни на что не влияет, тогда нет смысла его задавать. Достаточно сообщения.
(51) Решать вопросы надо не при проведении или записи, а до того. Либо ограничиться сообщениями. Постарайся убедить в этом заказчика
53 NIGHTHUNTER
 
13.04.22
08:29
от куда вызывается процедура ОбработкаПроверкиЗаполнения() ????

как в Проверяемые реквизиты, добавить значения ? Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
54 NIGHTHUNTER
 
13.04.22
08:31
(52) Ну вот в этом и моя задача теперь, убеждать и объяснять.
Я пока хотел, со слов постановки задача, что либо предпринять.
55 Aleksey
 
13.04.22
08:36
(53)
Последовательность запуска событий
Модуль формы  ПередЗаписью(Отказ, ПараметрыЗаписи)  
2)  Модуль формы  ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)  

3)  Модуль объекта  ОбработкаПроверкиЗаполнения (Отказ, ПроверяемыеРеквизиты)

Сначала вызывается событие формы ОбработкаПроверкиЗаполненияНаСервере На данном этапе есть доступ к данным формы.

После этого в памяти сервера создается прикладной объект, соответствующий типу основного реквизита формы, и его данные заполняются из данных формы.

Затем вызывается событие прикладного объекта ОбработкаПроверкиЗаполнения.

Эти два обработчика проверки заполнения реализуются через параметр «ПроверяемыеРеквизиты» типа Массив, содержащий реквизиты, которые надо проверять (т.е. которым установлено свойство проверки заполнения  «Выдавать ошибку»).  И если из этого массива убрать реквизит, то проверяться он не будет, если добавить, то будет выполняться проверка заполнения.    

Эти два обработчика событий предназначены :

Для включения в  проверку заполнения тех реквизитов, у которых в свойствах  «ПроверкаЗаполнения» указано «Не проверять».  Для этого надо добавить  этот реквизит в массив параметр «ПроверяемыеРеквизиты»
Для того, чтобы исключить из автоматической проверки реквизиты, у которых установлено свойство проверки заполнения  «Выдавать ошибку» в зависимости от каких-то условий. Для этого надо удалить  этот реквизит из массива параметра «ПроверяемыеРеквизиты»
Имеется несколько особенностей, которые необходимо учитывать:

Если у формы из которой записывается объект в свойствах не установлено «ПроверятьЗаполнениеАвтоматически», то тогда эти обработчики проверки заполнения не вызываются и проверки не происходят!
Вызываются только при интерактивной записи! При программной записи  не вызываются.  Для проверки нужно использовать метод объекта ПроверитьЗаполнение(), который инициирует запуск этих событий.
Для документов, имеющих возможность проведения, эти события проверки заполнения вызываются только при проведении!
Если данные формы не нужны, то используйте обработчик модуля объекта ОбработкаПроверкиЗаполнения
https://infostart.ru/1c/articles/1098803/
56 Aleksey
 
13.04.22
08:41
как в Проверяемые реквизиты, добавить значения

читай https://www.1s-up.ru/proverka-zapolnenija-v-1s/
57 dreizehn
 
13.04.22
08:44
(54) > моя задача теперь, убеждать и объяснять.
Неубедительно.
58 NIGHTHUNTER
 
13.04.22
08:46
(55)(56) Спасибо. Сейчас обдумываю как это провернуть.
59 NIGHTHUNTER
 
13.04.22
08:49
В модуле документа, задаю проверку нужных реквизитов. Исходя из имеющихся на данную минуту знаний.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    ПроверяемыеРеквизиты.Добавить("НомерГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ДатаГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ИдентификаторГосКонтракта");        
КонецПроцедуры

потом, в процедуре ПередЗаписью() в модуле объекта, делаю запуск проверки

    ПроверитьЗаполнение();
КонецПроцедуры


Это все что я пока понял, что бы это попробовать.
60 NIGHTHUNTER
 
13.04.22
08:53
Вот это само запустится?

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    ПроверяемыеРеквизиты.Добавить("НомерГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ДатаГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ИдентификаторГосКонтракта");        
КонецПроцедуры

Или нужно делать

    ПроверитьЗаполнение();
КонецПроцедуры

в процедуре ПередЗаписью() модуля документа, обязательно?

Я сам пробую это все. Решил спросить ещё.
61 NIGHTHUNTER
 
13.04.22
08:56
Это запускается само, без ПроверитьЗаполнение();

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    ПроверяемыеРеквизиты.Добавить("НомерГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ДатаГосКонтракта");        
    ПроверяемыеРеквизиты.Добавить("ИдентификаторГосКонтракта");        
КонецПроцедуры

Зачем тогда ПроверитьЗаполнение(); ?
62 NIGHTHUNTER
 
13.04.22
08:59
Подскажите пожалуйста, как в этой процедуре задать вопрос?

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)


Оповещение в ней не работает. Как это можно сделать?
63 NIGHTHUNTER
 
13.04.22
09:04
Ясно, проверка срабатывает если есть галка в свойствах формы, - ПроверятьЗаполнениеАвтоматически.

Подскажите, а где мне задать можно вопрос, через оповещение?
64 NIGHTHUNTER
 
13.04.22
09:06
Ладно. Спасибо! Сейчас разберусь! Должны прийти идеи!!!! Через галку сделаю! И вопрос, там где это можно задам.
65 NIGHTHUNTER
 
13.04.22
09:35
В модуле документа, -

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если ЯвляетсяГосКонтрактом Тогда
        ПроверяемыеРеквизиты.Добавить("НомерГосКонтракта");        
        ПроверяемыеРеквизиты.Добавить("ДатаГосКонтракта");        
        ПроверяемыеРеквизиты.Добавить("ИдентификаторГосКонтракта");        
    КонецЕсли;
КонецПроцедуры


А перед записью в форме

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


Но если я перепровожу документ, там процедура ОбработкиПроверкиЗаполнения вызывается первой, и никакой вопрос тут не поможет (((

Подскажите, где тогда задавать можно этот вопрос? Что бы устанавливать флаг ЯвляетсяГосКонтрактом  ?
66 NIGHTHUNTER
 
13.04.22
09:37
Сейчас у меня задача, выдавать пользователю вопрос, при нажатии на кнопки "Провести и закрыть", "Записать", "Провести"
67 NIGHTHUNTER
 
13.04.22
09:39
Я так понимаю, что только при создании документа, пробовать, выдавать этот вопрос.
68 NIGHTHUNTER
 
13.04.22
09:40
(67) В процедуре ПриОткрытии(), то есть .
69 Aleksey
 
13.04.22
09:42
(61) СП Украили? Или по ссылкам не ходил и не читал
Для программного запуска события проверки заполнения
70 Kassern
 
13.04.22
09:43
(0) беда...Не так давно один умелец пихнул вопрос в процедуру ПриПроведении(), а потом долго удивлялся почему регламентное задание, которое создает эти документы и проводит перестало работать))
"Необходимо сделать доработку, что бы пользователя принудительно заставлять заполнять определенные поля" - в этом случае никаких вопросов не нужно! В свойствах этих полей проверку заполнения сделайте проверять и все.
71 NIGHTHUNTER
 
13.04.22
09:44
(69) Это я прочел и уяснил! Спасибо!
72 NIGHTHUNTER
 
13.04.22
09:45
(70) А если документ, типа в котором не нужно заполнять эти поля???? Как избавляться пользователи будут от необходимости их заполнения?
По этому я завязываю на вопрос.
73 Kassern
 
13.04.22
09:45
Если все же решили задавать вопросы юзверам, то делайте это в модуле формы, переопределите кнопки записи/проведения документа и при нажатии их уже проводите проверку и спрашивайте.
74 NIGHTHUNTER
 
13.04.22
09:46
(73) Пока так я не рискую. Буду делать при открытии пробовать, Проверяя на ЭтоНовый()
75 Kassern
 
13.04.22
09:46
(72) тогда для каждого типа документа определите свой пул обязательных реквизитов и при создании на сервере указывайте обязательность заполнения
76 NIGHTHUNTER
 
13.04.22
09:48
(75) Да я , дело в том что в процессе. По текущей, вчера полученной постановке.
Продвигаюсь по мере своего развития.

Новый, как я понял буду определять так, - ЗначениеЗаполнено(Объект.Ссылка) .
77 Kassern
 
13.04.22
09:50
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
ЭтоНовый (IsNew)
Синтаксис:
ЭтоНовый()
Возвращаемое значение:
Тип: Булево.
Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан.
Описание:
Определяет, записан ли документ в базу данных.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Если РасходнаяНакладная.ЭтоНовый() Тогда
    РасходнаяНакладная.Записать();
КонецЕсли;
Использование в версии:
Доступен, начиная с версии 8.0.
78 Kassern
 
13.04.22
09:51
конфа-то хоть какая? На Управляемых формах, или на обычных?
79 hhhh
 
13.04.22
10:06
&НаКлиенте
Процедура ПроверкаНаГосударственныйКонтракт(Знач Результат, Знач ПараметрКоманды) Экспорт
    Если Результат <> КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    //

    ЭтоГосударственныйКонтракт = Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Обработка заполнения гос. контракта.";
    Сообщение.Сообщить();
КонецПроцедуры
//

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

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

    КонецЕсли;
    
КонецПроцедуры


что-то типа этого. Создаем реквизиты на форме ВопросУжеЗадавался и ЭтоГОсударственныйКонтракт. Делаем Записать 2 раза. НА первом проходе ставим Отказ = Истина. Задаем вопрос пользователю, получаем ответ. Затем второй проход, второй раз вызывается ПередЗаписью, но уже без вопроса. А где-то ПередЗакрытием проверяются реквизиты ВопросУжеЗадавался, ЭтоГОсударственныйКонтракт, и в зависимости от них закрываем или не закрываем форму.
80 NIGHTHUNTER
 
13.04.22
10:25
(78) ERP, Управляемые формы.

(77) А как в управляемой форме, воспользоваться ЭтоНовый() ?
81 Kassern
 
13.04.22
10:27
(80) "ДокументОбъект" вам о чем-то говорит?
82 NIGHTHUNTER
 
13.04.22
10:27
(77+) Я в процедуре ПриОткрытии() &НаКлиенте смотрю ...
83 Kassern
 
13.04.22
10:28
(82) вот это же черным по белому написано:
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
84 Kassern
 
13.04.22
10:29
это значит вы должны обратиться на сервер и у объекта вызвать данный метод
85 NIGHTHUNTER
 
13.04.22
10:29
(83) Не пойму как мне в процедуре ПриОткрытии() это проделать.
86 Kassern
 
13.04.22
10:29
у вас вообще есть понимание что есть клиент, а что сервер и какие функции они выполняют?
87 NIGHTHUNTER
 
13.04.22
10:30
(84) Я решил что буду смотреть так

    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда

то же ведь способ. Но как тут ЭтоНовый() применить не понятно.
88 Kassern
 
13.04.22
10:30
(85) наверно создать процедуру/функцию и директивой серверной и попробовать сделать это там? А в вашей ПриОткрытии() вызвать ее
89 NIGHTHUNTER
 
13.04.22
10:32
(88) Ну можно пробовать, серверная функция и там, что там только не могу представить.
90 NIGHTHUNTER
 
13.04.22
11:01
Вопрос такой, по кнопке "Записать" не срабатывает вот эта проверка. Что описано в (55) и (56).
Почему это не срабатывает по кнопке Записать? При Записать, не производится проверка заполнения?

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если ЯвляетсяГосКонтрактом Тогда
        ПроверяемыеРеквизиты.Добавить("НомерГосКонтракта");        
        ПроверяемыеРеквизиты.Добавить("ДатаГосКонтракта");        
        ПроверяемыеРеквизиты.Добавить("ИдентификаторГосКонтракта");        
    КонецЕсли;
КонецПроцедуры
91 NIGHTHUNTER
 
13.04.22
11:09
Как можно решать проблему того что при записать не происходит проверка реквизитов????
92 NIGHTHUNTER
 
13.04.22
11:10
Это срабатывает при "Провести" и при "Провести и Записать"

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизит

при "Записать" не работает ((((. Получается эта проверка только на проведение?
93 NIGHTHUNTER
 
13.04.22
12:02
(92) Получается, что бы это сделать при записать, кнопки только подменять? Как в (73) сказали?

Странно что срабатывает только при проведении.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой