Имя: Пароль:
1C
1С v8
ПроверкаЗаполнения() реквизитов объекта
0 prtx
 
23.04.16
13:10
товарищи, я уже начинаю нервничать.

у меня есть встроенная обработка, в этой обработке я создаю реквизит (реквизит объекта) ставлю Проверка заполнения - Выдавать ошибку.

далее в форме обработки. я делаю кнопку и вот при нажатии на кнопку мне нужно проверять а заполнен ли этот реквизит. следую логике в действии этой кнопки(команды) и вызываю ПроверитьЗаполнение() НО эта зараза проверяет только реквизиты формы, кто должен проверять реквизиты объекта, я что-ли???

в чем проблема.

1с 8.3. уф

спасибо!
1 prtx
 
23.04.16
13:18
(0) методом тыка было выявлено, что функция ПроверитьЗаполнение() вызывает сыбытие ОбработкаПроверкиЗаполненияНаСервере() однако, на сколько я понимаю для того чтобы происходила проверка заполнения реквизитов объекта необходимо событие ОбработкаПроверкиЗаполнения(). а эта падлюка его не вызывает, в чем беда?
2 RomanYS
 
23.04.16
13:25
ОбработкаОбъект.<Имя обработки> (DataProcessorObject.<Имя обработки>)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
Синтаксис:

ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
Параметры:

<Отказ>

Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.
<ПроверяемыеРеквизиты>

Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Описание:

Вызывается расширением формы при необходимости проверки заполнения реквизитов в форме, при вызове стандартных команд "OK", "Да", "Повторить", "Пропустить", а также при выполнении метода ПроверитьЗаполнение.
3 RomanYS
 
23.04.16
13:28
(1) тебе надо вызывать ПроверитьЗаполнение() у обработки(объекта), а не формы
4 prtx
 
23.04.16
13:40
(2) после долгих мук я до этого дочитался, и засунул на форму стандартную команду да и ок и другие. нажимаю на кнопку ок и ничего не происходит тупо форма закрывается и все и пофиг, что там половина реквизитов не заполнена.
5 prtx
 
23.04.16
13:43
(2) а имеет значение как открывается форма?
ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма.НаРозничнуюПродажу", ПараметрыФормы, ЭтаФорма, , , , , );
6 prtx
 
23.04.16
13:49
(3) т.е. это нужно сделать в модуле объекта? да?

а как это сделать?
7 RomanYS
 
23.04.16
13:54
(4) если я правильно понимаю абзац про расширении формы, то это только для ОФ.

(6) тебе придется на сервере создать обработку (реквизитформывзначение), потом вызвать у нее проверитьзаполнение.

Проще (и без лишних вызовов сервера) просто явно проверять что нужно кодом
8 prtx
 
23.04.16
14:19
(7) честно раньше так и делал. но вот наткнулся на сей механизм, и решил не изобретать велосипед, а использовать это чудо-юдо которое якобы для этого и предназначено...

я одного не пойму а нафига тогда в свойствах реквизитов(реквизиты объекта в обработке) есть этот пункт проверка заполнения? и нафига тогда в модуле объекта (обработки) есть ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) если ее хрен вызовешь, и сама по себе она непонятно как вызывается?
9 RomanYS
 
23.04.16
14:27
(8) наверное, когда это разрабатывалось УФ ещё не было
10 prtx
 
23.04.16
15:00
(9) УРА ТОВАРИЩИ!!!

Вот я лох))) что-то вчера делал и ни понятно нафига снял галку основной реквизит с реквизита формы Объект.

т.е. есть на объекте стоит галка "основной реквизит" тогда вызывается ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты), если нет тогда ее фиг вызовешь...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший