"Вывести список" - вызвать самостоятельно

1. Veetavas 12.11.14 17:07 Сейчас в теме
Смотрим картинку.
Есть такой пунктик у контекстного меню: "Вывести список" - открывает форму, в которой выбираем столбцы для вывода, затем открывается табличный документ, который сожно сохранить в любом формате.
Вопрос: как такую же штуку можно прикрутить к своей форме(управляемая)?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Salavat 14 12.11.14 17:19 Сейчас в теме
(1) Veetavas, Свойство элемента - Вывод.
adhocprog; obmanOZ; +2 Ответить
3. Boneman 302 12.11.14 17:24 Сейчас в теме
(1) Veetavas, в УФ, все также, это стандартная команда формы. Ничего программировать не нужно. Меню - ВсеДействия - вывести список.
Ну а если хочется прямо в контекстное, то и добавить контекстное меню и перетащить туда эту команду
4. Veetavas 12.11.14 18:08 Сейчас в теме
С этим понял, спасибо.
Задача усложнена: на форме есть две ТЧ. Выводить надо данные из обеих. То есть для каждой ТЧ открывать такое окно выбора, и для каждой выводить свой ТД. Можно ли(и как, если можно) реализовать такое по нажатию одной кнопки?
Пока есть две кнопки на форме для каждой ТЧ соответственно.
5. Salavat 14 12.11.14 18:50 Сейчас в теме
(4) Veetavas, сделать одну общую кнопку, которая вызывает по очереди, действия первых двух.
не?
6. Veetavas 13.11.14 09:47 Сейчас в теме
(5) Salavat, именно. Как под действие этой кнопки загнать две стандартные команды? Что-то я не догоняю(
7. miniogn 30 13.11.14 09:59 Сейчас в теме
(6) Вроде нет возможности программно сделать типовой вывод.
8. Salavat 14 13.11.14 10:38 Сейчас в теме
(7) miniogn, возможно - даже не искал я.
но, ничто не мешает программно создать ТабличныйДокумент, заполнить и Показать() его.
хоть для двух, хоть для скольки ТЧ.
10. Veetavas 13.11.14 14:06 Сейчас в теме
(8) Salavat, ну а как же выбор полей для вывода? Тогда уже не только ТЧ создавать, но и форму окна. О типовых инструментах тогда забываем.

(9) KrivosheevEV, нет. Результаты отчета.
12. Salavat 14 13.11.14 15:10 Сейчас в теме
(10) Veetavas, чтото.... сдаётся мне - Вы из пальца высосать пытаетесь не знаю что.
или просто я не пойму ничего тогда.

или Вы из тех, кто мечтает сделать кнопку "Сделать ВСЁ прекрасно!"?
maksa2005; +1 Ответить
9. KrivosheevEV 13.11.14 11:10 Сейчас в теме
Внешняя печатная форма? Я угадал?
11. KrivosheevEV 13.11.14 14:56 Сейчас в теме
Результаты 2х отчётов таким образом склеить в один? Мне весело.
13. Veetavas 13.11.14 17:02 Сейчас в теме
(11) KrivosheevEV, специфика отчета. Не правильно поняли.

(12) Salavat, из этой области.

Короче, для каждой ТЧ своя кнопка. Ничего умнее нет в природе.
14. manfeese 25.09.17 13:49 Сейчас в теме
Для обычных форм можно использовать следующий код. Единственный недостаток данного метода - выводит только те колонки табличного поля, которые связаны с данными.

Функция ТабличноеПолеВТабличныйДокумент(ТабличноеПоле)
	
	ТабДокумент   = Новый ТабличныйДокумент;
	
	ГраницаСлева  = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
	ГраницаСправа = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
	ГраницаСверху = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
	ГраницаСнизу  = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
	
	НомерСтроки = 0;
	
	Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
		
		Если Колонка.Данные = "" Тогда
			Продолжить;
		КонецЕсли;
		
		ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
		КолонкаТабличногоПоля = ТабДокумент.Область(, ИндексКолонки+1, , ИндексКолонки+1);
		КолонкаТабличногоПоля.ШиринаКолонки = Колонка.Ширина;
		
	КонецЦикла;
	
	Если ТабличноеПоле.Шапка Тогда
		
		НомерСтроки = НомерСтроки + 1;
		Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
			
			Если Колонка.Данные = "" Тогда
				Продолжить;
			КонецЕсли;
			
			ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
			ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
			ОбластьЯчейки.Текст                   = Колонка.ТекстШапки;
			ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаШапки);
			ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
			ОбластьЯчейки.Шрифт                   = Колонка.ШрифтШапки;
			ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВШапке;
			ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
			
		КонецЦикла;
		
	КонецЕсли;
	
	Построитель = Новый ПостроительЗапроса;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличноеПоле.Значение);
	Для Каждого ЭлементОтбораИсточник Из ТабличноеПоле.ОтборСтрок Цикл
		Если ЭлементОтбораИсточник.Использование = Ложь Тогда
			Продолжить;
		КонецЕсли;
		ЭлементОтбораПриемник = Построитель.Отбор.Добавить(ЭлементОтбораИсточник.ПутьКДанным);
		ЭлементОтбораПриемник.Использование = ЭлементОтбораИсточник.Использование;
		ЭлементОтбораПриемник.ВидСравнения  = ЭлементОтбораИсточник.ВидСравнения;
		ЭлементОтбораПриемник.Значение      = ЭлементОтбораИсточник.Значение;
		ЭлементОтбораПриемник.ЗначениеС     = ЭлементОтбораИсточник.ЗначениеС;
		ЭлементОтбораПриемник.ЗначениеПо    = ЭлементОтбораИсточник.ЗначениеПо;
	КонецЦикла;
	Построитель.Выполнить();
	
	Результат = Построитель.Результат;
	Выборка   = Результат.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		НомерСтроки = НомерСтроки + 1;
		
		Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
			
			Если Колонка.Данные = "" Тогда
				Продолжить;
			КонецЕсли;
			
			ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
			ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
			ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаПоля.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаПоля, Колонка.ЦветФонаПоля);
			ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
			ОбластьЯчейки.Шрифт                   = Колонка.ШрифтТекста;
			ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВКолонке;
			ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
			
			ФорматнаяСтрока = "";
			ЗначениеЯчейки  = Выборка[Колонка.Данные];
			ТипКолонки      = Результат.Колонки[Колонка.Данные].ТипЗначения;
			
			Если ТипЗнч(ЗначениеЯчейки) = Тип("Число") Тогда
				КвалификаторыЧисла  = ТипКолонки.КвалификаторыЧисла;
				ФорматнаяСтрока     = "ЧЦ=" + КвалификаторыЧисла.Разрядность + "; ЧДЦ=" + КвалификаторыЧисла.РазрядностьДробнойЧасти;
			ИначеЕсли ТипЗнч(ЗначениеЯчейки) = Тип("Дата") Тогда
				КвалификаторыДаты = ТипКолонки.КвалификаторыДаты;
				Если КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
					ФорматнаяСтрока = "ДФ=dd.MM.yyyy";
				ИначеЕсли КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
					ФорматнаяСтрока = "ДФ=HH:mm:ss";
				КонецЕсли;
			КонецЕсли;
			
			Если ЗначениеЗаполнено(ФорматнаяСтрока) Тогда
				ОбластьЯчейки.Текст = Формат(ЗначениеЯчейки, ФорматнаяСтрока);
			ИНаче
				ОбластьЯчейки.Текст = ЗначениеЯчейки;
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЦикла;
	
	Если ТабличноеПоле.Подвал Тогда
		
		НомерСтроки = НомерСтроки + 1;
		Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
			
			Если Колонка.Данные = "" Тогда
				Продолжить;
			КонецЕсли;
			
			ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
			ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
			ОбластьЯчейки.Текст                   = Колонка.ТекстПодвала;
			ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаПодвала);
			ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
			ОбластьЯчейки.Шрифт                   = Колонка.ШрифтПодвала;
			ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВПодвале;
			ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
			
		КонецЦикла;
		
	КонецЕсли;
	
	Возврат ТабДокумент;
	
КонецФункции
Показать
15. tormozit 7230 25.09.17 13:59 Сейчас в теме
В ИР реализована своя полностью универсальная команда "Вывести строки" для обычных и управляемых форм (например для результата запроса в консоли запросов). Возможно автору это поможет.
16. vechiy 35 19.11.18 17:10 Сейчас в теме
можно просто перетащить команду в нужное место формы
Прикрепленные файлы:
new1ogin; ОльгаВ; It-developer; +3 Ответить
17. vindogardovv 11.09.23 23:01 Сейчас в теме
Указать свойство ПоложениеВКоманднойПанели - В командной панели
Оставьте свое сообщение

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