Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 03:05

Обойти проверку реквизита на уровне формы

Автор xDD, 29 мая 2015, 17:26

0 Пользователей и 1 гость просматривают эту тему.

xDD

Следующая ситуация в реквизите документа "Адрес доставки" поставил в свойстве "проверка заполнения" - Выдавать ошибку.
В документе в случае изменения реквизита "способ доставки", нужно отключать проверку поля  "Адрес доставки" на обязательное заполнение.
На сколько я понял убрать его можно из проверки в процедуре ОбработкаПроверкиЗаполнения, она вызывается при проведении документа.
При попытке провести документ, до события проведения и записи не доходит. Выполняется проверка на уровне формы, выходит сообщение Не заполнен реквизит
Адрес доставки.
Вопрос где происходит проверка на уровне формы и как в данном случае по условию обходить проверку?
http://gyazo.com/8a4ff476b9e3e17032d71a55bad372f9

Rasty

так вы сделайте процедура ПриИзменении реквизита способа доставки

Если СпособДоставки = Что-тоТам Тогда
    Элементы.адресдоставки.проверказаполнения = Ложь

Код примерный, но работать должно =)
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

xDD

Вопрос закрыт
Добавлено: 29 мая 2015, 17:52


точку останова обработки заполнения поставил не на тот документ

cska-fanat-kz

xDD,

УправляемаяФорма (ManagedForm)
ОбработкаПроверкиЗаполненияНаСервере (FillCheckProcessingAtServer)
Синтаксис:

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

<Отказ>

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

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

Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение.
Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Пример:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

// Проверим заполненность реквизита "Покупатель"
Если Не ЗначениеЗаполнено(Покупатель) Тогда
   
    // Если он не заполнен, сообщим об этом пользователю
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
    Сообщение.Поле = "Покупатель";
    Сообщение.Сообщить();
       
    // Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель"
    ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель"));
    // Так как информация не консистентна, то продолжать работу дальше смысла нет
    Отказ = Истина;
       
КонецЕсли;
   
КонецПроцедуры



Примечание:

Для формы документа, если при конфигурировании для документа свойство Проведение установлено в Разрешить, событие вызывается только при проведении.
Если документ не проводится (свойство Проведение установлено в Запретить), то вызывается при записи.
Для формы бизнес-процесса вызывается расширением формы при старте бизнес-процесса.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Цитата: Rasty от 29 мая 2015, 17:29
так вы сделайте процедура ПриИзменении реквизита способа доставки

Если СпособДоставки = Что-тоТам Тогда
    Элементы.адресдоставки.проверказаполнения = Ложь

Код примерный, но работать должно =)

Нифига нет такого свойства :^454^:
Это свойство самого реквизита объекта, а не элемента формы!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск