Пустая форма объекта в расширении

16.02.23

Разработка - Инструментарий разработчика

Создание пустой формы объекта в расширении для добавления элементов формы программно или для изменения процедур формы объекта.

Скачать исходный код

Наименование Файл Версия Размер
Пример расширения с пустой формой:
.cfe 8,15Kb
0
.cfe 8,15Kb Скачать

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

Предлагаю способ добавления пустой формы в расширение. Решение "через одно место", но вполне рабочее.

Где-то читал, что программное добавление элементов замедляет работу при большом количестве пользователей, но в моём случае пользователей немного, поэтому добавляю программно.

В примере добавляю форму документа, поэтому использую документ, хотя может быть любой объект.

Нужно сделать новую базу с пустой конфигурацией.

Для Конфигурации указать режим совместимости такой же, как в рабочей базе.

Добавляем в пустую конфигурацию документ с таким же именем, как в основной конфигурации и к документу добавляем форму с соответствующем именем.

В форме в Командной панели нужно снять флажок "Автозаполнение", чтобы форма была совсем пустая.

 

 

Затем создаём новое расширение и добавляем в него созданную форму документа.

Сохраняем расширение в файл.

 

 

В рабочей базе создаём новое расширение и загружаем в него расширение из файла.

При загрузке будет выдана ошибка "Обнаружены проблемы при применении расширения конфигурации"

Откроется окно "Проверка возможности применения".

Обнаруженная проблема
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Язык.Русский не совпадает со значением в расширяемой конфигурации"
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Документ.НачислениеЗарплаты.Форма.ФормаДокумента не совпадает со значением в расширяемой конфигурации"

В колонке "Действия" нажимаем на ссылку "Исправить" и выбираем пункт "Сохранить имя, изменив соответствие".

 

 

Теперь у нас есть расширение, в котором пустая форма и в ней можно программно добавить кнопку и команду.

Для примера код добавления кнопки и назначение этой кнопке команды, которая в процессе работы выполняет процедуру модуля формы.

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

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

Тестировалось на 1С:Предприятие 8.3 (8.3.22.1750), Конфигурация Зарплата и кадры государственного учреждения КОРП, редакция 3.1 (3.1.24.408).

Если статья была полезна, то можно  скачать файл-пример, и я получу за это монетки :-)

расширение пустая форма

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    127019    687    389    

738

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    8412    24    6    

46

Infostart УДиФ: Управление данными и формами 1С

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

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

10000 руб.

10.11.2023    4734    12    2    

38

SALE! %

PowerTools

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

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

3600 2280 руб.

14.01.2013    178937    1085    0    

862

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15115    3    12    

37

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99880    240    97    

298

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28427    4    10    

16

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18522    6    8    

40
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1801 17.02.23 10:13 Сейчас в теме
Или перехватывать модуль УправлениеСвойствами.ПриСозданииНаСервере(Форма, ДополнительныеПараметры) как подключенный почти ко всем важным формам конфиг на БСП.
cleaner_it; Mx00; +2 Ответить
2. Mx00 247 17.02.23 10:57 Сейчас в теме
(1) я не супер программист :-) у меня не получается после "ухода" с формы в общий модуль, выполнить процедуру формы, в данном случае это процедура ПерезаполнитьДанныеФормыНаКлиенте
3. ixijixi 1801 17.02.23 11:02 Сейчас в теме
(2) Я использую для таких случаев связку ПодключаемыеКоманды.ПриСозданииНаСервере() и ПодключаемыеКомандыКлиент.ВыполнитьКоманду(). На сервере добавляю команды и элементы, а на клиенте перехватываю метод формы Подключаемый_ВыполнитьКоманду() (от тоже почти везде есть).
cleaner_it; Mx00; mikl79; +3 Ответить
4. Mx00 247 17.02.23 11:58 Сейчас в теме
(3) вот после Подключаемый_ВыполнитьКоманду() я и не смог выполнить в модуле формы процедуру ПерезаполнитьДанныеФормыНаКлиенте
если есть время, то прошу сделать расширение которое выполнит процедуру ПерезаполнитьДанныеФормыНаКлиенте с отбором по одному сотруднику, а то у меня "мозх клинит" и я не вижу решения :-)
5. TMV 14 18.02.23 10:30 Сейчас в теме
(4) без добавления формы этого и не сделать
7. ixijixi 1801 19.02.23 18:17 Сейчас в теме
6. ixijixi 1801 19.02.23 18:16 Сейчас в теме
8. Mx00 247 19.02.23 23:56 Сейчас в теме
(6) спасибо, переделаю два блока, пересчёт взносов и НДФЛ, теперь остался не экспортный вариант :-)

&НаСервере
Функция УдалитьДанныеСотрудникаНаСервере(СотрудникФизическоеЛицо)
чисто в академический интерес при наличии времени :-)

нужен для того, чтобы из заполненного документа НачислениеЗарплаты удалить группу подразделений, т.к. их рассчитывают отдельно...
По большому счету желательно сразу заполнять документ НачислениеЗарплаты без этих подразделений, но разобраться где это ограничить я пока не смог, ведомости на выплату осилил, а начисление очень для меня сложно оказалось :-)
9. Mx00 247 20.02.23 00:45 Сейчас в теме
(3) Спасибо за пример, понял где я не так думал - "Подключаемый_ВыполнитьКоманду", я как-то не осознал, поэтому копал не в ту сторону :-)
я даже читал Динамическое формирование интерфейса от Дмитрия Котова, но всё равно запутался :-(
10. mikl79 118 21.02.23 14:19 Сейчас в теме
Спасибо за поднятие темы - я пустую форму сделал так:
1) создал новое расширение
2) добавил в него форму
3) удалил все что добавилось автоматом - объекты, элементы стиля, общие картинки
4) Выгрузить конфигурацию в файлы...
5) Загрузить конфигурацию из файлов...
6) Выгружаем конфигурацию расширения в файл
7) Загружаем в основное расширение через сравнить/объединить - флажок оставляем только на форме
и все получилась пустая форма
11. aleksey2 86 06.04.23 06:58 Сейчас в теме
(10) для чего выгружать в файлы?
12. mikl79 118 10.04.23 14:27 Сейчас в теме
(11), поправлюсь - перед "Загрузить конфигурацию из файлов..." нужно отредактировать файлы, например, я в ЗУПе добавлял форму Начисления - мне пришлось удалить папку D:\обмен\01\ChartsOfCalculationTypes\Начисления\Forms\ФормаВид­аРасчета
Иначе не создается именно пустая форма
Прикрепленные файлы:
Оставьте свое сообщение