1с все элементы формы только просмотр

Открытие документов «Только просмотр» с дополнительной кнопкой «Изменить»

С помощью минимального изменения конфигурации можно данный недостаток устранить.
Формы документа будут открываться по умолчанию «Только просмотр», а для редактирования документа, пользователю требуется нажать доп. кнопку в командной панели документа. (см. скрин)

С помощью минимального изменения конфигурации можно данный недостаток устранить.

Формы документа будут открываться по умолчанию «Только просмотр», а для редактирования документа, пользователю требуется нажать доп. кнопку в командной панели документа. (см. скрин)

Как реализовать этот функционал?

В конфигурациях от 1С (БП, УТ, ЗУП, УПП и т.д.), при открытие формы документа всегда вызывается какая либо процедура которая проверяет дату запрета редактирования данных.

в конфигурации Бухгалтерия предприятия, редакция 2.0 во всех формах документа ПриОткрытии вызывается:

// Установить доступность формы с учетом даты запрета редактирования

в конфигурации «Управление торговлей», редакция 10.3

Также в конфигурациях от 1С, во всех формах документов присутствует процедура ДействияФормыРедактироватьНомер(Кнопка)

Эту процедуру мы будем использовать для обработки действия по нажатию кнопки «Изменить».

Эти процедуры нам и нужны. Дальше, для примера, разберем, как это реализовать в конфигурации Бухгалтерия предприятия, редакция 2.0.

1. Создать новый общий модуль «лМодульДоработок» содержащий всего 1 процедуру:

Процедура ДобавитьКнопкуВКоманднуюПанельФормы(_Метаданные,_Форма) Экспорт

КП =_Форма.ЭлементыФормы.ДействияФормы; ТипКнопки = ТипКнопкиКоманднойПанели.Действие;

Если КП.Кнопки.Найти(«РедактированиеДокумента») = Неопределено Тогда

2. Изменить стандартную процедуру УстановитьДоступностьФормыДляРедактирования общего модуля РаботаСДиалогами. Добавить в конец процедуры (после всех проверок даты редактирования) текст:

//Если после проверки даты запрета, форма доступна для редактирования, откроем ее на просмотр,

//но добавим кнопочку в панель для возможности редактирования

если НЕ ФормаДокумента.ТолькоПросмотр и ДокументОбъект.Проведен тогда

3. Процедура форм документов «ДействияФормыРедактироватьНомер» состоит из 1 строчки и вызывает процедуру «ИзменениеВозможностиРедактированияНомера» общего модуля «МеханизмНумерацииОбъектов»

МеханизмНумерацииОбъектов.ИзменениеВозможностиРедактированияНомера(ЭтотОбъект.Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);

Изменить процедуру следующим образом:

Процедура ИзменениеВозможностиРедактированияНомера(МетаданныеОбъекта, ФормаОбъекта, ПодменюДействия, ПолеВводаНомера, ПолеВводаНомераДубль = Неопределено, ТекстВопроса = «») Экспорт

//Если при вызове процедуры форма документа не доступна для редактирования, то вызов процедуры произошел по нажатию кнопки «Изменить»

Если ФормаОбъекта.ТолькоПросмотр тогда

ФормаОбъекта.ТолькоПросмотр = ложь;

ФормаОбъекта.ЭлементыФормы.ДействияФормы.Кнопки.РедактированиеДокумента.Доступность = ложь;

ФормаОбъекта.Обновить();

иначе //иначе на самом деле хотят редактировать номер документа

Кнопка = ПодменюДействия.Кнопки.РедактироватьКодНомер;
Если НЕ Кнопка.Пометка Тогда

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

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

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

//конец проверки Если ФормаОбъекта.ТолькоПросмотр тогда

конецесли;

//конец изменений

Стандартный функционал сохраняется. Изменений минимум. Легко поддерживать (переносить) при обновление.

Источник

Как получить доступ к реквизитам формы?

Этот цикл позволяет просмотреть имена а так же типы всех реквизитов формы, в том числе такие реквизиты как надписи, командные панели и тд.

Реквизиты формы могут быть различных типов. Поставив фильтр в виде типа реквизита мы можем просмотреть реквизиты определенного типа.

Если реквизит формы имеет тип «ТабличноеПоле», то можно такой элемент просканировать во вложенном цикле и узнать имена колонок таблицы:

Как получить значение отдельного реквизита формы?

Чаще требуется получать не массив реквизитов формы, а значение отдельных конкретных реквизитов формы. Например реквизиты «Шапки» или «Подвала» формы документа.

Реквизиты шапки могут иметь различные типы: Дата, СправочникСсылка, ЧекБокс, элемент раскрывающегося списка и др.

Как получить значение элементов табличной части формы?

Доступ к табличной части формы через объект

Доступ к табличной части формы (например: Товары) можно получить через объект:

Доступ к табличной части формы через ЭлементыФормы

Для того, чтобы код работал правильно, надо чтобы колонка формы табчасти объекта в свойстве данные ссылалась на реквизит табличной части объекта. Этим определяется тип колонки таб части формы.

То есть должна быть установлена связь между реквизитом табчасти объекта и реквизитом табчасти формы. Форм у объекта метаданных может быть много мы знаем. Табличную часть формы объекта можно получить через объект ЭлементыФормы :

Объект ЭлементыФормы используется для доступа к элементам управления, расположенным на форме, в частности к таб части документа.

Результат для документа Авансовый отчет:

Это табличное поле!! Товары
Количество строк: 4
Женские ботфорты коричневые
Ботинки женские демисезонные
Ботинки женские натуральная кожа
Женские босоножки

Результат для документа Авансовый отчет:

Это табличное поле!! ВыданныеАвансы
=======================
НомерСтроки 1
ДокументАванса Расходный кассовый ордер ТК000000004 от 15.02.2007 19:24:03
СуммаДокументаАванса 300
ВалютаДокументаАванса USD
Выдано 300
Сумма 174

Такое двойное сканирование удобно использовать для быстрой проверки того, что все колонки таб части формы имеют связь с реквизитами таб части объекта. Если такой связи у какой-либо колонки нет, система сгенерирует ошибку.

Источник

Видимость, доступность элементов форм (управляемые формы)

В разделе «Администрирование» добавляется пункт «ВДЭФ настройки».

f08b6e3d53231c165ce66c4671dca0de

В список форм добавлены формы Справочников, Документов, Регистров сведений, Обработок и бизнеспроцессов с задачами.
В список ролей все возможные роли из основной конфигурации и расширений(если такие есть).

1. Выбираем форму, далее подгружаются все элементы формы.

2. Выбираем необходимый элемент.

3. Из списка ролей выбираем роль, по доступности которой правило не работает (допустим, ПолныеПрава, чтобы у всех кроме администраторов.

4. Устанавливаем флажок, Видимость, Доступность, ТолькоПросмотр.

Также, если будет заполнено поле Произвольный код, то он выполнится после всех выбранных действий.

На каждый элемент формы создаётся отдельная строка регистра.

Есть небольшие баги(допустим, правило которое создаётся, применяется так же и на форму записи ВДЭФ_Настройки, т.к. форма на которую «вешаются» ограничения получается через «ПолучитьФорму()». Следовательно, может получиться так, что правило, которое вы создали не откроется на редактирование, его достаточно будет удалить и создать заново), которые, возможно, исправлю, но они мало влияют на суть.

UPD: Если какая-то форма не работает, значит в модуле этой формы, в обработчике ПриСозданииНаСервере не добавлено:

Соответственно, чтобы форма работала, можно добавить её в это же расширение через конфигуратор, и создать ПриСозданииНаСервере, выбрать «После» и дописывать код который написан выше.

Хоть механизм и типовой, но не на всех формах добавлен.

Проверено на конфигурации Комплексная Автоматизация 2 (2.4.9.70), Технологическая Платформа 8.3.14.1854 и 8.3.15.1565. Должно работать на любой конфигурации где применяется типовой функционал модификации конфигурации(УТ 11, КА 2 и ERP 2).

Источник

Кнопка «Только просмотр» для печатной формы документа

В 8.1 это решалось установкой:
ТабДокумент.ТолькоПросмотр = Ложь;

а тут табличный документ и так имеет свойство ТолькоПросмотр = Ложь, и Защита = Ложь,
пробовала обращаться и к полю на форме и к самому табличному документу.
Задачка простая, но никак не пойму что надо сделать. :o

З.Ы. пробовала и на стандартной форме (ОбщиеФормы-ПечатьДокументов) и на собственной форме отчета.

Процедура КоманднаяПанельФормыТолькоПросмотр(Кнопка)
ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр = НЕ ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ТолькоПросмотр.Пометка = НЕ ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ТолькоПросмотр.Пометка;
КонецПроцедуры

Кажется в 1 сообщении я написала, что так:
>ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр = НЕ ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр;
НЕ РАБОТАЕТ.
Тем более, что приведенный пример относится к 8.1, а тут 8.2, принцип другой.
У табличного поля режим ТолькоПросмотр УЖЕ равно ЛОЖЬ, но тем не менее поле редактировать нельзя.

>И отладчиком тыкнись, когда все таки ТолькоПросмотр становится истиной.
ну я же уже сказала, что не становится оно истиной.

Так, давайте сначала:
Я захожу под Администратором, у меня полные права.
Вывожу печатную форму на печать, и у табличного поля, повторяюсь:
>а тут табличный документ и так имеет свойство ТолькоПросмотр = Ложь, и Защита = Ложь,
То есть ТолькоПросмотр = ЛОЖЬ И редактировать НЕЛЬЗЯ.

Отладчиком проходила все, и свойство ТолькоПросмотр как было ложь так и осталось.

ВОПРОС: что делает стандартный пункт в меню и как это повторить на действии в кнопке.

Источник

v8.3: ТолькоПросмотр для программно созданных элементов формы

8.3.5, УФ. На форме программно создаются реквизиты формы и элементы, связанные с ними. После программного создания на форме этих динамически формируемых элементов для формы в модуле формы делаю

после чего признак невозможности редактирования устанавливается на все реквизиты, кроме программно созданных. В чем может быть причина? Спасибо.

Я извиняюсь, вопрос никак не по Бухгалтерии), пренести в «Управляемое приложение» не смог

потому что ты блокируешь объект, а надо форму

Да, забыл написать, режим совместимости с 8.2 отключен, т.е. работаю с чистой 8.3, поэтому используя ЭтотОбъект в модуле формы я блокирую данную управляемую форму.

в управляемой ты можешь блокировать элементы

не помню точно, но вроде как возможно

Код 1C v 8.2 УП

proGAll 23.09.2014 16:46
Ответ № 5
00
proGAll 23.09.2014 16:46
Ответ № 5
00

Нашелся ответ, если элемент не связан с основным реквизитом формы или у реквизита, с которым он связан не установлена СохраняемыеДанные, то он не блокируется. Спасибо.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с восстановить настройки формы
  • 1с вопрос да нет управляемые формы