Шаблон отчета на СКД (обычные и управляемые формы)




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

Обычную форму шаблона постарался сделать максимально похожей на типовой отчет. Но в отличии от типового, шаблон отчета работает в любых конфигурациях «сам по себе».

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

Также этот шаблон будет полезен начинающим разработчикам для примера реализации следующих ситуаций (как для обычных, так и для управляемых форм):

  1. Программное выполнение отчета на СКД.
  2. Программная установка отборов в СКД.
  3. Программная установка параметров в СКД.
  4. Программное изменение параметров вывода в СКД.
  5. Привязка своего макета оформления в отчет на СКД.
  6. Расшифровка ячейки отчета и получения значений группировки выбранной ячейки результата отчета.
  7. Обработка расшифровки в очете на СКД, в виде отдельного отчета со своей компоновкой данных.
  8. Удобное меню для выбора периода.
  9. Удобная функция сохранения в Excel.
  10. Установка параметров документа Excel при сохранении (границы, ориентация и пр.)
  11. Сохранение в Excel из WEB-Клиента

Смотрите также: Шаблон обработки (обычные и управляемые формы)

48 Comments

  1. PrinzOfMunchen

    А чем он лучше типового шаблона?

    Reply
  2. Alex1Cnic

    Неплохо!

    Reply
  3. DAnry

    Скрины в студию! На представленных иллюстрировано лишь пункт 7. Удобное меню для выбора периода. Хотелось бы больше …

    Reply
  4. Tavalik

    (1) PrinzOfMunchen,

    Старался его сделать очень похожим на типовой. А лучше тем, что не зависит от конфигурации и не требует дополнительных модулей, работая «сам по себе».

    (3) DAnry,

    А какие еще нужны скрины? Весь описанный функционал в коде.

    Reply
  5. mikl79

    хотел плюсануть, но как?

    Reply
  6. Tavalik

    (5) mikl79,

    Авторизируетесь на сайте и нажимаете кнопку в виде оранжевой звездочки чуть ниже таблички «Файлы». 🙂

    Reply
  7. mikhailovaew

    Плюсану авансом, может пригодится )

    Reply
  8. higs

    Забрал, спасибо. Очень не люблю расписывать всякие интерфейсные плюшки. Почему-то достаются отчеты со сложными выборками данных. Поэтому готовые шаблоны забираю;)

    Reply
  9. dyak84

    Автору спасибо за проделаный труд. Обязательно скачаю как появятся деньги. отчет написать ето одно но зделать его юзабилика как говорят ето совсем другое. Поетому людям которые решились на ето вызывают у меня уважение. СПАСИБО та к держать

    Reply
  10. sergiobargio1

    Tavalik, добрый день. Подскажите, пожалуйста, в Вашей разработке есть ли возможность задавать имена листам

    (не название сохраняемого файла) сохраняемым в xls или xlsx ? Решается ли проблема «съедания» ведущих нолей в текстовых полях «Код» ? Спасибо.

    Reply
  11. Tavalik

    (10) sergiobargio1,

    Доброго времени суток.

    К сожалению на данный момент нет возможности задавать имена, проблема пропадания ведущих нулей также не решена.

    Сохранение в Excel вынесено в отдельную процедуру, пока только могу предложить Вам доработать ее самостоятельно.

    Reply
  12. CITRUM
    проблема пропадания ведущих нулей также не решена

    Эта проблема решается, например, добавлением пользовательского поля X такого вида «‘» + [Код]. В итоге все значения будут иметь вид «‘0000000001», что при сохранении в Excel штатными методами даст нормальную текстовую ячейку со всеми нулями, символ апострофа же при обработках формулами и т.д. игнорируется.

    Об этом уже писали на Инфостарте и это абсолютно штатная фича как Excel так и Open(Libre)Office.

    Reply
  13. Константин С.

    Есть два вопросика:

    1. нет дает открыть два отчет(внешних) разработанных используя шаблон

    2. нажимаю сформировать отчет, слетает схема, обычная форма.

    Reply
  14. master_yoda

    Огромное спасибо автору за труды, обязательно качну как только появится бабосы….

    Reply
  15. Tavalik

    (15) Tangram,

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

    Reply
  16. Tangram

    Отлично подходит для нетиповых конфигураций, спасибо. Работа с вариантами отчетов не реализована или я не увидел?

    Reply
  17. Tavalik

    (13) Константин С.,

    Скопируйте основную форму отчета, назначьте ее основой, а старую удалите.

    Тогда новый отчет будет открываться с новым идентификатором формы.

    Reply
  18. BlackStar

    Отличный шаблон, аккуратно сделан, порадовала панель с периодом! Попробую в работе и буду использовать для внешних отчетов, вместо текущего шаблона.

    Спасибо за работу!

    Есть предложения по развитию, все касаются управляемых форм:

    1. Можно использовать механизм работы с длительными операциями, потому что сейчас, если формировать длительный отчет, программа зависает. К стати, при расшифровке отчета этот механизм работает, а при нажатии «Сформировать» — нет

    2. При нажатии на кнопки выбора периода постоянно появляется сообщение «Использование модальных окон в данном режиме запрещено!», не критично, но отвлекает. К стати в выборе периода с.. по можно использовать стандартный диалог выбора периода (в виде календаря, который например в БП 3.0 в стандартных отчетах)

    3. В отчет можно сразу добавить код для подключения его в качестве внешнего

    Reply
  19. Константин С.

    предложение:

    добавить Функция СведенияОВнешнейОбработке() Экспорт

    для автоматической регистрации в типовых конфигурациях)))

    Reply
  20. BlackStar

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

    Надо к событию формы ПриЗагрузкеВариантаНаСервере привязать код

    &НаСервере
    Процедура ПриЗагрузкеВариантаНаСервере(Настройки)
    //Обновляем заголовок
    ЭтаФорма.Заголовок = ВернутьСинонимОтчета() + » (» + НаименованиеТекущегоВарианта + «)»;
    
    КонецПроцедуры
    
    Reply
  21. Константин С.

    Пожелание к оформлению публикации. Можно указывать номер текущей версии шаблона.)))

    Reply
  22. klaus38

    Замечательно, забираю. Спасибо автору

    Reply
  23. lisrws

    Добрый день. Подскажите, если отчет строится для остатков, то есть нужна одна конкретная дата, а не диапозон, то как ему это задать?

    Reply
  24. dyak84

    Автор если планируется развитие даной обработки можно ли добавить. Кнопку для отправки отчета на електроную почту.

    Reply
  25. aikosyapr

    Спасибо. Красиво и аккуратно. Небольшой косячок: установка видимости заголовка отчета через УстановитьВидимостьЗаголовкаОтчета() глючит. Например, с отчетом в виде таблицы с двумя группировками в строках затираются заголовки столбцов:) Не страшно, но я вот не сразу понял, что происходит, думал всё, допрограммировался)

    Reply
  26. NGPhoenix

    Посмотрел, действительно работает без всяких модулей, только при каждом закрытии требует сохранения варианта отчета. Надоедает страшно. Теперь голову ломаю, как это убрать. Сообщение «Вариант «Имя варианта» был изменен. Сохранить измененный вариант?» обыскался, в обработке такого сообщения нет и события при закрытии тоже, откуда ноги не понятно.

    Reply
  27. NGPhoenix

    Поборол, убрав свойство модальности варианта отчета

    &НаКлиенте

    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

    Если ЭтаФорма.ВариантМодифицирован=Истина тогда

    ЭтаФорма.ВариантМодифицирован = ложь;

    КонецЕсли;

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

    Reply
  28. pbabincev

    Очень хорошо!

    Еще можно добавить автосуммирование по выделенным ячейкам.

    Спасибо!

    Reply
  29. konstruktiv

    А объясните кто-нибудь, пожалуйста, что за вопрос, за решение которого дается вознаграждение, я что-то запутался

    Reply
  30. HobbitT

    Спасибо за хороший шаблон. Неоднократно успешно им пользовалась. Безумно нравится что он реально самостоятельный и нет ограничения в программе. Мелочи типа установки видимости заголовка не в счет (легко подпиливаются).

    Reply
  31. AzagTot

    (18) BlackStar, Чтобы не появлялось сообщение «Использование модальных окон в данном режиме запрещено!» замените ВыбратьИзМеню на ПоказатьВыборИзМеню:

    Оповещение = Новый ОписаниеОповещения(«ПослеВыбораИзМеню», ЭтотОбъект);

    ПоказатьВыборИзМеню(Оповещение, СписокИнтервалов);

    &НаКлиенте

    Процедура ПослеВыбораИзМеню(Интервал, Параметры = Неопределено) Экспорт

    Если Интервал <> Неопределено Тогда

    Отчет.Период = Интервал.Значение;

    Элементы.ПериодУстановка.Заголовок = Отчет.Период;

    ПериодУстановка(Неопределено);

    КонецЕсли;

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

    Reply
  32. mad_maksim

    Проблема с периодом обнаружилась. Делаем отчёт для УТ 11.0. При загрузке отчёт показывает один период, а формируется совершенно за другой. Как будто при формировании берётся период из какого-то кэша от прошлого запуска отчёта. Тоже самое происходит при выборе вариант отчёта. Пробовал ПередЗагрузкойВариантаНаСервере очищать период, но всё равно формируется он по прошлому заданному периоду. Никак не могу найти ошибку. А без этого отчёт не удобен в использовании.

    Reply
  33. mad_maksim

    Нашёл работающий вариант исправления. В процедуру СформироватьОтчет добавил обновление представления даты:

    Процедура СформироватьОтчет(Команда)

    //добавлено для работы с выбором вариант отчета

    Элементы.ПредставлениеДаты.Заголовок = ОбновитьПредставлениеДатыНаСервере();

    //добавлено для работы с выбором вариант отчета

    //Получаем схему из макета

    СформироватьОтчетНаСервере();

    //Состояние отчета

    Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;

    Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;

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

    Reply
  34. DedMoroz1983

    Норм, чо)

    Reply
  35. Светлый ум

    Крутой шаблон — использовал раньше и другие — этот лучше и навороченный по функционалу БСП

    +1

    Reply
  36. GlebHappy

    С удовольствием использую.

    Но есть два пожелания:

    1. Желательно добавить значение Истина четвертым параметром в ПроцессорКомпоновкиДанных.Инициализировать(…), иначе нельзя использовать функции общих модулей в вычисляемых полях

    2. ОткрытьЗначение(…) в форме отчета и расшифровки в веб-клиенте не работает, надо менять на ПоказатьЗначение(…)

    Reply
  37. Светлый ум

    (35)

    Применял при создании:

    Отчет по проводкам (плоский) для УПП 1.3, КА 1.1

    https://infostart.ru/public/434760/

    Reply
  38. levran

    Что-то у меня в УТ 11 (11.2.3.189) ошибка при открытии настроек выходит …

    {ОбщаяФорма.ФормаНастроекОтчета.Форма(27)}: Не передан служебный параметр «НастройкиОтчета».

    ВызватьИсключение НСтр(«ru = ‘Не передан служебный параметр «»НастройкиОтчета»».'»);

    Reply
  39. Exit_in

    (38)

    Что-то у меня в УТ 11 (11.2.3.189) ошибка при открытии настроек выходит …

    {ОбщаяФорма.ФормаНастроекОтчета.Форма(27)}: Не передан служебный параметр «НастройкиОтчета».

    ВызватьИсключение НСтр(«ru = ‘Не передан служебный параметр «»НастройкиОтчета»».'»);

    (32)

    Делаем отчёт для УТ 11.0.

    Когда сделаете?

    Reply
  40. Tavalik

    (38)

    в УТ 11 по умолчанию используется форма настроек отчетов из БСП. Если нужна именно эта форма, то рекомендую и основную форму отчета брать из БСП.

    Добавил в отчет управляемую форму настроек отчета.

    Reply
  41. Tavalik

    (39)

    Добавлена форма настроек в отчет.

    Reply
  42. Tavalik

    (32)

    Здравствуйте. К сожалению (или к счастью) не могу повторить описанную вами ошибку.

    Reply
  43. unichkin

    Хороший шаблон. Рекомендую доработать:

    — добавить программный интерфейс регистрации для доп. отчетов и обработок БСП, номер версии вести соотв. там

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

    — структуры модулей оформить по ИТС https://its.1c.ru/db/v8std#content:2149184104:hdoc

    — в обычной форме отказаться от «СохранитьЗначение» «ВосстановитьЗначение», использовать штатный функционал управления настройками. Кстати, флаг в обычной форме включен, но значения для сохранения не выбраны

    — формы переименовать) Я забывал пару раз удалять форму, из-за чего получал «двойников»: если есть два отчета, реализованные на одном и том же шаблоне и с одной и той-же формой, то если открывать отчет №2 при открытом отчете№1 — открытия не произойдет, а просто активируется отчет №1. Поэтому у себя в шаблоне форму именую так: «ФормаОтчета_НЕ_ИСПОЛЬЗОВАТЬ_СКОПИРОВАТЬ_ЭТУ_УДАЛИТЬ».

    У меня сейчас так (в конфе устаревшая версия БСП):

    Функция СведенияОВнешнейОбработке() Экспорт
    
    МетаОбъект = ЭтотОбъект.Метаданные();
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить(«Вид»,»ДополнительнаяОбработка»);
    ПараметрыРегистрации.Вставить(«Наименование», МетаОбъект.Синоним);
    ПараметрыРегистрации.Вставить(«Версия», «1.1»);
    ПараметрыРегистрации.Вставить(«БезопасныйРежим»,Ложь);
    ПараметрыРегистрации.Вставить(«Информация», МетаОбъект.Комментарий);
    ПараметрыРегистрации.Вставить(«ВерсияБСП», «2.1.1.12»);
    ТаблицаКоманд = ТаблицаКоманд();
    
    ДобавитьКоманду(ТаблицаКоманд, МетаОбъект.Синоним, МетаОбъект.Имя, «ОткрытиеФормы»);
    
    ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
    КонецФункции
    
    Функция ЗаголовокФормы() Экспорт
    
    СтруктураПараметрыРегистрации= СведенияОВнешнейОбработке();
    Возврат СтруктураПараметрыРегистрации.Наименование + » v.» + СтруктураПараметрыРегистрации.Версия;
    
    КонецФункции 

    Показать

    Reply
  44. eugene_e1

    Спасибо автору!

    Reply
  45. user1169791

    Здравствуйте,скачал ваш шаблон,спасибо он прекрасен!))но есть необходимость в кнопке переключения макета,если вас не затруднит,не могли бы вы скинуть эту процедуру!очень нужно…

    Reply
  46. Tavalik

    (45)

    Здравствуйте. Честно говоря, шаблон был написан для УПП, а я с ней уже давно не работал. Не совсем понял, о какой кнопке идет речь? Какой макет необходимо менять?

    Reply
  47. user1169791

    (46)Вот у меня есть два макета СКД с разными наборами данных!т.е. нужно что бы можно было переходить на другой макет СКД!что то типа вот этого сейчас покажу на скринах ,но тут ошибки в написании модуля..но для образца пойдет!

    Reply
  48. Tavalik

    (47)

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *