ЖурналДокументовМенеджер.<Имя журнала документов>.ПолучитьМакет

Методы · GetTemplate

Получает один из макетов, определенных в конфигурации для журнала документов.

Синтаксис

ПолучитьМакет(<Макет>)

Примеры платформы

МакетРеестра = ЖурналыДокументов.Общий.ПолучитьМакет("Реестр");
Полное описание, параметры и ограничения

ЖурналДокументовМенеджер.<Имя журнала документов>.ПолучитьМакет (DocumentJournalManager.<Document journal name>.GetTemplate)

ЖурналДокументовМенеджер.<Имя журнала документов> (DocumentJournalManager.<Document journal name>)

ПолучитьМакет (GetTemplate)

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

Синтаксис:
ПолучитьМакет(<Макет>)
Параметры:

<Макет> (обязательный)
Тип: Строка, ОбъектМетаданных: Макет.
Имя макета, как оно задано в конфигураторе, или объект описания метаданного требуемого макета.
Возвращаемое значение:
Тип: ТабличныйДокумент, ТекстовыйДокумент; другой объект, который может быть макетом.

Описание:

Получает один из макетов, определенных в конфигурации для журнала документов.

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

МакетРеестра = ЖурналыДокументов.Общий.ПолучитьМакет("Реестр");

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

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

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

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

Открыть основную форму собственного журнала и вывести сводку из макета

Пульт получает форму менеджера журнала с собственным владельцем/UUID, подготавливает закрытый список и проверяет повтор того же экземпляра. Текстовый макет формирует сообщение по проверенному числу документов.

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

Полный модуль обычной формы Пульт собственной обработки УчебныйЖурналПульт85. Только толстый клиент, не выполнялся.

Подготовка

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

  2. Два документа УчебнаяЗаявка и УчебнаяОплата: Номер Строка(10), автонумерация выключена, контроль уникальности включён, проведение запрещено, единственный Комментарий Строка(100), Индексировать. Модули объекта/менеджера пусты, табличных частей нет. Остальные бизнес-объекты, разделители, расширения, задания и подписки отсутствуют.

  3. Создайте единственный журнал документов УчебныйЖурнал, включите в него оба документа. Добавьте графу Сценарий: она отображает реквизит Комментарий ОБОИХ документов, тип Строка(100), индексирование включено. Это реальная графа журнала, не автоматически доступный реквизит любого документа.

  4. ВРУЧНУЮ только в своём стенде запишите четыре документа без проведения/пометок: Заявка 0001/01.09.2026 00:00:00/Заявка; Оплата 0001/15.09.2026 12:00:00/Оплата; Заявка 0002/30.09.2026 23:59:59/Заявка; Оплата 0002/01.10.2026 00:00:00/Оплата. В дате показывайте секунды. Два совпадающих номера разных видов намеренны; код не создаёт и не удаляет записи.

  5. УчебныйЖурнал → Формы: обычная форма Список, назначьте её основной. Реквизит Журнал типа ЖурналДокументовСписок.УчебныйЖурнал, табличное поле СписокЖурнала с данными именно Журнал. Колонки Дата, Номер, ВидДокумента и Сценарий связаны с колонками источника. ТолькоПросмотр=Да; команд записи, удаления, создания и проведения нет.

  6. В Список добавьте ТолькоОплаты, ТолькоСценарийОплаты, СнятьДополнительныеОтборы, СортироватьПоСценарию, ВернутьХронологию, РазрешитьИнтервал, ЗапретитьИнтервал, ПроверитьВозвратДоступностей, Обновить, ЗакрытьСписок. Назначьте действия, ПриОткрытии и полный отдельный модуль списка. Оставьте стандартный диалог настройки списка в контекстном меню поля.

  7. Создайте обработку УчебныйЖурналПульт85 с обычной основной формой Пульт. Кнопки ОткрытьЖурнал, СводкаИзМакета, ПовторитьСвоеОкно, ЗакрытьСвойЖурнал; назначьте одноимённые действия и события ПриОткрытии/ПередЗакрытием. Полный модуль Пульта вставьте отдельно.

  8. УчебныйЖурнал → Макеты: текстовый макет Сводка, одна строка Документов сентября: %1 без кавычек. Общий модуль УчебныйЖурнал85: неглобальный, Сервер=Да, Вызов сервера=Да, клиентские флаги=Нет, привилегированный=Нет; вставьте полный общий модуль проверки ниже.

  9. Обновите конфигурацию базы, проверьте F7, включение обоих видов в журнал, соответствие графы каждому реквизиту и привязку данных поля. ТолькоПросмотр — настройка UI, не права доступа; неизвестные модули и рабочие базы недопустимы.

Перем СвоеОкно;
Перем СвоеКоличество;

