Как заблокировать реквизиты формы 1с
Обновлено: 06.07.2024
При программном изменении существующих объектов есть правило: сразу после получения объекта из ссылки, необходимо его заблокировать для редактирования. Это позволяет:
- во-первых, проверить, что данный объект не заблокирован в настоящий момент другим пользователем;
- во-вторых, гарантирует, что другой пользователь не сможет изменить объект, пока не будут записаны изменения в текущем сеансе;
Заблокировать произвольный объект можно двумя способами:
- Используя метод Заблокировать() объекта метаданных ссылочного типа (Справочники, Документы и т.п.);
- Используя метод ЗаблокироватьДанныеДляРедактирования() глобального контекста;
Давайте рассмотрим примеры работы с каждым из этих методов
Метод Заблокировать()
Если Ваш алгоритм не взаимодействует с пользователем, перед тем как заблокировать объект, следует проверить, не заблокирован ли этот объект другим пользователем или процессом. Если, все же, взаимодействует, следует исключить код для варианта 1. Тогда в случае заблокированного объекта будет вызвано исключение и пользователь увидит полное описание ошибки.
Недостатки: Метод доступен только в контексте сервера, толстого клиента или внешнего соединения
Метод ЗаблокироватьДанныеДляРедактирования()
Данный метод обладает большим спектром возможностей, чем предыдущий:
- он умеет блокировать записи регистра сведений;
- он умеет блокировать данные в контексте управляемых форм;
- он умеет блокировать данные, если совпадает версия данных;
С учетом этого, перепишем предыдущий пример следующим образом:
В том случае, когда нам необходимо заблокировать некоторые данные на время открытия управляемой формы, можно поступить следующим образом:
Блокировка будет снята неявно при закрытии привязанной формы, либо при завершении сеанса пользователя, либо явно при вызове метода РазблокироватьДанныеДляРедактирования()
Необходимо запретить редактирование строк табличного поля документа добавленных ранее.
Пример: Пользователи ежедневно добавляют в документ строки с данными, нужно чтобы позже они не могли изменять уже введенные данные.
Для реализации этого, необходимо в ранее добавленных ячейках установить ТолькоПросмотр=Истина
Пример табличного поля:
Похожие FAQ
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 19Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список
Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Что-то Вы мутите воду. Какую цель преследуете? Реквизиты формы интересны только если вы хотите с формой работать. Например, перед её открытием что-то проинициализировать. А тут вы будто пытаетесь через форму изменить реквизиты элемента. Вопрос ставьте по другому, что именно Вам нужно, какую цель преследуете?
P.S. "Правильно поставленный вопрос - уже половина ответа". (c)
Xris, вот, значит Вам надо проследить, что происходит, когда заполняется вручную и инициируется запись. Возможно, он пишет не только в сам реквизит объекта, но куда-то еще, откуда потом элемент заполняется. И вообще поковырять форму, по имени элемента и реквизиту. Посмотреть момент открытия, может там хитрая инициализация реализована.
Берите во внимание еще тот момент, что есть некоторые вещи, которые выполняются именно при интерактивном взаимодействии. Поэтому, возможно, при программной записи формы у Вас не получается получить желаемый результат.
Читайте также: