КомандаКомандногоИнтерфейса.ЭтотОбъект

Свойства · ThisObject

Тип: КомандаКомандногоИнтерфейса. Содержит сам объект. Используется для передачи в качестве параметра.

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

КомандаКомандногоИнтерфейса.ЭтотОбъект (CommandInterfaceCommand.ThisObject)

КомандаКомандногоИнтерфейса (CommandInterfaceCommand)

ЭтотОбъект (ThisObject)

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

Использование:
Только чтение.
Описание:
Тип: КомандаКомандногоИнтерфейса.
Содержит сам объект. Используется для передачи в качестве параметра.
Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

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

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

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

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

Общая команда и ее ЭтотОбъект: ввод количества 2/3, предпросмотр 500/750

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

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

Windows 8.5.1.1343, тонкий клиент, управляемое приложение Такси, собственная File CF. Модуль общей команды клиентский; native command2 и callback2.

Подготовка

  1. Это самостоятельный будущий ручной опыт, а не запуск здесь. Создайте новую собственную файловую базу C:\1c-labs\OwnCommandCallbackInvoice2_8e8407f0-5212-4dd6-a9f5-85e2d5591983\IB. Нужна платформа Windows 8.5.1.1343, тонкий клиент и интерфейс Такси. Не используйте рабочую базу, другие сеансы, расширения или фоновые задания.

  2. В Конфигураторе назовите конфигурацию УчебнаяКомандаСчета85. Основной режим запуска — УправляемоеПриложение; совместимость — НеИспользовать, язык — Русский. Создайте только собственные форму, общую команду, подсистему, общий модуль и роль, перечисленные ниже. Справочники, документы, отчеты, обработки и сервисы здесь не нужны.

  3. Создайте роль УчебнаяПолная85 с полными правами только этой учебной базы, включая Администрирование. Создайте единственного пользователя УченикКоманды85 и назначьте роль. ПолучитьПользователей требует административных прав; проверка имени роли не доказывает ее содержание. Не меняйте чужие права, пароли или настройки.

  4. Общие → Общие формы → Действия → Добавить: создайте управляемую форму Счет85. Реквизиты ИсходноеКоличество85/КоличествоПредпросмотра85 — Число 1.0, Цена85/ИсходнаяСумма85/Предпросмотр85 — Число 9.0, Шаг85 — Число 9.0; Готово85/Занят85/Остановка85 — Булево. Основного реквизита-объекта, параметров, табличных частей и команд формы нет.

  5. На форму перетащите пять числовых реквизитов: ИсходноеКоличество85, Цена85, ИсходнаяСумма85, КоличествоПредпросмотра85, Предпросмотр85. Имена полей должны совпадать с реквизитами, ПутьКДанным — одноименный реквизит, ТолькоПросмотр — Истина. Флаги и Шаг85 оставьте служебными. Связи читает сервер формы; клиент не использует придуманное свойство Значение элемента.

  6. В свойствах формы свяжите настоящее ПриСозданииНаСервере с одноименной процедурой из полного FORM, два параметра Отказ/СтандартнаяОбработка. Вставьте FORM целиком в Общие → Общие формы → Счет85 → Модуль. Экспортные клиентские методы здесь вызываются программой, но событие создания вручную не вызывается.

  7. Общие → Общие команды → Действия → Добавить: ВвестиКоличество85, синоним Ввести количество. Не задавайте параметр команды, ИзменяетДанные — Нет. В выборе свойства Группа укажите Панель действий → Сервис. Без указанной группы общая команда не появляется в глобальном командном интерфейсе.

  8. Вставьте COMMAND целиком в Общие → Общие команды → ВвестиКоличество85 → Модуль. Точная точка входа — ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды), клиентская директива обязательна. Именно это имя объявлено на странице события CommandProcessing563 и используется в прочитанных модулях общих команд УНФ и УТ11. Общая языковая страница содержит другое имя ОбработатьКоманду(), но не доказывает, что такой псевдоним вызывает платформа. Не создавайте команду формы или второй обработчик и не вызывайте событие из кода.

  9. Общие → Подсистемы → Действия → Добавить: УчебныйСчет85, синоним Учебный счет. На Основные включите Включать в командный интерфейс и выключите Подсистема с одной командой. На Состав включите Общие команды → ВвестиКоличество85.

  10. В редакторе своей подсистемы на Прочее нажмите Командный интерфейс, либо откройте одноименное свойство по ссылке Открыть. В Панель действий → Сервис найдите ВвестиКоличество85, включите общую Видимость и видимость роли УчебнаяПолная85. Другой штатный путь — контекстное меню Общие → Подсистемы → Все подсистемы, затем своя подсистема → Открыть командный интерфейс. Меню и видимость здесь документированы, но фактическое отображение не проверено.

  11. Общие → Общие модули: УчебнаяКомандаСчетаСервер85. Сервер и Вызов сервера — Да; оба клиентских флага, Внешнее соединение, Глобальный и Привилегированный — Нет; повторное использование возвращаемых значений — НеИспользовать. Вставьте полный COMMON. В модуль управляемого приложения вставьте полный APPLICATION. В сервер передаются только обычные вызовы без формы, команды или описания оповещения.

  12. Обновите конфигурацию только собственной базы и запустите ее тонким клиентом под УченикКоманды85. Настоящий ПриНачалеРаботыСистемы получает новую уникальную форму и открывает ее: исходное количество 2, цена 250, исходная сумма и предпросмотр 500. Открыть — процедура, не булевый результат; отдельно читается фактическое Открыта().

  13. В собственном разделе Учебный счет выполните Ввести количество. В настоящем диалоге введите 3 и подтвердите: предпросмотр должен стать 750, исходные 2/250/500 — остаться. ЭтотОбъект получен из реального модуля команды и передан в ОписаниеОповещения как получатель, а не создан конструктором.

  14. Для отдельного опыта отмены начните новый собственный сеанс с 500, выполните команду и нажмите Отмена. Callback получает Неопределено и оставляет предпросмотр 500. Если отменять после уже принятого 750, сохраняется прежний предпросмотр 750, а не обещанный сброс. Количество 2 дает 500; неизвестное число, повтор чужого уведомления или изменение снимка — отказ.

  15. Один запрос допускает одно завершение. Занят и возрастающий Шаг85 сохраняются в форме; полный фиксированный снимок из девяти скаляров проверяется перед принятием. Собственная ссылка формы остается только на клиенте в дополнительных параметрах уведомления, не пересылается серверу. После ошибки сохраняется STOP; автоматического повтора, закрытия формы или отката нет.

  16. Здесь не выполнялись компиляция, запуск 1С, доставка событий, диалог ввода, нажатие команды или отображение чисел. Код сравнивает типы, связи и числовые данные, но не доказывает пиксели. При неработающем UI проверьте только свой стенд вручную; не имитируйте вызов callback.

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

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

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

