Пример доработки сложного отчета из типовой конфигурации
(21 минута видео)



Сегодня мы рассмотрим одну из самых частых задач, с которой сталкиваются специалисты по 1С – доработку отчета типовой конфигурации.

О чем эта статья

В статье рассмотрен пример доработки типового отчета «Расчетный листок» в конфигурации «Зарплату и Управление Персоналом 3.0». На данном примере показываются общие шаги разработчика, в случае если он слабо знаком с конкретной реализацией конкретного типового отчета на базе СКД.

Применимость

В материалах статьи в качестве примера используется конфигурация, «Зарплата и Управление Персоналом», редакции 3 3.0.25.122. Но от этого примеры доработки, продемонстрированные в видео, не стали устаревшими, т.к. акцент сделал именно на логике рассуждений разработчика перед которым поставлена подобного рода задача. Смело смотрите видео, это must have!

В качестве конфигурации выбрали “Зарплату и Управление Персоналом 3.0” – в силу следующих причин:

  • Отчеты из ЗУП традиционно считаются сложными
  • Иногда даже задача – понять, откуда берутся данные в отчет – вызывает у специалистов сложности.

Что конкретно мы будем делать

Это реальная задача из Мастер-группы – доработаем отчет “Расчетный листок” так, чтобы в шапке выводилась информация о дате приема сотрудника на работу.

Очень простая задача :)

Но есть одна сложность – информацию о дате приема типовой отчет не содержит, её нужно получать с помощью отдельного запроса.

И запрос этот нужно интегрировать в типовой отчет…

А параллельно мы разберем и приемы работы с СКД:

  • Анализ программного кода типового отчета – определение точек минимального воздействия на конфигурацию
  • Использование расширения языка запросов для системы компоновки данных – выражения в фигурных скобках
  • Программное формирование отчета на СКД – доработку процедуры ПриКомпоновкеРезультата
  • Вывод результата компоновки в коллекцию – дерево значений
  • Доработку текста запроса типового отчета – получение связанной информации
  • Работу с настройками компоновки – определение структуры, использование нескольких группировочных полей в одной группировке
  • Использование макета – табличного документа при выводе отчета на СКД
  • Отладку типового отчета, запущенного в фоновом режиме

Итак, поехали! 21 минута видео :)

Видео 1: Как за 10 минут понять логику формирования типового отчета

В этом уроке приступаем к решению задачи по модификации Расчетного листка в ЗУП 3.0.

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

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

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

Видео 2: Как с помощью 2 строк кода изменить заполнение отчета

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

В итоге задача решается с минимальными изменениями:

  • Новая строка в макете
  • Левое соединение в запросе
  • Две строки в программном коде.

Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”.

P.S.

Эта тема детально раскрыта в курсе:

«Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных (СКД)»

Поддержка – 2 месяца. Объем курса – 34 учебных часа.

Не откладывайте свое обучение!

