Создание элементов текущего справочника на основании других

1. native-api 01.11.23 10:06 Сейчас в теме
Специализированная конфигурация, требуется создавать элементы справочника номенклатуры на основе записей госреестра. Проблема в том, что это нужно делать в тот момент, когда я нахожусь в форме списка/выбора номенклатуры и вижу, что нужного элемента нет. В форме списка справочника госреестра нужная команда есть, но чтобы ей воспользоваться, нужно каждый раз вручную туда переходить.

Подменю "создать на основании" по умолчанию содержит только пункты создания объектов других типов на основании текущего. Можно ли штатными средствами БСП заставить его работать также и в другую сторону -- т.е. создавать элементы текущего типа на основе других?
По теме из базы знаний
Найденные решения
5. newlogin1 01.11.23 13:59 Сейчас в теме
(4)Примерчик для РТИУ создание документа расходного ордера, почти ваш случай (упрощенно, сделать по аналогии надо)
В модуле менеджера РТИУ есть вызов
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании)

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


Вам обратить внимание на Обработчик - клиентский общий модуль где пишется логика. Если у вас УТшная база, зайдите в РТИУ и в обработчик потом, увидите как работает. В принципе если и БПшка, то будет почти тоже самое, только вместо обработчика будет какой нибудь Менеджер документа.
native-api; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. newlogin1 01.11.23 10:54 Сейчас в теме
(1)Смотря что у вас подразумевается под штатными. В целом вы можете склепать команду, которая откроет формочку списка(или свою форму), где пользователь выберет нужные ему записи и нажмет ОК и потом на основании этих записей вы вызовете типовой код, который формирует записи справочника по регистру.
3. native-api 01.11.23 12:12 Сейчас в теме
(2) Под "штатными" подразумеваются достигаемые видоизменением шаблонного кода вызова подсистемы БСП "Подключаемые команды" согласно Подключаемые команды :: Настройка и использование подсистем при разработке конфигурации :: Библиотека стандартных подсистем 3.1.8. Документация -- например, выставлением флагов или парой доп. вызовов.

Если это не предусмотрено, подойдет любой совет, в какую сторону копать.

1. Добавить доп. пункт в генерируемое БСП подменю "Создать на основании" -- ???
Предусмотрен коллбэк "ДобавитьКомандыСозданияНаОсновании" в модуле менеджера, но предлагаемый по ссылке выше код дублирует то, что уже прописано в метаданных объекта. Поэтому смысл этой процедуры непонятен. Также непонятно, как определяется логика этой команды, что мне переопределять, чтобы изменить ее указанным в шапке образом.
2. Выбор объекта-основания -- ОткрытьФорму(<Тип>.ПолучитьФормуВыбора()) + ОбработкаВыбора . Данная логика шаблонна, поэтому напрашивается в библиотеку -- возможно, это уже сделано?
3. Создание объекта на основании и открытие его формы -- Как выполнить ввод на основании программно? :: Типичные вопросы разработчиков при переходе с 1С:Предприятия 7.7 :: Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8. Этот код также напрашивается в библиотеку.
4. newlogin1 01.11.23 13:52 Сейчас в теме
(3)Как уже выше написал про команду, она добавляется через БСП, можно как внешнюю (никогда не пользовал https://infostart.ru/1c/articles/558559/) и через код. В модуле менеджера объекта (все впринципе делается через расширения) должна быть процедура ДобавитьКомандыСозданияНаОсновании в нее добавляете свою команду, аналогично другим. Делаете свой клиентский модуль (или можно в уже готовом, не критично) и в нем пишите код. В целом Флагами нельзя, но доп вызовами все что угодно.
native-api; +1 Ответить
5. newlogin1 01.11.23 13:59 Сейчас в теме
(4)Примерчик для РТИУ создание документа расходного ордера, почти ваш случай (упрощенно, сделать по аналогии надо)
В модуле менеджера РТИУ есть вызов
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании)

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


Вам обратить внимание на Обработчик - клиентский общий модуль где пишется логика. Если у вас УТшная база, зайдите в РТИУ и в обработчик потом, увидите как работает. В принципе если и БПшка, то будет почти тоже самое, только вместо обработчика будет какой нибудь Менеджер документа.
native-api; +1 Ответить
Оставьте свое сообщение

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