Глобальный контекст.ХранилищеНастроекДанныхФорм

Свойства · FormDataSettingsStorage

Тип: СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер.<Имя хранилища>. Содержит объект, с помощью которого осуществляется чтение, изменение, добавление и удаление настроек данных форм. Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" не указано хранилище, то содержит объект СтандартноеХранилищеНастроекМенеджер, предназначенный для чтения, изменения, добавления и удаления настроек данных форм. Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" указано хранилище, созданное в конфигурации, то содержит объект ХранилищеНастроекМенеджер.<Имя хранилища>.

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

Глобальный контекст.ХранилищеНастроекДанныхФорм (Global context.FormDataSettingsStorage)

Глобальный контекст (Global context)

ХранилищеНастроекДанныхФорм (FormDataSettingsStorage)

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

Использование:
Только чтение.
Описание:
Тип: СтандартноеХранилищеНастроекМенеджер, ХранилищеНастроекМенеджер.<Имя хранилища>.
Содержит объект, с помощью которого осуществляется чтение, изменение, добавление и удаление настроек данных форм.
Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" не указано хранилище, то содержит объект СтандартноеХранилищеНастроекМенеджер, предназначенный для чтения, изменения, добавления и удаления настроек данных форм.
Если в свойстве конфигурации "ХранилищеНастроекДанныхФорм" указано хранилище, созданное в конфигурации, то содержит объект ХранилищеНастроекМенеджер.<Имя хранилища>.
Доступность:

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

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

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

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

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

Сохранить два настоящих поля своей формы и восстановить их из хранилища

Одно явное согласие, новый собственный ключ, настоящее соответствие цены и количества, сохранение, повторное чтение и восстановление полей 300/6 с пересчётом 1800. Запись остаётся только в новой собственной учебной базе.

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

Полный модуль своей управляемой общей формы: событие создания на сервере, клиентская кнопка и серверные процедуры в новой собственной файловой базе 8.5.1.1343; толстый управляемый клиент. Запуск в 1С не проверен.

Подготовка

  1. Задача: сохранить цену 300 и количество 6 из своей формы, получить оба значения обратно, временно изменить поля на 100 и 2, затем восстановить сохранённые 300 и 6 и пересчитать сумму 1800. Запись настройки останется в собственной учебной базе. Это не проверка только в памяти и не операция только чтения.

  2. Вручную создайте НОВУЮ собственную пустую файловую базу, не копию УТ, КА2, УНФ или БП: C:\1c-labs\OwnFormData85_87470a58-a603-4b3b-bf77-e6b757a807a8\IB. Платформа 8.5.1.1343, Windows, русский встроенный язык, толстый управляемый клиент. Точная строка соединения: File="C:\1c-labs\OwnFormData85_87470a58-a603-4b3b-bf77-e6b757a807a8\IB";. Никакую рабочую или чужую базу этот урок не разрешает изменять.

  3. Свойства конфигурации: Имя = УчебныеДанныеФормы85; Версия = 87470a58-a603-4b3b-bf77-e6b757a807a8; ОсновнойРежимЗапуска = УправляемоеПриложение; РежимСовместимости = НеИспользовать. ХранилищеНастроекДанныхФорм оставьте незаданным; не создавайте объектов ХранилищаНастроек. Чтение этого свойства через Метаданные уже возвращает менеджер, а не Неопределено: так проверять незаданное значение нельзя. Код отдельно проверит отсутствие прикладных хранилищ и настоящий тип стандартного менеджера.

  4. Не импортируйте бизнес-данные, расширения, обработчики приложения, фоновые задания, внешние источники и другие формы или команды. Создайте одну описанную собственную общую форму, одну общую команду, учебный раздел и минимальную роль. Вручную создайте НОВОГО именованного пользователя АвторДанныхФормы85 только этой новой базы; не используйте имя старой учётной записи. Код не создаёт и не читает пользователей через менеджер пользователей.

  5. Своей учебной роли разрешите использование формы и команды и право СохранениеДанныхПользователя. Полный доступ, АдминистрированиеДанных и привилегированный режим не требуются: используются настройки только фактического текущего пользователя. Если права отказаны — остановитесь, не обходите запрет. Не переименовывайте пользователя и не запускайте параллельный сеанс в ходе опыта.

  6. Общие → Общие формы → ДанныеСвоейФормы85: управляемая форма. Создайте Цена85, Количество85, Сумма85 — Число длина 10, точность 0, неотрицательные; Идентификатор85 — УникальныйИдентификатор; Ключ85, Пользователь85, Фаза85, Протокол85 — Строка неограниченной длины; Согласие85, Использовано85, НеизвестныйИсход85 — Булево. НЕ создавайте реквизит Соответствие: этот объект не используется в данных формы и останется только локальной серверной переменной.

  7. В свойствах своей формы: АвтоматическоеСохранениеДанныхВНастройках = НеИспользовать; СохранениеДанныхВНастройках = НеИспользовать. Это два перечисления, не Булево. У остальных своих реквизитов не включайте автоматическое сохранение. Основной блок вставьте ЦЕЛИКОМ в модуль этой формы. В событиях формы привяжите настоящий ПриСозданииНаСервере к одноимённой процедуре; вручную обработчик не вызывайте. Он создаёт только новый идентификатор, ключ и поля формы, без сохранения настройки.

  8. Поля Цена85, Количество85 и Сумма85 сделайте ТолькоПросмотр = Да. Добавьте флажок Согласие85 с подписью «Разрешаю одну запись двух своих полей в собственную учебную базу». Ключ85 покажите в поле ТолькоПросмотр = Да; Протокол85 — многострочное поле ТолькоПросмотр = Да. Идентификатор85, Пользователь85, Фаза85, Использовано85 и НеизвестныйИсход85 не выводите для редактирования. Маркеры формы не являются защитой от подделки и не заменяют владение стендом.

  9. Создайте команду формы СохранитьИВосстановить85, Действие = СохранитьИВосстановить85, добавьте её кнопку. Не добавляйте команд сброса, повтора, удаления или очистки. Открытие формы ничего не сохраняет. Один явный флажок и одно нажатие кнопки разрешают один опыт в этом экземпляре формы.

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

  11. Вручную обновите только свою новую конфигурацию, проверьте компиляцию обоих модулей и запустите толстый управляемый клиент под АвторДанныхФормы85. Откройте свою команду: должны появиться 300, 6, 1800 и новый ключ. Только после проверки принадлежности базы и пользователя отметьте согласие и нажмите кнопку один раз. При подготовке урока 1С и база не запускались: компиляция, настоящее сохранение и чтение настройки и передача изменений формы между клиентом и сервером ещё не проверены.

