Расширение табличного поля списка задач.ПроверкаОтображенияНовойСтроки

Свойства · NewRowShowCheck

Тип: ВариантПроверкиОтображенияНовойСтроки. Если данное свойство имеет значение СообщатьОНесоответствииОтбору, то после окончания ввода новой строки системой будет осуществлена проверка строки и, если строка будет не соответствовать установленному отбору, будет выдано сообщение.

Полное описание, параметры и ограничения

Расширение табличного поля списка задач.ПроверкаОтображенияНовойСтроки (Task list table box extension.NewRowShowCheck)

Расширение табличного поля списка задач (Task list table box extension)

ПроверкаОтображенияНовойСтроки (NewRowShowCheck)

Доступен, начиная с версии 8.0.

Использование:
Чтение и запись.
Описание:
Тип: ВариантПроверкиОтображенияНовойСтроки.
Если данное свойство имеет значение СообщатьОНесоответствииОтбору, то после окончания ввода новой строки системой будет осуществлена проверка строки и, если строка будет не соответствовать установленному отбору, будет выдано сообщение.
Доступность:

Толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Задачи: сентябрь, собственный исполнитель A и сброс фильтров при смене режима

На четырёх настоящих своих записях разберём источник списка, месячный отбор и UI без выполнения задач или запуска процессов.

Где и как запускать

Полный модуль собственной обычной формы УчебныеСпискиПроцессов85 → Обработки → Уч85СписокЗадач → Формы → Список; общий модуль и Пульт ниже. Не выполнялся.

Подготовка

  1. НОВАЯ отдельная файловая база 8.5.1.1343, конфигурация УчебныеСпискиПроцессов85, совместимость НеИспользовать, обычное приложение, толстый клиент. Не рабочая база и не её копия. Нет расширений, разделителей, общих реквизитов, подписок, внешних/фоновых обработчиков; одна учебная сессия. runtimeVerifiedScenarios=0.

  2. Задача Уч85Задача: номер Строка(9), автонумерация, наименование 100. Дополнительные Уч85Ключ Строка(8) и Уч85Текст Строка(100), оба Индексировать, без проверки заполнения. Реквизит адресации Уч85Исполнитель типа СправочникСсылка.Уч85Сотрудники, основной реквизит адресации. Модули задачи пустые.

  3. Бизнес-процесс Уч85Процесс: номер Строка(9), автонумерация; собственные Уч85Ключ Строка(8) и Уч85Текст Строка(100), оба Индексировать. В свойстве Задача выберите Уч85Задача. Маршрут: Старт → одиночное действие Уч85Действие → Финиш. Никаких обработчиков/групповых/условных/вложенных точек. Процессы НЕ запускать, задачи НЕ выполнять.

  4. Справочник Уч85Сотрудники: неиерархический, код Строка(8), имя 100, без реквизитов/обработчиков. Вручную сохраните только A/Учебный сотрудник A и B/Учебный сотрудник B, без пометок удаления. Это собственные справочные записи, не пользователи информационной базы.

  5. Регистр сведений Уч85Адресация: независимый, непериодический, единственное измерение Уч85Исполнитель типа СправочникСсылка.Уч85Сотрудники, без ресурсов/реквизитов/обработчиков. В Задача → Адресация выберите этот регистр; у реквизита адресации Уч85Исполнитель свойство ИзмерениеАдресации свяжите с одноимённым измерением. Регистр оставьте пустым: все учебные задачи имеют непустое персональное назначение, ролевую адресацию здесь не испытываем.

  6. Параметр сеанса Уч85ТекущийИсполнитель типа СправочникСсылка.Уч85Сотрудники; в метаданных задачи ТекущийИсполнитель укажите этот параметр. Модуль сеанса пустой. В варианте задач общий модуль явно инициализирует только этот собственный параметр перед открытием; это будущая настройка своей сессии, не запись сотрудников/задач и не смена пользователя ИБ.

  7. Для каждого вида вручную сохраните ровно четыре записи без запуска/выполнения/пометок: A — 01.09.2026 00:00:00, Уч85Текст=01. Первая учебная запись; B — 15.09.2026 12:00:00, текст=02. Вторая учебная запись; C — 30.09.2026 23:59:59, текст=03. Граница сентября; D — 01.10.2026 00:00:00, текст=04. Первый октябрьский. Уч85Ключ A/B/C/D. У задач Наименование равно Уч85Текст; персональный Уч85Исполнитель A у A/C/D, B у B. Задачи самостоятельные, не созданы запуском маршрута. Показывайте секунды даты.

  8. Общий модуль УчебныеСписки85: неглобальный, Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, другие клиентские флаги=Нет. Полный общий модуль ниже, основной блок — модуль списка. Вставляйте один вариант, не оба общих модуля одновременно.

  9. Обработка УчебныеСписки85 → обычная основная форма Пульт → кнопка Выполнить, действие ВыполнитьНажатие; полный модуль формы отдельно. F7 и обновление только своего стенда. Примеры не вызывают Записать/Старт/ВыполнитьЗадачу/удаление/сеть/почту/файлы/печать.

  10. Обработка Уч85СписокЗадач → обычная основная форма Список. Реквизит СписокРасчетов типа ЗадачаСписок.Уч85Задача; поле Виды связано с ним. Колонки Дата/Уч85Текст/Уч85Ключ связаны с одноимёнными полями. ТолькоПросмотр=Да, стандартных команд записи/создания/выполнения/старта/удаления нет.

  11. Кнопки ТолькоB, Восстановить, Фиксированный, Настраиваемый, АвтоОбновление, РазрешитьПериод, ЗапретитьПериод, Закрыть: назначьте действия *Нажатие и ПриОткрытии. Оставьте стандартный диалог настройки списка в контекстном меню поля. Основной полный блок вставьте в модуль списка.

  12. В списке задач добавьте колонки Наименование и Уч85Исполнитель, связанные с одноимёнными полями, и кнопку СотрудникA → СотрудникAНажатие. Не добавляйте СтандартныйПериод: в данном расширении задач это свойство отсутствует.

