Управление Торговлей 10. В отчет «Продажи» добавить «Тип цен»

Миниатюра
В типовой конфигурации «Управление Торговлей», редакция 10.3 есть Отчет «Продажи». Отчет работает с помощью механизма Универсального отчета. Необходимо в типовой отчет «Продажи» добавить показатель «Тип цен».

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

Я лично много раз переделывал, дорабатывал, исправлял ошибки в типовых отчетах. В основном, основанных на СКД (Система Компоновки Данных).

С отчетами, основанными на механизме Универсального отчета, я работаю с недавнего времени.

 

Что такое Универсальный отчет?

По сути это программный механизм-конструктор. Он автоматизирует большинство задач по разработке красивых и функциональных отчетов в типовых конфигурациях 1с. Этот механизм используется в большинстве типовых конфигураций 1с (Управление Производством, Управление Торговлей, Бухгалтерия, Зарплата и Кадры и т.п.). Должен заметить, что в новейших версиях конфигураций на смену механизму Универсального отчета пришел механизм Системы Компоновки Данных.

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

 

СКД (Система Компоновки Данных) и Универсальный отчет

СКД (Система Компоновки Данных) — выгодно отличается от Универсального Отчета своей интерактивностью. Можно написать отчет вообще без использования кода (даже не коснувшись НИ РАЗУ клавиатуры!), с помощью визуального конструктора.

Универсальный отчет ВЫГОДНО отличается от СКД возможностями. Например, в СКД некоторые сложные отчеты очень тяжело выполнить. В Унивесальном отчете все делается гораздо проще. Недостаток — необходимо хорошо знать внутренний язык и много писать в коде. Именно это отталкивает начинающих программистов от Универсального отчета!

Из жизни можно привести аналогию. СКД-программист и программист-Универсал похожи как NET-программист и программист С++. NET-программисты привыкли пользоваться мощными интерактивными программными средами, С++ программисты увязли в своих самописных классах.

В чем отличия?

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

А С++ программист запросто может описать свой класс, библиотеку, и вообще может умело жонглировать свойствами и создавать свое поведение программных объектов.

 

Интерактивность ограничивает!

НУ и что? Спросите вы? А то, что интерактивность — это не всегда хорошо! Это накладывает сильные ограничения на программиста, не дает решить все задачи, ограничивает круг решений. Если программировать в коде, то таких ограничений нет, и легко найти в несколько раз больше решений одной задачи.

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

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

Отсюда совет для бывалых программистов: Не ленитесь! Отложите в сторону СКД, попробуйте свои силы в старом механизме и успех вас ждет!

Важно знать, уметь и использовать все возможности 1с, пусть даже немного «устаревшие»!

 

Постановка задачи

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

Перед нами стоит типовая задача.

В отчете «Продажи» в конфигурации «Управление Торговлей» 10.3 добавить показатель «Тип цен». Тип цен брать из реквизита документа, который делает движения в регистре «Продажи».

По регистру «Продажи» строится отчет.

Итак, начнем!

 Выполнение задачи

 

Вы можете скачать итоговый отчет в виде файла

Продажи (18.7 KiB, 101 скачиваний)

 1. Типовой отчет продажи в Управление Торговлей 1. Вот так выглядит Типовой отчет «продажи» в Управление Торговлей 10. Окно настроек показано рядом для наглядности.
 2. Универсальный отчет в конфигураторе Управление Торговлей 2. Откроем конфигурацию, раздел Отчеты. В разделе отчеты и находится объект «Универсальный отчет»
 3. Сохраним Отчет продажи как внешний отчет 3. Сохраним Отчет продажи как внешний отчет, в виде файла.
 4. Откроем форму отчета 4. Откроем внешний отчет и в нем, откроем форму отчета. Форма отчета абсолютна безлика, нет даже названия в шапке. Кстати, название отчета в верху формы, формируется из Синонима Отчета.
 5. Код формы отчета 5. Вот так вот выглядит Код формы отчета. Достаточно много процедур. Разбираться во всех них НЕ требуется. Достаточно знать какие за что отвечают и уметь их применять.

Кому интересно, вот полный код формы отчета:

 

 

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

Важно уметь отличать признаки таких ошибок и правильно понимать причины.

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

В ошибках, связанных с Универсальным отчетом, также важно понимать это и пытаться применять припарки.

А самой важной припаркой и признаком, по которому можно определить, откуда ноги растут — это пользовательские настройки отчета.

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

Итак, где хранятся пользовательские настройки отчета, как их менять, как настроить загрузку настроек по-умолчанию при старте отчета?

Смотрим далее!

 6. Откроем настройки пользователя 6. Откроем настройки пользователя. Через Меню Сервис — Настройки пользователя.
 7. Перейдем в сохраненные настройки пользователя 7. Перейдем в сохраненные настройки пользователя. Для этого в окне элемента справочника Пользователи перейдем в меню Перейти — Сохраненные настройки. Обратите внимание! Открывается форма регистра Сведений «Сохраненные настройки» с отбором по пользователю.
 8. Отберем в списке сохраненных настроек пользователя Настройки по отчету Продажи 8. Отберем в списке сохраненных настроек пользователя Настройки по отчету Продажи, нажмем кнопку «Отобрать».
 9. Уберем галку Использовать при открытии отчета напротив настройки 9. В форме регистра Сведений «Сохраненные настройки» отберутся записи по пользователю и отчету «Продажи». Уберем галку «Использовать при открытии» отчета напротив настройки.
 10. Откроем отчет Продажи снова 10. Откроем отчет Продажи снова
 11. Мы видим что для отчета Продажи сохраненные настройки по умолчанию не загружаются 11. Мы видим что для отчета Продажи сохраненные настройки по умолчанию не загружаются! Загружаются типовые настройки (из кода отчета)! Это нам и требуется для ПРАВИЛЬНОЙ отладки отчета!

