Coder Social home page Coder Social logo

1cformeditor's Introduction

Release

Модуль изменения управляемых форм

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

Целью модуля является упрощенное добавление реквизитов формы, добавление их на форму (в том числе и таблиц), так же добавление групп, команд формы и кнопок к ним.

Установка

Установка производится через сравнение/объединения конфигурации с файлом поставки, с установкой на поддержку.

Предварительные требования

Модуль распространяется поставкой. Зависимостей не имеет.

Обновление

Обновление производится через обновление с сохранением конфигурации поставщика Для проверки корректности совместимистои версий необходимо открыть обработку тестирования обновляемой версии(которая входит в поставку) на версии, на которую будет обновлен модуль.

Начало работы

Предварительная подготовка

Необходимо добавить вызов процедуры, содержащей код программного добавления в самое начало следующих процедур:

  • ПриСозданииНаСервере()
  • ПриЧтенииНаСервер() - если форма имеет возможность открытия существующего объекта
Пример кода подготовки
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   ПрефиксПодготовитьФорму();
   //Текст процедуры	
КонецПроцедуры 	

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   ПрефиксПодготовитьФорму();
   //Текст процедуры	
КонецПроцедуры 

&НаСервере	
Процедура ПрефиксПодготовитьФорму()
   Если РедакторФорм.ФормаПодготовлена(ЭтаФорма) Тогда
   	Возврат;
   КонецЕсли;
   //Код изменения формы
КонецПроцедуры 

Данная архитектура необходима:

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

Так же данный подход позволяет использовать типовые процедуры, например УправлениеФормой().

Использование

Базовый пример использования

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

Программный интерфейс

  • Добавление полей

    ДобавитьПолеНаФорму(КонтекстЭлемента, ИмяПоля)
     КонтекстПоля = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаЛево);	
     КонтекстПоля.Свойства.Вставить("ПутьКДанным", "Статус");
     РедакторФорм.ДобавитьПолеНаФорму(КонтекстПоля, "Статус");
    ДобавитьПолеНаФормуРеквизитФормы(КонтекстЭлемента, ИмяРеквизита)
     КонтекстЭлемента = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаПраво);
     РедакторФорм.ДобавитьПолеНаФормуРеквизитФормы(КонтекстЭлемента, "Состояние");
  • Добавление групп

    ДобавитьГруппуНаФорму(КонтекстЭлемента, ИмяГруппы)
     КонтекстСтраницы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект);
     КонтекстСтраницы.Свойства.Вставить("Вид", ВидГруппыФормы.Страницы);
     ГруппаСтраницы = РедакторФорм.ДобавитьГруппуНаФорму(КонтекстСтраницы, "ГруппаСтраницы");
    
     КонтекстСтраницы.Свойства.Вид = ВидГруппыФормы.Страница;	
     КонтекстСтраницы.Родитель = ГруппаСтраницы;
     КонтекстСтраницы.Свойства.Вставить("Заголовок", "Товары");
     СтраницаТовары = РедакторФорм.ДобавитьГруппуНаФорму(КонтекстСтраницы, "СтраницаТовары");	
     
     КонтекстСтраницы.Свойства.Вставить("Заголовок", "Услуги");
     СтраницаУслуги = РедакторФорм.ДобавитьГруппуНаФорму(КонтекстСтраницы, "СтраницаУслуги");
    ДобавитьГруппуСКолонкамиЛевоИПраво(КонтекстЭлемента, ИмяОсновнойГруппы)
     КонтекстГруппы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.ГруппаОсновная);
     РедакторФорм.ДобавитьГруппуСКолонкамиЛевоИПраво(КонтекстГруппы, "Шапка");
     ШапкаЛево = Элементы.ШапкаЛево;
     ШапкаПраво = Элементы.ШапкаПраво;
    ДобавитьГруппуОбычную(КонтекстЭлемента, ИмяЭлемента)
     КонтекстГруппы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаСтраницаТовары);
     ГруппаИтогов = РедакторФорм.ДобыавитьГруппуОбычную(КонтекстГруппы, "ГруппаИтогов");
  • Добавление таблиц

    ДобавитьТаблицуНаФорму(КонтекстЭлемента, ИмяПоля, ПутьКДанным, СтруктураКолонок)
     КонтекстГруппТаблицы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаИтоговойТаблицы);
     
     СтруктураКолонок = Новый Структура;
     СтруктураКолонок.Вставить("ТаблицаКолонка1", "Колонка1");
     СтруктураКолонок.Вставить("ТаблицаКолонка2", "Колонка2");
     СтруктураКолонок.Вставить("ТаблицаКолонка3", "Колонка3");
     ЭлементТаблицаПроверряемыеМетоды = РедакторФорм.ДобавитьТаблицуНаФорму(КонтекстГруппТаблицы, "ИмяТаблицы", "Объект.ТаблицаОбъекта", СтруктураКолонок);	
    ДобавитьПолеТабличнойЧастиНаформу(КонтекстЭлемента, ПутьТабличнойЧасти, ИмяКолонкиТабличнойЧасти)
     КонтекстФормы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект);
     РедакторФорм.ДобавитьПолеТабличнойЧастиНаформу(КонтекстФормы, "Объект.ИмяТаблицы", "ИмяКолонки");
  • Добавление команд

    ДобавитьКнопкуНаФорму(КонтекстЭлемента, ИмяКнопки, ВидКнопки, ИмяКоманды)
     КонтекстГруппыКнопок = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаКнопок);
     РедакторФорм.ДобавитьКнопкуНаФорму(КонтекстГруппыКнопок, "ИмяКоманды", ВидКнопкиФормы.ОбычнаяКнопка, "Подключаемый_КомандаИмяКнопки");
    ДобавитьКомандуИГиперссылкуНаФорму(КонтекстЭлемента, ИмяКоманды, ПроцедураОбработки, ЗаголовокГиперссылки, ГруппаВывода)
     КонтекстКоманды = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.Группа);
     РедакторФорм.ДобавитьКомандуИГиперссылкуНаФорму(КонтекстКоманды, "ИмяКоманды", "Подключаемый_КомандаИмяКоманды", "Очистить все");
    ДобавитьКомандуИКнопкуКоманднойПанели(КонтекстЭлемента, ИмяКоманды, ЗаголовокКнопки)
     КонтекстКоманды = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.Группа);
     КонтекстФормы.Родитель = ЭлементТаблицаПроверряемыеМетоды.КоманднаяПанель;
     РедакторФорм.ДобавитьКомандуИКнопкуКоманднойПанели(КонтекстФормы, "КомандаКнопки3", "Обновить");
    ДобавитьКомандуИКнопкуНаФорму(КонтекстЭлемента, ИмяКоманды, ЗаголовокКнопки)
     КонтекстКнопки = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.ГруппаИтоги);
     РедакторФорм.ДобавитьКомандуИКнопкуНаФорму(КонтекстКнопки, "ИмяКоманды", "Заголовок");
    ДобавитьКомандуНаФорму(КонтекстЭлемента, ИмяКоманды, ИмяДействия, Заголовок, Подсказка)
     КонтекстКоманда = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.Группа);	
     РедакторФорм.ДобавитьКомандуНаФорму(КонтекстКоманда, "Обновить", "Подключаемый_Обновить", "Обновить информаци");
  • Добавление реквизитов объекта

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

Запуск тестов

Тесты запускаются через vanessa runner: файл run_vanessa.bat.

Authors

See the list of contributors who participated in this project.

1cformeditor's People

Contributors

huxuxuya avatar lemkus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.