"Вывести список" - вызвать самостоятельно
Смотрим картинку.
Есть такой пунктик у контекстного меню: "Вывести список" - открывает форму, в которой выбираем столбцы для вывода, затем открывается табличный документ, который сожно сохранить в любом формате.
Вопрос: как такую же штуку можно прикрутить к своей форме(управляемая)?
Есть такой пунктик у контекстного меню: "Вывести список" - открывает форму, в которой выбираем столбцы для вывода, затем открывается табличный документ, который сожно сохранить в любом формате.
Вопрос: как такую же штуку можно прикрутить к своей форме(управляемая)?
Прикрепленные файлы:
По теме из базы знаний
- Рассылка расчетных листков по электронной почте для 1С:Зарплата и управление персоналом 8.2. Версия 3.
- Интеграция сценарного тестирования в процесс разработки
- Получение писем из любой папки электронной почты в 1С:Бухгалтерии
- Использование типовых возможностей 1С и их расширение. Часть 1
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
С этим понял, спасибо.
Задача усложнена: на форме есть две ТЧ. Выводить надо данные из обеих. То есть для каждой ТЧ открывать такое окно выбора, и для каждой выводить свой ТД. Можно ли(и как, если можно) реализовать такое по нажатию одной кнопки?
Пока есть две кнопки на форме для каждой ТЧ соответственно.
Задача усложнена: на форме есть две ТЧ. Выводить надо данные из обеих. То есть для каждой ТЧ открывать такое окно выбора, и для каждой выводить свой ТД. Можно ли(и как, если можно) реализовать такое по нажатию одной кнопки?
Пока есть две кнопки на форме для каждой ТЧ соответственно.
Для обычных форм можно использовать следующий код. Единственный недостаток данного метода - выводит только те колонки табличного поля, которые связаны с данными.
Функция ТабличноеПолеВТабличныйДокумент(ТабличноеПоле)
ТабДокумент = Новый ТабличныйДокумент;
ГраницаСлева = ?(ТабличноеПоле.ВертикальныеЛинии , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
ГраницаСправа = ?(ТабличноеПоле.ВертикальныеЛинии , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
ГраницаСверху = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
ГраницаСнизу = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
НомерСтроки = 0;
Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
Если Колонка.Данные = "" Тогда
Продолжить;
КонецЕсли;
ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
КолонкаТабличногоПоля = ТабДокумент.Область(, ИндексКолонки+1, , ИндексКолонки+1);
КолонкаТабличногоПоля.ШиринаКолонки = Колонка.Ширина;
КонецЦикла;
Если ТабличноеПоле.Шапка Тогда
НомерСтроки = НомерСтроки + 1;
Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
Если Колонка.Данные = "" Тогда
Продолжить;
КонецЕсли;
ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
ОбластьЯчейки = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
ОбластьЯчейки.Текст = Колонка.ТекстШапки;
ОбластьЯчейки.ЦветФона = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаШапки);
ОбластьЯчейки.ЦветРамки = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
ОбластьЯчейки.Шрифт = Колонка.ШрифтШапки;
ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВШапке;
ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
КонецЦикла;
КонецЕсли;
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличноеПоле.Значение);
Для Каждого ЭлементОтбораИсточник Из ТабличноеПоле.ОтборСтрок Цикл
Если ЭлементОтбораИсточник.Использование = Ложь Тогда
Продолжить;
КонецЕсли;
ЭлементОтбораПриемник = Построитель.Отбор.Добавить(ЭлементОтбораИсточник.ПутьКДанным);
ЭлементОтбораПриемник.Использование = ЭлементОтбораИсточник.Использование;
ЭлементОтбораПриемник.ВидСравнения = ЭлементОтбораИсточник.ВидСравнения;
ЭлементОтбораПриемник.Значение = ЭлементОтбораИсточник.Значение;
ЭлементОтбораПриемник.ЗначениеС = ЭлементОтбораИсточник.ЗначениеС;
ЭлементОтбораПриемник.ЗначениеПо = ЭлементОтбораИсточник.ЗначениеПо;
КонецЦикла;
Построитель.Выполнить();
Результат = Построитель.Результат;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
Если Колонка.Данные = "" Тогда
Продолжить;
КонецЕсли;
ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
ОбластьЯчейки = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
ОбластьЯчейки.ЦветФона = ?(Колонка.ЦветФонаПоля.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаПоля, Колонка.ЦветФонаПоля);
ОбластьЯчейки.ЦветРамки = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
ОбластьЯчейки.Шрифт = Колонка.ШрифтТекста;
ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВКолонке;
ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
ФорматнаяСтрока = "";
ЗначениеЯчейки = Выборка[Колонка.Данные];
ТипКолонки = Результат.Колонки[Колонка.Данные].ТипЗначения;
Если ТипЗнч(ЗначениеЯчейки) = Тип("Число") Тогда
КвалификаторыЧисла = ТипКолонки.КвалификаторыЧисла;
ФорматнаяСтрока = "ЧЦ=" + КвалификаторыЧисла.Разрядность + "; ЧДЦ=" + КвалификаторыЧисла.РазрядностьДробнойЧасти;
ИначеЕсли ТипЗнч(ЗначениеЯчейки) = Тип("Дата") Тогда
КвалификаторыДаты = ТипКолонки.КвалификаторыДаты;
Если КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
ФорматнаяСтрока = "ДФ=dd.MM.yyyy";
ИначеЕсли КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
ФорматнаяСтрока = "ДФ=HH:mm:ss";
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ФорматнаяСтрока) Тогда
ОбластьЯчейки.Текст = Формат(ЗначениеЯчейки, ФорматнаяСтрока);
ИНаче
ОбластьЯчейки.Текст = ЗначениеЯчейки;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ТабличноеПоле.Подвал Тогда
НомерСтроки = НомерСтроки + 1;
Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл
Если Колонка.Данные = "" Тогда
Продолжить;
КонецЕсли;
ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
ОбластьЯчейки = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
ОбластьЯчейки.Текст = Колонка.ТекстПодвала;
ОбластьЯчейки.ЦветФона = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаПодвала);
ОбластьЯчейки.ЦветРамки = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
ОбластьЯчейки.Шрифт = Колонка.ШрифтПодвала;
ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВПодвале;
ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);
КонецЦикла;
КонецЕсли;
Возврат ТабДокумент;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот