Проверяет заполнение реквизитов. Для реквизитов, у которых при конфигурировании свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке.
Синтаксис
ПроверитьЗаполнение()Полное описание, параметры и ограничения
ПланВидовРасчетаОбъект.<Имя плана видов расчета>.ПроверитьЗаполнение (ChartOfCalculationTypesObject.<Chart of calculation types name>.CheckFilling)
ПланВидовРасчетаОбъект.<Имя плана видов расчета> (ChartOfCalculationTypesObject.<Chart of calculation types name>)
ПроверитьЗаполнение (CheckFilling)
Доступен, начиная с версии 8.2.
Синтаксис:
ПроверитьЗаполнение()
Возвращаемое значение:
Тип: Булево.
Истина - ошибок не обнаружено, Ложь - в противном случае.
Описание:
Проверяет заполнение реквизитов. Для реквизитов, у которых при конфигурировании свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Выполнение метода приводит к возникновению события ОбработкаПроверкиЗаполнения.
См. также:
СправочникОбъект.<Имя справочника>, событие ОбработкаПроверкиЗаполнения
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Заполнить свой вид событием и проверить обязательное основание
Создадим новый незаписанный вид во вспомогательном пустом плане; полный собственный обработчик заполнит известную структуру, а проверка обязательного реквизита сменится с Ложь на Истина.
Где и как запускать
Полный обычный клиентский общий модуль УчебныеВиды85, только толстый клиент. Пульт и модуль объекта отдельными полными блоками ниже; не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую базу 8.5.1.1343: имя конфигурации УчебныеМенеджерыРасчетов85, совместимость НеИспользовать, обычное приложение и толстый клиент. Не используйте рабочие ЗУП/КА/УТ/УНФ/БП. Здесь код, стенд и формы не выполнялись: runtimeVerifiedScenarios=0.
Общий модуль УчебныеВиды85: неглобальный, Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, другие клиентские флаги=Нет. Вставляйте полный модуль одного выбранного урока целиком, не внутрь обработчика и не все варианты одновременно.
Создайте собственную обработку УчебныеВиды85 с обычной основной формой Пульт. Кнопка Выполнить, действие ВыполнитьНажатие; отдельный полный модуль формы приведён ниже. F7 и обновление только своего стенда, запуск Пульта в толстом клиенте.
Для основных опытов используется одна сессия, никаких фоновых обменов, расширений, сторонних обработчиков или других пользователей, меняющих записи. Код читает собственные виды и изменяет полученный объект только в памяти. Записать, удаление, проведение, расчёт регистров, файлы и сеть не вызываются.
ТОЛЬКО ДЛЯ ЭТОГО УРОКА: вспомогательный план Уч85ЧерновикиРасчета: код Строка(10), наименование 100, период действия выключен, зависимость НеИспользовать, без предопределений/записей. Реквизит Основание85 Строка(16), Проверка заполнения=Показывать ошибку; остальные реквизиты без проверки заполнения.
В модуль объекта именно Уч85ЧерновикиРасчета вставьте полный отдельный блок Уч85ЧерновикиРасчета.МодульОбъекта. События модуля объекта вызываются платформой по имени, это не действие кнопки. ОбработкаПроверкиЗаполнения и иные обработчики остаются отсутствующими. F7 и обновление только своего стенда.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойКонтекст();
Менеджер = ПланыВидовРасчета.Уч85ЧерновикиРасчета;
Если Менеджер.Выбрать().Следующий() Тогда
ВызватьИсключение "Вспомогательный учебный план должен быть пустым; существующие записи не трогаем";
КонецЕсли;
Черновик = Менеджер.СоздатьВидРасчета();
Если Черновик.ПроверитьЗаполнение() Тогда
ВызватьИсключение "Новый пустой Основание85 должен дать Ложь проверки заполнения";
КонецЕсли;
Данные = Новый Структура("Код,Наименование,Основание85", "90", "Учебный вид из структуры", "draft-85");
Черновик.Заполнить(Данные);
Если Черновик.Код <> "90" Или Черновик.Наименование <> "Учебный вид из структуры" Или Черновик.Основание85 <> "draft-85" Тогда
ВызватьИсключение "Нужен назначенный собственный ОбработкаЗаполнения, не выдуманное копирование полей";
КонецЕсли;
Если Не Черновик.ПроверитьЗаполнение() Тогда
ВызватьИсключение "После заполнения своего обязательного Основание85 ожидается Истина";
КонецЕсли;
Если Менеджер.Выбрать().Следующий() Тогда
ВызватьИсключение "Заполнить и ПроверитьЗаполнение не должны записать черновик";
КонецЕсли;
Сообщить("До заполнения Ложь, после Истина. Структура обработана собственным событием; вспомогательный план всё ещё пустой.");
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеМенеджерыРасчетов85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедурыУчебныеВиды85.Пульт
УчебныеМенеджерыРасчетов85 → Обработки → УчебныеВиды85 → Формы → Пульт → Модуль
Полный модуль собственной обычной формы, не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеВиды85.ВыполнитьПример();
КонецПроцедурыУч85ЧерновикиРасчета.МодульОбъекта
УчебныеМенеджерыРасчетов85 → Планы видов расчёта → Уч85ЧерновикиРасчета → Модуль объекта
Полный собственный модуль объекта вспомогательного плана, не модуль формы; не выполнялся.
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ДанныеЗаполнения = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Тогда
ВызватьИсключение "Для этого собственного урока требуется структура с тремя строковыми полями";
КонецЕсли;
КодЗаполнения = Неопределено;
ИмяЗаполнения = Неопределено;
ОснованиеЗаполнения = Неопределено;
Если Не ДанныеЗаполнения.Свойство("Код", КодЗаполнения)
Или Не ДанныеЗаполнения.Свойство("Наименование", ИмяЗаполнения)
Или Не ДанныеЗаполнения.Свойство("Основание85", ОснованиеЗаполнения) Тогда
ВызватьИсключение "Отсутствует одно из собственных полей заполнения";
КонецЕсли;
Если ТипЗнч(КодЗаполнения) <> Тип("Строка") Или ТипЗнч(ИмяЗаполнения) <> Тип("Строка")
Или ТипЗнч(ОснованиеЗаполнения) <> Тип("Строка") Тогда
ВызватьИсключение "Произвольные типы не преобразуются молча в поля учебного вида";
КонецЕсли;
Если КодЗаполнения <> "90" Или ИмяЗаполнения <> "Учебный вид из структуры" Или ОснованиеЗаполнения <> "draft-85" Тогда
ВызватьИсключение "Обработчик обслуживает только известную собственную учебную структуру";
КонецЕсли;
ЭтотОбъект.Код = КодЗаполнения;
ЭтотОбъект.Наименование = ИмяЗаполнения;
ЭтотОбъект.Основание85 = ОснованиеЗаполнения;
СтандартнаяОбработка = Ложь;
КонецПроцедурыРазбор по шагам
Другая собственная структура метаданных: пустой Уч85ЧерновикиРасчета, отдельный обязательный строковый Основание85. Основные A/B/C не меняются и не копируются.
Штатный СоздатьВидРасчета даёт новый объект в памяти. Первая ПроверитьЗаполнение возвращает Ложь из-за пустого обязательного Основание85 и может показать штатное сообщение проверки; это ожидаемая ошибка данных, не провал кода.
Заполнить получает конкретную структуру Код=90, Наименование=Учебный вид из структуры, Основание85=draft-85. Метод вызывает событие ОбработкаЗаполнения; полного неизвестного обработчика в чужой конфигурации не предполагаем.
Ниже приведён полный модуль объекта именно своего вспомогательного плана. Обработчик проверяет имя/версию стенда, Структура, наличие и тип трёх строк; допускает только известные учебные значения.
Своим полям объекта присваиваются проверенные строки, СтандартнаяОбработка=Ложь отключает дальнейшее системное заполнение, не отменяет сам Заполнить. ТекстЗаполнения — обязательный параметр сигнатуры события, не используется как скрытое основание.
После события код сверяет все три фактических поля. Вторая ПроверитьЗаполнение должна дать Истина: её Булево не заменяется красивым сообщением и не объявляется результатом Записать.
Повторная выборка вспомогательного плана по-прежнему пуста. Заполнить и ПроверитьЗаполнение не равны сохранению объекта; новый черновик не получает Прочитать, поскольку тот метод запрещён для нового объекта.
Как проверить результат
Будущий тест: полный модуль объекта и обязательный реквизит назначены, F7 → Пульт → Выполнить. Первый результат Ложь, после заполнения Истина.
У черновика код 90, имя Учебный вид из структуры, основание draft-85. Результат не предполагается без выполненного события.
Если Основание85 не отмечен Показывать ошибку, первая проверка может не дать Ложь — это другая подготовка, код остановится.
При отсутствии/неверном типе входного поля собственный обработчик отказывает до присваивания. Не превращайте произвольные внешние данные в эти учебные значения без проверки.
Вспомогательный план до и после пустой; повторный запуск создаёт другой незаписанный объект. Никаких новых сохранённых видов или начислений.
Ожидаемый результат
Будущий результат: реальное событие собственного объекта заполняет три поля; штатная проверка обязательного основания Ложь→Истина, без записи вида.
На что обратить внимание
Заполнить — контракт события, не универсальное копирование всех совпадающих полей. Здесь поведение определяет полный собственный модуль объекта.
СтандартнаяОбработка=Ложь не отменяет метод и не сохраняет объект. При копировании событие заполнения по справке не вызывается.
ПроверитьЗаполнение вызывает ОбработкаПроверкиЗаполнения. В этом вспомогательном плане такого пользовательского обработчика нет, штатный список проверок не очищается.
По справке безопасный режим на время обработчиков заполнения/проверки отключается, кроме обработчиков расширений. Не рассматривайте произвольный такой обработчик как безопасный sandbox; здесь свой полный модуль без сети/файлов/записи.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.