Своя CF → Общие → Общие модули → УчебнаяКомандаСчетаСервер85 → Модуль целиком

Сервер/Вызов сервераДа, все клиентские флагиНет, без привилегий/повторного использования. Только readonly проверки.

Процедура ПроверитьСтенд85() Экспорт
    Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1c-labs\OwnCommandCallbackInvoice2_8e8407f0-5212-4dd6-a9f5-85e2d5591983\IB"";" Или Метаданные.ОсновнойРежимЗапуска <> РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Или Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Откройте только собственную подготовленную файловую базу 8.5.1.1343";
    КонецЕсли;
    Если Метаданные.ОбщиеФормы.Количество() <> 1 Или Метаданные.ОбщиеКоманды.Количество() <> 1
        Или Метаданные.Подсистемы.Количество() <> 1 Или Метаданные.ОбщиеМодули.Количество() <> 1
        Или Метаданные.Роли.Количество() <> 1 Или Метаданные.Справочники.Количество() <> 0
        Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Обработки.Количество() <> 0
        Или Метаданные.Отчеты.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0
        Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.HTTPСервисы.Количество() <> 0
        Или Метаданные.WebСервисы.Количество() <> 0 Тогда
        ВызватьИсключение "В стенде нужны только свои форма, команда, подсистема, модуль и роль";
    КонецЕсли;
    Если Метаданные.ОбщиеФормы.Найти("Счет85") = Неопределено
        Или Метаданные.ОбщиеМодули.Найти("УчебнаяКомандаСчетаСервер85") = Неопределено
        Или Метаданные.Роли.Найти("УчебнаяПолная85") = Неопределено Тогда
        ВызватьИсключение "Не совпадает подготовленная форма, серверный модуль или роль";
    КонецЕсли;
    КомандаСтенда = Метаданные.ОбщиеКоманды.Найти("ВвестиКоличество85");
    ПодсистемаСтенда = Метаданные.Подсистемы.Найти("УчебныйСчет85");
    Если КомандаСтенда = Неопределено Или ПодсистемаСтенда = Неопределено Тогда
        ВызватьИсключение "Не найдены собственные общая команда и подсистема";
    КонецЕсли;
    Если КомандаСтенда.ИзменяетДанные Или Не ПодсистемаСтенда.ВключатьВКомандныйИнтерфейс
        Или ПодсистемаСтенда.ИспользоватьОднуКоманду Тогда
        ВызватьИсключение "Команда не должна записывать данные или запускаться автоматически при выборе подсистемы";
    КонецЕсли;
    Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    Если Пользователь = Неопределено Или ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() <> 1 Тогда
        ВызватьИсключение "Нужен один собственный пользователь с административными правами учебной базы";
    КонецЕсли;
    Если Пользователь.Имя <> "УченикКоманды85" Тогда
        ВызватьИсключение "Это не пользователь собственного учебного стенда";
    КонецЕсли;