Перем Подготовлено;
Перем СвоиЗаписи;
Перем РазрешалисьИзмененияПериода;

Процедура ПодготовитьДоОткрытия() Экспорт
    Подготовлено = Ложь;
    РазрешалисьИзмененияПериода = Ложь;
    Если ЭтаФорма.Открыта() Или ТипЗнч(СписокРасчетов) <> Тип("ЗадачаСписок.Уч85Задача") Тогда
        ВызватьИсключение "Нужен настоящий реквизит списка своей закрытой обычной формы";
    КонецЕсли;
    СвоиЗаписи = УчебныеСписки85.ПрочитатьСвоюПодготовку();
    Колонки = СписокРасчетов.Колонки;
    Для Каждого Имя Из СтрРазделить("Дата,Уч85Текст,Уч85Ключ,Наименование,Уч85Исполнитель", ",") Цикл
        Если Колонки.Найти(Имя) = Неопределено Тогда
            Колонки.Добавить(Имя);
        КонецЕсли;
    КонецЦикла;
    Поле = ЭлементыФормы.Виды;
    НастроитьПоле(Ложь);
    Поле.Автонумерация = АвтонумерацияВФорме.НеИспользовать;
    Поле.ОтображениеЗадач = РежимСпискаЗадач.ВсеЗадачи;
    Если Поле.Автонумерация <> АвтонумерацияВФорме.НеИспользовать Тогда
        ВызватьИсключение "Автонумерация в своём поле должна быть отключена";
    КонецЕсли;
    УстановитьДоступностьПериода(Ложь);
    УстановитьСентябрь();
    Подготовлено = Истина;
КонецПроцедуры

