Внесение изменения в формы с помощью расширений, без заимствования формы.

13.09.19

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

При доработке функционала штатных конфигураций часто встает задача по доработке форм, есть разные методики по доработке, направленные на то чтобы упростить в дальнейшем обновление. Что-то мне в этих методиках не нравилось, и я начал пытаться как то упростить их, скорей всего проще они не стали, но все же, решил результатами с вами поделиться. Моя первая попытка, это создание общей формы на которой в пользовательском режиме можно было с помощью конструктора настроить вывод реквизитов (табличных частей) объекта. Реквизиты вывели, захотелось добавить к ним обработчик и т.д., а это уже усложняло конструктор, что подтолкнуло меня к другому подходу. Вторая попытка - это создание новой формы в расширении, что дало .возможность использовать возможности конфигуратора. В обеих попытках используется общая команда расположенная в панели навигации формы, создается иллюзия как будто работаешь с одной формой.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширение формы
.cfe 29,23Kb
12 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

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

Оформить подписку и скачать решение со скидкой

Статья не новая, попытку номер 1 я уже описывал, поэтому очередность в обратном порядке, возможно скоро появится и следующие попытки.

ПОПЫТКА номер 2.

В расширении в общих формах создал форму-шаблон с определенными настройками. Теперь когда мне нужно изменить форму, я добавляю объект в расширение. при необходимости реквизиты (ТЧ), копирую общую форму-шаблон в формы этого объекта, назначаю тип основному реквизиту,  настраиваю форму как мне нужно. На форме у меня нет никаких кнопок, идея такая, при редактировании реквизитов в режиме предприятия, из формы-шаблона данные основного реквизита формы переносятся в основной реквизит формы основной конфигурации, для этого я подключаю обработчик ожидания к форме-шаблону, который в свою очередь с помощью метода КопироватьДанныеФормы переносит данные (записи объекта не происходит). Вот мой код формы-шаблона

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	#Область ШаблонДополнительнойФормы
	МетаданныеОбъекта = Параметры.Ключ.Метаданные();
	ПолноеИмяОбъекта  = МетаданныеОбъекта.ПолноеИмя();
	СохраненныеНастройки     = РасширениеФорм_ОбщегоНазначения.ЗагрузитьОбщиеНастройки(ПолноеИмяОбъекта);
	ОсновнойРеквизитФормы    = РасширениеФорм_ОбщегоНазначения.ПолучитьОсновнойРеквизит(СохраненныеНастройки);	
	#КонецОбласти
	
КонецПроцедуры

