Проверяет заполнение реквизитов записей. Для реквизитов, у которых при конфигурировании свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке.
Синтаксис
ПроверитьЗаполнение()Полное описание, параметры и ограничения
ПоследовательностьНаборЗаписей.<Имя последовательности>.ПроверитьЗаполнение (SequenceRecordSet.<Sequence name>.CheckFilling)
ПоследовательностьНаборЗаписей.<Имя последовательности> (SequenceRecordSet.<Sequence name>)
ПроверитьЗаполнение (CheckFilling)
Доступен, начиная с версии 8.2.
Синтаксис:
ПроверитьЗаполнение()
Возвращаемое значение:
Тип: Булево.
Истина - ошибок не обнаружено, Ложь - в противном случае.
Описание:
Проверяет заполнение реквизитов записей. Для реквизитов, у которых при конфигурировании свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Выполнение метода приводит к возникновению события ОбработкаПроверкиЗаполнения.
См. также:
СправочникОбъект.<Имя справочника>, событие ОбработкаПроверкиЗаполнения
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Проверить свой черновик штатным событием и вычислить сводку в модуле набора
ЭтотОбъект используется только в настоящем модуле собственной последовательности. Штатная ПроверитьЗаполнение вызывает полный пользовательский обработчик; при успехе вычисляются количество и границы дат, а при ошибке сводка не выдаётся. Отдельный полный вызывающий модуль проверяет пять состояний и след вызовов события.
Где и как запускать
Полный основной модуль набора собственной последовательности УчебнаяОчередь85 новой конфигурации УчебныеПоследовательности85. Два других полных модуля перечислены отдельно. Точная 8.5.1.1343; 1С здесь не запускалась.
Подготовка
Создайте новую отдельную пустую базу 8.5.1.1343, не копию рабочей УТ/КА2. Имя конфигурации УчебныеПоследовательности85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Расширений, подписок и обработчиков записи нет.
В Документы создайте единственный документ УчебнаяРегистрация85: проведение запрещено, реквизитов и табличных частей нет, движения регистров не назначены, модули объекта и менеджера пусты. Документы этого вида в уроке не создаются и не записываются.
В Последовательности создайте единственную УчебнаяОчередь85. В составе Документы выберите только свой УчебнаяРегистрация85. Измерений, зависимых регистров в составе Движения и дополнительных индексов нет. ПеремещениеГраницыПриПроведении=НеПеремещать. В модуль набора вставляется ПОЛНЫЙ основной модуль этого урока со своим экспортным расчётом и ОбработкаПроверкиЗаполнения. Своих измерений нет; никаких дополнительных правил Показывать ошибку или общих реквизитов не добавляйте. Структура записей поэтому содержит только Период и Регистратор.
Не создавайте в стенде справочников и регистров. Для учебного пользователя разрешите собственные метаданные, общую форму и команды. Обновите только эту новую конфигурацию. Проверка имени и состава схемы выполняется до создания набора; она не доказывает отсутствия записей базы и не делает рабочую базу безопасной.
В Общие → Общие модули создайте УчебнаяПроверкаПоследовательности85: Сервер=Истина, ВызовСервера=Ложь, Глобальный=Ложь, Привилегированный=Ложь, клиентские флаги выключены. Вставьте только полный отдельный блок вызывающего модуля, не основной код события набора.
В собственной общей форме УчебныйЗапускПоследовательности85 создайте команду ВыполнитьУрок, действие ВыполнитьУрок, ИзменяетСохраняемыеДанные=Ложь. Её полный модуль — отдельный блок запуска этого урока. Он вызывает УчебнаяПроверкаПоследовательности85 через &НаСервереБезКонтекста; не используйте модуль формы предыдущего урока.
В Общие → Общие команды создайте ОткрытьНаборПоследовательности85 без параметра и включите в свой учебный раздел. Полный модуль общей команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("ОбщаяФорма.УчебныйЗапускПоследовательности85");
КонецПроцедуры
Откройте свою форму этой командой и выполните её кнопку. Два вспомогательных модуля не вставляйте в основной серверный модуль.Плановые ссылки создаются ПолучитьСсылку на собственные новые UUID. Непустая ссылка не означает существующий документ; реквизиты ссылок не читаются. Это идентификаторы собственных незаписанных черновых строк, не готовые записи для сохранения в базу.
Здесь нет Прочитать, Записать, проведения, восстановления или изменения границы. Добавить/Загрузить/Удалить/Очистить действуют только на принадлежащий уроку экземпляр набора в памяти. Этот пример нельзя превращать в исправление последовательности добавлением Записать.
Статически проверены исходный код и установленная справка. Компиляция и выполнение в 1С здесь не проверялись; ожидаемые результаты далее нужно подтвердить самостоятельным запуском только в подготовленной новой учебной базе.
Основной полный код вставьте в Конфигуратор → Последовательности → УчебнаяОчередь85 → Модуль набора записей. Здесь ЭтотОбъект действительно обозначает текущий созданный набор. Не вставляйте его в общий модуль и не заменяйте ЭтотОбъект входным параметром.
ОбработкаПроверкиЗаполнения — штатная процедура модуля набора с двумя точными параметрами Отказ и ПроверяемыеРеквизиты. Не вызывайте её вручную: вызов ЭтотОбъект.ПроверитьЗаполнение запускает событие платформы. Массив штатных проверок не очищается и не подменяется.
Наши дополнительные правила относятся к учебной сводке: хотя бы одна строка, каждая дата не раньше 01.01.2026 и непустой плановый идентификатор собственного документа. Это не универсальные требования последовательности и не проверка существования документа по ссылке.
СообщениеПользователю привязывается к своему набору через УстановитьДанные(ЭтотОбъект). В пути поля индекс начинается с нуля, а в тексте для человека номер строки начинается с единицы. Отображение/навигация сообщения в форме требуют отдельного ручного опыта; здесь проверяется логика возврата и состав сводки.
Функция ПроверитьИСоздатьСводку85() Экспорт
Если ЭтотОбъект.Метаданные() <> Метаданные.Последовательности.УчебнаяОчередь85 Тогда
ВызватьИсключение "Этот модуль должен принадлежать своей УчебнаяОчередь85";
КонецЕсли;
ПроверкаУспешна = ЭтотОбъект.ПроверитьЗаполнение();
Если ТипЗнч(ПроверкаУспешна) <> Тип("Булево") Тогда
ВызватьИсключение "Метод проверки должен вернуть Булево";
КонецЕсли;
Если Не ПроверкаУспешна Тогда
Возврат Неопределено;
КонецЕсли;
ПервыйПериод = Неопределено;
ПоследнийПериод = Неопределено;
КоличествоСтрок = 0;
Для Каждого Запись Из ЭтотОбъект Цикл
Если КоличествоСтрок = 0 Тогда
ПервыйПериод = Запись.Период;
ПоследнийПериод = Запись.Период;
Иначе
Если Запись.Период < ПервыйПериод Тогда
ПервыйПериод = Запись.Период;
КонецЕсли;
Если Запись.Период > ПоследнийПериод Тогда
ПоследнийПериод = Запись.Период;
КонецЕсли;
КонецЕсли;
КоличествоСтрок = КоличествоСтрок + 1;
КонецЦикла;
Если КоличествоСтрок <> ЭтотОбъект.Количество() Или КоличествоСтрок = 0 Тогда
ВызватьИсключение "Пустой или несогласованный черновик не должен получить сводку";
КонецЕсли;
Возврат Новый Структура("Количество,ПервыйПериод,ПоследнийПериод", КоличествоСтрок, ПервыйПериод, ПоследнийПериод);
КонецФункции
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Не ЭтотОбъект.ДополнительныеСвойства.Свойство("КоличествоУчебныхПроверок", Счётчик) Тогда
Счётчик = 0;
КонецЕсли;
Если ТипЗнч(Счётчик) <> Тип("Число") Тогда
ВызватьИсключение "Собственный диагностический счётчик должен иметь тип Число";
КонецЕсли;
Если Счётчик < 0 Или Счётчик <> Цел(Счётчик) Тогда
ВызватьИсключение "Собственный счётчик должен быть неотрицательным целым";
КонецЕсли;
ЭтотОбъект.ДополнительныеСвойства.Вставить("КоличествоУчебныхПроверок", Счётчик + 1);
Если ЭтотОбъект.Количество() = 0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Учебная сводка требует хотя бы одну собственную строку";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
ИндексСтроки = 0;
Для Каждого Запись Из ЭтотОбъект Цикл
Если ТипЗнч(Запись.Период) <> Тип("Дата") Или ТипЗнч(Запись.Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
ВызватьИсключение "Нарушены подготовленные типы полей своей очереди";
КонецЕсли;
Если Запись.Период < Дата(2026, 1, 1) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("В собственной строке %1 период должен быть не раньше 01.01.2026", ИндексСтроки + 1);
Сообщение.Поле = "[" + Строка(ИндексСтроки) + "].Период";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Запись.Регистратор = Документы.УчебнаяРегистрация85.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("В собственной строке %1 нужен непустой плановый идентификатор", ИндексСтроки + 1);
Сообщение.Поле = "[" + Строка(ИндексСтроки) + "].Регистратор";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
ИндексСтроки = ИндексСтроки + 1;
КонецЦикла;
КонецПроцедурыУчебнаяПроверкаПоследовательности85
Конфигуратор → Общие → Общие модули → УчебнаяПроверкаПоследовательности85 → Модуль
Полный отдельный серверный общий модуль: создаёт свой набор и проверяет пять состояний. Не модуль самого набора.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.Последовательности.Количество() <> 1 Или Метаданные.Документы.Количество() <> 1 Тогда
ВызватьИсключение "В своём стенде нужны ровно одна последовательность и один вид документа";
КонецЕсли;
МетаОчереди = Метаданные.Последовательности.Найти("УчебнаяОчередь85");
МетаДокумента = Метаданные.Документы.Найти("УчебнаяРегистрация85");
Если МетаОчереди = Неопределено Или МетаДокумента = Неопределено Тогда
ВызватьИсключение "Не подготовлена собственная схема урока";
КонецЕсли;
Если МетаОчереди.Измерения.Количество() <> 0 Или МетаОчереди.Движения.Количество() <> 0
Или МетаОчереди.Документы.Количество() <> 1 Тогда
ВызватьИсключение "Нужна собственная очередь без измерений и зависимых регистров";
КонецЕсли;
Участвует = Ложь;
Для Каждого МетаУчастника Из МетаОчереди.Документы Цикл
Участвует = МетаУчастника = МетаДокумента;
КонецЦикла;
Если Не Участвует Тогда
ВызватьИсключение "Единственный участник должен быть своим УчебнаяРегистрация85";
КонецЕсли;
Если МетаОчереди.ПеремещениеГраницыПриПроведении <> Метаданные.СвойстваОбъектов.ПеремещениеГраницыПриПроведении.НеПеремещать Тогда
ВызватьИсключение "Проверьте подготовку политики границы собственной очереди";
КонецЕсли;
Набор = Последовательности.УчебнаяОчередь85.СоздатьНаборЗаписей();
Если Набор.Количество() <> 0 Или Набор.Метаданные() <> МетаОчереди Тогда
ВызватьИсключение "Ожидался новый пустой набор собственной последовательности";
КонецЕсли;
Ссылки = Новый Массив;
Для Номер = 1 По 3 Цикл
Ссылки.Добавить(Документы.УчебнаяРегистрация85.ПолучитьСсылку(Новый УникальныйИдентификатор));
КонецЦикла;
Сводка = Набор.ПроверитьИСоздатьСводку85();
Если Сводка <> Неопределено Тогда
ВызватьИсключение "Пустой черновик не должен дать сводку";
КонецЕсли;
ПроверитьСвойСчётчик(Набор, 1);
ДобавитьСвоюЗапись(Набор, Дата(2026, 1, 1), Ссылки[0]);
ДобавитьСвоюЗапись(Набор, Дата(2026, 2, 1), Ссылки[1]);
ДобавитьСвоюЗапись(Набор, Дата(2026, 3, 1), Ссылки[2]);
Сводка = Набор.ПроверитьИСоздатьСводку85();
ПроверитьСвоюСводку(Сводка);
ПроверитьСвойСчётчик(Набор, 2);
Набор[0].Период = Дата(2025, 12, 31);
Если Набор.ПроверитьИСоздатьСводку85() <> Неопределено Тогда
ВызватьИсключение "Неверная учебная дата не должна получить сводку";
КонецЕсли;
ПроверитьСвойСчётчик(Набор, 3);
Набор[0].Период = Дата(2026, 1, 1);
Набор[1].Регистратор = Документы.УчебнаяРегистрация85.ПустаяСсылка();
Если Набор.ПроверитьИСоздатьСводку85() <> Неопределено Тогда
ВызватьИсключение "Пустой учебный регистратор не должен получить сводку";
КонецЕсли;
ПроверитьСвойСчётчик(Набор, 4);
Набор[1].Регистратор = Ссылки[1];
Сводка = Набор.ПроверитьИСоздатьСводку85();
ПроверитьСвоюСводку(Сводка);
ПроверитьСвойСчётчик(Набор, 5);
Для ИндексСтроки = 0 По 2 Цикл
ПроверитьСвоюЗапись(Набор[ИндексСтроки], Дата(2026, ИндексСтроки + 1, 1), Ссылки[ИндексСтроки]);
КонецЦикла;
Сообщить("Пять вызовов штатной проверки и полный исходный состав подтверждены; записи базы не было");
КонецПроцедуры
Процедура ДобавитьСвоюЗапись(Набор, Период, Регистратор)
Если ТипЗнч(Период) <> Тип("Дата") Или ТипЗнч(Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
ВызватьИсключение "Переданы неверные собственные ключи строки";
КонецЕсли;
Запись = Набор.Добавить();
Запись.Период = Период;
Запись.Регистратор = Регистратор;
КонецПроцедуры
Процедура ПроверитьСвоюЗапись(Запись, Период, Регистратор)
Если ТипЗнч(Запись.Период) <> Тип("Дата") Или ТипЗнч(Запись.Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
ВызватьИсключение "Типы фактической собственной записи не совпали";
КонецЕсли;
Если Запись.Период <> Период Или Запись.Регистратор <> Регистратор Тогда
ВызватьИсключение "Период или регистратор собственной записи не совпал";
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСвойСчётчик(Набор, Ожидание)
Если Не Набор.ДополнительныеСвойства.Свойство("КоличествоУчебныхПроверок", Счётчик) Тогда
ВызватьИсключение "Обработчик штатной проверки не оставил свой диагностический счётчик";
КонецЕсли;
Если ТипЗнч(Счётчик) <> Тип("Число") Или Счётчик <> Ожидание Тогда
ВызватьИсключение "Количество настоящих вызовов своего обработчика не совпало";
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСвоюСводку(Сводка)
Если ТипЗнч(Сводка) <> Тип("Структура") Тогда
ВызватьИсключение "Исправный собственный черновик должен вернуть структуру сводки";
КонецЕсли;
Если ТипЗнч(Сводка.Количество) <> Тип("Число") Или ТипЗнч(Сводка.ПервыйПериод) <> Тип("Дата")
Или ТипЗнч(Сводка.ПоследнийПериод) <> Тип("Дата") Тогда
ВызватьИсключение "Типы трёх показателей собственной сводки не совпали";
КонецЕсли;
Если Сводка.Количество <> 3 Или Сводка.ПервыйПериод <> Дата(2026, 1, 1)
Или Сводка.ПоследнийПериод <> Дата(2026, 3, 1) Тогда
ВызватьИсключение "Полный состав показателей собственной сводки не совпал";
КонецЕсли;
КонецПроцедурыУчебныйЗапускПоследовательности85
Конфигуратор → Общие → Общие формы → УчебныйЗапускПоследовательности85 → Модуль формы
Полный отдельный модуль своей управляемой формы. Команда вызывает предоставленный серверный модуль; здесь не запускалась.
&НаКлиенте
Процедура ВыполнитьУрок(Команда)
ВыполнитьУрокНаСервере();
Сообщить("Пять учебных состояний проверены; набор в базу не записывался");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВыполнитьУрокНаСервере()
УчебнаяПроверкаПоследовательности85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Разместить основной модуль именно в собственной последовательности, вызывающий модуль и форму запуска — отдельно. Проверить всю новую подготовленную конфигурацию перед ручным опытом.
Создать новый пустой набор и вызвать его экспортный расчёт. ПроверитьЗаполнение запускает настоящий обработчик; пустота вызывает отказ, сводка Неопределено, диагностический счётчик 1.
Добавить свои три строки января/февраля/марта со своими непустыми плановыми ссылками. Штатная проверка проходит; сводка содержит ровно 3,01.01.2026,01.03.2026, счётчик 2.
Изменить только первую дату на 31.12.2025. Свой обработчик сообщает поле [0].Период и ставит Отказ=Истина; расчёт возвращает Неопределено, счётчик 3.
Исправить первую дату и сделать регистратор второй строки своей пустой ссылкой. Сообщение относится к [1].Регистратор, сводка снова отсутствует, счётчик 4.
Вернуть вторую собственную плановую ссылку. Повторная настоящая проверка даёт исходную полную сводку, счётчик 5. Сверить все даты и все ссылки трёх строк, а не только количество.
Не складывать уже проверенные периоды как суммы и не читать дату документов через плановые ссылки. Минимум/максимум вычисляются из конкретных дат строк в памяти.
Сообщения и булево штатной проверки не означают, что очередь записана или граница восстановлена. Ни одной операции записи/чтения базы в модулях нет.
Как проверить результат
Пять состояний: пусто→нет сводки; три исправные строки→полная сводка; плохая дата→нет; пустой регистратор→нет; исправление→полная исходная сводка.
После каждого состояния собственный счётчик настоящих вызовов ОбработкаПроверкиЗаполнения равен 1/2/3/4/5. Он не увеличивается ручным вызовом события из вызывающего модуля.
Обе исправные сводки имеют точные типы Число/Дата/Дата и значения 3,01.01.2026,01.03.2026. В конце все три исходные даты и плановые ссылки восстановлены.
Весь объект изменялся только в памяти, а пути сообщений используют реальные Период/Регистратор и нулевые индексы. Компиляция и запуск 1С здесь не подтверждены.
Ожидаемый результат
Законченный пример пользовательской проверки и расчёта сводки на своём реальном экземпляре набора, с полным штатным событием, диагностикой пяти вызовов и отсутствием записи базы.
На что обратить внимание
ЭтотОбъект readonly и принадлежит модулю набора. Его нельзя присваивать, объявлять параметром общего модуля или считать неизвестным внешним источником.
Дата ≥01.01.2026 и непустой идентификатор — правила данного учебного расчёта, не встроенный универсальный контракт 1С. Плановая ссылка не доказывает существование документа.
ПроверитьЗаполнение возвращает Булево и вызывает ОбработкаПроверкиЗаполнения по установленной справке. Прямой ручной вызов процедуры события не был бы демонстрацией этого метода.
ПроверяемыеРеквизиты не очищается: пользовательская проверка дополняет, а не отключает штатную. Непредвиденные ошибки API не перехватываются под видом ожидаемого отказа.
Отказ не сбрасывается в Ложь в конце обработчика. При любой обнаруженной ошибке расчёт не выдаёт успешную сводку.
Безопасный режим на время исполнения этого штатного обработчика отключается по native замечанию (кроме обработчиков расширений). Поэтому стенд отдельный, модули только предоставленные, внешних операций в событии нет.
Статические Python-проверки не запускают событие платформы. Диагностический счётчик и сообщения нужно подтвердить при будущем самостоятельном ручном испытании своей базы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.