&НаСервере
Процедура ПроверитьСвойСтенд85()
    Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1c-labs\OwnFormData85_87470a58-a603-4b3b-bf77-e6b757a807a8\IB"";" Или Метаданные.ОсновнойРежимЗапуска <> РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Или Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Или ИмяПользователя() <> "АвторДанныхФормы85" Тогда
        ВызватьИсключение "Нужны только собственная новая файловая база 8.5.1.1343 и свой новый именованный учебный пользователь";
    КонецЕсли;
    Если Метаданные.ХранилищаНастроек.Количество() <> 0
        Или Метаданные.ОбщиеФормы.Количество() <> 1 Или Метаданные.ОбщиеКоманды.Количество() <> 1
        Или Метаданные.ОбщиеФормы.Найти("ДанныеСвоейФормы85") = Неопределено
        Или Метаданные.ОбщиеКоманды.Найти("ОткрытьДанныеСвоейФормы85") = Неопределено
        Или ИмяФормы <> "ОбщаяФорма.ДанныеСвоейФормы85" Тогда
        ВызватьИсключение "Нужна своя единственная форма/команда, без прикладных хранилищ настроек";
    КонецЕсли;
    Если АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать
        Или СохранениеДанныхВНастройках <> СохранениеДанныхФормыВНастройках.НеИспользовать Тогда
        ВызватьИсключение "Отключите только в своей форме встроенное и автоматическое сохранение: урок использует отдельную явную команду";
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    СтандартнаяОбработка = Истина;
    Попытка
        ПроверитьСвойСтенд85();
        Идентификатор85 = Новый УникальныйИдентификатор;
        Ключ85 = "OwnFormData85_" + Строка(Идентификатор85);
        Пользователь85 = ИмяПользователя();
        Цена85 = 300;
        Количество85 = 6;
        Сумма85 = Цена85 * Количество85;
        Согласие85 = Ложь;
        Использовано85 = Ложь;
        НеизвестныйИсход85 = Ложь;
        Фаза85 = "Готов";
        Протокол85 = "Новый собственный ключ: " + Ключ85 + ". Пока ничего не сохранено. Разрешите одну запись своих двух полей в учебную базу.";
    Исключение
        Отказ = Истина;
        ВызватьИсключение "Своя учебная форма не подготовлена; запись настроек не запускалась";
    КонецПопытки;