Процедура ПриОткрытии()
    Если Подготовлено <> Истина Тогда
        ВызватьИсключение "Открывайте свой список через Пульт после подготовки";
    КонецЕсли;
    УстановитьСентябрь();
    СписокРасчетов.Обновить();
    Сообщить("Проверьте сентябрьские A,B,C. C в 30.09 23:59:59 включена, D в 01.10 00:00:00 исключена.");
КонецПроцедуры

Процедура ПроверитьСвойОткрытыйСписок()
    Если Подготовлено <> Истина Или Не ЭтаФорма.Открыта() Тогда
        ВызватьИсключение "Нужен свой подготовленный открытый список";
    КонецЕсли;
    Повторно = УчебныеСписки85.ПрочитатьСвоюПодготовку();
    Для Каждого Ключ Из СтрРазделить("A,B,C,D", ",") Цикл
        Если Повторно.Ссылки[Ключ] <> СвоиЗаписи.Ссылки[Ключ] Тогда
            ВызватьИсключение "Своя подготовленная запись заменена другим кодом";
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Процедура ПроверитьФиксированныйПериод()
    Если РазрешалисьИзмененияПериода = Истина Тогда
        ВызватьИсключение "После разрешения ручного интервала откройте новый собственный опыт для фиксированных ожиданий";
    КонецЕсли;
КонецПроцедуры

Процедура УстановитьСентябрь()
    ПроверитьФиксированныйПериод();
    СписокРасчетов.Отбор.Сбросить();
    ДатаОтбора = СписокРасчетов.Отбор.Найти("Дата");
    Если ДатаОтбора = Неопределено Тогда
        ВызватьИсключение "В своём списке нет стандартного отбора Дата";
    КонецЕсли;
    ДатаОтбора.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
    ДатаОтбора.ЗначениеС = Дата(2026, 9, 1, 0, 0, 0);
    ДатаОтбора.ЗначениеПо = Дата(2026, 9, 30, 23, 59, 59);
    ДатаОтбора.Использование = Истина;
    СписокРасчетов.Порядок.Установить("Наименование Возр");
    Если ДатаОтбора.ВидСравнения <> ВидСравнения.ИнтервалВключаяГраницы Или Не ДатаОтбора.Использование
        Или ДатаОтбора.ЗначениеС <> Дата(2026, 9, 1, 0, 0, 0) Или ДатаОтбора.ЗначениеПо <> Дата(2026, 9, 30, 23, 59, 59) Тогда
        ВызватьИсключение "Не подтверждены точные границы своего сентября";
    КонецЕсли;
КонецПроцедуры

Процедура ТолькоBНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    ЭлементыФормы.Виды.ОтображениеЗадач = РежимСпискаЗадач.ВсеЗадачи;
    УстановитьСентябрь();
    СписокРасчетов.Отбор.Уч85Ключ.Установить("B", Истина);
    СписокРасчетов.Обновить();
    Сообщить("Проверьте только свою B с датой 15.09 и учебным ключом B.");
КонецПроцедуры

Процедура ВосстановитьНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    ЭлементыФормы.Виды.ОтображениеЗадач = РежимСпискаЗадач.ВсеЗадачи;
    УстановитьСентябрь();
    СписокРасчетов.Обновить();
    Сообщить("Проверьте снова A,B,C за сентябрь; октябрьская D скрыта, но не удалена.");
КонецПроцедуры

Процедура РазрешитьПериодНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    УстановитьДоступностьПериода(Истина);
    Сообщить("Команда Установить интервал дат разрешена даже при недоступном ручном отборе Дата. После ручного опыта закройте окно и запустите новый Пульт для исходных границ.");
КонецПроцедуры

Процедура ЗапретитьПериодНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    УстановитьДоступностьПериода(Ложь);
КонецПроцедуры

Процедура УстановитьДоступностьПериода(Разрешено)
    Поле = ЭлементыФормы.Виды;
    УправлениеДатой = Поле.НастройкаОтбора.Найти("Дата");
    Если УправлениеДатой = Неопределено Тогда
        ВызватьИсключение "Нет собственного элемента управления отбором Дата";
    КонецЕсли;
    УправлениеДатой.Доступность = Ложь;
    Поле.РазрешитьНастройкуПериода = Разрешено;
    Если Разрешено Тогда
        РазрешалисьИзмененияПериода = Истина;
    КонецЕсли;
    Если УправлениеДатой.Доступность Или Поле.РазрешитьНастройкуПериода <> Разрешено Тогда
        ВызватьИсключение "Не совпали доступности даты и отдельной команды периода";
    КонецЕсли;
КонецПроцедуры

Процедура ЗакрытьНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    ЭлементыФормы.Виды.АвтоОбновление = Ложь;
    ЭтаФорма.Закрыть();
КонецПроцедуры

Процедура НастроитьПоле(Интерактивно)
    Поле = ЭлементыФормы.Виды;
    УправлениеОтбором = Поле.НастройкаОтбора.Найти("Уч85Ключ");
    УправлениеПорядком = Поле.НастройкаПорядка.Найти("Наименование");
    Если УправлениеОтбором = Неопределено Или УправлениеПорядком = Неопределено Тогда
        ВызватьИсключение "Нет собственных элементов управления отбором ключа и порядком наименования";
    КонецЕсли;
    Поле.АвтоОбновление = Ложь;
    Поле.ПериодАвтоОбновления = 10;
    Поле.ВосстанавливатьТекущуюСтроку = Ложь;
    Поле.ИзменятьАвтоОбновление = Интерактивно;
    Поле.ИзменятьСпособРедактирования = Интерактивно;
    Если Интерактивно Тогда
        Поле.СпособРедактирования = СпособРедактированияСписка.ВСписке;
        Поле.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.НеПроверять;
    Иначе
        Поле.СпособРедактирования = СпособРедактированияСписка.ВДиалоге;
        Поле.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору;
    КонецЕсли;
    УправлениеОтбором.Доступность = Интерактивно;
    УправлениеПорядком.Доступность = Интерактивно;
    Поле.ТолькоПросмотр = Истина;
    ПроверитьПрофиль(Интерактивно);
КонецПроцедуры

Процедура ПроверитьПрофиль(Интерактивно)
    Поле = ЭлементыФормы.Виды;
    Если Поле.АвтоОбновление Или Поле.ПериодАвтоОбновления <> 10 Или Поле.ВосстанавливатьТекущуюСтроку
        Или Поле.ИзменятьАвтоОбновление <> Интерактивно Или Поле.ИзменятьСпособРедактирования <> Интерактивно
        Или Не Поле.ТолькоПросмотр Тогда
        ВызватьИсключение "Флаги своего профиля не совпали";
    КонецЕсли;
    Если Поле.НастройкаОтбора.Найти("Уч85Ключ").Доступность <> Интерактивно
        Или Поле.НастройкаПорядка.Найти("Наименование").Доступность <> Интерактивно Тогда
        ВызватьИсключение "Интерактивная доступность отбора/порядка не совпала";
    КонецЕсли;
    Если Интерактивно Тогда
        Если Поле.СпособРедактирования <> СпособРедактированияСписка.ВСписке
            Или Поле.ПроверкаОтображенияНовойСтроки <> ВариантПроверкиОтображенияНовойСтроки.НеПроверять Тогда
            ВызватьИсключение "Не совпали режим и проверка настраиваемого профиля";
        КонецЕсли;
    Иначе
        Если Поле.СпособРедактирования <> СпособРедактированияСписка.ВДиалоге
            Или Поле.ПроверкаОтображенияНовойСтроки <> ВариантПроверкиОтображенияНовойСтроки.СообщатьОНесоответствииОтбору Тогда
            ВызватьИсключение "Не совпали режим и проверка фиксированного профиля";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Процедура НастраиваемыйНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    НастроитьПоле(Истина);
    Сообщить("Откройте стандартный диалог настройки списка: отбор по ключу, порядок наименования и настройки автообновления доступны. Запись строк по-прежнему запрещена настройкой ТолькоПросмотр.");