40 комментариев к “Пример доработки сложного отчета из типовой конфигурации
(21 минута видео)

  1. Надежда сказал:

    Спасибо! Наконец-то сделала формирование расчетных листков по группам сотрудников (Справочник Группы сотрудников) нормально, а не добавлением вычисляемого поля и не подменой строк в группировках отчета!

  2. ismdmr сказал:

    Добрый день!

    И снова вопрос ) Дело в том, что мне как раз дали поправить Расчетный листок. И для выполнения этой задачи возникла необходимость изменить текст запроса до компоновки данных. Делаю так,

    ТекстЗапроса = НаборыДанных[0].Запрос;
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВТДвиженияВзаиморасчетов КАК ДанныеСотрудников", "МояВременнаяТаблица КАК ДанныеСотрудников");             
    НаборыДанных[0].Запрос = ТекстЗапроса;

    Текст конечно меняется, но отчет выдает ошибку:

    “В настройку отчета Расчетный листок” внесены критичные изменения.”

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

    Спасибо.

    • Василий Ханевич сказал:

      Добрый день!
      Посмотрите, какая ошибка при этом зафиксирована в журнале регистрации – какой модуль, какая строка кода вызывают ошибку.
      Проанализируйте, в чем разница исходной временной таблицы в запросе и Вашей временной таблицы, на которую производится замена. Возможно, каких-либо полей не хватает.
      Также в 3.1.3.157 была исправлена ошибка 40000543, которая выдавала похожее сообщение об ошибке. Исправлялся текст запроса, формируемый в общем модуле.

  3. ismdmr сказал:

    Добрый день!

    1С:Предприятие 8.3 (8.3.10.2580)

    1С:ERP Управление предприятием 2

    Точка останова не срабатывает при “ПриКомпоновкеРезультата”. В настройках отладки Фоновое задание установил. Запускаю под толстым клиентом.

    Вот кусочек кода:

    #Область ОбработчикиСобытий

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

    ...............................


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

    #КонецОбласти
    • Василий Ханевич сказал:

      Добрый день!
      Необходимо проверить, что служба сервера “1С:Предприятие” запущена с ключом -debug. В конфигураторе в меню Отладка – Подключение включить автоматическое подключение фоновых заданий. Проверил на ЗУП 3.1 под тонким клиентом – отладка расчетного листка, формируемого в фоновом задании, в таком случае срабатывает.

      • ismdmr сказал:

        Спасибо за ответ, Василий.

        Но служба сервера с ключом -debug у меня запущена. Фоновое задание включил. Запускал и под тонким и толстым клиентами.

        Проблему удалось решить добавив свою форму в отчет. Пока не понял почему так сработало )

  4. Zladey сказал:

    Подскажите, пожалуйста где в ЗУП 3.1 шаблон запроса Расчетного листка из СКД заменятся на реальный запрос?

    • Василий Ханевич сказал:

      Добрый день!
      В отчете АнализНачисленийИУдержаний, в процедуре ПриКомпоновкеРезультата модуля объекта есть вызов ИнициализироватьОтчет, где и происходит заполнение текстов запросов наборов данных.

      • Zladey сказал:

        Спасибо. Я искал по точке останова после нажатия на кнопку “сформировать”. Оказалось, что тексты запросов заполняются ранее)

    • Юлия Толстых сказал:

      Добрый день! Проверили: видео воспроизводится полностью, значит, проблема локальная, именно на Вашем компьютере.
      Почистите кэш, если не поможет – попробуйте просмотреть видео с помощью другого браузера.

  5. Максим сказал:

    Любо слушать вашего нового лектора :-))
    говорит не быстро, слова не съедает
    а главное – комментирует все свои действия, что и зачем делает.
    Четко видно логику действий, логику размышлений.

    Очень круто.

  6. Esagila сказал:

    Здравствуйте!

    Замечательная инструкция! И именно по Зарплате Отчеты кажутся страшными. Большое спасибо!

  7. rashiid сказал:

    Добрый день!
    Публикую мобильное приложение в ISS и пытаюсь открыть через планшет – выдает ошибку доступа. При открытии через веб(это же база, но веб-публикация) запрашивает учетку ОС. Ввожу и база открывается в браузере.
    Собственно вопрос, как получить доступ для мобильного приложения?

    • Юлия Толстых сказал:

      Добрый день, Рашид!
      В этой ветке мы отвечаем только на вопросы по содержанию статьи, консультации на все темы, касающиеся 1С мы не оказываем.
      Вы можете получить ответ на вопрос в рамках Мастер-группы после покупки соответствующего курса: http://курсы-по-1с.рф/1c-v8/1c-mobile-2016/

  8. kukuepta сказал:

    неужели 1сники настолько отупели, что не могут в отладку? пичалька. напомнило мне, как я учил студента обновлять “настроенные” базы 6 лет назад.

  9. Владислав сказал:

    изменения внесены в 3х местах: скд, макет и формирование выходного файла.
    после обновления все придется в 3х местах восстанавливать.
    по моему гораздо практичнее при выводе области шапки макета определить значение поля и вывести – будет 4-5 строчек кода, зато в одном месте

    • Евгений Гилев (Мастер-тренер) сказал:

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

      Поэтому работа с изменением схемы компоновки данных обязательна в этом видео.

      • Василий Ханевич сказал:

        Дополню комментарий Евгения.
        Я так понял, что предлагается для каждого расчетного листка по каждому сотруднику отдельно получать дату приема на работу. Т.е. получается запрос в цикле вместо того, чтобы получить все данные одним запросом. Это может быть не оптимально с точки зрения производительности на больших объемах данных.

  10. Сергей сказал:

    мда… приехали, что бы добавить в отчет простейшее поле, нужно изгаляться так, что мама не горюй… 1С просто “браво”!

    • nike сказал:

      Да ладно вам! Обратная сторона медали этого – рост стоимости услуг технаря, который это поле добавляет. Все привыкли, что доработка в 1С это тяп-ляп на коленке за 15 минут. Клиент как рассуждает – да что там делать, это же просто вывод одного поля в отчет, за что час оплаты??? А вы ему ссылку на это видео, с комментарием, вот, посмотрите, подобная задача, лектор почти полчаса возился! А у нас отчет сложнее, поэтому оценка работы – 1 час и ни минутой меньше. ;)
      Надо уже избавлять клиентов от стереотипа, что 1С это дешево. По сравнению с SAP да, дешево (если это не внедрение ERP). А так вполне себе серьезные деньги!
      Одно поле – один час, десять полей – червончик. Да еще и обновление потом делать, дабы сохранить важные изменения в коде. :))))

  11. Оксана сказал:

    Здравствуйте.
    Видео недоступно ни из какого браузера(((
    Помогите пожалуйста.

    • Насипов Фарит сказал:

      Возможно, что есть блокировка на уровне провайдера / политик безопасности / настроек роутеров и много чего еще.

      Технически видео доступно без ограничений и имеет более 2000 просмотров. Что мешает конкретно в вашей ситуации – нужно смотреть на месте.

      Возможно, решением является просмотр просто из другого места.

    • Насипов Фарит сказал:

      Что-то с браузером. Либо скрипт блокируется, либо закешировалось что-то и конфликтует.
      Шаг 1 – зачистить кеш, проверить. Шаг 2 – проверить в другом браузере.

  12. Александр сказал:

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

    • Василий Ханевич сказал:

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

  13. Алексей сказал:

    Добрый день.

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

    • Василий Ханевич сказал:

      Добрый день!
      В тексте запроса набора данных действительно можно потерять добавленные комментарии при повторном обращении к конструктору запроса, поскольку конструктор запроса не работает с комментариями в тексте запроса.
      А для выявления отличий в схемах компоновки данных (макетах) можно воспользоваться возможностями функционала сравнения-объединения. Можно сформировать отчет о сравнении объектов, в котором графически будут отмечены различия:
      Сравнение-объединение

      • Roman_Ziborov сказал:

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

        Стандартное сравнение файлов не предлагать. Уверен, что для большинства ваше предложение не удобно. Потому и обходятся по возможности без коррекций таких емких структур как СКД

        • Василий Ханевич сказал:

          Я открывал отчет о сравнении объектов непосредственно из окна сравнения-объединения конфигураций:
          Отчет о сравнении
          Как вариант – можно реализовать внешний отчет, не изменяя типовой объект, и подключить его в режиме “1С:Предприятие”. Тогда и обновлять конфигурацию проще будет.

  14. GolD сказал:

    Хорошее видео. Причем те, кто планирует поддерживать ЗУП 3.0 и тем более сдавать по нему специалиста, должен хорошо изучить этот “финт” конфигурации с запросом-шаблоном, который потом дорабатывается в общих модулях – задачи на знание этой особенности на экзамене будут обязательно.

  15. Александр сказал:

    Здравствуйте, уважаемые Сенсэ!
    Есть купленный курс, но не активировал его, т.к. времени не было. Вот дождался второго потока.
    Мои действия, чтобы на него попасть: активировать токен 13-14 июля?

    • Евгений Гилев (Мастер-тренер) сказал:

      Добрый день!

      Активируйте токен с 14 июля, причем это можно сделать прямо сейчас.

Добавить комментарий

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

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