Всем привет!
Создал регистр сведений. Для одного из ресурсов для свойства "Проверка заполнения" выставил значение "Выдавать ошибку". Создал форму записи. На форме, реквизит ресурса сам подсветился красным пунктиром (ну типа обязательно нужно заполнять). Свойство формы ПроверятьЗаполнениеАвтоматически выставлено в Истина. У формы создаю обработчик события ОбработкаПроверкиЗаполненияНаСервере. Если не заполняю данные ресурс, то действительно возникает ошибка, все как надо. Но теперь я хочу что бы проверка заполнения данного ресурса срабатывала в зависимости от условия. Читаю примеры на ИТС и др. источниках и там в примерах показано, как добавляют и удаляют реквизиты из второго параметра ПроверяемыеРеквизиты (он имеет тип массив) обработчика ОбработкаПроверкиЗаполненияНаСервере. Но дело в том, что в моем случае в этом параметре нет нихрена, кроме строки "Запись"! Почему? Почему там нет реквизитов которые я отметил как обязательные для заполнения. Кроме того, добавление имен других реквизитов в этот параметр никак не влияет на автоматическую проверку. Может кто нибудь объяснить как пользоваться этим механизмом? И что нужно сделать, что бы там оказались мои реквизиты и что бы механизм реагировал, если я туда добавляю новые реквизиты? Что вообще происходит?
---
Все верно. В Вашем случае необходимо использовать обработчик "ОбработкаПроверкиЗаполнения" в модуле набора записей. В модуле формы обработчик "ОбработкаПроверкиЗаполненияНаСервере" предусмотрен в первую очередь для проверки реквизитов формы, не объекта (записи регистра).
---
Вижу, что есть недопонимание того, о чем я пишу. Покажу на картинке:
- Красным выделены поля записи регистра. В обработчике проверки в модуле формы на них влиять нельзя.
- Зеленым выделены поля формы. На них влиять можно.
---
Все верно. В Вашем случае необходимо использовать обработчик "ОбработкаПроверкиЗаполнения" в модуле набора записей. В модуле формы обработчик "ОбработкаПроверкиЗаполненияНаСервере" предусмотрен в первую очередь для проверки реквизитов формы, не объекта (записи регистра).
---
Тогда нужно просто самому генерировать сообщения с привязкой к элементам формы и просто взводить параметр Отказ в Истина?
---
Зачем же самому, они сформируются автоматически и при обработке ПроверяемыеРеквизиты в модуле набора записей.
---
Спасибо, что то начинает прояснятся. Какой то вообще не интуитивно понятный механизм, хотя на первый взгляд кажется, что все просто...
---
Уточнение: приложение управляемое и поведение одинаковое на разных платформах.
---
Почему бы в модуле объекта в событии ОбработкаПроверкиЗаполнения не делать проверку? Там вроде бы ПроверяемыеРеквизиты заполняется нормально.
---
Да, действительно, в модуле набора записей параметр ПроверяемыеРеквизиты содержит мои реквизиты, но в чем тогда смысл этого обработчика в форме? Кроме того в модуле набора записей не удобно работать с конкретной записью, потому что там набор записей с одной записью. А если вообще идет запись не из формы, а набором записей программно, тем более что для одной записи условие может выполняться, а для другой записи нет и как тогда быть? Или такой подход вообще не применим для регистров и правильней делать проверки в форме в обработчике "ПередЗаписью"?
---
При программной записи набора ОбработкаПроверкиЗаполнения не вызывается.
---
Да, об этом я забыл.
---
Тогда получается, что я могу быть уверен, что в наборе всегда одна запись?
---
Лучше проверить. Метод ПроверитьЗаполнение() набора записей же вызывает это событие.
---
Да точно. О Господи как сложно...
---
Да, действительно, в модуле набора записей параметр ПроверяемыеРеквизиты содержит мои реквизиты, но в чем тогда смысл этого обработчика в форме?Для проверки заполнения реквизитов формы. Например в случае, если одно из полей записи не выведено на форму, а значение его управляется специальным полем формы.
---
Но как я могу влиять на поведение из обработчика формы? Удалять я не могу реквизиты из списка, потому что их там нет. Добавлять я так понял тоже нет смысла, т.к. в обработчике модуля набора записей этих реквизитов в параметре не будет. Зачем тогда вообще этот параметр ПроверяемыеРеквизиты? Только для того что бы я мог очистить его полностью и отключить проверку в модуле набора записей? Так же вроде это работает?
---
Да что ж такое. :-)
В обработчике формы в параметре "ПроверяемыеРеквизиты" будут поля формы. На них Вы и можете влиять. А на поля основного реквизита - записи регистра - не можете. И не к чему. Для него предусмотрен обработчик в модуле набора записей.
---
Вижу, что есть недопонимание того, о чем я пишу. Покажу на картинке:
- Красным выделены поля записи регистра. В обработчике проверки в модуле формы на них влиять нельзя.
- Зеленым выделены поля формы. На них влиять можно.
---
О Господи!!! Все, теперь до меня дошло. Спасибо большое! Не помню, что бы я видел это разъяснение в документации, либо так же не понял что имеется ввиду. Всё, вопрос закрыт. Проверил - действительно туда подают реквизиты формы для которых включил "Выдавать ошибку".