КонецПроцедуры

Процедура ФиксированныйНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    НастроитьПоле(Ложь);
    ВосстановитьНажатие(Неопределено);
    Сообщить("Фиксированный профиль восстановлен. Программный отбор кнопкой ТолькоB работает независимо от запрета его интерактивного изменения.");
КонецПроцедуры

Процедура АвтоОбновлениеНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    Поле = ЭлементыФормы.Виды;
    Поле.ИзменятьАвтоОбновление = Ложь;
    Поле.ПериодАвтоОбновления = 10;
    Поле.АвтоОбновление = Не Поле.АвтоОбновление;
    Сообщить(СтрШаблон("АвтоОбновление=%1, период=%2 секунд, интерактивное изменение=%3",
        Поле.АвтоОбновление, Поле.ПериодАвтоОбновления, Поле.ИзменятьАвтоОбновление));
КонецПроцедуры

Процедура СотрудникAНажатие(Кнопка)
    ПроверитьСвойОткрытыйСписок();
    Поле = ЭлементыФормы.Виды;
    Поле.ОтображениеЗадач = РежимСпискаЗадач.ВсеЗадачи;
    Поле.Исполнитель = СвоиЗаписи.Сотрудники.A;
    Поле.ОтображениеЗадач = РежимСпискаЗадач.ПоИсполнителю;
    Если СписокРасчетов.Отбор.Уч85Ключ.Использование Тогда
        ВызватьИсключение "При реальной смене режима прежний отбор B должен сброситься";
    КонецЕсли;
    УстановитьСентябрь();
    Если Поле.Исполнитель <> СвоиЗаписи.Сотрудники.A Или Поле.ОтображениеЗадач <> РежимСпискаЗадач.ПоИсполнителю Тогда
        ВызватьИсключение "Не подтверждены свой исполнитель и режим";
    КонецЕсли;
    СписокРасчетов.Обновить();
    Сообщить("Проверьте A,C за сентябрь, назначенные сотруднику A. Прежний отбор B снят; октябрьская D этого же сотрудника вне периода.");
КонецПроцедуры
УчебныеСписки85.Пульт

УчебныеСпискиПроцессов85 → Обработки → УчебныеСписки85 → Формы → Пульт → Модуль

Полный модуль обычного Пульта; не выполнялся.

Процедура ВыполнитьНажатие(Кнопка)
    УчебныеСписки85.ВыполнитьПример();
КонецПроцедуры
УчебныеСписки85.ОбщийМодуль

УчебныеСпискиПроцессов85 → Общие модули → УчебныеСписки85

Полный обычный клиентский общий модуль чтения своей подготовки и запуска списка; не выполнялся.

Процедура ВыполнитьПример() Экспорт
    Свои = ПрочитатьСвоюПодготовку();
    ПараметрыСеанса.Уч85ТекущийИсполнитель = Свои.Сотрудники.A;
    Ключ = Новый УникальныйИдентификатор;
    Окно = Обработки.Уч85СписокЗадач.ПолучитьФорму("Список", , Ключ);
    Если Окно = Неопределено Тогда
        ВызватьИсключение "Не создана собственная обычная форма Список";
    КонецЕсли;
    Если ТипЗнч(Окно) <> Тип("Форма") Тогда
        ВызватьИсключение "Нужна обычная форма толстого клиента";
    КонецЕсли;
    Если Окно.Открыта() Или Окно.КлючУникальности <> Ключ Тогда
        ВызватьИсключение "Ожидалась новая закрытая форма, не чужое окно";
    КонецЕсли;
    Окно.КлючСохраненияПоложенияОкна = "Уч85.Уч85СписокЗадач." + Строка(Ключ);
    Окно.ПодготовитьДоОткрытия();
    Окно.Открыть();
КонецПроцедуры

Процедура ПроверитьСвойКонтекст()
    Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Нужен собственный стенд УчебныеСпискиПроцессов85 платформы 8.5.1.1343";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
    КонецЕсли;
КонецПроцедуры

Функция ПрочитатьСвоюПодготовку() Экспорт
    ПроверитьСвойКонтекст();
    Сотрудники = ПрочитатьСвоихСотрудников();
    Ожидания = Новый Структура;
    Ожидания.Вставить("A", Новый Структура("Дата,Текст,Исполнитель", Дата(2026, 9, 1, 0, 0, 0), "01. Первая учебная запись", "A"));
    Ожидания.Вставить("B", Новый Структура("Дата,Текст,Исполнитель", Дата(2026, 9, 15, 12, 0, 0), "02. Вторая учебная запись", "B"));
    Ожидания.Вставить("C", Новый Структура("Дата,Текст,Исполнитель", Дата(2026, 9, 30, 23, 59, 59), "03. Граница сентября", "A"));
    Ожидания.Вставить("D", Новый Структура("Дата,Текст,Исполнитель", Дата(2026, 10, 1, 0, 0, 0), "04. Первый октябрьский", "A"));
    Ссылки = Новый Структура;
    Выборка = Задачи.Уч85Задача.Выбрать(, "Наименование Возр");
    Пока Выборка.Следующий() Цикл
        Ключ = Выборка.Уч85Ключ;
        Ожидание = Неопределено;
        Если Не Ожидания.Свойство(Ключ, Ожидание) Или Ссылки.Свойство(Ключ) Тогда
            ВызватьИсключение "В своём наборе неизвестный или повторный учебный ключ";
        КонецЕсли;
        Если Выборка.Дата <> Ожидание.Дата Или Выборка.Уч85Текст <> Ожидание.Текст
            Или Выборка.ПометкаУдаления Тогда
            ВызватьИсключение "Не совпали дата, текст или пометка своей записи";
        КонецЕсли;
        Если Выборка.Выполнена Или Выборка.Наименование <> Ожидание.Текст
            Или Выборка.Уч85Исполнитель <> Сотрудники[Ожидание.Исполнитель] Тогда
            ВызватьИсключение "Задача должна быть невыполненной с реальным персональным назначением";
        КонецЕсли;
        Ссылки.Вставить(Ключ, Выборка.Ссылка);
    КонецЦикла;
    Если Ссылки.Количество() <> 4 Тогда
        ВызватьИсключение "Вручную подготовьте ровно четыре собственные записи A/B/C/D";
    КонецЕсли;
    Возврат Новый Структура("Ссылки,Сотрудники", Ссылки, Сотрудники);
КонецФункции

