Тип: ОтображениеОбсужденийФормы. Устанавливает режим отображения обсуждений формы.
Полное описание, параметры и ограничения
ФормаКлиентскогоПриложения.ОтображениеОбсуждений (ClientApplicationForm.ConversationsRepresentation)
ФормаКлиентскогоПриложения (ClientApplicationForm)
ОтображениеОбсуждений (ConversationsRepresentation)
Доступен, начиная с версии 8.3.10.
Использование:
Чтение и запись.
Описание:
Тип: ОтображениеОбсужденийФормы.
Устанавливает режим отображения обсуждений формы.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте может потребовать обращения к серверу.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Выбрать собственный месяц модально и получить настоящий отрицательный callback обсуждения
Своя новая форма выбора возвращает Дата или Неопределено. У основной формы намеренно нет навигационной ссылки, поэтому native callback обсуждения должен передать Неопределено.
Где и как запускать
Полный модуль собственной ОбщаяФорма.Диалог85; desktop managed client modal/callback и server создания.
Подготовка
Создайте отдельную новую пустую CF УчебныеДиалогиФормы85 на 8.5.1.1343 без бизнес-объектов и расширений, управляемое приложение. РежимИспользованияМодальности = Использовать: этот урок намеренно legacy, только настольный тонкий или толстый клиент.
Создайте ОбщаяФорма.Диалог85. Реквизиты: ВыбранныйМесяц85 Дата, ОжиданиеОбсуждения85 Булево, Состояние85 Строка 500. Поля месяца и статуса только для просмотра.
Свяжите ПриСозданииНаСервере с приведенной процедурой; команды ВыбратьМесяц85 и ПроверитьОтсутствиеОбсуждения85 с одноименными обработчиками. Вставьте полный основной модуль.
Создайте отдельную ОбщаяФорма.СобственныйВыборМесяца85 с тремя командами и кнопками Сентябрь85, Октябрь85, Отмена85. Вставьте supporting module, свяжите ПриСозданииНаСервере и три команды.
Основная общая форма должна оставаться без навигационной ссылки. Не включайте регистрацию СистемыВзаимодействия, не создавайте discussion IDs, не используйте формы рабочих документов.
Откройте свою основную форму через учебную команду. Диалог не открывается автоматически: нажмите свою кнопку; не открывайте и не закрывайте одну форму программно в одном вызове.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойПустойСтенд();
АвтоНавигационнаяСсылка = Ложь;
НавигационнаяСсылка = "";
ЭтотОбъект.ОтображениеОбсуждений = ОтображениеОбсужденийФормы.НеОтображать;
Если АвтоНавигационнаяСсылка Или НавигационнаяСсылка <> ""
Или ЭтотОбъект.ОтображениеОбсуждений <> ОтображениеОбсужденийФормы.НеОтображать Тогда
ВызватьИсключение "Своя форма не должна иметь навигационную ссылку или панель обсуждения";
КонецЕсли;
ВыбранныйМесяц85 = Дата(2026, 9, 1);
Состояние85 = "Выбран сентябрь; отмена диалога сохраняет месяц";
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц85(Команда)
#Если ТонкийКлиент Или ТолстыйКлиентУправляемоеПриложение Тогда
ФормаВыбора = ПолучитьФорму("ОбщаяФорма.СобственныйВыборМесяца85", , ЭтаФорма, Новый УникальныйИдентификатор);
Если ФормаВыбора.Открыта() Тогда
ВызватьИсключение "Нужна собственная новая закрытая форма выбора";
КонецЕсли;
Ответ = ФормаВыбора.ОткрытьМодально(30);
Если Ответ = Неопределено Тогда
Состояние85 = "Выбор отменен; прежний месяц сохранен";
Возврат;
КонецЕсли;
Если ТипЗнч(Ответ) <> Тип("Дата") Тогда
ВызватьИсключение "Своя форма должна вернуть Дата или Неопределено";
КонецЕсли;
Если Ответ <> Дата(2026, 9, 1) И Ответ <> Дата(2026, 10, 1) Тогда
ВызватьИсключение "Ответ не принадлежит собственным двум месяцам";
КонецЕсли;
ВыбранныйМесяц85 = Ответ;
Состояние85 = "Принят собственный месяц: " + Формат(Ответ, "ДФ=MMMM yyyy");
#Иначе
ВызватьИсключение "Этот legacy модальный урок только для настольного тонкого или толстого клиента";
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьОтсутствиеОбсуждения85(Команда)
Если АвтоНавигационнаяСсылка Или НавигационнаяСсылка <> "" Тогда
ВызватьИсключение "Не вызывайте урок для формы с настоящей навигационной ссылкой";
КонецЕсли;
Если ОжиданиеОбсуждения85 Тогда
ВызватьИсключение "Предыдущий собственный callback еще не завершился";
КонецЕсли;
ОжиданиеОбсуждения85 = Истина;
Попытка
ЭтотОбъект.НачатьПолучениеОбсуждения(Новый ОписаниеОповещения("СвойОтветОбсуждения85", ЭтотОбъект, "без-ссылки85"));
Исключение
ОжиданиеОбсуждения85 = Ложь;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура СвойОтветОбсуждения85(Обсуждение, ДополнительныеПараметры) Экспорт
ОжиданиеОбсуждения85 = Ложь;
Если ДополнительныеПараметры <> "без-ссылки85" Или Обсуждение <> Неопределено Тогда
ВызватьИсключение "Для своей формы без навигационной ссылки ожидается Неопределено";
КонецЕсли;
Состояние85 = "Реальный callback: контекстного обсуждения нет, потому что у своей формы нет ссылки";
КонецПроцедуры
&НаСервере
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыПолный модуль собственной формы выбора месяца
ОбщаяФорма.СобственныйВыборМесяца85 той же собственной CF; обработчики реальных кнопок и события создания.
ОбщаяФорма.СобственныйВыборМесяца85 той же собственной CF; обработчики реальных кнопок и события создания.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура Сентябрь85(Команда)
Закрыть(Дата(2026, 9, 1));
КонецПроцедуры
&НаКлиенте
Процедура Октябрь85(Команда)
Закрыть(Дата(2026, 10, 1));
КонецПроцедуры
&НаКлиенте
Процедура Отмена85(Команда)
Закрыть(Неопределено);
КонецПроцедуры
Разбор по шагам
ПолучитьФорму с собственным новым UUID получает отдельный закрытый экземпляр формы. ОткрытьМодально(30) возвращает результат реального Закрыть из другого пользовательского события.
Кнопки выбора возвращают точные даты 01.09 и 01.10.2026; Отмена возвращает Неопределено. Отмена не присваивается реквизиту месяца и сохраняет прежний выбор.
Проверяем тип и принадлежность ответа собственным двум датам, а не трактуем любой непустой результат как успех.
Сервер отключает авто-ссылку, очищает свою ссылку и скрывает панель обсуждения. ОтображениеОбсуждений не регистрирует информационную базу и не создает обсуждение.
НачатьПолучениеОбсуждения вызывается только после проверки отсутствия ссылки. Native описывает для этого случая Неопределено в callback; это реальный отрицательный сценарий, не фиктивный ID и не демонстрация отправки сообщений.
ОписаниеОповещения связывает экспортную клиентскую процедуру с текущим ЭтотОбъект и собственным корреляционным ключом. Флаг не допускает параллельный повтор запроса; синхронное исключение и callback освобождают ожидание.
Как проверить результат
Октябрь выбирается и отображается. Новый диалог → Отмена сохраняет октябрь.
Выберите сентябрь: точная собственная дата возвращается через Закрыть и проверяется.
Если диалог закрыт крестиком без выбора, Неопределено сохраняет предыдущий месяц.
Таймаут 30 секунд предотвращает бесконечный показ; проверяйте результат закрытия, не считайте timeout выбором.
Кнопка обсуждения должна дать реальный callback с Неопределено и ключом без-ссылки85. Исключение платформы фиксируйте отдельно: успех не имитируется.
Измененная непустая ссылка должна вызвать отказ до native метода; сетевое создание контекстного обсуждения здесь не проверяется.
Ожидаемый результат
Два реальных контракта формы и RW отображение обсуждений связаны с собственным выбором, отменой и настоящим callback без обсуждения.
На что обратить внимание
Runtime и UI не запускались; статические тесты не доказывают поведение клиента.
ОткрытьМодально недоступен в веб-клиенте и несовместим с НеИспользовать модальность.
В новом коде предпочитайте немодальный ОткрытьФорму и callback; здесь изучается существующий legacy API.
Нет ссылки — нет контекстного обсуждения. Положительный сценарий потребовал бы отдельной собственной зарегистрированной СистемыВзаимодействия и сервера, которых этот урок не создает.
Не отключайте native ошибки и не подставляйте Неопределено самостоятельно вместо фактического callback.
ОписаниеОповещения требует экспортного обработчика с двумя точными параметрами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.