"Ввод на основании" в форме "Структуры подчиненности"

22.12.15

Разработка - Работа с интерфейсом

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

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

Вариант 1. С добавлением элементов на форму в режиме конфигуратора и добавлением программного кода.

Опишу по шагам:
1. Добавьте на форму "Структуры подчиненности" новые элементы управления Командная  панель и Табличное поле. Табличному полю сопоставьте реквизит типа ДокументСписок.ЛюбойТипДокумента, командной панели в качестве источника назначьте это табличное поле, установите свойство Автозаполнение = Истина. При этом на командной панели появятся стандартные кнопки, среди которых есть "Ввести на основании". Скопируйте эту кнопку и вставьте в самое начало.

2. Удалите новый элемент Табличное поле. При этом скопированная кнопка должна остаться на командной панели и свойство Автозаполнение = Истина.

3. Настройте положение, привязки, оформление командной панели как вам удобно. (Я предпочел разместить в правом верхнем углу.) Чтобы не было видно ненужные автокнопки, можно накрыть их поверх новой Панелью и тоже настроить привязки.

4. Вставьте программный код в двух местах.


В обработчике формы ПередОткрытием
    
   

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

В обработчике Процедура ДеревоДокументовПриАктивизацииСтроки(Элемент)

	ЭлементыФормы.СпискиДокументов.ТипЗначения = Новый ОписаниеТипов("ДокументСписок."+Элемент.ТекущиеДанные.Ссылка.метаданные().Имя);
	ЭлементыФормы.СпискиДокументов.ТекущаяСтрока = Элемент.ТекущиеДанные.Ссылка;


Здесь "СпискиДокументов"  - программно создаваемый элемент управления Табличное поле, КоманднаяПанельВводаНаОсновании - добавленная в п.1 командная панель.

Вариант 2. Полностью программный способ.


Вставьте программный код в двух местах.


В обработчике формы ПередОткрытием

	Если ЭлементыФормы.Найти("СпискиДокументов") = Неопределено Тогда
		ТабличноеПолеСписок = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), //Тип элемента
		"СпискиДокументов", //Имя
		Ложь, //Видимость 
		); // Расположение, родитель
		
		КПВводаНаОсновании = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), //Тип элемента
		"КоманднаяПанельВводаНаОсновании", //Имя
		Истина, //Видимость 
		); // Расположение, родитель
		
		
		КПВводаНаОсновании.Верх = 0;
		КПВводаНаОсновании.Лево = Этаформа.Ширина - 53;
		КПВводаНаОсновании.Ширина = 53;
		КПВводаНаОсновании.Высота = 25;
		КПВводаНаОсновании.ЦветФона = ЦветаСтиля.ЦветФонаКнопки;
		КПВводаНаОсновании.Рамка = Новый Рамка(ТипРамкиЭлементаУправления .Подчеркивание,1);
		КПВводаНаОсновании.Вспомогательная = Истина;
		КПВводаНаОсновании.ПорядокОбхода = 2;
		КПВводаНаОсновании.Доступность = Истина;

		
		НоваяКнопка = КПВводаНаОсновании.Кнопки.Добавить("ПодменюВводНаОсновании", ТипКнопкиКоманднойПанели.Подменю, "На основании");
		НоваяКнопка.Подсказка = "Ввести на основании";
		НоваяКнопка.Пояснение = "Выбор объекта, которого необходимо заполнить на основании данного объекта";
		НоваяКнопка.Отображение =  ОтображениеКнопкиКоманднойПанели.Авто;
		НоваяКнопка.Картинка = БиблиотекаКартинок.ВводНаОсновании;
		
		КПВводаНаОсновании.Автозаполнение = Истина;
		КПВводаНаОсновании.ИсточникДействий = ТабличноеПолеСписок; 
		
		
		КПВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Низ,
		КПВводаНаОсновании,
		ГраницаЭлементаУправления.Низ);
		КПВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Лево,
		КПВводаНаОсновании,
		ГраницаЭлементаУправления.Право);
		КПВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Право,
		ЭтаФорма.Панель,
		ГраницаЭлементаУправления.Право);
		
		
		ПДляВводаНаОсновании = ЭлементыФормы.Добавить(Тип("Панель"), //Тип элемента
		"ПанельДляВводаНаОсновании", //Имя
		Истина, //Видимость 
		); // Расположение, родитель
		
		ПДляВводаНаОсновании.Верх = 0;
		ПДляВводаНаОсновании.Лево = Этаформа.Ширина - 20;
		ПДляВводаНаОсновании.Ширина = 20;
		ПДляВводаНаОсновании.Высота = 25;
		ПДляВводаНаОсновании.ЦветФона = ЦветаСтиля.ЦветФонаКнопки;
		ПДляВводаНаОсновании.Рамка = Новый Рамка(ТипРамкиЭлементаУправления .Подчеркивание,1);
		ПДляВводаНаОсновании.ОтображениеЗакладок = ОтображениеЗакладок .НеИспользовать;
		ПДляВводаНаОсновании.ПорядокОбхода = 3;
		
		
		ПДляВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Низ,
		ПДляВводаНаОсновании,
		ГраницаЭлементаУправления.Низ);
		ПДляВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Лево,
		ПДляВводаНаОсновании,
		ГраницаЭлементаУправления.Право);
		ПДляВводаНаОсновании.УстановитьПривязку(ГраницаЭлементаУправления.Право,
		ЭтаФорма.Панель,
		ГраницаЭлементаУправления.Право);
	
	КонецЕсли;

В обработчике Процедура ДеревоДокументовПриАктивизацииСтроки(Элемент)

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

 

 

Всё. Наслаждайтесь удобной функцией! :)


См. также

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

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

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

29400 руб.

29.06.2023    4448    9    4    

18

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

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

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

7200 руб.

02.08.2023    2950    4    0    

19

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61792    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54394    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16695    21    4    

35
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. help1Ckr 31.07.13 09:47 Сейчас в теме
Печаль, что нельзя добавить не меняя конфигурацию. А так за старания плюс
2. Pim 180 22.12.15 07:07 Сейчас в теме
Зачем во 2-ом варианте строка "ИндексКнопки = КнопкиКПВводаНаОсновании.индекс(КПВводаНаОсновании);"?
3. zaxarovsky 111 22.12.15 11:43 Сейчас в теме
(2) Pim, О! Спасибо за поправку! Это лишнее, не заметил. Удалю...
4. jefjef 10 18.06.21 15:48 Сейчас в теме
Годно. Сделал по первому варианту, только дополнительную панель кинул прям на дерево и сделал невидимой. Заполнил её всем чем надо и прописал в контекстное меню дерева. Работает, бухи довольны как слоны. Спасибо.
Оставьте свое сообщение