Начинающие программисты кидаются отлаживать типовые отчеты и не понимают в чем дело, когда у них не получается отладка!

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

 

 12. При открытии формы принудительно установим период формирования отчета 12. При открытии формы принудительно установим период формирования отчета (Текущий год). Это очень полезно для пользователей (уменьшает время работы с настройками отчета при открытии). Для большинства запросов отчеты строятся за ТЕКУЩИЙ месяц или квартал или год. Поэтому желательно, чтобы при старте был установлен как раз такой период!
 13. Видим, что при открытии отчета, период устанавливается как текущий год 13. Видим, что при открытии отчета, период устанавливается как текущий год
 14. Открываем Модуль объекта 14. Открываем Модуль объекта

Кому интересно, вот полный код модуля отчета:

 

 15. Делаем точку останова на строке кода в процедуре УстановитьНачальныеНастройки 15. Делаем точку останова на строке кода в процедуре УстановитьНачальныеНастройки
 16. Открываем список подключений к конфигуратору 16. Открываем список подключений к конфигуратору
 17. Убедимся что запущенный сеанс 1с Предприятие подключен к конфигуратору для отладки 17. Убедимся что запущенный сеанс 1с Предприятие подключен к конфигуратору для отладки. Если не подключен, подключаем (дважды щелкаем на строке из верхней таблицы, строка переносится в нижнюю таблицу)
 18. Открываем в режиме 1с Предприятие файл внешнего отчета с точкой останова 18. Открываем в режиме 1с Предприятие файл внешнего отчета с точкой останова
 19. Точка останова активирована. Вычисляем выражение УниверсальныйОтчет 19. Точка останова активирована. Почему? Потому что при старте типового отчета, основанного на Универсальном, загружаются Начальные настройки и активируется процедура «УстановитьНачальныеНастройки». Вычисляем выражение «УниверсальныйОтчет»
 20. Получим текст запроса после строки получения начальных настроек отчета в процедуре УстановитьНачальныеНастройки 20. Получим текст запроса после строки получения начальных настроек отчета в процедуре УстановитьНачальныеНастройки. В отладке получите значение строки «УниверсальныйОтчет. ПостроительОтчета.Текст»

Вот полный текст запроса:

 

 21. Сохранем текст запроса в блокнот Windows. Текст запроса нам еще пригодится 21. Сохранем текст запроса в блокнот Windows. Текст запроса нам еще пригодится
 22. Добавляем строку в код 22. Добавляем строку в код. Строка "УниверсальныйОтчет. ПостроительОтчета.Текст ="
 23. Вызываем конструктор запроса 23. Вызываем конструктор запроса
 24. Создаем новый запрос 24. Создаем новый запрос
 25. Открываем текст пустого запроса на редактирование 25. Открываем текст пустого запроса на редактирование
 26. Переносим текст запроса из блокнота Windows 26. Переносим текст запроса из блокнота Windows
 27. Сохраняем текст запроса 27. Сохраняем текст запроса
 28. Текст запроса вставился в красивом отформатированном виде 28. Текст запроса вставился в красивом отформатированном виде
 29. В конце текста запроса, добавляем код 29. В конце текста запроса, добавляем код

Код:

 

 30. Открываем конструктор запроса 30. Открываем конструктор запроса
 31. Добавляем Тип цен из регистратора виртуальной таблицы

31.1. Добавляем Тип цен из регистратора виртуальной таблицы
 31. Добавляем Тип цен в итоги запроса
31. Добавляем Тип цен в итоги запроса
 32. Добавляем Тип цен в поля построителя отчета 32. Добавляем Тип цен в поля построителя отчета
 34. Добавляем Тип цен в Условия Построителя отчета

33. Добавляем Тип цен в Условия Построителя отчета
 
33. Добавляем Тип цен в Порядок Построителя отчета
34. Добавляем Тип цен в Порядок Построителя отчета
 35. Добавляем Тип цен в Итоги Построителя отчета 35. Добавляем Тип цен в Итоги Построителя отчета
 36. Тип цен появился в показателях отчета 36. Тип цен появился в показателях отчета
 37. Задвоенные описания Номенклатуры и Документа регистратора 37. Задвоенные описания Номенклатуры и Документа регистратора
 38. Убрали задвоенные описания полей 38. Убрали задвоенные описания полей
 39. Чтобы убрать задвоение полей, в построителе отчета в запросе, убираем поля 39. Чтобы убрать задвоение полей, в построителе отчета в запросе, убираем поля

На этом пока что все!

Счастливо!

 

Теги: , ,

Трекбэк с Вашего сайта.

>