Процедура ПриОткрытии()
    УчебныйЖурнал85.ПроверитьСвойСтенд();
    СвоеОкно = Неопределено;
    СвоеКоличество = Неопределено;
КонецПроцедуры

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

Процедура СводкаИзМакета(Кнопка)
    Если СвоеОкно = Неопределено Или СвоеКоличество = Неопределено Тогда
        ВызватьИсключение "Сначала подготовьте свой журнал";
    КонецЕсли;
    Макет = ЖурналыДокументов.УчебныйЖурнал.ПолучитьМакет("Сводка");
    Если ТипЗнч(Макет) <> Тип("ТекстовыйДокумент") Тогда
        ВызватьИсключение "Нужен собственный текстовый макет Сводка";
    КонецЕсли;
    Шаблон = СокрЛП(Макет.ПолучитьТекст());
    Если Шаблон <> "Документов сентября: %1" Тогда
        ВызватьИсключение "Не совпал текст собственного макета";
    КонецЕсли;
    Сообщить(СтрШаблон(Шаблон, СвоеКоличество));
КонецПроцедуры

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

Процедура ЗакрытьСвойЖурнал(Кнопка)
    ЗакрытьСвоеОкно();
КонецПроцедуры

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

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    ЗакрытьСвоеОкно();
КонецПроцедуры
УчебныйЖурнал.Список

УчебныйОбщийЖурнал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) Тогда
        ВызватьИсключение "Не подтверждены точные границы своего сентября";
    КонецЕсли;
    Поле.СтандартныйПериод = Настройка;
    Если ТипЗнч(Поле.СтандартныйПериод) <> Тип("НастройкаПериода") Тогда
        ВызватьИсключение "Нужна НастройкаПериода, не одноименный тип СтандартныйПериод";
    КонецЕсли;
    РазрешалисьИзмененияИнтервала = Ложь;
    УстановитьДоступности(Ложь);
    Менеджер = ЖурналыДокументов.УчебныйЖурнал;
    Выборка = Менеджер.Выбрать(Дата(2026, 9, 1, 0, 0, 0), Дата(2026, 9, 30, 23, 59, 59), , "Дата Возр");
    Ключи = Новый Массив;
    Пока Выборка.Следующий() Цикл
        Ключ = Выборка.Ссылка.Метаданные().Имя + "." + Выборка.Номер;
        Если СвоиДокументы.Получить(Ключ) <> Выборка.Ссылка Тогда
            ВызватьИсключение "В выборке журнала посторонняя ссылка";
        КонецЕсли;
        Ключи.Добавить(Ключ);
    КонецЦикла;
    Если СтрСоединить(Ключи, ",") <> "УчебнаяЗаявка.0001,УчебнаяОплата.0001,УчебнаяЗаявка.0002" Тогда
        ВызватьИсключение "Журнал не включил оба своих вида или граничные документы";
    КонецЕсли;
    Подготовлено = Истина;
    Возврат Ключи.Количество();
КонецФункции

Процедура ПриОткрытии()
    Если Подготовлено <> Истина Тогда
        ВызватьИсключение "Открывайте этот журнал только своим Пультом после подготовки";
    КонецЕсли;
КонецПроцедуры

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

Процедура РазрешитьИнтервал(Кнопка)
    УстановитьДоступности(Истина);
КонецПроцедуры

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

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

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

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

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

Процедура СортироватьПоСценарию(Кнопка)
    Журнал.Порядок.Установить("Сценарий Возр, Дата Возр");
    Обновить(Неопределено);
КонецПроцедуры

Процедура ВернутьХронологию(Кнопка)
    Журнал.Порядок.Установить("Дата Возр");
    Обновить(Неопределено);
КонецПроцедуры

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

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

Процедура Обновить(Кнопка)
    Журнал.Обновить();
    ЭлементыФормы.СписокЖурнала.ОбновитьСтроки();
КонецПроцедуры

Процедура ЗакрытьСписок(Кнопка)
    ЭтаФорма.Закрыть();
КонецПроцедуры
УчебныйЖурнал85.ПроверкаИЧтение

УчебныйОбщийЖурнал85 → Общие → Общие модули → УчебныйЖурнал85

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

Процедура ПроверитьСвойСтенд() Экспорт
    Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 2 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
    КонецЕсли;
    Если Метаданные.ЖурналыДокументов.Количество() <> 1 Или Метаданные.ЖурналыДокументов[0].Имя <> "УчебныйЖурнал"
        Или Метаданные.Документы.Найти("УчебнаяЗаявка") = Неопределено
        Или Метаданные.Документы.Найти("УчебнаяОплата") = Неопределено Тогда
        ВызватьИсключение "Нужны только два собственных документа и УчебныйЖурнал";
    КонецЕсли;
    Для Каждого Документ Из Метаданные.Документы Цикл
        Если Документ.Реквизиты.Количество() <> 1 Или Документ.Реквизиты.Найти("Комментарий") = Неопределено Тогда
            ВызватьИсключение "У каждого своего документа только Комментарий";
        КонецЕсли;
    КонецЦикла;
    Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
        ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
    КонецЕсли;
    Источники = Новый Массив;
    Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
    Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
    Для Каждого Источник Из Источники Цикл
        Расширения = РасширенияКонфигурации.Получить(, Источник);
        Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
            ВызватьИсключение "Native список расширений должен иметь тип Массив";
        КонецЕсли;
        Если Расширения.Количество() <> 0 Тогда
            ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
        КонецЕсли;
    КонецЦикла;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
    КонецЕсли;