Функция ПрочитатьСвоихСотрудников()
    A = Справочники.Уч85Сотрудники.НайтиПоКоду("A");
    B = Справочники.Уч85Сотрудники.НайтиПоКоду("B");
    Если A.Пустая() Или B.Пустая() Или A = B Или A.Наименование <> "Учебный сотрудник A"
        Или B.Наименование <> "Учебный сотрудник B" Или A.ПометкаУдаления Или B.ПометкаУдаления Тогда
        ВызватьИсключение "Вручную подготовьте настоящих собственных сотрудников A/B";
    КонецЕсли;
    Выборка = Справочники.Уч85Сотрудники.Выбрать();
    Количество = 0;
    Пока Выборка.Следующий() Цикл
        Если Выборка.Ссылка <> A И Выборка.Ссылка <> B Тогда
            ВызватьИсключение "В своём справочнике есть посторонний сотрудник";
        КонецЕсли;
        Количество = Количество + 1;
    КонецЦикла;
    Если Количество <> 2 Тогда
        ВызватьИсключение "Нужны ровно два своих сотрудника";
    КонецЕсли;
    Описание = Метаданные.Задачи.Уч85Задача;
    Основной = Описание.ОсновнойРеквизитАдресации;
    Реквизит = Описание.РеквизитыАдресации.Найти("Уч85Исполнитель");
    Если Основной = Неопределено Или Реквизит = Неопределено Или Описание.РеквизитыАдресации.Количество() <> 1 Тогда
        ВызватьИсключение "У своей задачи нужен единственный основной реквизит адресации";
    КонецЕсли;
    Если Основной <> Реквизит Или Описание.Адресация <> Метаданные.РегистрыСведений.Уч85Адресация
        Или Реквизит.ИзмерениеАдресации <> Метаданные.РегистрыСведений.Уч85Адресация.Измерения.Уч85Исполнитель Тогда
        ВызватьИсключение "Не совпали собственные настройки адресации";
    КонецЕсли;
    Адресация = РегистрыСведений.Уч85Адресация.Выбрать();
    Если Адресация.Следующий() Тогда
        ВызватьИсключение "В этом опыте регистр ролевой адресации должен быть пуст";
    КонецЕсли;
    Возврат Новый Структура("A,B", A, B);
КонецФункции

Разбор по шагам

  1. Свой набор A/B/C/D содержит две точные границы месяца: C на последней секунде сентября и D в первую секунду октября. Общий модуль читает даты/тексты/ключи и незапущенное/невыполненное состояние, не создавая новых записей.

  2. Источник СписокРасчетов имеет конкретный прикладной тип списка, Виды — визуальное поле. Колонки источника добавляются по именам собственных полей, визуальные колонки заранее связаны с ними в своей обычной форме.

  3. Пульт получает новую закрытую форму по уникальному ключу. Основной полный блок вставляется в модуль Список, отдельные блоки — в общий модуль и Пульт. ПриОткрытии отклоняет неподготовленный прямой запуск.

  4. УстановитьСентябрь использует настоящий ЭлементОтбора Дата: ИнтервалВключаяГраницы, ЗначениеС 01.09 00:00:00, ЗначениеПо 30.09 23:59:59 и Использование=Истина. Проверяет назначенные границы, затем Обновить перечитывает базу.

  5. У задачи собственный основной реквизит адресации Уч85Исполнитель связан с измерением пустого регистра. Все A/B/C/D имеют непустое персональное назначение: A/C/D сотруднику A, B сотруднику B; ролевые задачи не имитируются.

  6. ПараметрыСеанса доступны здесь в толстом клиенте. Свой параметр сначала явно инициализируется сотрудником A, без чтения неинициализированного значения. Metadata.ТекущийИсполнитель по справке всегда Неопределено и не является способом прочитать значение параметра.

  7. СотрудникA принудительно проходит ВсеЗадачи → ПоИсполнителю, задаёт настоящую ссылку A и проверяет сброс прежнего отбора B. Только затем УстановитьСентябрь заново задаёт период: ожидаем A/C, но не октябрьскую D и не B другого исполнителя.

  8. Порядок задачи задаётся Наименование Возр — документированное поле этого списка; имена с префиксами 01…04 совпадают с учебной последовательностью. У менеджеров задач/процессов разные позиции параметров Выбрать, они не копируются механически.

  9. Ожидаем A/B/C, не D. ТолькоB добавляет собственный индексированный ключ; Восстановить возвращает сентябрь. Сообщения — инструкции будущей ручной проверки, а не доказательство отображённых строк.

  10. НастройкаОтбора и НастройкаПорядка readonly как свойства поля. Найти может вернуть Неопределено. Их Доступность относится к ручной настройке, а Отбор источника — к фактической фильтрации.

  11. РазрешитьНастройкуПериода отдельно управляет командой Установить интервал дат, даже когда ручная настройка Дата недоступна. После разрешения ручного интервала действия с фиксированным сентябрём блокируются до нового собственного окна, даже если человек ещё не изменил даты; прежние ожидания не выдаются за доказательство.

  12. Фиксированный/Настраиваемый меняют доступность настройки автообновления и режима редактирования. ТолькоПросмотр остаётся включённым; настройка проверки новой строки не выдаётся за выполненный ввод или испытанное сообщение.

  13. АвтоОбновление переключается программно при периоде 10 секунд; native-минимум 5. ИзменятьАвтоОбновление не запрещает программное изменение. ВосстанавливатьТекущуюСтроку выключен для нового независимого окна.

  14. Закрыть выключает таймер своего поля и закрывает только свой список. Задачи не выполняются, маршрут не стартует, сотрудники/записи/адресация не записываются. Никакого запуска 1С здесь не было.

Как проверить результат

  1. Будущий тест: три полных блока вставить в разные указанные модули, назначить действия/ПриОткрытии и связать колонки, F7, открыть через свой Пульт.

  2. Сентябрь: реальные A,B,C; C 30.09 23:59:59 включена, D 01.10 00:00:00 отсутствует. Осмотреть поле, не только строку Сообщить.

  3. ТолькоB: одна B. Восстановить: три сентябрьские записи. Все четыре по-прежнему существуют в стандартном списке своего вида.

  4. РазрешитьПериод/ЗапретитьПериод: проверить доступность отдельной команды при недоступной ручной настройке Дата. После разрешения ручного интервала Восстановить отклоняется; закрыть окно и повторить с новым уникальным ключом.

  5. Настраиваемый/Фиксированный и АвтоОбновление: сверить фактические флаги, период 10 и диалог. Реальная работа таймера и восстановление позиции не объявляются проверенными.

  6. Закрыть своё окно; записи без пометок и в исходном состоянии. Никаких новых задач маршрута, выполнений или сохранений из кода нет.

  7. После ТолькоB нажать СотрудникA: A/C, отбор B не используется; D этого же сотрудника исключена сентябрём. Восстановить возвращает ВсеЗадачи и A/B/C.

Ожидаемый результат

Будущий список показывает A/B/C за сентябрь, не октябрьскую D; задачи дополнительно фильтруются по настоящему собственному сотруднику A. Данные не записываются, UI и 1С здесь не запускались.

На что обратить внимание

  1. Это обычные формы толстого клиента, не ДинамическийСписок управляемой формы. Источник и визуальное поле — разные объекты.

  2. Readonly свойства коллекций не заменяются; изменяются элементы/методы полученных объектов. Доступность UI и ТолькоПросмотр не являются правами базы.

  3. Сравнение ИнтервалВключаяГраницы корректно для дат, но не для ссылочных данных. Конец месяца задан до последней секунды, не 30.09 00:00:00.

  4. Разрешение ручной смены периода может изменить реальный состав списка. Уже после разрешения нужен новый собственный опыт для фиксированных ожиданий; прежние строки сообщения не доказывают новый результат.

  5. Настройка способа редактирования/автонумерации/проверки строки не означает выполненный ввод. Таймер/UI и 1С здесь не запускались: runtimeVerifiedScenarios=0.

  6. Собственные сотрудники не равны пользователям ИБ. Персональная и ролевая адресация отличаются; рабочие задачи, маршруты и регистры не использовать.

  7. Изменение ОтображениеЗадач сбрасывает фильтры. Период и другие необходимые отборы назначаются ПОСЛЕ смены режима. Исполнитель используется при ПоИсполнителю, не является сменой пользователя ИБ.

  8. Инициализация собственного параметра изменяет только свою учебную сессию; прежнее неинициализированное состояние не обещается восстановленным. Это не запись задач/каталога и не применение к рабочему сеансу.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.