Тип: Булево. Признак необходимости обновления набора записей при изменении отбора. Истина - необходимо обновление.
Полное описание, параметры и ограничения
Расширение табличного поля набора записей регистра расчета.ОбновлятьПриИзмененииОтбора (Calculation register recordset table box extension.UpdateOnFilterChange)
Расширение табличного поля набора записей регистра расчета (Calculation register recordset table box extension)
ОбновлятьПриИзмененииОтбора (UpdateOnFilterChange)
Доступен, начиная с версии 8.0.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Признак необходимости обновления набора записей при изменении отбора.
Истина - необходимо обновление.
Доступность:
Толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Список250, отбор строк500, сохранено750: собственная сверка регистра расчета
Реальный собственный ordinary список и прочитанный native набор показывают отличие равенства от вхождения. Периоды и настоящая доставка строк проверяются отдельно от полного сохраненного объема.
Где и как запускать
Полный модуль собственной обычной формы списка УчебнаяСверка85.Сверка85, только толстый обычный клиент FileIB8.5.1.1343. Настоящий список/набор, реальные nativecallbacks; не выполнялся.
Подготовка
Только ручной будущий опыт в новой собственной VM и новой пустой файловой ИБ платформы8.5.1.1343: C:\1C85_OwnViewsLab\63439b19-e013-4137-a338-43bd7de9115f\Base. Ничего здесь не создавалось и не выполнялось. Метка каталога не является UUID ИБ; UUID пакета и пользователя проверяются отдельно. Рабочие базы, копии с рабочими данными и сетевые ИБ запрещены.
CF с нуля назовите УчебнаяСверкаНачислений85. В Конфигураторе откройте Сервис → Параметры → Общие → Редактирование конфигурации для режима запуска, выберите Управляемое приложение и обычное приложение и нажмите Применить. Это режим редактора, а не свойство метаданных. Убедитесь, что доступны флаг Клиент(обычное приложение) и создание обычной формы; если нет, остановитесь: формулировки справки о видимости противоречивы. Отдельно задайте свойство конфигурации ОсновнойРежимЗапуска=ОбычноеПриложение; только толстый обычный клиент. Создайте ровно объекты, перечисленные далее. Нет БСП, расширений, регламентных заданий, подписок, истории данных, дополнительных форм и автоматических обработчиков. Конфигуратор закройте перед единственным сеансом Предприятия.
План видов расчета УчебныеВидыСверки85: КодСтрока12, Наименование80, Использование периода действияНет, Зависимость от видов расчетаНеИспользовать, базовые планы пусты. Без предопределенных видов/реквизитов/табличных частей. ВытесняющиеВидыРасчета и БазовыеВидыРасчета в этой схеме не определены: native разрешает их только при использовании действия/базы; нельзя даже читать их ради проверки пустоты. ВедущиеВидыРасчета доступны и должны быть пусты. Данные WORK85 создает полный модуль только после отдельного согласия; не вводите неизвестный готовый вид.
Регистр расчета УчебнаяСверка85: периодичностьМесяц, планУчебныеВидыСверки85, ПериодДействияНет, БазовыйПериодНет, без графика и перерасчетов. Измерение Сотрудник85 толькоСтрока12 переменная; ресурсСумма85 толькоЧисло9.2; реквизитов0. Единственный регистратор УчебныйРегистраторСверки85.
Документ УчебныйРегистраторСверки85: НомерСтрока3, автонумерацияНет, без табличных частей; Маркер85 и Пользователь85 толькоСтрока36 переменные. ПроведениеРазрешить, движения толькоУчебнаяСверка85, модуль объекта пустой, не проводите документ. Подготовка сохраняет документ режимомЗапись и отдельно свой native набор; скрытого ОбработкаПроведения нет.
Одна роль АдминистраторСверки85: Администрирование, Активные пользователи и права чтения/добавления/изменения только собственных документа/вида/регистра, использования собственной обработки. Один пользователь УченикСверки85 с этой ролью. Без иных пользователей и сеансов. Код сравнивает реальный currentUUID с soleUserUUID, не записывает их в журнал и не выводит чувствительные сведения.
Общий модуль УчебнаяСверкаСтенд85: Клиент(обычное приложение)Да, СерверНет, ГлобальныйНет, ПривилегированныйНет. Поместите полный supporting COMMON целиком. В этой партии нет обработчика набора, вызывающего клиентский модуль из серверного контекста. Не переносите модуль в thin/web/server.
В регистреУчебнаяСверка85 создайте обычную форму спискаСверка85 стандартным мастером, назначьте основной. Это настоящая ordinary форма, не управляемая. Главный реквизит Список:РегистрРасчетаСписок.УчебнаяСверка85, полеСписок:ТабличноеПоле с Данные=Список. Нельзя конструировать НовыйРегистрРасчетаСписок или вызывать отсутствующийСоздатьСписок.
В той же форме добавьте реквизит СвойНабор85:РегистрРасчетаНаборЗаписей.УчебнаяСверка85 и второе полеНабор85:ТабличноеПоле с Данные=СвойНабор85. Источник создает реальный CreateRecordSet и читает по своему фактическому регистратору. Колонки обоих полей изначально пусты: полный модуль создает их после установки реальных источников; не добавляйте своих вычисляемых колонок.
ФормаСверка85: Статус85Строка неограниченная, поле статусаТолькоПросмотр. КнопкиЯнварь85/Февраль85/Точный85/Вхождение85/Все85/ПроверитьДоставку85. В свойствах событий назначьте одноименные nativeНажатие. ПолюСписок назначьте ПриПолученииДанных→СписокПриПолученииДанных85; формеПриОткрытии. Полный основной BSL целиком заменяет модуль этой формы.
ОбработкаУчебнаяСверкаПульт85: обычная формаПульт85, основной реквизит обработки; ПодтверждаюСозданиеСвоихДанных85Булево, флажок; кнопкаСоздатьИОткрыть85. NativeНажатие иПриОткрытии назначьте указанным handlers. Полный supportingCONTROLLER в этот модуль. Его событие не вызывают вручную, никакого кода в ПриОткрытии, создающего строки, нет.
Перед ручным запуском F7 всей собственнойCF, проверка конфигурации и обновление своей пустойИБ. Фактическую строку регистрации ИБ сверить с literalFile в Паспорт85. NativeСтрокаСоединенияИнформационнойБазы возвращает как зарегистрировано, не гарантирует нормализацию. Если отличается, остановитесь, не ослабляйте guard до совпадения имениCF и не подставляйте рабочий адрес.
Откройте собственныйПульт. Прочитайте согласие, отметьте свой флажок и один раз нажмитеСоздатьИОткрыть85. Сохраняются только WORK85, документ001 от10.02.2026 с actualUUID/currentuser и его3 движения EMP1/01.01/250, EMP10/01.01/250, EMP2/01.02/250. Общая750. Сумма задается авторским кодом; движок регистра не вычисляет денежное начисление.
Подготовка проверяет пустоту всего стенда и полный объем после каждой записи, native набор сверяет с independently constructed own expected всеми колонками/строками/типами/значениями. Нумерация native с1. Write(Истина,Ложь,Ложь,Ложь): новый набор, замещение только своего регистратора, без ФПД/автоперерасчетов (они отключены в metadata). Никакой atomicity/rollback/retry не обещается; ошибка или частичная запись означает остановку. Не удалять и не «дозаполнять» неизвестный результат.
Открытая форма имеет два собственных readonly поля. СтандартныйПериод явно настроен, но не принимается за доказательство backend-отбора: одновременно задан и полностью прочитан actualСписок.Отбор.ПериодРегистрации с nativeИнтервалВключаяГраницы/ЗначениеС/ЗначениеПо. На полном периоде в списке3/750; послеЯнварь85 ожидаются2/500, послеФевраль85 1/250. ОтдельноТочный85 на полном периоде: nativeРавноEMP1 в списке1/250. Вхождение85: список снова3/750, а ручной вид набора поEMP1 показываетEMP1+EMP10, 2/500.
Доставка списка проверяется только настоящим nativeПриПолученииДанных. После фактического показа/при необходимости прокрутки нажмитеПроверитьДоставку85. Коллекции/оформления внеcallback не хранятся, только scalar snapshots реальных строк. Нельзя обещать все строки за один callback, считать countвидимогоокна полным объемомИБ, имитировать событие или циклически ждать его. Пока строк нет, проверка сообщает это честно.
Набор.Обновить здесь — метод расширения поляНабор85, native перечитываниеИБ, не просто перерисовка. До него текущий actualнабор должен быть чистым, полный состав/реальныйрегистратор/единственный ownfilter проверены; фильтрстрок предварительно снят и автоОбновлятьПриИзмененииОтбораЛожь. После него freshfullreadback. Не применять к набору с несохраненными изменениями.
ОтборСтрок имеет nativeсемантику вхождения несмотря на childВидСравненияРавно: EMP1 подходит иEMP10. Проверяем лишь документированный ownfixture. Истинаобновлять может перечитывать набор, поэтому не обещаем универсальной сохранности любых режимов/несохраненных строк. Видимыйprefix500 дополнительно вручную сверить; истинная сохраненная сумма независимо750.
Настройки отбора/порядка/отборастрок иОтборСтрок — readonly контейнеры, их не заменяют. Меняются actual собственные childДоступность/Использование. Не вызывайтеДобавить/Очистить у настройки динамического списка: native запрещает такие операции. Это ограничения интерфейса, не замена прав/безопасности данных.
ПроверкаОтображенияНовойСтроки у обоих полей осмысленно входит в собственный безопасный профиль: nativeСообщатьОНесоответствииОтбору сохранено и прочитано, ноOnlyRead/ChangeRowSetfalse не дают вводить новую строку. Возникновение warning не заявляется и ради демонстрации не выполняется запись. Автообновление отключено; интервал5 валиден, но таймер не запускается. Запуска1С/UI/runtime и фактических записей здесь не было.
Перем Пакет85;
Перем Снимок85;
Перем Доставлены85;
Перем Режим85;
Перем Настройка85;
Перем Ошибка85;
Процедура ПодготовитьПоказ85(Пакет) Экспорт
Если Пакет85 <> Неопределено Или ЭтаФорма.Открыта() Тогда
ВызватьИсключение "OWN-VIEWS-FORM: допускается только свой новый закрытый экземпляр";
КонецЕсли;
УчебнаяСверкаСтенд85.ПроверитьДанные85(Пакет, 3);
Если ТипЗнч(Список) <> Тип("РегистрРасчетаСписок.УчебнаяСверка85") Или ЭлементыФормы.Список.Данные <> "Список" Или ЭлементыФормы.Список.Значение <> Список Тогда
ВызватьИсключение "OWN-VIEWS-SOURCE: нужен настоящий созданный мастером собственный список";
КонецЕсли;
Настройка85 = Истина;
Ошибка85 = Ложь;
Пакет85 = Пакет;
Список.Колонки.Установить("Регистратор,НомерСтроки,ПериодРегистрации,Активность,ВидРасчета,Сотрудник85,Сумма85");
СвойНабор85 = УчебнаяСверкаСтенд85.НовыйНабор85(Пакет85);
СвойНабор85.Прочитать();
Снимок85 = СвойНабор85.Выгрузить();
ПолеСписка = ЭлементыФормы.Список;
ПолеНабора = ЭлементыФормы.Набор85;
Если ПолеСписка.Колонки.Количество() <> 0 Или ПолеНабора.Колонки.Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-LAYOUT: собственные подготовленные колонки должны быть пустыми; чужой макет не заменяем";
КонецЕсли;
ПолеСписка.СоздатьКолонки();
ПолеНабора.СоздатьКолонки();
ПолеСписка.ТолькоПросмотр = Истина;
ПолеНабора.ТолькоПросмотр = Истина;
ПолеСписка.ИзменятьСоставСтрок = Ложь;
ПолеНабора.ИзменятьСоставСтрок = Ложь;
ПолеСписка.ВосстанавливатьТекущуюСтроку = Ложь;
ПолеСписка.АвтоОбновление = Ложь;
ПолеСписка.ПериодАвтоОбновления = 5;
ПолеСписка.ИзменятьАвтоОбновление = Ложь;
ПолеСписка.РазрешитьНастройкуПериода = Ложь;
ПолеСписка.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору;
ПолеНабора.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору;
ПолеНабора.ИзменятьПорядокСтрок = Ложь;
ПолеНабора.ОбновлятьПриИзмененииОтбора = Ложь;
ОграничитьРедакторы85(ПолеСписка.НастройкаОтбора);
ОграничитьРедакторы85(ПолеСписка.НастройкаПорядка);
ОграничитьРедакторы85(ПолеНабора.НастройкаОтбораСтрок);
Для Каждого Элемент Из Список.Отбор Цикл
Если Снимок85.Колонки.Найти(Элемент.Имя) = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: неизвестное поле фильтра свежего собственного списка";
КонецЕсли;
Элемент.Использование = Ложь;
КонецЦикла;
Для Каждого Элемент Из ПолеНабора.ОтборСтрок Цикл
Если Снимок85.Колонки.Найти(Элемент.Имя) = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: неизвестное поле фильтра свежего собственного набора";
КонецЕсли;
Элемент.Использование = Ложь;
КонецЦикла;
УстановитьПериод85(0);
Режим85 = 0;
Доставлены85 = Новый Соответствие;
Настройка85 = Ложь;
ПроверитьПоказ85();
Статус85 = "В базе750. Показ списка нужно подтвердить настоящей доставкой строк. Новые строки запрещены: настройка предупреждения не означает, что предупреждение возникло.";
КонецПроцедуры
Процедура УстановитьПериод85(Режим)
Начало = Дата(2026, ?(Режим = 2, 2, 1), 1);
Окончание = КонецМесяца(Дата(2026, ?(Режим = 1, 1, 2), 1));
Период = Новый НастройкаПериода;
Период.УстановитьПериод(Начало, Окончание, Ложь);
ЭлементыФормы.Список.СтандартныйПериод = Период;
Список.Отбор.ПериодРегистрации.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
Список.Отбор.ПериодРегистрации.ЗначениеС = Начало;
Список.Отбор.ПериодРегистрации.ЗначениеПо = Окончание;
Список.Отбор.ПериодРегистрации.Использование = Истина;
КонецПроцедуры
Процедура ОграничитьРедакторы85(Редакторы)
Для Каждого Редактор Из Редакторы Цикл
Если Снимок85.Колонки.Найти(Редактор.Имя) = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-POLICY: неизвестное поле настройки";
КонецЕсли;
Редактор.Доступность = Ложь;
Если Редактор.Доступность Тогда
ВызватьИсключение "OWN-VIEWS-POLICY: запрет интерактивного изменения не установлен";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьПоказ85()
Если Ошибка85 Тогда
ВызватьИсключение "OWN-VIEWS-STOP: предыдущая ошибка требует остановки, не повтора";
КонецЕсли;
УчебнаяСверкаСтенд85.ПроверитьЧистый85(Пакет85, СвойНабор85);
УчебнаяСверкаСтенд85.Сравнить85(СвойНабор85.Выгрузить(), Снимок85);
ПолеСписка = ЭлементыФормы.Список;
ПолеНабора = ЭлементыФормы.Набор85;
Если ТипЗнч(ПолеСписка) <> Тип("ТабличноеПоле") Или ТипЗнч(ПолеНабора) <> Тип("ТабличноеПоле")
Или ПолеСписка.Данные <> "Список" Или ПолеСписка.Значение <> Список Или ПолеНабора.Данные <> "СвойНабор85" Или ПолеНабора.Значение <> СвойНабор85
Или Не ПолеСписка.ТолькоПросмотр Или Не ПолеНабора.ТолькоПросмотр Или ПолеСписка.ИзменятьСоставСтрок Или ПолеНабора.ИзменятьСоставСтрок
Или ПолеСписка.АвтоОбновление Или ПолеСписка.ПериодАвтоОбновления <> 5 Или ПолеСписка.ИзменятьАвтоОбновление
Или ПолеСписка.ВосстанавливатьТекущуюСтроку Или ПолеСписка.РазрешитьНастройкуПериода Или ПолеНабора.ИзменятьПорядокСтрок Или ПолеНабора.ОбновлятьПриИзмененииОтбора Тогда
ВызватьИсключение "OWN-VIEWS-PROFILE: изменена собственная связь или политика показа";
КонецЕсли;
Если ПолеСписка.ПроверкаОтображенияНовойСтроки <> ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору
Или ПолеНабора.ПроверкаОтображенияНовойСтроки <> ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору Тогда
ВызватьИсключение "OWN-VIEWS-PROFILE: изменена сохраненная в памяти политика новых строк";
КонецЕсли;
Для Каждого Редактор Из ПолеСписка.НастройкаОтбора Цикл
Если Редактор.Доступность Тогда
ВызватьИсключение "OWN-VIEWS-PROFILE: интерактивный отбор разблокирован";
КонецЕсли;
КонецЦикла;
Для Каждого Редактор Из ПолеСписка.НастройкаПорядка Цикл
Если Редактор.Доступность Тогда
ВызватьИсключение "OWN-VIEWS-PROFILE: интерактивный порядок разблокирован";
КонецЕсли;
КонецЦикла;
Для Каждого Редактор Из ПолеНабора.НастройкаОтбораСтрок Цикл
Если Редактор.Доступность Тогда
ВызватьИсключение "OWN-VIEWS-PROFILE: интерактивный отбор строк разблокирован";
КонецЕсли;
КонецЦикла;
ОжидаемыйНачальныйМесяц = ?(Режим85 = 2, 2, 1);
ОжидаемыйКонечныйМесяц = ?(Режим85 = 1, 1, 2);
Если ПолеСписка.СтандартныйПериод.ПолучитьДатуНачала() <> Дата(2026, ОжидаемыйНачальныйМесяц, 1)
Или ПолеСписка.СтандартныйПериод.ПолучитьДатуОкончания() <> КонецМесяца(Дата(2026, ОжидаемыйКонечныйМесяц, 1)) Тогда
ВызватьИсключение "OWN-VIEWS-PERIOD: неверный собственный период регистрации";
КонецЕсли;
ПроверитьФильтры85();
КонецПроцедуры
Процедура ПроверитьФильтры85()
Для Каждого Элемент Из Список.Отбор Цикл
Если Элемент.Использование Тогда
Если Элемент.Имя = "ПериодРегистрации" Тогда
Если Элемент.ВидСравнения <> ВидСравнения.ИнтервалВключаяГраницы
Или Элемент.ЗначениеС <> Дата(2026, ?(Режим85 = 2, 2, 1), 1)
Или Элемент.ЗначениеПо <> КонецМесяца(Дата(2026, ?(Режим85 = 1, 1, 2), 1)) Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: неверные границы реального фильтра регистрации";
КонецЕсли;
ИначеЕсли Режим85 <> 3 Или Элемент.Имя <> "Сотрудник85" Или Элемент.ВидСравнения <> ВидСравнения.Равно Или Элемент.Значение <> "EMP1" Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: лишний активный фильтр списка";
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Не Список.Отбор.ПериодРегистрации.Использование Или Список.Отбор.Сотрудник85.Использование <> (Режим85 = 3) Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: фильтр списка не совпал с этапом";
КонецЕсли;
Для Каждого Элемент Из ЭлементыФормы.Набор85.ОтборСтрок Цикл
Если Элемент.Использование Тогда
Если Режим85 <> 4 Или Элемент.Имя <> "Сотрудник85" Или Элемент.Значение <> "EMP1" Или Элемент.ВидСравнения <> ВидСравнения.Равно Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: лишний активный фильтр строк";
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ЭлементыФормы.Набор85.ОтборСтрок.Сотрудник85.Использование <> (Режим85 = 4) Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: фильтр строк не совпал с этапом";
КонецЕсли;
КонецПроцедуры
Процедура ПриОткрытии()
ПроверитьПоказ85();
Список.Обновить();
ЭлементыФормы.Список.ОбновитьСтроки();
КонецПроцедуры
Процедура Январь85(Кнопка)
СменитьПоказ85(Кнопка, "Январь85", 1);
КонецПроцедуры
Процедура Февраль85(Кнопка)
СменитьПоказ85(Кнопка, "Февраль85", 2);
КонецПроцедуры
Процедура Точный85(Кнопка)
СменитьПоказ85(Кнопка, "Точный85", 3);
КонецПроцедуры
Процедура Вхождение85(Кнопка)
СменитьПоказ85(Кнопка, "Вхождение85", 4);
КонецПроцедуры
Процедура Все85(Кнопка)
СменитьПоказ85(Кнопка, "Все85", 0);
КонецПроцедуры
Процедура СменитьПоказ85(Кнопка, Имя, НовыйРежим)
Если ТипЗнч(Кнопка) <> Тип("Кнопка") Или Кнопка.Имя <> Имя Или Кнопка <> ЭлементыФормы[Имя] Тогда
ВызватьИсключение "OWN-VIEWS-BUTTON: неизвестный источник";
КонецЕсли;
ПроверитьПоказ85();
Настройка85 = Истина;
Попытка
Список.Отбор.Сотрудник85.Использование = Ложь;
ЭлементыФормы.Набор85.ОтборСтрок.Сотрудник85.Использование = Ложь;
УчебнаяСверкаСтенд85.ПроверитьЧистый85(Пакет85, СвойНабор85);
ЭлементыФормы.Набор85.Обновить();
УчебнаяСверкаСтенд85.ПроверитьЧистый85(Пакет85, СвойНабор85);
УчебнаяСверкаСтенд85.Сравнить85(СвойНабор85.Выгрузить(), Снимок85);
УстановитьПериод85(НовыйРежим);
Если НовыйРежим = 3 Тогда
Список.Отбор.Сотрудник85.Установить("EMP1", Истина);
ИначеЕсли НовыйРежим = 4 Тогда
ЭлементыФормы.Набор85.ОтборСтрок.Сотрудник85.Установить("EMP1", Истина);
КонецЕсли;
Режим85 = НовыйРежим;
Доставлены85 = Новый Соответствие;
ПроверитьПоказ85();
Настройка85 = Ложь;
Список.Обновить();
ЭлементыФормы.Список.ОбновитьСтроки();
ЭлементыФормы.Набор85.ОбновитьСтроки();
Статус85 = "Перечитывание завершено без обещания атомарности. Нажмите ПроверитьДоставку85 после фактического показа строк. Отбор набора EMP1: вручную должны быть EMP1 и EMP10, сумма500; полный набор по-прежнему750.";
Исключение
Ошибка85 = Истина;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Функция РазрешенКлюч85(Номер)
Возврат (Режим85 = 0 Или Режим85 = 4) Или (Режим85 = 1 И Номер <= 2) Или (Режим85 = 2 И Номер = 3) Или (Режим85 = 3 И Номер = 1);
КонецФункции
Процедура СписокПриПолученииДанных85(Элемент, ОформленияСтрок)
Если Настройка85 = Истина Тогда
Возврат;
КонецЕсли;
Если Элемент <> ЭлементыФормы.Список Или ТипЗнч(ОформленияСтрок) <> Тип("ОформленияСтрок") Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: неизвестный источник или native коллекция";
КонецЕсли;
Попытка
ПроверитьПоказ85();
Для Индекс = 0 По ОформленияСтрок.Количество() - 1 Цикл
Оформление = ОформленияСтрок.Получить(Индекс);
Если ТипЗнч(Оформление) <> Тип("ОформлениеСтроки") Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: неожиданный элемент";
КонецЕсли;
Данные = Оформление.ДанныеСтроки;
Если Данные = Неопределено Или ТипЗнч(Данные) <> Тип("ТекущиеДанныеСписка") Или Данные.Регистратор <> Пакет85.Регистратор Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: нет настоящих данных собственной строки";
КонецЕсли;
Если ТипЗнч(Данные.НомерСтроки) <> Тип("Число") Или Данные.НомерСтроки < 1 Или Данные.НомерСтроки > 3 Или Данные.НомерСтроки <> Цел(Данные.НомерСтроки) Или Не РазрешенКлюч85(Данные.НомерСтроки) Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: неизвестный или скрываемый ключ";
КонецЕсли;
Найден = Снимок85.Найти(Данные.НомерСтроки, "НомерСтроки");
Для Каждого Имя Из СтрРазделить("Регистратор,НомерСтроки,ПериодРегистрации,Активность,ВидРасчета,Сотрудник85,Сумма85", ",") Цикл
Если ТипЗнч(Данные[Имя]) <> ТипЗнч(Найден[Имя]) Или Данные[Имя] <> Найден[Имя] Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: фактическое поле не совпало с сохраненными собственными данными";
КонецЕсли;
КонецЦикла;
Доставлены85.Вставить(Данные.НомерСтроки, Новый Структура("Регистратор,НомерСтроки,Сотрудник85,Сумма85", Данные.Регистратор, Данные.НомерСтроки, Данные.Сотрудник85, Данные.Сумма85));
КонецЦикла;
Исключение
Ошибка85 = Истина;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ПроверитьДоставку85(Кнопка)
Если ТипЗнч(Кнопка) <> Тип("Кнопка") Или Кнопка <> ЭлементыФормы.ПроверитьДоставку85 Или Кнопка.Имя <> "ПроверитьДоставку85" Тогда
ВызватьИсключение "OWN-VIEWS-BUTTON: неверная кнопка проверки";
КонецЕсли;
ПроверитьПоказ85();
ОжидаемоеКоличество = ?(Режим85 = 1, 2, ?(Режим85 = 2 Или Режим85 = 3, 1, 3));
Сумма = 0;
Для Каждого Доставка Из Доставлены85 Цикл
Если Не РазрешенКлюч85(Доставка.Ключ) Или Доставка.Значение.Регистратор <> Пакет85.Регистратор Или Доставка.Значение.НомерСтроки <> Доставка.Ключ Тогда
ВызватьИсключение "OWN-VIEWS-EVENT: поврежден собственный скалярный снимок";
КонецЕсли;
Сумма = Сумма + Доставка.Значение.Сумма85;
КонецЦикла;
Если Доставлены85.Количество() <> ОжидаемоеКоличество Или Сумма <> ОжидаемоеКоличество * 250 Тогда
ВызватьИсключение "OWN-VIEWS-DELIVERY: ещё нет всех ожидаемых реально доставленных строк. Осмотрите/прокрутите только собственный список и проверьте снова, не имитируйте callback.";
КонецЕсли;
Статус85 = "Реально доставленные строки списка: " + Строка(ОжидаемоеКоличество) + "; сумма: " + Строка(Сумма) + ". Вся собственная база750. При отборе строк EMP1 отдельно вручную сверить две строки EMP1/EMP10 и500.";
КонецПроцедурыПолный own подготовительный и читающий общий модуль
Общие модули → УчебнаяСверкаСтенд85
Только Клиент(обычное приложение), Server/Global/PrivilegedНет.
Функция Читать85(Текст)
Запрос = Новый Запрос(Текст);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Процедура Сравнить85(Факт, Ожидание) Экспорт
Если ТипЗнч(Факт) <> Тип("ТаблицаЗначений") Или ТипЗнч(Ожидание) <> Тип("ТаблицаЗначений")
Или Факт.Количество() <> Ожидание.Количество() Или Факт.Колонки.Количество() <> Ожидание.Колонки.Количество() Тогда
ВызватьИсключение "OWN-VIEWS-TABLE: изменился полный состав";
КонецЕсли;
Для Каждого Колонка Из Ожидание.Колонки Цикл
Если Факт.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-TABLE: неизвестный состав полей";
КонецЕсли;
КонецЦикла;
Использованы = Новый Массив;
Для Каждого Ожидаемая Из Ожидание Цикл
Найден = -1;
Для Индекс = 0 По Факт.Количество() - 1 Цикл
Если Использованы.Найти(Индекс) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Совпало = Истина;
Для Каждого Колонка Из Ожидание.Колонки Цикл
Если ТипЗнч(Факт[Индекс][Колонка.Имя]) <> ТипЗнч(Ожидаемая[Колонка.Имя]) Или Факт[Индекс][Колонка.Имя] <> Ожидаемая[Колонка.Имя] Тогда
Совпало = Ложь;
КонецЕсли;
КонецЦикла;
Если Совпало Тогда
Найден = Индекс;
Прервать;
КонецЕсли;
КонецЦикла;
Если Найден < 0 Тогда
ВызватьИсключение "OWN-VIEWS-TABLE: чужая строка, дубль, тип или значение";
КонецЕсли;
Использованы.Добавить(Найден);
КонецЦикла;
КонецПроцедуры
Процедура ТипПоля85(Поле, ТипДанных, Длина, Дробь)
Если Поле = Неопределено Или Поле.Тип.Типы().Количество() <> 1 Или Не Поле.Тип.СодержитТип(Тип(ТипДанных)) Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверный тип";
КонецЕсли;
Если ТипДанных = "Строка" Тогда
Если Поле.Тип.КвалификаторыСтроки.Длина <> Длина Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверная длина строки";
КонецЕсли;
ИначеЕсли Поле.Тип.КвалификаторыЧисла.Разрядность <> Длина Или Поле.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти <> Дробь Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверная точность суммы";
КонецЕсли;
КонецПроцедуры
Функция Паспорт85() Экспорт
Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1C85_OwnViewsLab\63439b19-e013-4137-a338-43bd7de9115f\Base"";" Тогда
ВызватьИсключение "OWN-VIEWS-PATH: разрешена только точная новая собственная файловая ИБ";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверный стенд или активная транзакция";
КонецЕсли;
Если Метаданные.Документы.Количество() <> 1 Или Метаданные.ПланыВидовРасчета.Количество() <> 1 Или Метаданные.РегистрыРасчета.Количество() <> 1
Или Метаданные.Обработки.Количество() <> 1 Или Метаданные.ОбщиеМодули.Количество() <> 1 Или Метаданные.Роли.Количество() <> 1
Или Метаданные.Справочники.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0
Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0
Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0
Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.Константы.Количество() <> 0 Или Метаданные.Отчеты.Количество() <> 0
Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПараметрыСеанса.Количество() <> 0 Или Метаданные.ОбщиеФормы.Количество() <> 0
Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0
Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Или Метаданные.ХранилищаНастроек.Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: посторонние метаданные";
КонецЕсли;
Если РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.БазаДанных).Количество() <> 0
Или РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные).Количество() <> 0
Или РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансОтключенные).Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: расширения запрещены";
КонецЕсли;
ДокМД = Метаданные.Документы.Найти("УчебныйРегистраторСверки85");
ПланМД = Метаданные.ПланыВидовРасчета.Найти("УчебныеВидыСверки85");
РегистрМД = Метаданные.РегистрыРасчета.Найти("УчебнаяСверка85");
Если ДокМД = Неопределено Или ПланМД = Неопределено Или РегистрМД = Неопределено
Или Метаданные.Обработки.Найти("УчебнаяСверкаПульт85") = Неопределено Или Метаданные.ОбщиеМодули.Найти("УчебнаяСверкаСтенд85") = Неопределено
Или Метаданные.Роли.Найти("АдминистраторСверки85") = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: отсутствуют собственные объекты";
КонецЕсли;
Если ДокМД.Реквизиты.Количество() <> 2 Или ДокМД.ТабличныеЧасти.Количество() <> 0 Или ДокМД.Движения.Количество() <> 1
Или Не ДокМД.Движения.Содержит(РегистрМД) Или ДокМД.Проведение <> Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверный регистратор";
КонецЕсли;
ТипПоля85(ДокМД.Реквизиты.Найти("Маркер85"), "Строка", 36, 0);
ТипПоля85(ДокМД.Реквизиты.Найти("Пользователь85"), "Строка", 36, 0);
Если ПланМД.ИспользованиеПериодаДействия Или ПланМД.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.НеИспользовать
Или ПланМД.БазовыеВидыРасчета.Количество() <> 0 Или ПланМД.Реквизиты.Количество() <> 0 Или ПланМД.ТабличныеЧасти.Количество() <> 0
Или ПланМД.ДлинаКода <> 12 Или ПланМД.ДлинаНаименования <> 80 Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: план без базы и действия";
КонецЕсли;
Если РегистрМД.ПланВидовРасчета <> ПланМД Или РегистрМД.ПериодичностьРегистраРасчета <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц
Или РегистрМД.ПериодДействия Или РегистрМД.БазовыйПериод Или РегистрМД.Перерасчеты.Количество() <> 0
Или РегистрМД.Регистраторы.Количество() <> 1 Или Не РегистрМД.Регистраторы.Содержит(ДокМД)
Или РегистрМД.Измерения.Количество() <> 1 Или РегистрМД.Ресурсы.Количество() <> 1 Или РегистрМД.Реквизиты.Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-SCHEMA: неверный месячный регистр";
КонецЕсли;
ТипПоля85(РегистрМД.Измерения.Найти("Сотрудник85"), "Строка", 12, 0);
ТипПоля85(РегистрМД.Ресурсы.Найти("Сумма85"), "Число", 9, 2);
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ТипЗнч(Пользователи) <> Тип("Массив") Или Пользователи.Количество() <> 1 Или Текущий = Неопределено Тогда
ВызватьИсключение "OWN-VIEWS-USER: нужен один свой пользователь";
КонецЕсли;
Если Пользователи[0].Имя <> "УченикСверки85" Или Пользователи[0].УникальныйИдентификатор <> Текущий.УникальныйИдентификатор Или Не РольДоступна("АдминистраторСверки85") Тогда
ВызватьИсключение "OWN-VIEWS-USER: чужой пользователь или роль";
КонецЕсли;
Соединения = ПолучитьСоединенияИнформационнойБазы();
Если ТипЗнч(Соединения) <> Тип("Массив") Или Соединения.Количество() <> 1 Или Соединения[0].НомерСоединения <> НомерСоединенияИнформационнойБазы()
Или Соединения[0].Пользователь.УникальныйИдентификатор <> Текущий.УникальныйИдентификатор Тогда
ВызватьИсключение "OWN-VIEWS-USER: нужны только текущий собственный сеанс и пользователь";
КонецЕсли;
Возврат Текущий.УникальныйИдентификатор;
КонецФункции
Функция ЧислоДвижений85()
Таблица = Читать85("ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Число ИЗ РегистрРасчета.УчебнаяСверка85");
Если Таблица.Количество() <> 1 Или ТипЗнч(Таблица[0].Число) <> Тип("Число") Тогда
ВызватьИсключение "OWN-VIEWS-COUNT: неверный реальный результат";
КонецЕсли;
Возврат Таблица[0].Число;
КонецФункции
Функция НовыйНабор85(Пакет) Экспорт
Набор = РегистрыРасчета.УчебнаяСверка85.СоздатьНаборЗаписей();
Если ТипЗнч(Набор) <> Тип("РегистрРасчетаНаборЗаписей.УчебнаяСверка85") Или Набор.Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-SET: нужна настоящая пустая фабрика";
КонецЕсли;
Набор.Отбор.Регистратор.Установить(Пакет.Регистратор, Истина);
ПроверитьОтбор85(Набор.Отбор, "Регистратор", Пакет.Регистратор);
Возврат Набор;
КонецФункции
Процедура ПроверитьОтбор85(ОтборДанных, Имя, Значение) Экспорт
Используемых = 0;
Для Индекс = 0 По ОтборДанных.Количество() - 1 Цикл
Элемент = ОтборДанных.Получить(Индекс);
Если Элемент.Использование Тогда
Если Элемент.Имя <> Имя Или Элемент.ВидСравнения <> ВидСравнения.Равно Или Элемент.Значение <> Значение Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: неожиданный активный отбор";
КонецЕсли;
Используемых = Используемых + 1;
КонецЕсли;
КонецЦикла;
Если Используемых <> 1 Тогда
ВызватьИсключение "OWN-VIEWS-FILTER: нужен ровно свой отбор";
КонецЕсли;
КонецПроцедуры
Функция ЭталонНабора85(Пакет)
Набор = НовыйНабор85(Пакет);
Для Индекс = 0 По 2 Цикл
Запись = Набор.Добавить();
Запись.ПериодРегистрации = Дата(2026, ?(Индекс = 2, 2, 1), 1);
Запись.ВидРасчета = Пакет.Вид;
Запись.Активность = Истина;
Запись.Сотрудник85 = ?(Индекс = 0, "EMP1", ?(Индекс = 1, "EMP10", "EMP2"));
Запись.Сумма85 = 250;
Если Запись.НомерСтроки <> Индекс + 1 Тогда
ВызватьИсключение "OWN-VIEWS-LINE: неожиданная native нумерация";
КонецЕсли;
КонецЦикла;
Возврат Набор;
КонецФункции
Процедура ПроверитьДанные85(Пакет, Этап) Экспорт
Пользователь = Паспорт85();
Если ТипЗнч(Пакет) <> Тип("Структура") Или Пакет.Пользователь <> Пользователь Или ТипЗнч(Пакет.UUID) <> Тип("УникальныйИдентификатор") Тогда
ВызватьИсключение "OWN-VIEWS-PACKET: чужой пакет";
КонецЕсли;
ДокументыВсе = Читать85("ВЫБРАТЬ Ссылка,Дата,Номер,Проведен,ПометкаУдаления,Маркер85,Пользователь85 ИЗ Документ.УчебныйРегистраторСверки85");
ВидыВсе = Читать85("ВЫБРАТЬ Ссылка,Код,Наименование,ПометкаУдаления,Предопределенный ИЗ ПланВидовРасчета.УчебныеВидыСверки85");
Если ДокументыВсе.Количество() <> ?(Этап >= 2, 1, 0) Или ВидыВсе.Количество() <> ?(Этап >= 1, 1, 0) Или ЧислоДвижений85() <> ?(Этап = 3, 3, 0) Тогда
ВызватьИсключение "OWN-VIEWS-STATE: изменился весь объём, продолжать нельзя";
КонецЕсли;
Если Этап >= 1 Тогда
Вид = ВидыВсе[0];
Если ТипЗнч(Пакет.Вид) <> Тип("ПланВидовРасчетаСсылка.УчебныеВидыСверки85") Или Пакет.Вид.Пустая() Или Вид.Ссылка <> Пакет.Вид
Или Вид.Код <> "WORK85" Или Вид.Наименование <> "Своя учебная строка" Или Вид.ПометкаУдаления Или Вид.Предопределенный Тогда
ВызватьИсключение "OWN-VIEWS-KIND: неизвестный вид";
КонецЕсли;
ОбъектВида = Вид.Ссылка.ПолучитьОбъект();
Если ОбъектВида.ВедущиеВидыРасчета.Количество() <> 0 Тогда
ВызватьИсключение "OWN-VIEWS-KIND: неизвестные зависимости";
КонецЕсли;
КонецЕсли;
Если Этап >= 2 Тогда
Док = ДокументыВсе[0];
Если ТипЗнч(Пакет.Регистратор) <> Тип("ДокументСсылка.УчебныйРегистраторСверки85") Или Пакет.Регистратор.Пустая() Или Док.Ссылка <> Пакет.Регистратор
Или Док.Дата <> Дата(2026, 2, 10) Или Док.Номер <> "001" Или Док.Проведен Или Док.ПометкаУдаления
Или Док.Маркер85 <> Строка(Пакет.UUID) Или Док.Пользователь85 <> Строка(Пользователь) Тогда
ВызватьИсключение "OWN-VIEWS-DOC: чужой регистратор или маркер";
КонецЕсли;
КонецЕсли;
Если Этап = 3 Тогда
Свежий = НовыйНабор85(Пакет);
Свежий.Прочитать();
Если Свежий.Модифицированность() Тогда
ВызватьИсключение "OWN-VIEWS-SET: свежий набор изменен";
КонецЕсли;
Ожидание = ЭталонНабора85(Пакет).Выгрузить();
Сравнить85(Свежий.Выгрузить(), Ожидание);
Если Свежий.Выгрузить().Итог("Сумма85") <> 750 Тогда
ВызватьИсключение "OWN-VIEWS-MATH: сохранено не750";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция Подготовить85() Экспорт
Пакет = Новый Структура("UUID,Пользователь,Вид,Регистратор", Новый УникальныйИдентификатор, Паспорт85(), Неопределено, Неопределено);
ПроверитьДанные85(Пакет, 0);
Вид = ПланыВидовРасчета.УчебныеВидыСверки85.СоздатьВидРасчета();
Вид.Код = "WORK85";
Вид.Наименование = "Своя учебная строка";
ПроверитьДанные85(Пакет, 0);
Вид.Записать();
Пакет.Вид = Вид.Ссылка;
ПроверитьДанные85(Пакет, 1);
Док = Документы.УчебныйРегистраторСверки85.СоздатьДокумент();
Док.Дата = Дата(2026, 2, 10);
Док.Номер = "001";
Док.Маркер85 = Строка(Пакет.UUID);
Док.Пользователь85 = Строка(Пакет.Пользователь);
ПроверитьДанные85(Пакет, 1);
Док.Записать(РежимЗаписиДокумента.Запись);
Пакет.Регистратор = Док.Ссылка;
ПроверитьДанные85(Пакет, 2);
Набор = ЭталонНабора85(Пакет);
Если Набор.Количество() <> 3 Или Набор.Выгрузить().Итог("Сумма85") <> 750 Тогда
ВызватьИсключение "OWN-VIEWS-SET: неверная собственная подготовка";
КонецЕсли;
ПроверитьДанные85(Пакет, 2);
ПроверитьОтбор85(Набор.Отбор, "Регистратор", Пакет.Регистратор);
Набор.Записать(Истина, Ложь, Ложь, Ложь);
ПроверитьДанные85(Пакет, 3);
Возврат Пакет;
КонецФункции
Процедура ПроверитьЧистый85(Пакет, Набор) Экспорт
ПроверитьДанные85(Пакет, 3);
Если ТипЗнч(Набор) <> Тип("РегистрРасчетаНаборЗаписей.УчебнаяСверка85") Или Набор.Модифицированность() Тогда
ВызватьИсключение "OWN-VIEWS-DIRTY: перечитывание изменённого набора запрещено";
КонецЕсли;
ПроверитьОтбор85(Набор.Отбор, "Регистратор", Пакет.Регистратор);
Сравнить85(Набор.Выгрузить(), ЭталонНабора85(Пакет).Выгрузить());
КонецПроцедурыПолная собственная форма отдельного согласия и native получения окна
Обработки → УчебнаяСверкаПульт85 → Формы → Пульт85 → Модуль
Толстый обычный клиент; actual native button handler, не ручная имитация события.
Перем Запуск85;
Перем ОшибкаПодготовки85;
Процедура ПриОткрытии()
УчебнаяСверкаСтенд85.Паспорт85();
Запуск85 = Ложь;
ОшибкаПодготовки85 = Ложь;
ПодтверждаюСозданиеСвоихДанных85 = Ложь;
КонецПроцедуры
Процедура СоздатьИОткрыть85(Кнопка)
Если ТипЗнч(Кнопка) <> Тип("Кнопка") Или Кнопка <> ЭлементыФормы.СоздатьИОткрыть85 Или Кнопка.Имя <> "СоздатьИОткрыть85"
Или Запуск85 Или ОшибкаПодготовки85 Или Не ПодтверждаюСозданиеСвоихДанных85 Тогда
ВызватьИсключение "OWN-VIEWS-CONFIRM: нужна настоящая кнопка и отдельное согласие на новые собственные данные; повтор запрещен";
КонецЕсли;
ПодтверждаюСозданиеСвоихДанных85 = Ложь;
Запуск85 = Истина;
Попытка
Пакет = УчебнаяСверкаСтенд85.Подготовить85();
Ключ = Новый УникальныйИдентификатор;
Окно = РегистрыРасчета.УчебнаяСверка85.ПолучитьФормуСписка("Сверка85", ЭтаФорма, Ключ);
Если Окно = Неопределено Или ТипЗнч(Окно) <> Тип("Форма") Или Окно.Открыта() Или Окно.ВладелецФормы <> ЭтаФорма Или Окно.КлючУникальности <> Ключ Тогда
ВызватьИсключение "OWN-VIEWS-FORM: нет своей новой закрытой обычной формы";
КонецЕсли;
Окно.ПодготовитьПоказ85(Пакет);
Окно.Открыть();
Исключение
ОшибкаПодготовки85 = Истина;
ВызватьИсключение;
КонецПопытки;
КонецПроцедурыРазбор по шагам
Подготовить только свой новый File стенд и три движения. Форма создается native GetListForm с actual nullable guards и отдельным UUID экземпляра; набор — CreateRecordSet и чтение по собственной реальной ссылке.
Показать полный период, январь и февраль. Профиль обеих полей запрещает редактирование. Настройки чтения/прав не смешивать с UI-доступностью; не присваивать readonly коллекциям.
Сравнить точный EMP1 в динамическом списке с вхождением EMP1 в строках набора. Исходный набор и база остаются3/750; неизвестный результат останавливает маршрут.
Перед перечитыванием снять только свой фильтрстрок, проверить чистоту и весь фактический набор/ссылку/отбор/стенд. После перечитывания сравнить все строки и колонки, без обещания атомарности.
Native доставка видимого списка читает Count/Get внутри callback, сверяет каждое фактическое поле, хранит только scalar snapshots по реальным ключам. Подсчет результата использует доставленные суммы, не ожидаемые вместо них.
Проверить собственную warning-policy, но не создавать новую строку и не выдавать настройку за возникшее предупреждение.
Как проверить результат
Полная сохраненная native выгрузка всегда3строки750. Январь показывает2/500, февраль1/250, точноеEMP1 1/250. Реально доставленные строки списка сверяются кнопкой после настоящего показа.
ВхождениеEMP1 в readonly наборе вручную показываетEMP1 иEMP10, 2/500; EMP2не виден. Все85 снимает только свой фильтр, вновь3/750. Повторное чтение полнообъемно проверяется, не заменяется ожидаемыми данными.
Для изменённого actual набора, чужой FileИБ, UUID, пользователя, лишней строки/колонки/фильтра или неправильно доставленного callback опыт прекращается. Сценарий не был исполнен в1С.
Ожидаемый результат
Будущий проверяемый результат: собственные250/500/750, правильные period/equality/inclusion и actualvisible delivery без изменения сохраненных движений после отдельной подготовки. Не выполнялся.
На что обратить внимание
Количество в callback относится только к его видимым строкам; коллекция устаревает за пределами обработчика. Не сохраняйте её и не вызывайте handler вручную.
Метод поляОбновить перечитывает набор; nativeМодифицированность не доказывает отсутствие конкурентных изменений. Полные fresh guards/readback тоже не дают универсальной атомарности.
СтандартныйПериод — НастройкаПериода, не enum. РазрешитьНастройкуПериодаЛожь блокирует команду интерфейса, но не создает отбор сам.
Новая строка здесь запрещена. СообщатьОНесоответствииОтбору изучено как предустановленная проверенная политика, а не доказанный runtimewarning. Любая ошибка не означает автоматического восстановления/безопасного повтора.
Форма/модули только собственной CF, обычный толстый клиент. Браузер BSL не выполняет; фактические UI/1С/БД проверки предстоят вручную.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.