Документрезультат фиксациясверху не работает

Фиксация верхних строк в макете отчета

(1) nodalt, как вариант можно подменить «автоматическое» формирование отчета на «ручное», получить таблицы и уже обрабатывать ее как надо (менять колонки, фиксировать и т.д). Для этого можно использовать предопределенную процедуру ПриКомпоновкеРезультата модуля отчета.

Например (я так делал, но может есть и лучше способ):

Пробовал программно, но не работает этот код:

Может быть из-за того, что макет вручную рисовал.

(10) nodalt, очень странно. Я привел код с работающей обработки и там проблем с фиксацией нет — все как часы работает. Обработка на «управляемой форме».

Может быть ты передаешь результат куда-то дальше и уже там фиксация слетает? проверь точнокй останова на конце процедуры — есть фиксация или нет. Или добавь последней строкой показ табличного документа. ДокументРезультат.Показать() — если только она на сервер не руганется

(14) nodalt, Сделал специально новый отчет (на обычной форме) и у меня даже так работает

работают.
А вот фиксация — нет 🙂

Ягг, вывод отчета полностью автоматический?

Если есть возможность, выложите, пожалуйста, кто-нибудь, у кого работает, простенький отчетик с фиксацией строк.
Если не трудно 🙂

(18) 1cUserAndrew, вот пример — просто выводит справочник контрагентов и фиксируем 3 первые строки отчета (фиксация в модуле отчета). Все стандартное (кроме фиксации конечно). Отчет на обычной форме (но и на управляемой работает — проверил). Проверял на релизе (8.2.13.205) — конфигурация «Зарплата и кадры» (не суть важно, так как справочник «Контрагенты» есть везде)

В модуле отчета единственная процедура, а так все стандартное от СКД (никаких дополнительных форм)

PS. В целом Макет стандартный, но для проверки (тут не выложил) создал для группировки свой собсвенную область (на закладке «макеты») — фиксация осталась.

Источник

Фиксация строк и колонок на СКД

Доброго времени!
Как бы решить вопрос по теме. Пробовал так:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета — будем выводить программно

Настройки = КомпоновщикНастроек.ПолучитьНастройки() ;// Получаем настройки отчета
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

// Скомпонуем результат
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

// Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

ДокументРезультат.ФиксацияСлева = 1;
ДокументРезультат.ФиксацияСверху = 9;
КонецПроцедуры

Так работает, правда, если добавлять удалять отборы, фиксация сверху меняется. Не важно.

Есть у меня вычисляемое поле ОбщийМодульСервер.ПолучитьПлановуюСумму(&Организация, &ДатаКон, Статья), так вот при выоде компановки программно (методом выше) ругается Синтаксическая ошибка ОбщийМодульСервер.ПолучитьПлановуюСумму.

Я думаю, фиксацию мне нужно сделать другим способом

Источник

Фиксация шапки в СКД

also Что-то вроде FAQ Отзывов (7) В закладки

Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ. В инструментах скд этот механизм отсутствует.

Код вывода с фиксацией шапки:

Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее:

UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:

7 Коммент.

Если программировать на 8.2, то можно реализовать проще.
В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ДокументРезультат.ФиксацияСверху = 8;
КонецПроцедуры

Спасибо! Добавлю в публикацию

Фиксацию в 8.1 также можно добавить через процедуру ОбновлениеОтображения(), правда смотрел только на небольших отчетах.

Мир Вам! У меня не получилось сделать вашим кодом, а получилось вот таким:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);

//Определение Процессора компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

//Определение Процессора вывода
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);

//Получение доп макета для шапки и подвала
Макет = ОтчетОбъект.ПолучитьМакет(“Макет”);

//Вывод шапки
Область = Макет.ПолучитьОбласть(“Заголовок”);
//Область.Параметры.ДатаОтчета = Формат(ТекущаяДата(), “ДФ=dd.MM.yyyy”);
//Область.Параметры.Организация = организация;
//Область.Параметры.Месяц = Формат(Период, “ДФ=’MMММ yyyy’”);
ЭлементыФормы.Результат.Вывести(Область);

//Вывод таблицы
ПроцессорВывода.Вывести(процессорКомпоновки);

Вообще-то в 8.1 тоже можно поступить гораздо проще. В модуле формы отчета прописать процедуру

Процедура ОбновлениеОтображения()
ЭлементыФормы.Результат.ФиксацияСверху=1;
КонецПроцедуры

Только не могу понять что попадает сюда: ЭлементРезультата.ЗначенияПараметров

Не работает (по крайней мере на 8.1).
Не определён объект ПроцессорКомпоновкиДанных.

Для того чтобы заработало надо вверху добавить следующее:

—————————————————————————————————————
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки );
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать( МакетКомпоновки );
—————————————————————————————————————

И не понятно зачем в “Результат.ФиксацияСверху = Результат.ВысотаТаблицы – 1;” минус один, должно быть без него.

Источник

СКД. Срез последних(но не совсем) для каждого поля в отдельности