КонецПроцедуры

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

&НаСервере
Процедура СохранитьИВосстановитьНаСервере85(Разрешено)
    ПроверитьСвойСтенд85();
    Если ТипЗнч(Разрешено) <> Тип("Булево") Или Не Разрешено
        Или Не Использовано85 Или Не НеизвестныйИсход85 Или Согласие85
        Или Фаза85 <> "Готов" Тогда
        ВызватьИсключение "Нужно одно явно потреблённое согласие этой новой собственной формы; повтор запрещён";
    КонецЕсли;
    Если ТипЗнч(Идентификатор85) <> Тип("УникальныйИдентификатор")
        Или Ключ85 <> "OwnFormData85_" + Строка(Идентификатор85)
        Или Пользователь85 <> ИмяПользователя() Или Пользователь85 <> "АвторДанныхФормы85"
        Или ТипЗнч(Цена85) <> Тип("Число") Или ТипЗнч(Количество85) <> Тип("Число")
        Или Цена85 <> 300 Или Количество85 <> 6 Или Сумма85 <> 1800 Тогда
        ВызватьИсключение "Не подтверждены собственный ключ, текущий пользователь и исходные реальные поля 300/6";
    КонецЕсли;
    Хранилище = ХранилищеНастроекДанныхФорм;
    Если ТипЗнч(Хранилище) <> Тип("СтандартноеХранилищеНастроекМенеджер") Тогда
        ВызватьИсключение "В свойствах своей новой конфигурации оставьте хранилище данных форм незаданным";
    КонецЕсли;
    ЦенаДо = Цена85;
    КоличествоДо = Количество85;
    Данные = Новый Соответствие;
    Данные.Вставить("Цена85", ЦенаДо);
    Данные.Вставить("Количество85", КоличествоДо);
    ПроверитьДваПоля85(Данные, ЦенаДо, КоличествоДо);
    Если Хранилище.Загрузить(ИмяФормы, Ключ85, , Пользователь85) <> Неопределено Тогда
        ВызватьИсключение "Свежая проверка обнаружила существующую настройку; перезапись запрещена";
    КонецЕсли;
    Фаза85 = "ИсходНеизвестен";
    НеизвестныйИсход85 = Истина;
    Хранилище.Сохранить(ИмяФормы, Ключ85, Данные, , Пользователь85);
    Прочитано = Хранилище.Загрузить(ИмяФормы, Ключ85, , Пользователь85);
    ПроверитьДваПоля85(Прочитано, ЦенаДо, КоличествоДо);
    Цена85 = 100;
    Количество85 = 2;
    Сумма85 = Цена85 * Количество85;
    Если Цена85 <> 100 Или Количество85 <> 2 Или Сумма85 <> 200 Тогда
        ВызватьИсключение "Контрольная смена только собственных полей формы не подтверждена";
    КонецЕсли;
    Цена85 = Прочитано.Получить("Цена85");
    Количество85 = Прочитано.Получить("Количество85");
    Сумма85 = Цена85 * Количество85;
    Если ТипЗнч(Цена85) <> Тип("Число") Или ТипЗнч(Количество85) <> Тип("Число")
        Или ТипЗнч(Сумма85) <> Тип("Число")
        Или Цена85 <> ЦенаДо Или Количество85 <> КоличествоДо Или Сумма85 <> 1800 Тогда
        ВызватьИсключение "Восстановление фактически перечитанных полей и расчёта не подтверждено";
    КонецЕсли;
    Протокол85 = "Сохранён и фактически перечитан один собственный ключ " + Ключ85
        + " для " + ИмяФормы + "; пользователь " + Пользователь85
        + ". Поля формы были 100/2, восстановлены из реального Соответствия: "
        + Строка(Цена85) + " × " + Строка(Количество85) + " = " + Строка(Сумма85)
        + ". Настройка остаётся в собственной учебной базе; автоматической очистки нет.";
    Фаза85 = "Завершено";
    НеизвестныйИсход85 = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура СохранитьИВосстановить85(Команда)
    Если ТипЗнч(Команда) <> Тип("КомандаФормы") Тогда
        ВызватьИсключение "Используйте настоящую кнопку своей учебной формы";
    КонецЕсли;
    Если Команда.Имя <> "СохранитьИВосстановить85" Тогда
        ВызватьИсключение "Нужна собственная команда СохранитьИВосстановить85";
    КонецЕсли;
    Если Использовано85 Или НеизвестныйИсход85 Или Фаза85 <> "Готов" Тогда
        ВызватьИсключение "STOP: повтор в этой форме запрещён; неизвестный исход нельзя сбрасывать кнопкой";
    КонецЕсли;
    Если Не Согласие85 Тогда
        ВызватьИсключение "Сначала разрешите одну запись своих двух полей в собственную учебную базу";
    КонецЕсли;
    Использовано85 = Истина;
    Согласие85 = Ложь;
    НеизвестныйИсход85 = Истина;
    Протокол85 = "Исход попытки пока неизвестен. Свой ключ: " + Ключ85 + ". Автоматического повтора нет.";
    Попытка
        СохранитьИВосстановитьНаСервере85(Истина);
        Если НеизвестныйИсход85 Или Фаза85 <> "Завершено"
            Или ТипЗнч(Цена85) <> Тип("Число") Или ТипЗнч(Количество85) <> Тип("Число")
            Или ТипЗнч(Сумма85) <> Тип("Число") Или Цена85 <> 300 Или Количество85 <> 6 Или Сумма85 <> 1800 Тогда
            ВызватьИсключение "Полный серверный результат не получен клиентом";
        КонецЕсли;
    Исключение
        Использовано85 = Истина;
        НеизвестныйИсход85 = Истина;
        Протокол85 = "STOP: успех не подтверждён, исход записи может быть неизвестен. Свой ключ: " + Ключ85
            + ". Не повторяйте Save, не очищайте и не переходите к следующему опыту автоматически. Сначала вручную выясните состояние только этого ключа своей учебной базы.";
    КонецПопытки;
