Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

21.03.24

Задачи пользователя - Адаптация типовых решений

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

Расскажу, как это можно сделать, если у вас конфигурация на БСП. Если что не так или можно проще, пишите комментарии - буду рад.

1. В расширение добавляем процедуру общего модуля СозданиеНаОснованииПереопределяемый и добавляем свой документ. 

&Перед("ПриОпределенииОбъектовСКомандамиСозданияНаОсновании")
Процедура Моя_ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты)
	//- Комментарий 28.02.2024
	Объекты.Добавить(Метаданные.Документы.Мой_НовыйДокумент);
	//	
КонецПроцедуры

2. В формах в командную панель добавляем подменю как на картинке (копируем из другого документа).

 

 

3. В модуле менеджера своего документа добавляем в процедуру все документы, которые вводятся на основании. Первым пунктом мы видим как раз добавление своей команды. Команда вызывает Общий модуль с галкой Клиент, а в нем процедуру "СоздатьЗаявкинаРасходДС".

Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт 
	//+ Комментарий 28.02.2024 13:07:11
	// добавляем возможность распределить заявку на конкретную партию номенклатуры
	Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаявкаНаРасходованиеДенежныхСредств)  Тогда 
		КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
		КомандаСоздатьНаОсновании.Менеджер = Метаданные.ОбщиеМодули.МойКлиентскийМодуль.ПолноеИмя();
		КомандаСоздатьНаОсновании.Обработчик = "СоздатьЗаявкиНаРасходДС";   	
		КомандаСоздатьНаОсновании.Представление =  "Заявка на расходование ДС (с распределением)"; 
	КонецЕсли;
	
    //для документов из конфигурации этот код сработает
	Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
    // чтобы отработал код для своего документа нужно еще добавить в их модуль менеджера код из п.4
	Документы.МойДокумент.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
			
КонецПроцедуры	   

4. В модуле менеджера своих документов добавляем 

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

4. Если до этого вы использовали обычный подход для указания того, что документ является основание для других документов, то у вас возможно появится два подменю "Создать на основании"

 

 

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

 

 

5. По умолчанию подменю отображается как картинка, но это неудобно для пользователей - метиться надо. Внизу как включить текст.

 

 

Тестировалось на платформе 8.3.23.2040. На конфигурации ERP.

Добавляем в избранное и читаем другие мои публикации.

Из той же серии:

1. Условное оформление строк и полей Таблицы значений и Дерева значений (готовый код)

2. Создание нового элемента из поля формы с заполнением реквизитов

3. Выполнение любой дополнительной обработки в фоне

4. Расшифровка отчета. Код, который я использую

5. Прикрепляем файл к новому документу (БСП). Простенькая шпаргалка.

6. Регламентное задание с настройками без нового регистра.

7. Форма выбора с отбором. Пять вариантов настройки отбора

ввод на основании новая кнопка команда два подменю создать на основании

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4725    10    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3146    4    0    

20

БСП. Добавляем отчет в меню Отчеты

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3301    John_d    10    

90
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dhurricane 02.03.24 10:08 Сейчас в теме
Продолжаете писать полную версию платформы и не указывать версию конфигурации, даже редакцию. :)

Применяемый в ERP механизм создания на основании использует БСП-шную подсистему Подключаемые команды. Он работает независимо от того, указали ли Вы в конфигураторе в карточке документа настройки ввода на основании или нет. Поэтому Вам проще было бы помимо встраивания подключаемых команд не дорабатывать форму списка документов, ее командную панель, а убрать вовсе платформенный ввод на основании для документа.
EvgeniyOlxovskiy; Cmapnep; +2 Ответить
2. dimanich70 644 02.03.24 14:13 Сейчас в теме
(1) Номер релиза ЕРП? Сегодня он один завтра будет другой. У кого-то вообще не ЕРП, а тема окажется полезной и поможет сберечь кучу времени. Думаю не критично это.
Tatyana_012345; +1 Ответить
3. dhurricane 02.03.24 15:33 Сейчас в теме
(2) Я Вам в прошлый раз отвечал на это, но видимо, но убедил. :-)

Та проблема, с которой Вы столкнулись, происходит из-за отказа в Библиотеки стандартных подсистем от платформенного механизма ввода на основании в пользу генерации кнопок программно на базе подсистемы Подключаемых команд. Из-за этого то Вы и видите два подменю: один от БСП, другой от платформы. Соответственно, в конфигурациях на базе БСП, особенно при доработке типовых документов, следует пользоваться именно БСП-шным механизмом ввода на основании.

Сегодня БСП работает так, завтра по-другому, и Ваши рекомендации, какой код куда вставлять станут неактуальными. От того то и считается хорошим тоном указывать версию библиотеки, от которой реально и зависит реализация Вашей инструкции. И Вы правильно сказали, что это может быть и не ERP, а какая-нибудь другая конфигурация. Реализация зависит от версии БСП, а не от версии прикладной конфигурации. Но вот по версии конфигурации можно хотя бы понять, какая версия БСП используется. Поэтому информация о версии конфигурации лишней не будет.

А вот информация о версии платформы, тем более с точностью до сборки, как раз бесполезна. От платформы описанное Вами поведение с двумя менюшками никак не зависит совершенно.
ixijixi; itmind; Sam13; EvgeniyOlxovskiy; +4 Ответить
4. dimanich70 644 02.03.24 20:43 Сейчас в теме
5. Sam13 342 04.03.24 10:01 Сейчас в теме
(3) Он был строг, но справедлив :)
6. dimanich70 644 04.03.24 10:07 Сейчас в теме
7. rmIvanT 68 11.04.24 18:49 Сейчас в теме
Статья хорошая, ещё бы пример ОбщиеМодули.МойКлиентскийМодуль.СоздатьЗаявкиНаРасходДС
этой процедуры, для полной картинки
8. rmIvanT 68 11.04.24 19:12 Сейчас в теме
нашёл:
Процедура СоздатьОбъектЭксплуатации(ПараметрКоманды, ПараметрыВыполненияКоманды) Экспорт

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

КонецПроцедуры
Показать


А потом открываем модуль объекта, находим процедуру «ОбработкаЗаполнения» и добавляем ее к нам в расширение с типом вызова «ВызватьПосле»
Оставьте свое сообщение