Как сохранить данные табличного поля в табличный документ / файл Excel программно

31.05.20

Интеграция - Загрузка и выгрузка в Excel

Пример сохранения табличного поля в табличный документ не через ПКМ -> Вывести список, с автоподбором ширины по содержимому.


Как-то заказчик попросил добавить возможность сохранять табличное поле в файл Excel кнопкой, а не через контекстное меню поля. К сожалению на просторах интернета не нашел готового решения, возможно плохо искал. Правда, в инструментах разработчика от TormozIT есть подобная штука, но увидел её уже намного позже чем сделал своё. Для того, чтобы визуально было более-менее приемлемо - пришлось прикрутить расчёт ширины колонок по содержимому (источник процедуры уже, к сожалению не припомню). Америк не открыл, на оригинальность не претендую, просто делюсь примером, возможно кому-то пригодится. Не исключаю, что данное решение не самое красивое, поэтому советы и пожелания постараюсь учесть/дополнить в статье. Полученный в функции табличный документ сохранить в файл уже можно, соответственно, одной строкой текста (ТД.Записать("ИмяФайла",ТипФайлаТабличногоДокумента.XLSX)). 

Подходит для любой конфигурации на обычных формах.

Функция ТабличноеПолеВТабличныйДокумент(ТабличноеПоле)

    ТабДокумент   = Новый ТабличныйДокумент;

    ГраницаСлева  = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСправа = ?(ТабличноеПоле.ВертикальныеЛинии  , Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСверху = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);
    ГраницаСнизу  = ?(ТабличноеПоле.ГоризонтальныеЛинии, Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1), Неопределено);

    НомерСтроки = 0;

    Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

        Если Колонка.Данные = "" Тогда
            Продолжить;
        КонецЕсли;

        ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
        КолонкаТабличногоПоля = ТабДокумент.Область(, ИндексКолонки+1, , ИндексКолонки+1);
        КолонкаТабличногоПоля.ШиринаКолонки = Колонка.Ширина;

    КонецЦикла;

    Если ТабличноеПоле.Шапка Тогда

        НомерСтроки = НомерСтроки + 1;
        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.Текст                   = Колонка.ТекстШапки;
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаШапки = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаШапкиТаблицы, Колонка.ЦветТекстаШапки);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаШапки);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтШапки;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВШапке;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

        КонецЦикла;

    КонецЕсли;

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

    Результат = Построитель.Результат;
    Выборка   = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

        НомерСтроки = НомерСтроки + 1;

        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаПоля.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаПоля, Колонка.ЦветФонаПоля);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаПоля = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаПоля, Колонка.ЦветТекстаПоля);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтТекста;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВКолонке;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

            ФорматнаяСтрока = "";
            Если Колонка.Данные = "" Тогда
                ЗначениеЯчейки  = Выборка[Колонка.Имя];
                ТипКолонки      = Результат.Колонки[Колонка.Имя].ТипЗначения;
            Иначе

                ЗначениеЯчейки  = Выборка[Колонка.Данные];
                ТипКолонки      = Результат.Колонки[Колонка.Данные].ТипЗначения;
            КонецЕсли;

            Если ТипЗнч(ЗначениеЯчейки) = Тип("Число") Тогда
                КвалификаторыЧисла  = ТипКолонки.КвалификаторыЧисла;
                ФорматнаяСтрока     = "ЧЦ=" + КвалификаторыЧисла.Разрядность + "; ЧДЦ=" + КвалификаторыЧисла.РазрядностьДробнойЧасти;
            ИначеЕсли ТипЗнч(ЗначениеЯчейки) = Тип("Дата") Тогда
                КвалификаторыДаты = ТипКолонки.КвалификаторыДаты;
                Если КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
                    ФорматнаяСтрока = "ДФ=dd.MM.yyyy";
                ИначеЕсли КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
                    ФорматнаяСтрока = "ДФ=HH:mm:ss";
                КонецЕсли;
            КонецЕсли;

            Если ЗначениеЗаполнено(ФорматнаяСтрока) Тогда
                ОбластьЯчейки.Текст = Формат(ЗначениеЯчейки, ФорматнаяСтрока);
            ИНаче
                ОбластьЯчейки.Текст = ЗначениеЯчейки;
            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

    Если ТабличноеПоле.Подвал Тогда

        НомерСтроки = НомерСтроки + 1;
        Для Каждого Колонка Из ТабличноеПоле.Колонки Цикл

            ИндексКолонки                         = ТабличноеПоле.Колонки.Индекс(Колонка);
            ОбластьЯчейки                         = ТабДокумент.Область(НомерСтроки, ИндексКолонки+1, НомерСтроки, ИндексКолонки+1);
            ОбластьЯчейки.Текст                   = Колонка.ТекстПодвала;
            ОбластьЯчейки.ЦветТекста              = ?(Колонка.ЦветТекстаПодвала = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветТекстаПодвалаТаблицы, Колонка.ЦветТекстаПодвала);
            ОбластьЯчейки.ЦветФона                = ?(Колонка.ЦветФонаШапки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветФонаКнопки, Колонка.ЦветФонаПодвала);
            ОбластьЯчейки.ЦветРамки               = ?(ТабличноеПоле.ЦветРамки.Вид = ВидЦвета.АвтоЦвет, ЦветаСтиля.ЦветРамки, ТабличноеПоле.ЦветРамки);
            ОбластьЯчейки.Шрифт                   = Колонка.ШрифтПодвала;
            ОбластьЯчейки.ГоризонтальноеПоложение = Колонка.ГоризонтальноеПоложениеВПодвале;
            ОбластьЯчейки.Обвести(ГраницаСлева, ГраницаСверху, ГраницаСправа, ГраницаСнизу);

        КонецЦикла;

    КонецЕсли;

    РасчетШириныКолонок(ТабДокумент,200,150);
    Возврат ТабДокумент;