Есть отчет. Формируется на какой то месяц.
Показывает кол-во произведенного товара и сколько он стоит.

Я делю одно на другое и получаю себестоимость товара ед.

Но бывает так, что в этом месяце продукция не производилась, а производилась в любой другой месяц.

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

Такое вообще возможно?

Да данные я получаю из регистра накопления, обороты.

Я правлю типовой отчет. Вот его вывод. В какой момент я могу отловить результат скд, перебрать его рассчитав значение поля где пусто и подсунуть компоновщику этот резульат?

(10) не понимаю. Ну не укажу я период — он возьмет все данные(или скорее подставит стандартный период что используется в СКД). Как для каждой строчки получить свое значение?
В ресурсах может написать что то вроде выбор когда поле есть null тогда выбор запрос.сумма из регистр(какие то параметры) Конец

Но вроде такое не работает. В любом случае как узнать последнее движение и взять обороты за месяц?

(9) какой запрос то? в скд то? ну у меня и вопрос конкретный. Как для каждого поля получить данные за разный период. И куда этот запрос который эти данные получает — вставить? Как новый набор, соединением\объединением, или в какое то условие.
Или после вывода какой то запрос делать, тогда где какой и что с ним потом делать.

Источник

Постобработка отчета 1С СКД

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

Итак, что же понимается под постобработкой в СКД. Обычно (если не всегда) такое словосочетание применяется для отчетов, построенных на СКД. В результате выполнения отчета пользователем мы имеем какой-то табличный документ. Не всегда с помощью функционала СКД удается получить необходимую форму табличного документа. Поэтому после (пост) выполнения отчета, с помощью методов объекта ТабличныйДокумент выполняется некоторая доработка результата до приемлемого вида (формы).

Чтобы вклиниться в процесс формирования отчета вам необходимо программно получить результат отчета. Поэтому постобработка ВСЕГДА связана с программным формированием отчета. Можно конечно на форме сделать специальную кнопку, чтобы пользователь нажимал ее после формирования отчета, но это будет выглядеть нелепо. Поэтому будем считать, что для постработки отчет на 1С СКД формируется программно всегда.

Есть два способа как можно программно выполнить отчет на СКД:

  • Простой. Из формы отчета (нужно чтобы у отчета была форма) вызвать метод СкомпоноватьРезультат. Вы заменяете стандартную кнопку Сформировать собственной командой. В этой команде вызываете указанный выше метод, передав (в случае управляемой формы) режим компоновки – Непосредственно. Затем выполняете постобработку над полученным табличным документом (обычно это реквизит «Результат»). Метод неудобен тем, что нужно добавлять форму (если ее нет), нужно формировать отчет непосредственно, плюс довольно часто для доработки табличного документа нужно переходить на сервер (что не есть хорошо)
  • Чуть сложнее. В модуле отчета в предопределенной процедуре «ПриКомпоновкеРезультата» программно формируете отчет. Стандартный шаблон (код) для этого приведен ниже. После получения табличного документа вы выполняете свой код постобработки. Для этого подхода существует еще один вариант реализации, когда обработка выполняется не после формирования табличного документа, а в процессе. Делается это с помощью поэлементного вывода в табличный документ с помощью методов процессора компоновки данных – НачатьВывод, Следующий, ВывестиЭлемент.

С помощью этого шаблона вы можете программно формировать отчет на СКД:

Теперь рассмотрим конкретные примеры, когда вам может понадобиться постобработка. В этих примерах я не всегда буду приводить полный код решения. Где-то будет достаточно идеи, а где-то ссылки на уже готовый отчет.

Вывод картинок

До недавнего времени только с помощью постобработки в отчетах на СКД можно было вывести картинки в отчете. Начиная с релиза платформы 8.3.14 в СКД 1С:Предприятие 8 появилась возможность вывода картинок без постобработки.

Вот такой кусок кода в ПриКомпоновкеРезультата выводить после программного формирования картинку в колонке прайса:

Отчет прайс лист мы разбирали в нашем курсе по СКД

Нумерация колонок отчета

Здесь мы рассмотрим вариант постобработки из формы отчета

Повторение шапки отчета и вывод колонтитулов

В этой статье на Инфостарте разбирается, как с помощью поэлементного вывода можно повторить шапку отчета на каждой странице и как вывести колонтитулы.

Повторение шапки реализуется кодом:

Вывод колонтитулов реализуется через свойство ВерхнийКолонтитул табличного документа:

«Красивые» заголовки для группировок колонок таблицы

Вот так заголовки выводятся совсем некрасиво:

Вот так чуть лучше:

Настройка для такого варианта (для второй и третей группировок колонок):

И только постобработкой (хотя может быть есть какой-то другой секретный способ) можно сделать так:

Вставить разрыв страницы для группировки

В этой статье на Инфостарте рассматривается способ как с помощью поэлементного вывода отчета можно добавить разрыв страницы для группировки в СКД

Источник

Читайте также:  Jquery ajax find не работает
Оцените статью