Немного поискав в истории не нашел ничего похожего. Возможно плохо искал.
Это только идея. Ее можно развивать дальше. но я ограничился простым механизмом.
Для управляемых форм можно придумать более изящное решение.
Проблема:
Конфигурация УПП. Работают на обычных формах. На основании документов необходимо вводить запись в регистре. Ну франч соответственно сделал кнопку в меню Ввод на основании. При очередном обновлении я запарился вручную переносить изменения типовой формы в измененную.
Описание идеи:
Платформа сама заполняет этот пункт меню из объектов, в которых указано что они вводятся на основании. Решил использовать его для создания программного списка создания на основании.
Что решил сделать:
1 Я решил добавить свой справочник «Дополнительный ввод на основании».
2 Для него указываю на основании каких объектов он должен создаваться
3 Добавляю предопределенные значения в справочник. Они означают конкретный вид Ввода на основании
4 Для справочника добавил табличную часть «Объекты». В ней указывается перечень видов объекта для которых используется заполнение. Используется как ограничение.
Если НЕ Предопределенный Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
5 В обработке заполнения написал:
5.1 Выборку заполнения для конкретного объекта
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| AVA_ДополнительныйВводНаОснованииОбъекты.Ссылка,
| AVA_ДополнительныйВводНаОснованииОбъекты.Ссылка.Наименование КАК Наименование
|ИЗ
| Справочник.AVA_ДополнительныйВводНаОсновании.Объекты КАК AVA_ДополнительныйВводНаОснованииОбъекты
|ГДЕ
| ТИПЗНАЧЕНИЯ(AVA_ДополнительныйВводНаОснованииОбъекты.ПустаяСсылкаОбъекта) = ТИПЗНАЧЕНИЯ(&Объект)";
Запрос.УстановитьПараметр("Объект", ДанныеЗаполнения);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Для данного вида объекта нет дополнительного ввода на основании", СтатусСообщения.Внимание);
Возврат;
КонецЕсли;
5.2 Открыть форму выбора вида ввода на основании
Выборка = Результат.Выбрать();
спВвода = Новый СписокЗначений;
Пока Выборка.Следующий() Цикл
спВвода.Добавить(Выборка.Ссылка, Выборка.Наименование);
КонецЦикла;
ВыборПунктаВводНаОсновании = спВвода.ВыбратьЭлемент("Что хотите ввести на основании?");
Если ВыборПунктаВводНаОсновании <> Неопределено
Тогда
ОсуществитьДополнительныйВводНаОсновании(ДанныеЗаполнения, ВыборПунктаВводНаОсновании.Значение);
КонецЕсли;
5.3 Ну и процедура обработки выбранного вида ввода на основании
Процедура ОсуществитьДополнительныйВводНаОсновании(ДанныеЗаполнения, ВидЗаполненияСсылка)
предСсылки = Справочники.AVA_ДополнительныйВводНаОсновании;
Если ВидЗаполненияСсылка = предСсылки.АС_ВременноЗамещающие Тогда
ВременноЗамещающие_ВводНаОсновании(ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ВременноЗамещающие_ВводНаОсновании(ДанныеЗаполнения)
//Документ Кадровое пермещение
//Документ Прием на работу в организацию
//Документ Увольнение из организации
Форма = РегистрыСведений.АС_ВременноЗамещающие.ПолучитьФорму("ФормаГрупповогоДобавления");
Форма.Основание = ДанныеЗаполнения; Форма.Открыть();
КонецПроцедуры
Дополнительно для пользователей в ролях необходимо указать для данного справочника:
— Чтение
— Добавление
а то не хватит прав
Тут возможные ошибки, к примеру: если заполнение будет с сервера, то ни о каком открытии формы не может быть речи.
Возможны и другие ошибки. Это только идея. Возможно, кому-нибудь пригодится.
(0)
Не знаю никого, кто бы работал в УПП на управялемых формах.
Только тру-1сники на форумах 🙂
Или я не понял, или:
вы сделали только ОБОЩАЮЩУЮ кнопку, которую также будете переносить из релиза в релиз вручную. А по кнопке вполне можно было вызывать обработку (внешнюю причем).
И там — форму ввода на основании. А там — список, чего надо ввести.
Причем список — можно динамически формировать, в зависимости от того, какой док его вызвал.
Так зачем тут нужен еще один справочник? 🙂
Проведение по регистру какое отношение имеет к вводу на основании? Что на основании чего вводится?
Какой пункт и где заполняет платформа? Судя по цитате выше — у вас вводится на «основании документов — запись регистра».
(2) AlexO,
И там — форму ввода на основании. А там — список, чего надо ввести.
Причем список — можно динамически формировать, в зависимости от того, какой док его вызвал.
Так зачем тут нужен еще один справочник? 🙂
Кнопка будет добавляться платформой, соответственно нет необходимости изменять типовую форму.
Вызов внешних обработок возможен только там, где этот механизм прикручен. Например заполнение табличной части(если изголяться).
А справочник нужен, чтобы появилась кнопка в меню «На основании»
Это приведен как пример. В конфигураторе для регистра сведений нельзя указать на основании какого документа может происходить заполнение записей.
Стандартный пункт меню на форме «Ввести на основании»
Возможно написал не очень понятно. С изложением мыслей беда. 🙂
(0) Идея отличная.
http://infostart.ru/public/155418/ .
Думаю объединить в одном служебном справочнике с
Главное при обновлении у каждого объекта не появляются лишние различия.
Некоторые добавляют регистр сведений подчиненный регистратору для получения новой кнопки в меню «Перейти», но этот регистр очень мешается при обновлении, так как по всем его регистратором вылезает различия в движениях.
Обломитесь, ребята 🙂
Как и для аналогичных «плясок» с документами НаОсновании — если вы впихнете ВО ВСЕ ДОКУМЕНТЫ свой справочник как «основание для этого документа», то вторым концом «палки» будет то, что она «стукнет» по каждому вписанному доку и впишется ему в поле «на основании» в свойствах, что вызовет цепную реакцию и обновление свойств и всякой связанных структур у доков.
(4)
Ну да 🙂
Я теперь понял смысл работы — но, увы. 1С не обманешь 🙂
Невозможно использовать платформенное «вписывание на основании» только с одного конца (в данном случае — с конца справочника).
(платформенное — это под «синей стрелочкой» и в контекстном меню в списке).
Работать-то работает, но так, как я описал выше — шило на мыло: здесь получаем, но и все доки переобновляются, т.е. нет отвязки от обновления. А потому — нет и смысла: обновлять так или эдак.
Или я в форме впишу НаОсновании, или вот таким «типовым» образом.
А что такое вообще «Ввод н а основании» у справочников — я до сих не понимаю 🙂
Оно вообще зачем там нужно? Да еще и конструктор есть…опупеть… на основании дока заполняешь реквизиты элемента справочника..
Сделал сравнение с конфой поставщика. Отличий не выявил по основанию.
А вот почему не показывает сие отличие сравнение с конфой поставщика — это вопрос к 1С.
ЗДЕСЬ не показывает.
А при установке обновления — покажет. Здесь же свойства дока типового изменяются («второй конец палки» 🙂 ).
Ну и, как я и говорил всегда, Справочник — это недоделанная связка РегистрСведений+Документ.
Видимо, оттуда и «перехала» вкладка ВводНаОсновании 🙂
AlexO, Именно я использовал данную возможность, чтобы избежать сравнение форм на отличие. Так как при обновление типовой конфигурации с изменениями львиная доля времени уходит на сравнение форм. А данная возможность позволяет вынести некоторые кнопки за рамки типовой формы.
(11)
Видимо, у вас ну огромное количество уникальных нетиповых вводов на основании 🙂
Интересная обработка. как раз то что искал. Как появятся день обязательно скачаю. автору спасибо так держать.
Спасибо за идею, пригодилось