#Область ШаблонДополнительнойФормы
&НаКлиенте
Процедура Настройка(Команда)
	
	ШаблонЗаголовка = НСтр("ru='Настройка расширения формы'");
	ТекстЗаголовка  = ШаблонЗаголовка;
	//ТекстЗаголовка = СтрШаблон(ШаблонЗаголовка, ПолноеИмяОбъекта);
	
	ДанныеВладельца = Неопределено;
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ПолноеИмяОбъекта",     ПолноеИмяОбъекта);
	ПараметрыФормы.Вставить("ЗаголовокФормы",       ТекстЗаголовка);
	
	ДопПараметры = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
	
	ОповещениеОВыборе = Новый ОписаниеОповещения("ФормаНастройкиПослеВыбора", ЭтаФорма, ДопПараметры);
	
	ОткрытьФорму("ОбщаяФорма.РасширениеФорм_ФормаНастройки", 
	ПараметрыФормы, 
	, 
	, 
	, 
	,
	ОповещениеОВыборе,
	РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПодключитьОбработчикОжидания("ОбновитьДанныеФормыВладельца", 1, Ложь);
	ДопПараметры          = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
	ОсновнойРеквизитФормы = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьДанныеФормыВлвдельца(ДопПараметры, ВладелецФормы, ОсновнойРеквизитФормы);
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанныеФормыВладельца()
	
	Если Модифицированность Тогда
		
		КопироватьДанныеФормы(Объект, ВладелецФормы[ОсновнойРеквизитФормы]);
		ВладелецФормы.Модифицированность = Истина;
		Модифицированность = Ложь;
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

Пример использования заимствованной формы и формы-шаблона

 

ПОПЫТКА номер 1.

Дополнения от 13.09.2019

  1. Для ТЧ добавлена возможность добавлять, удалять строки.
  2. Добавлена возможность настраивать формы для "Планы видов расчета".
  3. Настройка видимости по пользователям.
  4. Задавать Имя основного реквизита формы основной конфигурации

Краткая инструкция на примере добавленных реквизитов в документ "Поступления на расчетный счет" конфигурации "Бухгалтерия предприятия, редакция 3.0 БИТ.ФИНАНС 3.1"

  1. Добавим расширение. (не знаете как, используйте поиск по сайту)
  2. Настройка расширения под конкретную конфигурацию. Добавляем объекты в расширение и настраиваем общую команду.

в результате на панели действий формы должна появиться ссылка "Расширение формы"

 

  1. Настройка формы.  Можно добавить реквизиты, стандартные реквизиты, реквизиты ТЧ. (каждый объект настраивается отдельно, настройки сохраняются для всех пользователей)

в результате расширенная форма стала выглядеть так, 

 

При редактировании данные формы расширения переносятся в основную форму. 

Данная форма имеет ограниченный функционал и не является заменой основной формы, рекомендуется к использованию для редактирования реквизитов не отображенных на основной форме. ВНИМАНИЕ: При повторной активации навигационной ссылки "Расширение формы..." данные формы автоматически не обновляются.

Если в открытой форме объекта уже была активирована ссылка расширения, изменения в основной форме не отобразятся в расширении, используйте кнопку обновления. 

Важно - имя основного реквизита формы объекта (формы, которую расширяем) обязательно должно быть "Объект".

Предполагаю, что должно работать на любой конфигурации (не проверял), разрабатывал на платформе 1С:Предприятие 8.3 (8.3.13.1809).

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56405    31    25    

45

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36000 руб.

28.08.2025    2703    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Расширение «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

6000 руб.

14.01.2016    58242    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

5160 руб.

29.06.2020    22865    32    6    

51

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

5040 руб.

06.10.2020    12852    8    8    

14

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

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

20.08.2024    43395    mrXoxot    44    

138

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

27.05.2024    24834    smielka    38    

111
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Qbik 5 27.05.20 11:04 Сейчас в теме
I. Динамически настраиваемое расширение формы.
1. При изменении данных на динамической форме - данные меняются и в основной форме!
Но при изменении данных в основной форме - на динамической форме остаются исходные данные.

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

II. Форма из конфигурации расширения
1. Не понял порядок работы и подключения:
- скопировал форма-шаблон;
- установил нужный тип основному реквизиту формы "объект"
- произведите необходимую настройку формы - не сделал. Что это?

При выборе этого режима отображается форма как в варианте I. Как увидеть отличия? и В чем суть разницы?
2. duhh 239 29.05.20 14:44 Сейчас в теме
(1)

1. Изменить процедуру
&НаКлиенте
Процедура ОбновитьДанные(Команда)

ДопПараметры = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
ОсновнойРеквизитФормы = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьДанныеФормыВлвдельца(ДопПараметры, ВладелецФормы, ОсновнойРеквизитФормы);
ОбновитьДанныеФормы(ДопПараметры);

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

2. Разница, в первом случае это динамически программно создаваемая форма, во втором форма настраиваемая в конфигураторе, выбор варианта использования настраивается в предприятии в форме настройки расширяемой формы.
3. lion11 145 26.06.23 10:39 Сейчас в теме
Платформа 8.3.22.1750. БП 3.0.138.25
Если доп. реквизитов много, а основная форма не большая, то доп.форма открывается укороченной, надо постоянно увеличивать пользователю, что не удобно.
Можно ее как-то увеличить изначально?

При использовании 2 варианта с настраиваемой формой не дает сохранить значения доп реквизитов. Выходит окно "Не удалось начать редактирование. Пользователь уже начал редактировать эти данные".
Это можно как-то исправить?
Для отправки сообщения требуется регистрация/авторизация