Проверка заполнения в форме

1. user596838_sir.stawros 2 03.11.16 09:36 Сейчас в теме
В форме внешней обработки вводятся данные( реквизиты). Как можно проверить их на заполнение до создания документов, до вызова основных процедур?
Есть свойство АвтоОтметкаНезаполненного, она дает подчеркивание не заполненного реквизита, этого мало.
Если взять Значение = "Неопределено" то как выстроить код?
EvgeniyOlxovskiy; houpl; +2 Ответить
По теме из базы знаний
Найденные решения
9. user596838_sir.stawros 2 03.11.16 15:30 Сейчас в теме
Итог:

&НаКлиенте
Процедура Сформировать(Команда)
	
 ПроверитьЗаполнение();

 Если Не ПроверитьЗаполнение() Тогда  	
		Возврат;  
	КонецЕсли;
	
	
 СоздатьСчетАкт();

	
КонецПроцедуры


&НаСервере
Функция РеквизитыЗаполнены()
       Возврат ПроверитьЗаполнение();
   КонецФункции
Показать


Спасибо всем., обработка завершена.
Ermigen; StanchevSergey; EvgeniyOlxovskiy; FilatovRA; houpl; CMK0001; bp-service; Egovigor; haysung; Night_Trap; klaus38; user1090556; +12 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sommid 03.11.16 10:13 Сейчас в теме
можно на реквизитах поставить свойство Проверка заполнения - Выдавать ошибку и перед созданием документа вызвать метод обработки ПроверитьЗаполнение(). А можно свой аналог такой функции написать и ее вызывать перед созданием документа, где выполнить все необходимые проверки и вернуть флаг разрешающий или запрещающий дальнейшее выполнение
3. user596838_sir.stawros 2 03.11.16 10:15 Сейчас в теме
(2)Поставил уже на реквизитах.
Вот соображаю как прикрутить это - ПроверитьЗаполнение().
Есть пример использования?
погуглю еще обязательно.
4. tusv 212 03.11.16 10:21 Сейчас в теме
В Свойствах формы Установить галку "ПроверятьЗаполнениеАвтоматически"
В свойствах реквизитов Проверка заполнения - Выдавать ошибку
И в нужной процедуре вызываем проверку
ПроверитьЗаполнение();
EvgeniyOlxovskiy; +1 Ответить
5. ronhard 03.11.16 10:44 Сейчас в теме
Есть пример использования?

Данный метод является методом формы, поэтому если использовать в контексте данной формы, то можно вызвать например так:
Функция РеквизитыЗаполнены()
       Возврат ПроверитьЗаполнение();
КонецФункции

И в нужном месте функцию вызвать. Если же проверяется из другой формы, то сначала надо получить форму нужную, а потом вызывать метод:
Форма = ПолучитьФорму(Нужная форма);
ВсеЗаполнено = Форма.ПроверитьЗаполнение();
6. user596838_sir.stawros 2 03.11.16 13:25 Сейчас в теме
(5)Спасибо!
А еще момент...
Как это использовать при создании документов, что бы в случает нахождения ошибок, документ не создавался, что бы процедура обрывалась?
7. herfis 513 03.11.16 13:57 Сейчас в теме
(6) Гугли по ключевым словам ОбработкаЗаполнения, Заполнить, ОбработкаПроверкиЗаполнения, ПроверитьЗаполнение. И вдумчиво читаем. Все уже давно разжевано. Потратишь время, зато раз и навсегда научишься делать правильно. Это гораздо эффективнее, чем получать на форуме обрывочные сведения.
8. user596838_sir.stawros 2 03.11.16 14:40 Сейчас в теме
(7)Совет хороший, когда время не жмет.
Нашел ...
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

// Проверим заполненность реквизита "Покупатель"

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

    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!";
    Сообщение.Поле = "Покупатель";
    Сообщение.УстановитьДанные(ЭтотОбъект);
        
    Сообщение.Сообщить();
        
    // Сообщим платформе, что мы сами обработали проверку заполнения реквизита "Покупатель"

    ПроверяемыеРеквизиты.Удалить(Покупатель);
    // Так как информация не консистентна, то продолжать работу дальше смысла нет

    Отказ = Истина;
        
КонецЕсли;

// Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части Товары

ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар"));

// Обходим строки и проверяем заполнение реквизита

Для Индекс = 0 по Товары.Количество()-1 Цикл
    СтрокаТовар = Товары.Получить(Индекс);
    Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда
        Сообщение = Новый СообщениеПользователю();
        Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара";
        Сообщение.Поле = "Товары[" + Индекс + "].Товар";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецЦикла;
    
КонецПроцедуры
Показать

Пойду разбираться.

user1575052; +1 Ответить
9. user596838_sir.stawros 2 03.11.16 15:30 Сейчас в теме
Итог:

&НаКлиенте
Процедура Сформировать(Команда)
	
 ПроверитьЗаполнение();

 Если Не ПроверитьЗаполнение() Тогда  	
		Возврат;  
	КонецЕсли;
	
	
 СоздатьСчетАкт();

	
КонецПроцедуры


&НаСервере
Функция РеквизитыЗаполнены()
       Возврат ПроверитьЗаполнение();
   КонецФункции
Показать


Спасибо всем., обработка завершена.
Ermigen; StanchevSergey; EvgeniyOlxovskiy; FilatovRA; houpl; CMK0001; bp-service; Egovigor; haysung; Night_Trap; klaus38; user1090556; +12 Ответить
10. bp-service 12.01.22 12:06 Сейчас в теме
(9)
ПроверитьЗаполнение();

Можно было обойтись и без строки
ПроверитьЗаполнение();

а сразу начать с
 Если Не ПроверитьЗаполнение() Тогда
EvgeniyOlxovskiy; +1 Ответить
11. toliman 2 29.06.22 12:54 Сейчас в теме
а как быть с реквизитами которые есть только на форме? для них есть проверка заполнения?
Прикрепленные файлы:
12. RustamZz 29.06.22 13:00 Сейчас в теме
(11) В 8.3.22 для реквизитов таблиц появилась возможность выполнять проверку заполнения. Ждем когда из беты в релиз перейдет.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот