- Табличный документ. Разная высота строк в разных колонках.
- Как присоединить области с разным количеством строк? Способ формирования печатной формы под тип ценников, но с различными по высоте областями.
- Задача.
- Решение
- Динамические колонки в таблице значений из разного числа строк (как в отчёте)
- Скачать файлы
- Специальные предложения
- См. также
- Безопасная работа с транзакциями во встроенном языке Промо
- Пример создания документа с движениями в ERP 2.5.7
- Работа с абстрактным массивом
- Семеро одного не ждут? Асинхронное исследование асинхронности
- План подготовки к аттестации на 1С: Специалиста по платформе (+ Ссылки на материалы) Промо
- Модель запроса
- Как сдать экзамен 1С:Специалист по платформе?
- Динамическая расшифровка СКД (на примере отчета)
- Как выполнить отчет на СКД через COM и получить данные отчета? Промо
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям
- Программная корректировка при выводе отчета СКД
- Как нарисовать граф на 1С Промо
- Библиотека программного изменения формы (УФ)
- Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()
- Перевод кода и метаданных конфигурации на английский язык: часть 2
- Простой способ индексирования интервалов Промо
- Подготовка к экзамену 1С:Специалист, платформа 8.3
- Методика обновления формы объекта данных при изменении объекта
- Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки
- Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо
- Вывод сообщений в HTML поле средствами 1С
- Краткое руководство по внесению изменений в конфигурацию
- Универсальные функции: разложение произвольной строки адреса в структуру
- БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо
- Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4
- «Живые» картинки со Snap.SVG
- RLS — дубли условий в запросах к СУБД
- Некоторая работа с данными через COM Промо
- Полное копирование одной формы в другую
- Многопоточная обработка данных на примере перепроведения документов
- Отображение истории выполнения по всем задачам комплексного процесса в документообороте
- Работа со схемой запроса Промо
- Описание формата внутреннего представления данных 1С в контексте обмена данными
Табличный документ. Разная высота строк в разных колонках.
Задача такая. Имеем 6 колонок. В 3 из них строки должны иметь свою высоту (которая определяется автоматически по содержимому ячеек), в других 3 строки имеют свою высоту (тоже определяется независимо по содержимому своих ячеек). Кто-нибудь делал такое?
Попробовал формировать разные наборы колонок в разных табличных документах, а потом выводить в итоговый табл. док. сначала готовый вариант из первого таб. дока, потом присоединять к нему готовый вариант из второго таб дока. Ничего хорошего не вышло — 1С выравнивает всю строку по содержимому ячеек во всех 6 колонках. Вот код:
Ном1 = 0;
Пока Выборка.Следующий() Цикл
Ном1 = Ном1+1;
ОбластьСтрока1.Параметры.НомерГТД = Выборка.НомерГТД;
ОбластьСтрока1.Параметры.Получатель = Покупатель;
ОбластьСтрока1.Параметры.Отправитель = ОписаниеОрганизации(СведенияОЮрФизЛице(Выборка.Поставщик,Дата));
ТабДокумент1.Вывести(ОбластьСтрока1);
КонецЦикла;
.
Ном2 = 0;
Пока Выборка.Следующий() Цикл
Ном2 = Ном2+1;
ОбластьСтрока2.Параметры.Наименование = Выборка.Наименование;
ОбластьСтрока2.Параметры.КоличествоНеттоБрутто = «»+Выборка.Нетто+» / «+Выборка.ВесБрутто;
ОбластьСтрока2.Параметры.Стоимость = «»;
ТабДокумент2.Вывести(ОбластьСтрока2);
ОбластьСтрока2.Области.Строка1.АвтоВысотаСтроки = Ложь;
КонецЦикла;
Область1 = ТабДокумент1.ПолучитьОбласть(«R1C1:R»+Ном1+»C10»);
Область2 = ТабДокумент2.ПолучитьОбласть(«R1C1:R»+Ном2+»C10»);
ТабДокумент.Вывести(Область1);
ТабДокумент.Присоединить(Область2);
Что можно доработать в этом коде для получения результата? Или какой есть еще вариант?
Источник
Как присоединить области с разным количеством строк? Способ формирования печатной формы под тип ценников, но с различными по высоте областями.
Задача.
Вывести в печатную форму, на подобии печати ценников, мини-прайсы. Т.е. некий набор номенклатуры с ценами.
Для тех кто не в курсе как печатаются ценники (на примере УТ11) выводятся фиксированные блоки поочередно присоединяя их, пока они по размеру входят в выводимую область. Как только присоединение не возможно, данные выводятся на «новой строке» Таблицы. Проверка осуществляется ч/з проверить присоединение и проверить вывод
Проблема заключается в том, что количество строк в каждом мини-прайсе различна, и заранее определить фиксированную область в макете для их присоединения (методом присоединить) не представляется возможным.
Решение, приведенное выше, конечно, рабочее и может применяться (даже применяется) на практике. Но к моему глубокому сожалению, для меня не приемлемо по моим внутренним убеждениям (люблю, чтоб код был простым и красивым). Поэтому у меня придумался другой подход.
Решение
Если коротко, то алгоритм следующий:
- Создаем «подставной» табличный документ
- Получаем из макета области для формирования мини-прайса (в примере Шапка, строка, подвал)
- В цикле по сгруппированным данным (по данным шапки)
- Очищаем подставной макет
- Выводим в него шапку
- Выводим все строки (цикл по строкам)
- Выводим подвал
- Получаем область из подставной табличной части, в которую вывели данные.
- Далее работаем с этой областью так же, как как если бы мы получили ее из макета целиком (проверяем на вывод и выводим)
Алгоритм не сложный, и думаю что не я первый, кто пользуется таким способом.
PS: Возможно, данная реализация не самая красивая и есть еще варианты. Предлагаю обсудить в комментах.
Ниже небольшая выдержка из кода обработки, прикрепленной для скачивания (демо пример в которой на ряду со «сборной» областью выводится фиксированная область, типа ценника)
ТабличныйДокумент = Новый ТабличныйДокумент ;
ВременнаяОбласть = Новый ТабличныйДокумент ;
ФиксОбласть = Макет . ПолучитьОбласть ( «ФиксХ|У» );
ФиксОбласть . Параметры . Текст = ТекстФиксированногоМакета ;
Х_Шапка = Макет . ПолучитьОбласть ( «Х_Шапка|У» );
Х_Строка = Макет . ПолучитьОбласть ( «Х_Строка|У» );
Х_Подвал = Макет . ПолучитьОбласть ( «Х_Подвал|У» );
ПерваяКолонка = Истина;
Если ВыводитьФиксированнуюОбласть Тогда
Область = ФиксОбласть ;
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
КонецЕсли;
Для х = 1 по СтрокиТаблицы . Количество () Цикл
СтрокаТаблицы = СтрокиТаблицы [ х — 1 ];
ВременнаяОбласть . Очистить ();
Х_Шапка . параметры . Наименование = СтрокаТаблицы . Наименование ;
ВременнаяОбласть . Вывести ( Х_Шапка );
Для Каждого строкаТ из СтрокаТаблицы . Строки Цикл
ЗаполнитьЗначенияСвойств ( Х_Строка . Параметры , строкаТ );
ВременнаяОбласть . Вывести ( Х_Строка );
КонецЦикла;
ВременнаяОбласть . Вывести ( Х_Подвал );
Область = ВременнаяОбласть . ПолучитьОбласть ( «R1C1:R» + ВременнаяОбласть . ВысотаТаблицы + «C» + ВременнаяОбласть . ШиринаТаблицы );
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
Если ВыводитьФиксированнуюОбласть Тогда
Область = ФиксОбласть ;
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
КонецЕсли;
Источник
Динамические колонки в таблице значений из разного числа строк (как в отчёте)
Для статьи я упростила и переделала ту же идею, только для справочника сотрудники, по которым мы выведем в колонки сведения о них «Рост», «Вес», «Адрес регистрации» и тп.
Данные будут получены из регистра сведений, в котором задаются разнообразные сведения:
Результат работы обработки:
Сведения из второй колонки преобразованы в независимые именнованные колонки со значениями.
Ключевые объекты конфигурации
1. Справочник «Сотрудники».
2. Регистр сведений «СведенияОСотрудниках».
Измерения: Сотрудник, Сведение. Ресурс: Значение.
3. Обработка «ДинамическиеКолонки».
Для измерения регистра сведений я ввела план видов характеристик «Сведения» с разнообразными типами.
Обработка «ДинамическиеКолонки»
Модуль формы
Код можно назвать вполне универсальным, в том смысле что, если у вас так же 3 колонки, не важно с какими наименованиями, вы можете воспользоваться им без внушительных доработок.
Я внесла в код три замечания в качестве комментариев, в которых указано, что нужно исправить.
(1) В запросе после КАК оставьте те значения, которые сейчас заданы — Сотрудник, Сведение, Значение.
После того, как протестируете и вникните в код, переименуете их.
(2) Укажите свой тип для колонки «Сведение», у меня это — ПВХ.
(3) Укажите свой тип для колонки «Значение», у меня это массив из типов.
На всякий случай прилагаю базу.
Скачать файлы
Наименование | Файл | Версия | Размер |
---|---|---|---|