КонецПроцедуры
Полный модуль приложения: реальное открытие своей уникальной формы

Своя CF → Модуль управляемого приложения целиком

Тонкий клиент Windows; настоящее событие запуска0 и собственное клиентское состояние приложения.

Перем СвояФормаКоманды85, ГотовоПриложение85, ОстановкаПриложение85;

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

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

Своя CF → Общие → Общие формы → Счет85 → Модуль целиком

ПриСозданииНаСервере2 и связи полей только на сервере; экспортные клиентские функции хранят источник, снимок и STOP.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отказ = Истина;
    Попытка
        УчебнаяКомандаСчетаСервер85.ПроверитьСтенд85();
        ИсходноеКоличество85 = 2;
        Цена85 = 250;
        ИсходнаяСумма85 = ИсходноеКоличество85 * Цена85;
        КоличествоПредпросмотра85 = 2;
        Предпросмотр85 = КоличествоПредпросмотра85 * Цена85;
        Готово85 = Истина;
        Занят85 = Ложь;
        Остановка85 = Ложь;
        Шаг85 = 0;
        ПроверитьСвязиНаСервере85();
        Отказ = Ложь;
    Исключение
        Остановка85 = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

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

&НаКлиенте
Процедура ПроверитьИсточник85() Экспорт
    Попытка
        Если ТипЗнч(Готово85) <> Тип("Булево") Или Не Готово85
            Или ТипЗнч(Остановка85) <> Тип("Булево") Или Остановка85
            Или ТипЗнч(Занят85) <> Тип("Булево") Тогда
            ВызватьИсключение "Форма не готова или сохраняет STOP после ошибки";
        КонецЕсли;
        Если ТипЗнч(ИсходноеКоличество85) <> Тип("Число") Или ИсходноеКоличество85 <> 2
            Или ТипЗнч(Цена85) <> Тип("Число") Или Цена85 <> 250
            Или ТипЗнч(ИсходнаяСумма85) <> Тип("Число") Или ИсходнаяСумма85 <> 500
            Или ТипЗнч(КоличествоПредпросмотра85) <> Тип("Число")
            Или (КоличествоПредпросмотра85 <> 2 И КоличествоПредпросмотра85 <> 3)
            Или ТипЗнч(Предпросмотр85) <> Тип("Число") Или Предпросмотр85 <> КоличествоПредпросмотра85 * Цена85
            Или ТипЗнч(Шаг85) <> Тип("Число") Или Шаг85 < 0 Или Шаг85 <> Цел(Шаг85) Тогда
            ВызватьИсключение "Исходный счет или числовой предпросмотр изменен вне собственного опыта";
        КонецЕсли;
        ПроверитьСвязиНаСервере85();
    Исключение
        Остановка85 = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Функция Снимок85() Экспорт
    ПроверитьИсточник85();
    Возврат Новый ФиксированнаяСтруктура("ИсходноеКоличество,Цена,ИсходнаяСумма,КоличествоПредпросмотра,Предпросмотр,Готово,Занят,Остановка,Шаг", ИсходноеКоличество85, Цена85, ИсходнаяСумма85, КоличествоПредпросмотра85, Предпросмотр85, Готово85, Занят85, Остановка85, Шаг85);
КонецФункции

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

&НаКлиенте
Функция НачатьВвод85() Экспорт
    ПроверитьИсточник85();
    Если Занят85 Тогда
        ВызватьИсключение "Дождитесь завершения собственного предыдущего диалога";
    КонецЕсли;
    Занят85 = Истина;
    Шаг85 = Шаг85 + 1;
    Возврат Снимок85();