КонецФункции

// Процедура - Расчет ширины колонок
//
// Параметры:
//  ТабличныйДокумент            -  ТабличныйДокумент -     Табличный документ, в котором будет перерасчитана ширина колонок
//  МаксимальноеКоличествоСтрок  - Число -      Максимальное количество строк, которые будут использованы для расчета ширин колонок
//  МаксимальнаяШиринаКолонки    - Число -      Ограничение максимальной ширины колонки
//
Процедура РасчетШириныКолонок(ТабличныйДокумент,МаксимальноеКоличествоСтрок,МаксимальнаяШиринаКолонки)

    Перем КонечнаяСтрока, НачальнаяСтрока, ТекущаяКолонка, ТекущаяСтрока, НачалоДанных;
    Перем ОбластьШапки, ОбластьПодвала;
    Перем ШиринаКолонки, ТекстЯчейки, НомерСтрокиТекста;
    Перем ШириныКолонок;

    // Массив, в который будут помещаться ширины колонок
    ШириныКолонок = Новый Массив;

    // Инициализируем начальные строки
    НачальнаяСтрока = 0;
    НачалоДанных = 0;

    КонечнаяСтрока = НачальнаяСтрока + МаксимальноеКоличествоСтрок;
    // Ограничим конечную строку
    КонечнаяСтрока = Мин(КонечнаяСтрока, ТабличныйДокумент.ВысотаТаблицы);

    // Переберем все колонки
    Для ТекущаяКолонка = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл

        МаксимальнаяШиринаТекстаЯчейки = 0;
        // Переберем строки, которые будут использованы для расчета ширин колонок
        Для ТекущаяСтрока = НачальнаяСтрока По КонечнаяСтрока Цикл
            ШиринаКолонки = 0;
            // Получим область текущей ячейки
            ОбластьЯчейки = ТабличныйДокумент.Область(ТекущаяСтрока, ТекущаяКолонка);

            ТекстЯчейки = ОбластьЯчейки.Текст;
            // Для каждой строки из текста ячейки рассчитаем количество символов в строке
            Для НомерСтрокиТекста = 1 По СтрЧислоСтрок(ТекстЯчейки) Цикл
                ШиринаТекстаЯчейки = СтрДлина(СтрПолучитьСтроку(ТекстЯчейки, НомерСтрокиТекста));

                Если ШиринаТекстаЯчейки > МаксимальнаяШиринаТекстаЯчейки Тогда
                    МаксимальнаяШиринаТекстаЯчейки = ШиринаТекстаЯчейки;
                КонецЕсли;

                ШиринаКолонки = Макс(ШиринаКолонки, МаксимальнаяШиринаТекстаЯчейки);
            КонецЦикла;

            Если ШиринаКолонки > МаксимальнаяШиринаКолонки Тогда
                // Ограничим ширину колонки
                ШиринаКолонки = МаксимальнаяШиринаКолонки;
            КонецЕсли;

            Если ШиринаКолонки <> 0 Тогда
                // Ширина колонки рассчитана
                // Определим, сколько ячеек по ширине используется в области для текущей ячейки
                КоличествоКолонок = ОбластьЯчейки.Право - ОбластьЯчейки.Лево;

                // Переберем все ячейки, расположенные в области
                Для НомерКолонки = 0 По КоличествоКолонок Цикл
                    Если ШириныКолонок.ВГраница() > ТекущаяКолонка - 1 + НомерКолонки Тогда
                        // В массиве ширин колонок уже был элемент для текущей колонки
                        Если ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = Неопределено Тогда
                            // Значение ширины колонки еще не было установлено
                            ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = ШиринаКолонки / (КоличествоКолонок + 1);
                        Иначе
                            // Значение ширины колонки уже было установлено
                            // Вычислим максимум ширины колонки
                            ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] =
                            Макс(ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки], ШиринаКолонки / (КоличествоКолонок + 1));
                        КонецЕсли;
                    Иначе
                        // В массиве ширин колонок еще не было элемента для данной колонки
                        // Добавим элемент в массив ширин колонок
                        ШириныКолонок.Вставить(ТекущаяКолонка - 1 + НомерКолонки, ШиринаКолонки / (КоличествоКолонок + 1));
                    КонецЕсли;
                КонецЦикла;

            КонецЕсли; // Конец Условия ШиринаКолонки <> 0

        КонецЦикла;    // Конец цикла перебора строк
    КонецЦикла;    // Конец цикла перебора колонок

    // Переберем все элементы в массиве вычисленных ширин колонок
    Для ТекущаяКолонка = 0 По ШириныКолонок.ВГраница() Цикл
        Если ШириныКолонок[ТекущаяКолонка] <> Неопределено Тогда
            // Ширина колонок установлена
            // Установим ширину области ячеек
            ТабличныйДокумент.Область(, ТекущаяКолонка +1, НачалоДанных, ТекущаяКолонка + 2).ШиринаКолонки = ШириныКолонок[ТекущаяКолонка] + 1;
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

 

Обработка пример табличное поле табличный документ сохранить Excel

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    222394    957    891    

964

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", МагнитЭкспресс (бывш.Казань-Экспресс), "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    33672    286    65    

141

Маркетплейсы Загрузка и выгрузка в Excel Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса Яндекс.Маркета «Беру» в 1С из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3 и Управление нашей фирмой, редакция 3.0 в документ «Отчет комиссионера о продажах».

4800 руб.

09.12.2020    23892    230    1    

95

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 руб.

29.10.2014    214547    636    526    

451

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    16239    97    0    

76

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 10.07.2024, версия 9.8 - 9.11)

14400 руб.

20.11.2015    153429    373    376    

507
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4761 04.06.20 11:17 Сейчас в теме
Ну воистину следующей будет публикация "Как вывести сообщение пользователю" или "Как перебрать элементы массива".
Артано; rpashkovsky; rudnitskij; Jimbo; +4 1 Ответить
2. Jimbo 10 04.06.20 12:16 Сейчас в теме
Многабукфниасилил

Зачем это фсё, кроме - ТД.Записать("ИмяФайла",ТипФайлаТабличногоДокумента.XLSX) ???
3. Yashazz 4761 04.06.20 12:39 Сейчас в теме
(2) ну, тут ещё применяется Построитель (правда, впервые это было 15 лет назад в первых 10.3), так что некая ценность в публикации есть)
4. rpashkovsky 23 04.06.20 13:16 Сейчас в теме
(3)Спасибо за столь противоречивый комментарий, а также идеи для новых статей :D
5. Yashazz 4761 04.06.20 13:23 Сейчас в теме
(4) Дык, зато честно) И потом, что вы и я знаете, другие могут не знать, так штааа... может это мне кажется баяном, а людям пригодится.
rpashkovsky; +1 Ответить
6. rpashkovsky 23 04.06.20 14:12 Сейчас в теме
(2) ТД нужно изначально откуда-то взять
7. Jimbo 10 04.06.20 14:30 Сейчас в теме
(6) ТабДокумент = Новый ТабличныйДокумент; // вот и взяли , остальное какое то шаманство с бубном
8. rpashkovsky 23 04.06.20 14:32 Сейчас в теме
(7) Между табличным полем и табличным документом разницы нет? Ок...
9. stepan_s 04.08.20 12:56 Сейчас в теме
все здорово, но табличное поле разве можно получить в табличный документ средствами платформы?
10. rpashkovsky 23 04.08.20 14:33 Сейчас в теме
(9)Можно, пкм->вывести список
11. stepan_s 05.08.20 06:38 Сейчас в теме
(10)Вы уверены что это программный вариант?
если требуется получить и программно что то изменить в ТД то дать пользователю сначала источник сформировать и потом уже его обработать?
Не сильно удобно в использовании :(
Пока на сколько Ваша идя может быть понятна, лично я оценил бы "так себе" и не стал бы с Вами ее реализовывать :(
12. rpashkovsky 23 05.08.20 10:02 Сейчас в теме
(11)Возможно Вы правы. Будет интересно посмотреть Вашу реализацию. Готового решения на тот момент в интернете я не нашел. А на данный момент "красивая" реализация моего "творения", увы, уже далеко не на первом месте.
14. Артано 766 22.02.21 07:32 Сейчас в теме
(12) Ну блин сами же писали про пкм-вывести список

вот упрощенный фрагмент кода без работы с отборами и произвольными макетами


все по сведениям из СП
15. rpashkovsky 23 28.02.21 01:00 Сейчас в теме
(14) Идея в том чтобы сохранить данные в удобочитаемом для юзера виде, а про этот способ я и сам давно знаю), но все равно спасибо.
13. rpashkovsky 23 05.08.20 10:14 Сейчас в теме
(11) Приводимый Вами пример можно посмотреть в Инструментах разработчика от Сергея Старых. В статье, на сколько я помню, об этом упомянул. В моём примере для реализации Вашей идеи вместо сохранения табличный документ нужно просто показать. Если у Вас есть изящное решение в несколько строк - поделитесь. Искренне буду благодарен.
16. nicolaj2 6 28.07.21 09:59 Сейчас в теме
А как при программном выводе учесть положение колонки в табличном поле (Новая колонка, на следующей строке, в той же колонке)? Вывести
список в пользовательском режиме это учитывает. Также у Вас выводятся невидимые колонки.
rpashkovsky; +1 Ответить
Оставьте свое сообщение