РегистрСведенийСписок.<Имя регистра сведений>

Типы · <Information register name>

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

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

РегистрСведенийСписок.<Имя регистра сведений> (InformationRegisterList.<Information register name>)

РегистрСведенийСписок.<Имя регистра сведений> (InformationRegisterList.<Information register name>)

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

Свойства:
Колонки (Columns)
Отбор (Filter)
Порядок (Order)

Методы:
Обновить (Refresh)

Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение.

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

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

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

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

История цен: список всех записей, первые/последние цены и отбор товара

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

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

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

Подготовка

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

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

  3. Обработка УчебныеРегистры85 → обычная основная форма Пульт → Выполнить, действие ВыполнитьНажатие. Полный модуль формы отдельно.

  4. Регистры сведений → Уч85ИсторияЦен: Независимый, периодичность В пределах секунды. Одно измерение КодТовара Строка(50), Индексировать; один ресурс Цена Число(12,2), неотрицательное. Реквизитов/регистраторов нет, модуль набора пустой. F7 и обновление собственного стенда.

  5. В стандартном списке вручную сохраните ровно четыре строки: 01.09.2026 00:00:00/BOOK/250; 15.09.2026 12:00:00/BOOK/270; 20.09.2026 12:00:00/PEN/40; 30.09.2026 23:59:59/PEN/45. Показывайте секунды; других цен/периодов нет. Эти записи создаёт человек в своём стенде, не код просмотра.

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

  7. Кнопки ТолькоКнига, Восстановить, Настраиваемый, АвтоОбновление, РазрешитьПериод, Закрыть; назначьте действия *Нажатие и ПриОткрытии. Оставьте стандартный диалог настройки списка в контекстном меню. Основной блок — модуль этой формы. У истории цен ещё Первые/Последние с одноимёнными действиями *Нажатие.

  8. F7 и запуск Пульта толстого клиента только после своей подготовки. Просмотр не вызывает Записать/проведение/удаление/изменение итогов/сеть/почту/файлы/печать. Не вставляйте варианты одновременно.

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

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

Процедура ПриОткрытии()
    Если Подготовлено <> Истина Тогда
        ВызватьИсключение "Открывайте только через подготовленный собственный Пульт";
    КонецЕсли;
    ВосстановитьПериод();
    Записи.Обновить();
    Сообщить("Проверьте четыре цены сентября: BOOK 250/270, PEN 40/45.");
КонецПроцедуры

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

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

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

Процедура ТолькоКнигаНажатие(Кнопка)
    ПроверитьСвойСписок();
    ЭлементыФормы.Виды.ВыбиратьСрез = ИспользованиеСреза.НеИспользовать;
    ВосстановитьПериод();
    Записи.Отбор.КодТовара.Установить("BOOK", Истина);
    Записи.Обновить();
    Сообщить("Проверьте две сохранённые цены BOOK: 250 и 270, срез выключен.");
КонецПроцедуры

Процедура ВосстановитьНажатие(Кнопка)
    ПроверитьСвойСписок();
    ЭлементыФормы.Виды.ВыбиратьСрез = ИспользованиеСреза.НеИспользовать;
    ВосстановитьПериод();
    НастроитьПрофиль(Ложь);
    Записи.Обновить();
    Сообщить("Проверьте четыре цены сентября: BOOK 250/270, PEN 40/45.");
КонецПроцедуры

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

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

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

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

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

Процедура ПервыеНажатие(Кнопка)
    ПоказатьСрез(ИспользованиеСреза.Первые);
    Сообщить("Проверьте первые цены: BOOK=250 от 01.09, PEN=40 от 20.09. Это по одной записи каждого товара, не первая строка всего списка.");
КонецПроцедуры

Процедура ПоследниеНажатие(Кнопка)
    ПоказатьСрез(ИспользованиеСреза.Последние);
    Сообщить("Проверьте последние цены: BOOK=270 от 15.09, PEN=45 от 30.09. Все записи стенда внутри сентября; цен вне месяца здесь нет.");
КонецПроцедуры

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

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

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

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

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

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

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

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

Процедура ПрочитатьСвоюПодготовку() Экспорт
    ПроверитьСвойКонтекст();
    Описание = Метаданные.РегистрыСведений.Уч85ИсторияЦен;
    Если Описание.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый
        Или Описание.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Секунда
        Или Описание.Измерения.Количество() <> 1 Или Описание.Измерения.Найти("КодТовара") = Неопределено
        Или Описание.Ресурсы.Количество() <> 1 Или Описание.Ресурсы.Найти("Цена") = Неопределено Тогда
        ВызватьИсключение "Нужен собственный независимый периодический регистр цен";
    КонецЕсли;
    Ожидания = Новый Соответствие;
    Ожидания.Вставить("20260901000000/BOOK", 250);
    Ожидания.Вставить("20260915120000/BOOK", 270);
    Ожидания.Вставить("20260920120000/PEN", 40);
    Ожидания.Вставить("20260930235959/PEN", 45);
    Ключи = Новый Массив;
    Выборка = РегистрыСведений.Уч85ИсторияЦен.Выбрать();
    Пока Выборка.Следующий() Цикл
        Ключ = Формат(Выборка.Период, "ДФ=yyyyMMddHHmmss") + "/" + Выборка.КодТовара;
        Цена = Ожидания.Получить(Ключ);
        Если Цена = Неопределено Или Цена <> Выборка.Цена Или Ключи.Найти(Ключ) <> Неопределено Тогда
            ВызватьИсключение "Свой регистр должен содержать только четыре подготовленные цены";
        КонецЕсли;
        Ключи.Добавить(Ключ);
    КонецЦикла;
    Если Ключи.Количество() <> 4 Тогда
        ВызватьИсключение "Вручную подготовьте четыре реальные записи истории цен";
    КонецЕсли;
КонецПроцедуры

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

  1. Основной блок — полный модуль своей обычной формы списка. Записи — источник прикладного типа, Виды — табличное поле; расширение возникает благодаря типу источника, не создаётся через Новый.

  2. Общий модуль перед открытием и каждым действием сверяет настоящие четыре сохранённые строки с собственной подготовкой. Не передаём неизвестный ИсходныйОбъект и не подставляем случайные ссылки.

  3. Колонки источника readonly как свойство. Добавляем только отсутствующие Период/КодТовара/ресурс; визуальные колонки заранее связаны с теми же полями. Порядок источника явно Период Возр, КодТовара Возр.

  4. СтандартныйПериод принимает НастройкаПериода и назначается до открытия. Обе границы сентября проверяются до присваивания; ВариантНастройки write-only, его не читаем.

  5. Фактический отбор Период использует ИнтервалВключаяГраницы и значения 01.09 00:00:00…30.09 23:59:59. ТолькоКнига программно добавляет индексированное измерение КодТовара=BOOK, не ресурс и не неизвестное поле.

  6. У независимого регистра периодичность Секунда проверяется до UI. Все четыре цены находятся в сентябре: нет неоднозначности с ценами вне периода. НеИспользовать показывает все четыре, Первые — BOOK=250/PEN=40, Последние — BOOK=270/PEN=45, по одному значению каждого измерения.

  7. СпособРедактирования списка регистра сведений ВДиалоге и доступность его изменения показаны отдельно. ТолькоПросмотр остаётся Истина; настоящий ввод/запись не разрешается этим опытом.

  8. НастройкаОтбора/НастройкаПорядка readonly коллекции управления UI. Их nullable элементы проверяются. Доступность настройки товара/порядка не меняет значения фильтров и не запрещает программный отбор.

  9. Настраиваемый/Восстановить меняют UI-профиль, но ТолькоПросмотр сохраняется. ПроверкаОтображенияНовойСтроки задаётся как политика: новый ввод выключен, сообщение платформы о несоответствии не объявляется испытанным.

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

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

  12. Обновить перечитывает записи, не записывает регистр, не пересчитывает итоги и не возвращает ТаблицаЗначений. Закрыть выключает таймер и закрывает только свою форму.

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

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

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

  3. ТолькоКнига оставляет две сентябрьские BOOK. Восстановить возвращает исходный набор своего регистра.

  4. Настраиваемый меняет доступности стандартного диалога; просмотр остаётся readonly. Проверить фактические флаги автообновления и период 10, не объявлять неизменные строки доказательством таймера.

  5. РазрешитьПериод: проверить отдельную команду интервала. Восстановить после этого отклоняется; закрыть окно и открыть новый опыт с исходным сентябрём.

  6. Закрыть свою форму. Стандартным списком проверить прежние сохранённые строки; код просмотра ничего не записывает и не проводит.

  7. Первые: BOOK=250, PEN=40. Последние: BOOK=270, PEN=45. Восстановить: четыре исходные строки; ТолькоКнига: обе BOOK без среза. Осмотреть поле вручную.

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

Будущий опыт показывает подготовленные строки собственного регистра, фильтрует BOOK и возвращает исходный профиль. Просмотр не изменяет данные, runtimeVerifiedScenarios=0.

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

  1. Список регистра и таблица формы — не одно и то же. ТекущаяСтрока этого расширения содержит ключ записи регистра, а не ссылку справочника; этот урок не подменяет его случайным GUID.

  2. Readonly свойства Колонки/Отбор/Порядок источника и НастройкаОтбора/НастройкаПорядка поля не заменяются новыми объектами.

  3. ТолькоПросмотр и Доступность UI не являются правами доступа к базе. Показ проверки новой строки не означает выполненный ввод или успешный запуск 1С.

  4. ВосстанавливатьТекущуюСтроку выключен; восстановление позиции не испытывается. Автообновление не означает изменение итогов, проведение или обмен.

  5. После разрешения ручного периода нужен новый собственный опыт. Сообщения ожидаемых строк не доказывают текущий состав поля.

  6. Все UI-проверки и подготовка данных остаются будущими ручными действиями только в новом собственном стенде; runtimeVerifiedScenarios=0.

  7. Для непериодического регистра ВыбиратьСрез всегда НеИспользовать, СтандартныйПериод не имеет смысла. Эти настройки не копируются на непериодический объект.

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

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

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

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

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