КонецПроцедуры

Функция ПрочитатьСвойНабор() Экспорт
    ПроверитьСвойСтенд();
    Ожидания = Новый Соответствие;
    Ожидания.Вставить("УчебнаяЗаявка.0001", Новый Структура("Дата,Комментарий", Дата(2026, 9, 1, 0, 0, 0), "Заявка"));
    Ожидания.Вставить("УчебнаяОплата.0001", Новый Структура("Дата,Комментарий", Дата(2026, 9, 15, 12, 0, 0), "Оплата"));
    Ожидания.Вставить("УчебнаяЗаявка.0002", Новый Структура("Дата,Комментарий", Дата(2026, 9, 30, 23, 59, 59), "Заявка"));
    Ожидания.Вставить("УчебнаяОплата.0002", Новый Структура("Дата,Комментарий", Дата(2026, 10, 1, 0, 0, 0), "Оплата"));
    Данные = Новый Соответствие;
    Для Каждого ИмяДокумента Из СтрРазделить("УчебнаяЗаявка,УчебнаяОплата", ",") Цикл
        Менеджер = Документы[ИмяДокумента];
        Выборка = Менеджер.Выбрать();
        Пока Выборка.Следующий() Цикл
            Ключ = Выборка.Ссылка.Метаданные().Имя + "." + Выборка.Номер;
            Ожидание = Ожидания.Получить(Ключ);
            Если Ожидание = Неопределено Или Данные.Получить(Ключ) <> Неопределено Тогда
                ВызватьИсключение "В своей базе неизвестный или повторный документ";
            КонецЕсли;
            Если Выборка.Дата <> Ожидание.Дата Или Выборка.Комментарий <> Ожидание.Комментарий
                Или Выборка.Проведен Или Выборка.ПометкаУдаления Тогда
                ВызватьИсключение "Свой документ отличается от подготовки";
            КонецЕсли;
            Данные.Вставить(Ключ, Выборка.Ссылка);
        КонецЦикла;
    КонецЦикла;
    Если Данные.Количество() <> 4 Тогда
        ВызватьИсключение "Нужны ровно четыре собственных непроведенных документа";
    КонецЕсли;
    Возврат Данные;
КонецФункции

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

  1. ПолучитьФорму получает обычную форму самого журнала, не форму документа и не обработку. Имя Список реально создано и назначено основным; отказ создания проверяется до работы со свойствами.

  2. Проверяются Форма, закрытое состояние, UUID и собственный владелец. ПодготовитьДоОткрытия дочернего модуля возвращает количество трёх документов сентября; только затем вызывается Открыть.

  3. Количество — снимок контроля собственной неизменяемой подготовки, не постоянный пересчёт изменяемого пользовательского экрана. Новое окно заново получает набор и контроль.

  4. ПовторитьСвоеОкно передаёт те же имя, владельца и ключ своего открытого экземпляра. Проверяем его идентичность; закрытое окно не перенастраивается как чужое.

  5. ПолучитьМакет("Сводка") получает текстовый макет из метаданных журнала. Проверяем ТекстовыйДокумент и точную строку, затем СтрШаблон подставляет число собственного контрольного набора.

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

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

  1. Будущий ручной тест: ОткрытьЖурнал показывает собственную форму, СводкаИзМакета выводит Документов сентября: 3. Это число первоначального контроля, а не текущих строк после ручных отборов.

  2. ПовторитьСвоеОкно не создаёт второе окно. После закрытия ОткрытьЖурнал создаёт новый UUID и заново проверяет подготовку.

  3. В своей копии макета поменяйте %1 на %2: проверка точного шаблона должна отказать до вывода. Закрытие Пульта закрывает только свой журнал; документы не удаляются.

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

Подготовлен собственный пульт менеджера журнала и текстовая сводка без печати/файлов. runtimeVerifiedScenarios=0.

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

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

  2. Те же параметры могут вернуть уже открытое окно; новый UUID не очищает профиль пользователя и не отменяет платформенное сохранение параметров.

  3. Если включение видов/графы или времена документов неверны, дочерняя проверка отказывает до открытия. Не заменяйте её константой ради успешного сообщения.

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

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

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

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

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