Каталог решений - Ввод на основании любого объекта

Ввод на основании любого объекта

Ввод на основании любого объекта

В наличии

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

Категория:

Описание

Немного поискав в истории не нашел ничего похожего. Возможно плохо искал.

Это только идея. Ее можно развивать дальше. но я ограничился простым механизмом.

Для управляемых форм можно придумать более изящное решение.

Проблема:

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

Описание идеи:

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

Что решил сделать:

1 Я решил добавить свой справочник «Дополнительный ввод на основании».

2 Для него указываю на основании каких объектов он должен создаваться

3 Добавляю предопределенные значения в справочник. Они означают конкретный вид Ввода на основании

4 Для справочника добавил табличную часть «Объекты». В ней указывается перечень видов объекта для которых используется заполнение. Используется как ограничение.

 

Если НЕ Предопределенный Тогда

        Отказ = Истина;

        Возврат;

КонецЕсли;

 

5 В обработке заполнения написал:

5.1 Выборку заполнения для конкретного объекта

 

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ РАЗЛИЧНЫЕ

| AVA_ДополнительныйВводНаОснованииОбъекты.Ссылка,

| AVA_ДополнительныйВводНаОснованииОбъекты.Ссылка.Наименование КАК Наименование

|ИЗ

| Справочник.AVA_ДополнительныйВводНаОсновании.Объекты КАК AVA_ДополнительныйВводНаОснованииОбъекты

|ГДЕ

| ТИПЗНАЧЕНИЯ(AVA_ДополнительныйВводНаОснованииОбъекты.ПустаяСсылкаОбъекта) = ТИПЗНАЧЕНИЯ(&Объект)";

Запрос.УстановитьПараметр("Объект", ДанныеЗаполнения);

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

Сообщить("Для данного вида объекта нет дополнительного ввода на основании", СтатусСообщения.Внимание);

Возврат;

КонецЕсли;

 

 5.2 Открыть форму выбора вида ввода на основании

 

Выборка = Результат.Выбрать();

спВвода = Новый СписокЗначений;

Пока Выборка.Следующий() Цикл

             спВвода.Добавить(Выборка.Ссылка, Выборка.Наименование);

КонецЦикла;

ВыборПунктаВводНаОсновании = спВвода.ВыбратьЭлемент("Что хотите ввести на основании?");

Если ВыборПунктаВводНаОсновании <> Неопределено Тогда

           ОсуществитьДополнительныйВводНаОсновании(ДанныеЗаполнения, ВыборПунктаВводНаОсновании.Значение);

КонецЕсли;

 

5.3 Ну и процедура обработки выбранного вида ввода на основании


Процедура ОсуществитьДополнительныйВводНаОсновании(ДанныеЗаполнения, ВидЗаполненияСсылка)


предСсылки = Справочники.AVA_ДополнительныйВводНаОсновании;

Если ВидЗаполненияСсылка = предСсылки.АС_ВременноЗамещающие Тогда

        ВременноЗамещающие_ВводНаОсновании(ДанныеЗаполнения);

КонецЕсли;


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


Процедура ВременноЗамещающие_ВводНаОсновании(ДанныеЗаполнения)


//Документ Кадровое пермещение

//Документ Прием на работу в организацию

//Документ Увольнение из организации

Форма = РегистрыСведений.АС_ВременноЗамещающие.ПолучитьФорму("ФормаГрупповогоДобавления");

Форма.Основание = ДанныеЗаполнения; Форма.Открыть();


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


Дополнительно для пользователей в ролях необходимо указать для данного справочника:

— Чтение

— Добавление

а то не хватит прав


Тут возможные ошибки, к примеру: если заполнение будет с сервера, то ни о каком открытии формы не может быть речи.

Возможны и другие ошибки. Это только идея. Возможно, кому-нибудь пригодится.

 


has been added to your cart:
Оформление заказа