КонецФункции

&НаКлиенте
Процедура ЗавершитьВвод85(Количество, Снимок) Экспорт
    Попытка
        ПроверитьИсточник85();
        Если Не Занят85 Тогда
            ВызватьИсключение "Нет собственного незавершенного запроса ввода";
        КонецЕсли;
        СравнитьСнимок85(Снимок);
        Если Количество = Неопределено Тогда
            Занят85 = Ложь;
            После = Снимок85();
            Если После.ИсходноеКоличество <> Снимок.ИсходноеКоличество Или После.Цена <> Снимок.Цена
                Или После.ИсходнаяСумма <> Снимок.ИсходнаяСумма
                Или После.КоличествоПредпросмотра <> Снимок.КоличествоПредпросмотра
                Или После.Предпросмотр <> Снимок.Предпросмотр Или После.Шаг <> Снимок.Шаг
                Или После.Готово <> Снимок.Готово Или После.Остановка <> Снимок.Остановка Или После.Занят Тогда
                ВызватьИсключение "Отмена изменила собственный счет или состояние завершения";
            КонецЕсли;
            Возврат;
        КонецЕсли;
        Если ТипЗнч(Количество) <> Тип("Число") Или (Количество <> 2 И Количество <> 3) Тогда
            ВызватьИсключение "Разрешены только числа 2 и 3";
        КонецЕсли;
        КоличествоПредпросмотра85 = Количество;
        Предпросмотр85 = КоличествоПредпросмотра85 * Цена85;
        Занят85 = Ложь;
        После = Снимок85();
        Если После.ИсходноеКоличество <> Снимок.ИсходноеКоличество Или После.Цена <> Снимок.Цена
            Или После.ИсходнаяСумма <> Снимок.ИсходнаяСумма Или После.Шаг <> Снимок.Шаг
            Или После.Готово <> Снимок.Готово Или После.Остановка <> Снимок.Остановка Или После.Занят
            Или После.КоличествоПредпросмотра <> Количество Или После.Предпросмотр <> Количество * 250 Тогда
            ВызватьИсключение "Не подтвержден числовой предпросмотр и неизмененный исходный счет";
        КонецЕсли;
    Исключение
        Остановка85 = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ОстановитьВвод85() Экспорт
    Остановка85 = Истина;
КонецПроцедуры

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

  1. Подготовьте отдельную базу, пять readonly полей, общую команду и ее видимость в собственной подсистеме.

  2. Настоящий запуск приложения создает новую форму с исходным счетом 2×250=500 и проверяет полный снимок до/после открытия.

  3. Настоящее выполнение общей команды получает ЭтотОбъект, подтверждает собственную форму и сохраняет незавершенный запрос с полным снимком.

  4. ПоказатьВводЧисла возвращает результат через экспортный callback: число 2/3 или Неопределено при отмене. Не вызывайте callback вручную.

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

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

  1. Начальный счет 2×250=500, принятие 3 дает предпросмотр 750; исходный счет всегда 500.

  2. Отмена в свежем сеансе оставляет 500; отмена после принятого 750 сохраняет 750. Проверяются все девять полей снимка и пять readonly связей.

  3. Повторный запуск, закрытая/чужая форма, нечисловое/неразрешенное количество, неправильная фаза или измененный снимок не принимаются.

  4. Проверьте будущую настоящую команду/диалог вручную только на собственном стенде: runtime и компиляция здесь не выполнены.

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

Реальный модуль команды получает уведомление, а форма отделяет неизмененный источник от предпросмотра без DB-записи.

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

  1. ЭтотОбъект только читается и появляется в контексте настоящего модуля общей команды. Конструктора КомандаКомандногоИнтерфейса нет.

  2. Нельзя заменить общую команду командой управляемой формы: источник модуля и тип получателя будут другими.

  3. Дополнительные параметры содержат собственную клиентскую форму и фиксированный снимок; они не являются серверной авторизацией или межсеансовым хранилищем.

  4. Снимок не гарантирует атомарность, откат или отображение. После исключения сохранен STOP, исход частичного UI-действия обследуется вручную.

  5. Событие команды, запуск0, создание формы2 и завершение ввода2 доставляет платформа. Программных вызовов этих обработчиков в уроке нет.

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

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

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

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

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