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

10.04.13

Разработка - Работа с интерфейсом

В стандартных конфигурациях, написанных на обычных формах, нет возможности, по умолчанию, открывать документы на просмотр. И при закрытие документа, пользователь частенько  нажимает кнопку «ОК» а не «Закрыть» . При этом происходит запись и перепроведение документа. Что не всегда есть правильно.

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

 

В стандартных конфигурациях, написанных на обычных формах, нет возможности, по умолчанию, открывать документы на просмотр. И при закрытие документа, пользователь частенько  нажимает кнопку «ОК» а не «Закрыть» . При этом происходит запись и перепроведение документа. Что не всегда есть правильно.

 

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

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

 

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

 

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

 

Например:

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

 

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

РаботаСДиалогами.УстановитьДоступностьФормыДляРедактирования(ЭтотОбъект, ЭтаФорма);

 

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

НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);

и т.д.

 

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

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

 

 

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

 

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

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

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

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

            НоваяКнопка = КП.Кнопки.Добавить("РедактированиеДокумента", ТипКнопки, "Изменить" , Новый Действие("ДействияФормыРедактироватьНомер"));

      конецесли;

Конецпроцедуры

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

 

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

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

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

      ФормаДокумента.ТолькоПросмотр = Истина;

      лМодульДоработок.ДобавитьКнопкуВКоманднуюПанельФормы(ДокументОбъект.Метаданные(),ФормаДокумента);

конецесли;

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

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

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

 

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

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

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

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

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

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

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

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

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

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

    конецесли;

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

КонецПроцедуры

 

Это все изменения.

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

 

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63097    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    18964    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

1500 руб.

06.10.2020    10323    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    17641    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    7925    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    15225    960    elcoan    49    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    12021    163    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mosAdm 135 11.04.13 11:48 Сейчас в теме
А в УТ 11.1 кнопку "Изменить" из форм документов убрали. Идею признали немного мёртвой.
2. anatoliy_gt 69 12.04.13 06:06 Сейчас в теме
Ну это как всегда. 1С убрала. А пользователи, кто к ней привык, начнут терроризировать франчев и своих программистов - "вертайте в зад все как было".

Соглашусь что применять режим "ТолькоЧтение" по умолчанию для всех пользователей не всегда удобно и правильно.
Но как вариант, можно создать доп.роль в конфигурации лПросмортПоумолчанию
И сделать доп. проверку:
если НЕ ФормаДокумента.ТолькоПросмотр и ДокументОбъект.Проведен и РольДоступна("лПросмортПоумолчанию") тогда
   ФормаДокумента.ТолькоПросмотр = Истина;

      лМодульДоработок.ДобавитьКнопкуВКоманднуюПанельФормы(ДокументОбъект.Метаданные(),ФормаДокумента);

конецесли;
3. fort13 02.08.13 16:07 Сейчас в теме
Спасибо за подсказку :)
Оставьте свое сообщение