КонецПроцедуры
Полный модуль собственной общей команды: открыть форму, не сохранять автоматически

Общие → Общие команды → ОткрытьДанныеСвоейФормы85 → Модуль

Настоящее клиентское событие своей общей команды в толстом управляемом приложении

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

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

  1. Настоящее событие создания формы проверяет свою файловую базу, платформу, имя и маркер версии конфигурации, текущего учебного пользователя и собственную форму. Оно создаёт настоящий новый уникальный идентификатор и строковый ключ OwnFormData85_<идентификатор>. Путь и маркеры — предохранители от ошибки, не доказательство владения и не полноценная авторизация.

  2. Клиентская кнопка проверяет настоящую команду и согласие. До обращения клиента к серверу она снимает согласие, запрещает повтор и отмечает, что исход попытки пока неизвестен. Сервер также отмечает неизвестный исход непосредственно перед записью. Если обращение завершится ошибкой, изменённые серверные реквизиты могут не вернуться клиенту; поэтому клиент самостоятельно сохраняет отметку об остановке.

  3. Сервер заново проверяет свою среду, текущего пользователя, точный собственный ключ и исходные числовые поля 300 и 6. ХранилищеНастроекДанныхФорм получает настоящий стандартный менеджер. Эта переменная затем используется для сохранения и чтения настройки, а не просто для показа её типа.

  4. Сервер запоминает реальные цену и количество и создаёт Соответствие. У него ровно два строковых ключа: Цена85 и Количество85 — пути к собственным реквизитам формы. Значения взяты из полей, а не подставлены вместо них. Проверяются количество записей, наличие обоих ключей, числовые типы и значения. Порядок обхода соответствия не используется.

  5. Ключ объекта взят из настоящего ИмяФормы и сверяется с ОбщаяФорма.ДанныеСвоейФормы85. Ключ настройки содержит новый собственный идентификатор. Перед записью заново читается только этот объект, ключ и пользователь. Если запись уже существует, сохранение запрещено. Эта проверка не блокирует конкурентную запись, поэтому нужен один спокойный собственный сеанс.

  6. Менеджер сохраняет проверенное соответствие. Сразу после этого настройка заново загружается из хранилища по тем же координатам. Отсутствие настройки, другой тип, лишний или потерянный ключ или иное число останавливают опыт. Нельзя заменить результат чтения исходным соответствием и выдать это за проверку.

  7. Только после успешного повторного чтения код меняет собственные поля формы на 100 и 2 и проверяет сумму 200. Затем он получает цену и количество именно из прочитанного соответствия, восстанавливает 300 и 6 и пересчитывает сумму 1800. Временное состояние возникает внутри серверной процедуры; на экране после завершения видны восстановленные поля и протокол. Чтобы увидеть промежуточные 100/2/200, можно остановиться отладчиком только своей учебной базы.

  8. Отметка неизвестного исхода снимается только после полного чтения и восстановления полей. Клиент отдельно проверяет завершённую фазу и реальные 300/6/1800. В протокол попадают свой ключ, форма, пользователь и результаты. Одна настройка остаётся в своей базе; автоматического удаления, повтора или продолжения следующего опыта нет.

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

  1. Откройте собственную форму и не отмечайте согласие. Проверьте 300, 6, 1800 и новый ключ. Нажатие кнопки без согласия должно остановиться до обращения к сохранению: в коде Сохранить не вызывается. Это ожидаемый контроль для будущего ручного запуска, а не уже выполненный опыт.

  2. В новом подходящем экземпляре своей формы отметьте согласие и нажмите кнопку один раз. После успешного завершения должны быть восстановленные поля 300, 6 и 1800, а в протоколе — тот же собственный ключ, имя формы и учебный пользователь. Код сначала проверяет промежуточные 100/2/200, затем восстанавливает значения из настоящего повторного чтения. Если доступна отладка своего стенда, поставьте точку останова после проверки суммы 200 и посмотрите промежуточные поля; не вызывайте обработчики вручную.

  3. Нажмите кнопку второй раз в том же экземпляре формы. Ожидается остановка: согласие уже использовано и повтор запрещён. После успеха запись не удаляется автоматически.

  4. Только если доступна отладка своей новой базы, в отдельном новом экземпляре формы измените исходную цену на 301 перед серверной проверкой и затем используйте настоящую кнопку. Ожидается остановка до сохранения из-за несоответствия исходным 300/6. Не меняйте рабочую базу и не передавайте выдуманные объекты обработчикам; после этого опыта не сбрасывайте отметку остановки.

  5. Коллизию проверяйте только на записи, уже созданной этим уроком в собственной базе. В новом экземпляре формы при доступной отладке подставьте прежний настоящий идентификатор и соответствующий ему показанный ключ, затем используйте настоящую кнопку. Повторное чтение должно обнаружить существующую настройку и запретить перезапись. Не подставляйте чужой ключ или случайный набор настроек.

  6. Проверку отказанного права готовьте только в своей новой базе: до опыта временно не предоставьте учебному пользователю СохранениеДанныхПользователя и запустите новый сеанс. Ожидается отказ сохранения и остановка, без полного доступа или обхода ограничения. Это ожидаемая проверка; конкретное поведение отказа в 1С ещё не исследовано. Не продолжайте и не повторяйте запись автоматически.

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

  8. Неверные платформа, база, имя конфигурации, учебный пользователь или настройки автоматического сохранения должны остановить создание формы либо попытку записи. Эти проверки проходят только в собственной лаборатории; переименовывать рабочую базу ради прохождения ограничений нельзя.

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

Ожидается одна действительно сохранённая и заново прочитанная собственная настройка из двух записей соответствия, восстановление полей 300/6 и суммы 1800. При существующем ключе, ошибке или неизвестном исходе — остановка без повтора или удаления. Запуск в 1С не проверен.

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

  1. Настройки данных форм — не общие или системные настройки и не настройки отчёта. Установленная справка задаёт здесь полное имя формы и Соответствие: строковый путь реквизита → его значение. Не меняйте ключ объекта на случайную область и не сохраняйте произвольную Структуру.

  2. Соответствие не используется в данных формы. Оно остаётся локальным серверным объектом; между клиентом и сервером передаются только обычные собственные реквизиты формы. Порядок обхода соответствия не гарантирован: проверяются точные два ключа и настоящие типы и значения.

  3. Незаданное свойство хранилища в редакторе конфигурации не означает Неопределено при чтении через Метаданные: уже возвращается менеджер. Нельзя присваивать глобальное или метаданное свойство только для подмены маршрута. Настоящий менеджер получается из глобального ХранилищеНастроекДанныхФорм.

  4. Имя пользователя входит в адрес настройки. После переименования старые настройки могут не загрузиться; новая учётная запись со старым именем способна получить прежние настройки. Нужны новый именованный пользователь своей новой базы, отсутствие переименования и параллельной записи. Чужие пользователи и АдминистрированиеДанных не используются.

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

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

  7. Урок оставляет одну постоянную настройку в собственной базе. Не добавляйте автоматическое удаление, откат, общий обход хранилища, настройки по умолчанию или исправление рабочей базы. Переименованная копия боевой базы с похожими путём и маркером версии не становится разрешённым собственным стендом.

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

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

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

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

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