По умолчанию PostgreSQL настроен таким образом, чтобы расходовать минимальное количество ресурсов для работы с небольшими базами до 4 Gb на не очень производительных серверах. То есть, если дело касается систем посерьезней, то вы столкнетесь с большими потерями производительности базы данных лишь потому, что дефолтные настройки могут в корне не соответствовать производительности вашего северного оборудования. Настройки выделения ресурсов оперативной памяти RAM для работы PostgreSQL хранятся в файле postgresql.conf.
Доступен как из папки, куда установлен PostgreSQL / Data, так и из pgAdmin:
В общем на начальном этапе при возникновении трудностей и замедления работы БД, заметной для глаз пользователей достаточно увеличить три параметра:
shared_buffers
Это размер памяти, разделяемой между процессами PostgreSQL, отвечающими за выполнения активных операций. Максимально-допустимое значение этого параметра – 25% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 64-128 Mb (8192-16384).
temp_buffers
Это размер буфера под временные объекты (временные таблицы). Среднее значение 2-4% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 32-64 Mb.
work_mem
Это размер памяти, используемый для сортировки и кэширования таблиц.
При 1-2 Gb RAM на сервере, рекомендуемое значение 32-64 Mb.
Для вступления новых значений в силу, потребуется перезапуск службы, поэтому лучше делать во вне рабочее время.
Еще два важных параметра это maintenance_work_mem (для операций VACUUM, CREATE INDEX и других) и max_stack_depth
Что же делать и как это победить, и так по порядку:
Клиенты очень медленно работают с серверной версией 1С
Кроме медленной работы 1С, так же наблюдается медленная работа с сетевыми файлами. Проблема встречается при обычной работе и при RDP
для решения этого, после каждой установки Семерки или 2008-го сервера всегда запускаю
netsh int tcp set global autotuning=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled chimney=disabled
и сеть работает без проблем
иногда оптимальным является:
netsh interface tcp set global autotuning= HighlyRestricted
вот как выглядит установка
Далее посмотрите настройки брандмауэра Windows
Настроить брандмауэр Антивируса или Windows
Как настроить брандмауэр Антивируса или Windows для работы сервера 1С (связка из Сервера 1С: Предприятие и MS SQL 2008, например).
Добавьте правила:
Если сервер SQL принимает подключения на стандартный порт TCP 1433, то разрешаем его.
Если порт SQL динамический, то необходимо разрешить подключения к приложению %ProgramFiles%\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe.
Сервер 1С работает на портах 1541, кластер 1540 и диапазоне 1560-1591. По совершенно мистическим причинам иногда такой список открытых портов все равно не позволяет выполнять подключения к серверу. Чтобы заработало наверняка, разрешите диапазон 1540-1591.
Настройка производительности Сервера / Компьютера
Для того чтобы компьютер работал с максимальной производительностью - нужно настроить его на это:
1. Настройки BIOS
В BIOS сервера отключаем все настройки по экономии электропитания процессора.
Если есть «C1E» & обязательно ОТКЛЮЧАЕМ!!
Для некоторых не очень параллельных задач также рекомендуется выключить гипертрейдинг в биосе
В некоторых случаях (особенно для HP!) надо зайти в BIOS сервера, и ВЫКЛЮЧИТЬ там пункты, в названии которых есть EIST, Intel SpeedStep и C1E.
Взамен надо там же найти пункты, связанные с процессором, в названии которых есть Turbo Boost, и ВКЛЮЧИТЬ их.
Если в биосе есть общее указание режима энергосбережения & включить его в режим максимальной производительности (он ещё может называться «агрессивный»)
2. Настройки схемы в операционной системе - Высокая производительность
Скачайте утилиту PowerSchemeEd.7z , распакуйте с помощь 7zip и запустите PowerSchemeEd.exe
Выберите раздел Управление питанием процессора и выставите параметры 01. Порог при питании от сети 30% и отключите 27. Переопределение ядра... как на картинке.
3. На серверах 1С и MS SQL Server использование антивирусов (даже сам факт инсталяции без включения) будет приводить к снижению производительности в виде периодических массовых замедлений и подвисаний интерфейса.
4. Совмещение ролей сервера 1С и сервера MS SQL Server дает большую производительность, особенно если использовать протокол обмена данных напрямую через память «Shared Memory».
Очень многие не недооценивают важность настройки сервера, когда роли сервера 1С и сервера СУБД совмещены на одном физическом компьютере.
Убедиться, что к примеру используется протокол Shared Memory можно следующим образом:
Обратите внимание, что в версиях платформы некоторые релизы «переключались» на протокол «именнованых каналов».
Для работы 1С Предприятие в режиме Shared Memory с SQL Server 2012 должен быть установлен NativeClient от SQL Server 2008 (backward compatibility connectivity components из дистрибутива SQL Server 2012 или отдельный пакет)
5. Отключение ненужных служб Виндовс
Одним из самых действенных способов ускорения компьютера является отключение неиспользуемых (ненужных) служб операционной системы. У ОС Windows по умолчанию включено огромное количество служб, на работу которых требуется большое количество ресурсов системы. Многие из них можно отключить без потери функциональности и снижения безопасности системы.
Какие службы можно отключить для оптимизации Windows:
Авто настройка WWAN – в том случае, если у Вас нет CDMA или GSM модулей, эту службу можно безболезненно отключить
Адаптивная регулировка яркости – эта служба регулирует яркость экрана при наличии датчика освещенности, если такой датчик отсутствует – отключаем.
Брандмауэр Windows – предназначен для защиты компьютера. Рекомендуется пользоваться сторонними приложениями для этих целей (например, Comodo, KIS, DrWEB и т.п.).
Защитник Windows – отключаем, совершенно ненужная служба!
Служба помощника по совместимости программ (Program Compatibility Assistant) – эту службу можно отключить, только в случае несовместимости программ нужно будет вручную устанавливать параметры, что бывает не так уж часто.
Служба автоматического обнаружения веб-прокси WinHTTP – можно отключать.
Служба политики диагностики (Diagnostic Policy Service) – практически не нужна.
Смарт-карта – если Вы не пользуетесь такими картами, то отключаем.
Удаленный реестр (Remote Registry) – обязательно отключаем в целях безопасности.
Центр обеспечения безопасности (Security Center) – напоминает о различных событиях вроде отсутствия антивируса, устаревших обновлениях и т.п. – отключаем, если не хотите их видеть.
Список, конечно, получился не особо емким, на самом деле служб, которые можно отключить, намного больше. Кроме того, среди стандартных служб появятся дополнительные службы сторонних программ, которые установлены на Вашем ПК, их также можно отключить.
Кэширование записей на дисках в Windows
Кэшированием записей на устройстве хранения называется использование высокоскоростной энергозависимой памяти для накопления команд записи, отправляемых на устройства хранения данных, и их кэширования до тех пор, пока их не обработает более медленный носитель (либо физические диски, либо недорогая флэш-память). Для большинства устройств, использующих кэширование записей, требуется непрерывная подача электропитания.
Для управления кэшированием записей на диске откройте Панель управления - Диспетчер устройств.
В разделе Дисковые устройства дважды щелкните нужный диск.
Я думаю каждый хоть раз, но сталкивался с ошибкой 1С Соединение с сервером баз данных разорвано администратором Microsoft SQL Server Native Client 10.0: Неопознанная ошибка HRESULT=80004005
Вот некоторые способы, которые помогут решить данную проблему:
1. Проверить конфигурацию на наличие некорректной информации (мусора). Для этого следует выполнить команду “Проверка конфигурации” с установленным флажком “Проверка логической целостности конфигурации”. При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически, однако следует обеспечить доступность для изменения корневого объекта конфигурации (напимер, при работе с хранилищем его следует захватить).
2. Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении, значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика. В настоящее время все релизы выпускаемые 1С проходят проверку и выпускаются без данной проблемы.
3. Также с этой ситуацией пересекается следующая ситуация:
10007066 Запись данных, содержащих колонки типа ХранилищеЗначения
Проблема:
При использовании СУБД MS SQL SERVER при записи объекта базы данных, содержащего несколько колонок типа ХранилищеЗначения, данные для которых получены из файлов, может происходить ошибка
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005и аварийное завершение работы программы.
Включив технологический журнал на время загрузки, можно определить таблицу, в которой содержатся такие хранилища. Найдите средствами MS SQL Server Query Analizer в этой таблице колонки типа image. Для каждой колонки типа image выполните запрос вида:
S_elect top 10 DATALENGTH(_Fld4044)
from _InfoReg4038
order by DATALENGTH(_Fld4044) desc
Нюансы: обратите внимание, что ”Стандартные проверки” платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.
Суть проблемы: важно, что под это сообщение об ошибке могут подпадать разные причины, но у них есть общая часть для 1С – это не достаточно оперативной памяти. А еще точнее неэффектиное использование ресурсов памяти. Отсюда косвенные способы победить проблему: путем рестарта сервера (на некотрое время становиться больше доступной памяти) или перейти на 64-разрядный сервер приложений.
1С:Предприятие 8.2. Лицензия на сервер (x86-64)
По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ 120 mb.
Обобщенные рекомендации, если рекомендации от 1С не помогли (проделать следующие действия в указанном порядке):
1. Выключить все фоновый задачи у всех баз
В 8.1.11 появился переключатель “запрет на фоновые задания” в
момент создания базы.
Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском – вещь в себе – и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять – возможно проблема “уйдет”.
2. Перезапустить сервер
Второй шаг является частным случаем для вашего случая и после него тоже
есть смысл проверять работоспособность. Однако поскольку существуют утечки памяти http://www.gilev.ru/1c/memleak, то через некоторое время после рестарта пролема может вернуться.
3) делаем бэкап средствами sql
Делать резервное копирование рекомендую при любых действиях, когда может потребоваться “возврат” к предыдущему состоянию данных
4) снимаем базу с поддержки, выгружаем cf
убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение) убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение)
вот пример работоспособности этого приема
http://partners.v8.1c.ru/forum/thread.jsp?id=543293
или
1. Открыть конфигратор;
2. Снял конфигурацию с поддержки, ПРИ ЭТОМ КОНФИГУРАЦИЮ НЕ СОХРАНЯЛ!
3. Далее Сохранить конфигурацию в файл (не сохраняя измененной конфигурации);
4. В SQL для требуемой базы выполнил следующую команду:
DELETE FROM dbo.Config WHERE DataSize > 125829120
5. Загрузить сохраненную конфигурацию обратно.
Взято с http://www.forum.mista.ru/topic.php?id=465608
можно попробовать и более радикальный шаг здесь:
удаляем (в менеджмент консоли) в базе данных таблицу “config”
D_rop TABLE [dbo].[Config]
5) делаем “загрузить конфигурацию” (не объединение) из cf
после этого проверяем, проблема уходит.
6) Ошибка :"Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005"
Имеем : 1C 8.1.13.41 УПП 1.2.19.21 на MS SQL 2005 SP3 на Win2003 Server Enterprise на компе 4Gb физ. памяти (SQL настроен на Max Memory 2Gb)
Решение в моем случае:
Виндовс по-умолчанию 2Гб берет себе, а 2 отдает нам. SQL почти всю остальную память поедал (в настройках стоит 2Gb) и оставлял для всех остальных только 128Мб физ. памяти(как и положено SQL- он не должен забирать ВСЁ, должен 128 оставить). Ошибка 1С начала проявляться после перехода на релиз 1.2.21.1. Да, действительно, в релизе 1.2.19.1 в файле dbo.Config не было записей больше 120Мб. А вот после обновления на 1.2.21.1 такая запись (примерно 135мб )появляется. При снятии с поддержки запись исчезает сама, и ничего удалять не приходится. При постановке на поддержку -снова появляется... Я так понял, что это и есть конфигурация поставщика.
Если SQL оставляет всего 128, а надо целых 135, то вывод- надо дать рабочим процессам живую физическую память. Moжно урезать SQL. А можно винды. Установив в boot.ini ключ /3GB я тем самым отдал виндам 1Gb, а всему остальному 3Gb, а не 2/2 как по умолчанию. После перезагрузки - все ОК.
У Вас есть свое решение!? оставьте его в комментариях)
Собственно процесс расчета записей каждого поднабора состоит в получении всех необходимых данных для расчета каждой записи и вычислении значений ресурсов этой записи по формуле, определяемой способом расчета данной записи. Например, для расчета записи об окладе нужно будет получить данные графика этой записи, для расчета премии необходимо будет рассчитать базу и так далее.
Ниже приведен пример процедуры, осуществляющей расчет набора записей одного приоритета. Для каждой записи при помощи функции ПолучитьДанныеДляРасчета() возвращается структура данных, которая передается в процедуру РассчитатьЗапись().
Расчет набора записей одного приоритета
В функции ПолучитьДанныеДляРасчета() должны быть прописаны алгоритмы, при помощи которых можно получить данные для расчета записи с любым способом расчета, существующим в конфигурации. Ниже приведен пример функции, которая получает данные для трех способов расчета:
Получение данных для трех видов расчета
В данном случае для расчета записей со способом ПоМесячнойСтавке система получит данные графика за период действия и фактический период действия, для способа ПроцентомОтБазы будет получена расчетная база записи, а для способа ПоСдельнойВыработке будут рассчитаны обороты по соответствующему регистру накопления за интервал периода действия записи. Способ расчета ФиксированнойСуммой не требует получения данных.
Функция ПолучитьДанныеДляРасчета() возвращает структуру, содер- жащую различные поля в зависимости от способа расчета, применяемого в данной записи
Расчет значений ресурсов записи
После того как данные для расчета получены, необходимо прописать в модуле формулу для заполнения реквизитов каждой записи в соответствии со способом расчета. В данном случае эту функцию выполняет процедура РассчитатьЗапись(). В процедуре РассчитатьЗапись() для каждого возмож- ного способа расчета описывается формула, позволяющая из реквизитов записи и полученных данных рассчитать значения ресурсов этой записи.
Процедура расчета записей
При расчете записей следует учитывать, что сторно-записи рассчитываются в общем порядке. Поэтому в ресурсы сторно-записи должно попадать отрицательное значение результата расчета. Например, сторно- запись отменяет начисленный оклад за период 5 дней. При расчете такой записи по формуле система получит сумму оклада за 5 дней, например, 1200 руб. В ресурс сторно-записи в этом случае должно быть записано значение -1200.
При работе с регистрами расчета есть возможность получения базовых данных. Это своеобразный способ расчета оборотов регистра, при котором функция расчета оборотов не является простой функцией суммирования ресурсов регистра по измерениям за определенный период, а представляет собой более сложную функцию. Эта функция зависит от состояния плана видов расчета, назначенного регистру расчета и, таким образом, управляется пользователем.
В данном разделе мы рассмотрим два существующих в системе способа получения базовых данных - при помощи языка запросов и при помощи функциональной записи, методом ПолучитьБазу(). При этом будет называть "основным" регистром расчета тот регистр, для которого необходимо получить базовые данные, а "базовыми" регистрами (которых в общем случае может быть несколько) будем называть те регистры, для которых выполняется суммирование ресурсов.
Мы не будем рассматривать эти способы подробно, рассмотрим только их отличия и область применения.
Метод ПолучитьБазу()
Метод ПолучитьБазу() определен для объектов РегистрРасчетаМенеджер.<Имя регистра расчета> и РегистрРасчетаЗапись.<Имя регистра расчета>. Метод позволяет задать ресурсы базовых регистров, по которым необходимо получить обороты, задать поля, в разрезе которых нужно получить обороты и задать правила сопоставления измерений основного и базовых регистров расчета.
Правила сопоставления записей регистров расчета задаются структурой, каждый элемент которой задает для того или иного измерения основного регистра список измерений базовых регистров расчета. Имена элементов структуры должны совпадать с именами измерений основного регистра, а значения элементов структуры - строки, со списком измерений базовых регистров через запятую. Если элемент структуры с именем того или иного измерения не задан, то это значит, что на соответствующее измерение не налагается условие.
Имена измерений и ресурсов базовых регистров задаются в формате <ИмяРегистраРасчета>.<ИмяПоля>.
Пример использования метода:
В приведенном выше примере измерение "Физлицо" основного регистра при получении оборотов будет сопоставляться с измерением "Физлицо" базового регистра "ОсновныеНачисления" и измерением "Работник" базового регистра "ДополнительныеНачисления".
Таблица языка запросов для получения базовых данных
Для получения базовых данных в языке запросов определены виртуальные таблицы "РегистрРасчета.<Имя регистра расчета>.База<Имя базового регистра расчета>". В качестве параметров виртуальной таблицы задаются измерения основного регистра, измерения базового регистра и поля, в разрезе которых нужно получить базовые данные. Измерения и разрезы задаются как массив (или список значений) строк с именами измерений.
Пример написания запроса с использованием виртуальных таблиц базовых данных:
Приведенный пример предполагает ту же структуру данных и ту же решаемую задачу, что и пример для метода ПолучитьБазу(). При этом мы видим заметное увеличение исходного кода и кажущуюся его сложность.
Сравнение
Заметным отличием функционального метода получения базовых данных и получения при помощи запроса является то, что в функциональном методе одним вызовом метода можно получить базовые данные по всем базовым регистрам, а при использовании запросов получение базовых данных делается запросом к нескольким таблицам - по числу базовых регистров. Тем не менее, рекомендуемым способом получения данных является получение данных запросом. Это позволит, например, получить не только данные базовых видов расчета, но и дополнительную информацию, необходимую для расчета.
Отметим, что производительность получения данных при помощи функционального метода и при помощи запроса одинакова несмотря на кажущееся усложнение исполняемого кода в случае с запросами.
Краткая функциональная запись с использованием метода ПолучитьБазу() допустима только в том случае, если нет необходимости в иных данных помимо базовых, и при этом хочется "сэкономить" на строках кода. Совершенно не допустимо из соображений производительности кода, применение метода ПолучитьБазу() в том случае, если после его использование все равно придется при помощи запроса получать дополнительные данные для расчета.
Еще одно соображение касается условий отбора базовых данных. Для метода ПолучитьБазу(), фактически, нет возможности получить базовые данные иначе, чем по одной записи или по конкретному регистратору (с отбором по тем или иным измерениям). В случае же запроса в распоряжении у разработчика все возможности языка запросов по отбору записей.
Для расчета записей необходимо сначала сформировать набор этих записей в регистре расчета. Это позволит использовать расчетные механизмы платформы. Формирование записей при расчете аналогично рассмотренному выше модулю формирования записей при проведении. Однако если при проведении в качестве набора записей выступали движения доку- мента по регистру (Движения.ОсновыеНачисленияРегл), то при расчете без проведения такой набор необходимо создать.
Ниже приведен модуль, позволяющий сформировать набор записей регистра расчета по данным документа. В тексте используется процедура ДобавитьСтрокуОсновныхНачислений(), описанная выше. Этот модуль является начальным этапом процедуры РассчитатьОсновныеНачисления(), которая вызывается при нажатии кнопки Рассчитать в форме документа.
При формировании набора записей значения ресурсов не играют роли, так как они будут в дальнейшем изменены при расчете. В том числе эти значения могут быть пустыми.
Для реализации расшифровки отчетов, выполненных при помощи системы компоновки данных, в платформе реализован объект ОбработкаРасшифровкиКомпоновкиДанных, который позволяет сформировать настройки компоновки данных, которые можно использовать для формирования отчета - расшифровки.
В некоторых ситуациях использовать возможности объекта ОбработкаРасшифровкиКомпоновкиДанных не представляется возможным, и возникает необходимость программного получения значений полей, которые присутствовали в некоторой ячейке табличного документа, для которой можно получать расшифровку.
В данной статье описывается, каким образом устроен объект ДанныеРасшифровки и как его можно использовать для получения значений полей и полей группировок.
ВАЖНО!
Для того, чтобы при выводе отчета объект ДанныеРасшифровки был заполнен, следует его создать при компоновке макета и передать в процессор компоновки данных.
Для создания объекта ДанныеРасшифровки, при вызове метода Выполнить компоновщика макета, следует передать переменную, в которую требуется поместить созданный объект.
Пример:
Для того, чтобы данные расшифровки заполнились при формировании результата, необходимо передать объект ДанныеРасшифровки в метод Инициализировать процессора компоновки данных.
Пример:
Если используется метод объекта Отчет СкомпоноватьРезультат, то для заполнения данных расшифровки следует передать в метод переменную, в которую необходимо поместить данные расшифровки.
Пример:
Если отчет формируется при помощи стандартной команды отчета Сформировать, то данные расшифровки помещаются в свойство расширения формы отчета ДанныеРасшифровки.
Объект ДанныеРасшифровки содержит настройки, для которых этот объект был сформирован (заполняются при генерации макета компоновки данных) и коллекции элементов расшифровки (заполняются при формировании результата).
Каждый элемент расшифровки имеет идентификатор (который и помещается в ячейку табличного документа - результата) и массив идентификаторов родительских элементов расшифровки. Имея идентификатор расшифровки из объекта ДанныеРасшифровки можно получить элемент расшифровки при помощи метода Получить или при помощи операции [].
Пример:
Существуют два типа элементов расшифровки: ЭлементРасшифровкиКомпоновкиДанныхПоля и ЭлементРасшифровкиКомпоновкиДанныхГруппировка.
ЭлементРасшифровкиКомпоновкиДанныхПоля содержит список значений полей, которые присутствуют в элементе расшфровки. В каждом значении имеется указание того, для какого поля содержится значение (соответствует пути к данным поля в терминах настроек компоновки данных, например: Номенклатура.ОсновнойПоставщик), само значение поля, и указание того, что значение было получено для иерархической записи (имеет значение Истина, если значение было получено от иерархической записи).
ЭлементРасшифровкиКомпоновкиДанныхГруппировка содержит имя группировки, для которой был создан элемент (соответствует идентификатору группировки в настройках из данных расшифровки).
При компоновке результата процессор компоновки данных заполняет данные расшифровки следующим образом:
1. При выводе группировки помещает в данные расшифровки элемент типа ЭлементРасшифровкиКомпоновкиДанныхГруппировка, с указанием того, какая группировка выводится. Если выводится вложенная группировка, то в качестве идентификатора родительского элемента группировки будет использован идентификатор расшифровки от родительской группировки.
2. В качестве дочернего к элементу группировки выдает в данные расшифровки элемент типа ЭлементРасшифровкиКомпоновкиДанныхПоля, в который выдает значения полей, по которым осуществлялась группировка. Например, если группировка осуществлялась по полю Номенклатура.ОсновнойПоставщик, то в значениях полей будет находиться значение для этого поля. При этом, если группировка выполнялась по иерархии и в настоящий момент выдавалась иерархическая запись, то в значении поля группировки об этом будет сказано в свойстве Иерархия.
3. При выводе ячеек процессор компоновки получит из каждой ячейки список полей, которые нужно помещать в ее расшфровку и создаст в данных расшифровки для ячейки элемент типа ЭлементРасшифровкиКомпоновкиДанныхПоля, в который поместит значения полей. При этом родительским для нового элемента будет являться элемент, содержащий значения полей группировки, т.е. элемент, заполненный на втором шаге. Если выводился элемент для ресурсов на пересечении группировок кросс-таблицы, то у элемента будет установлено два родительских элемента - один от группировки - строки и один от группировки - колонки. Идентификатор вновь созданного элемента будет помещен в качестве значения расшифровки в ячейку результирующего табличного документа. Именно этот идентификатор придет в обработчик расшифровки, если пользователь потребует расшифровать в отчет в данной ячейке.
Обработка расшифровки.
При обработке расшифровки, в обработчик поля табличного документа будет передаваться идентификатор расшифровки. По этому идентификатору из объекта данных расшифровки можно получить элемент расшифровки. В этом элементе будут находиться значения полей, которые предполагалось выдавать в качестве расшифровки в данной ячейке.
Если необходимо получать значения полей - группировок для текущего элемента, то следует рекурсивно получить все родительские элементы расшифровки и получить из них значения полей.
Значения измерений отображаются в шапке или боковике, а ячейки области данных содержат сводную информацию на пересечении данных измерений. Пользователь имеет возможность методом перетаскивания (drag-n-D_rop) добавить или удалить измерения и ресурсы, поменять их расположение.
В специальном окне "Поля сводной таблицы", которое отображается, если сводная таблица активна, можно управлять видимостью и расположением измерений и ресурсов. Если оно не выводится, то щелкните правой кнопкой на ячейке сводной таблицы и в контекстном меню выберите пункт "Отображать поля". Это окно можно также включить средствами встроенного языка, если свойству "ОтображатьПоля" объекта "СводнаяТаблица" присвоить значение Истина.
Если какое-то значение измерения является группировкой, то дважды щелкнув на нем, пользователь может развернуть или свернуть эту группировку. Глубина вложенности группировок неограниченна.
Формирование сводных таблиц
Всегда нужно помнить, что сводная таблица размещается в табличном документе. Добавить ее в табличный документ можно интерактивно или программно. Чтобы вставить сводную таблицу в макет в режиме "Конфигуратор" нужно установить курсор на ячейку макета и выбрать пункт меню "Таблица => Встроенные таблицы => Вставить сводную таблицу". Сводную таблицу можно также добавить в табличный документ программно, как, например, в следующем фрагменте:
Чтобы обратиться к сводной таблице средствами встроенного языка, нужно воспользоваться свойством-коллекцией "ВстроенныеТаблицы" объекта "ТабличныйДокумент", например:
Самое главное свойство сводной таблицы — это свойство "ИсточникДанных", которое принимает значения типа "РезультатЗапроса" или "ПостроительОтчета". Это свойство определяет, откуда сводная таблица будет брать данные для отображения. Итоги запроса становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями.
Следующий фрагмент программы был использован для формирования приведенной выше сводной таблицы:
Управление сводной таблицей из встроенного языка
В предыдущем примере выполнялся запрос и его результат назначался в качестве источника данных для сводной таблицы. Далее пользователь должен был самостоятельно включить нужные ему измерения и ресурсы, расположить их в строках или колонках и т.д. В 1С:Предприятии 8 есть возможность управлять сводной таблицей средствами встроенного языка.
Следующий фрагмент включает измерение "Номенклатура" (по строкам), измерение "ПодразделениеКомпании" (по колонкам) и ресурс "СуммаПродажи" (область данных):
Здесь мы воспользовались следующими свойствами-коллекциями объекта "СводнаяТаблица": Поля - Коллекция всех доступных полей сводной таблицы, включая все измерения и ресурсы (в том числе выключенные). Эта коллекция заполняется при назначении источника данных на основе итогов в запросе. Функции из предложения ИТОГИ становятся ресурсами, а группировочные поля, по которым они подсчитываются, становятся измерениями.Используя свойства объекта "ПолеСводнойТаблицы" можно определить тип поля (измерение или ресурс), тип значения (объект "ОписаниеТипов"), прочитать или установить количество открытых уровней. Строки - Коллекция отображаемых полей сводной таблицы, расположенных в строках (сверху вниз). Колонки - Коллекция отображаемых полей сводной таблицы, расположенных в колонках (слева направо). Данные - Коллекция отображаемых полей сводной таблицы, расположенных в области данных.
Обычно при каждом программном изменении состава отображаемых измерений или ресурсов сводная таблица обновляет свое содержимое, на что требуется некоторое время. Чтобы ускорить это процесс, можно временно отключить автоматическое обновление, установить строки, колонки и данные, а потом опять его включить, например:
В любой момент содержимое сводной таблицы можно принудительно обновить с помощью специального метода Обновить(), но необходимо понимать, что при этом запрос заново не выполняется, а обновляется только экранное отображение сводной таблицы.
Следующие свойства позволяют управлять внешним видом сводной таблицы:
- ОтображатьПодписиИтогов (отображать строку типа "Отдел розничной торговли Итог")
- ПоложениеИтоговСтрок (сверху или снизу)
- ПоложениеИтоговКолонок (слева или справа)
- Автофиксация (фиксация названий строк и колонок при прокрутке)
Последняя группа свойств, которую мы рассмотрим, позволяет обращаться к областям сводной таблицы. Они содержат объекты типа "ОбластьЯчеекТабличногоДокумента", через которые можно управлять форматированием этих областей: Область - Область табличного документа, в которой располагается сводная таблица. ОбластьДанных - Область ячеек табличного документа, в которой располагаются данные сводной таблицы, т.е. ресурсы. ОбластьЗаголовковКолонок - Область ячеек табличного документа, в которой располагаются заголовки колонок. ОбластьЗаголовковСтрок - Область ячеек табличного документа, в которой располагаются заголовки строк.
Рассмотрим и последний метод объекта "СводнаяТаблица" — это метод ПолучитьЗначения. Данный метод принимает в качестве параметра область ячеек, а возвращает структуру, содержащую данные сводной таблицы, расположенные в этой области, например:
При этом ключи структуры будут содержать имена полей (измерений и ресурсов), а значения структуры — значения измерений и ресурсов.
Управление бизнес-процессами предприятия подразумевает под собой использование процессной модели управления организацией, когда отдельные деловые операции связываются в логические цепочки. Такой подход реализуется на методологической базе концепции Workflow (управление потоками работ). В классическом понимании данной концепции акцент делается на документах, в то время как управление бизнес-процессами увязывает воедино документы (информацию), людей и приложения (средства обработки информации). Автоматизация управления бизнес-процессами позволяет повысить качество организации работы и эффективность управления предприятием.
* Повышение качества. Бизнес-процессы формулируют и реализуют правила выполнения отдельных операций и их взаимосвязь, что позволяет значительно сократить или даже полностью исключить из бизнес-процесса ошибки, обуславливаемые человеческим фактором. Простой список заданий позволяет сотрудникам сконцентрироваться на своих непосредственных обязанностях.
* Повышение эффективности. С помощью механизма бизнес-процессов можно формализовать организационную деятельность и возложить функции управления совместной работой сотрудников на прикладное решение, что ведет к более эффективному использованию рабочего времени.
* Обеспечение новых возможностей. Данные о выполнении задач и о ходе бизнес-процессов могут служить основой для оптимизации организационной структуры предприятия, выявления “узких” мест и скрытых ресурсов. Таким образом, в полной мере реализуется методология процессного управления.
В составе технологической платформы «1С:Предприятие 8» имеется блок для реализации механизмов бизнес-процессов. Данный блок включает в себя инструментарий для автоматизации цепочек связанных операций, направленных на достижение общей цели. Механизм бизнес-процессов обеспечивается сразу несколькими объектами конфигурирования: бизнес-процессы, задачи, регистр сведений и параметр сессии. Задача предназначена для учета заданий и описывает способ их распределения по исполнителям с учетом организационной структуры предприятия. Адресация заданий сотрудникам определяется реквизитами, в которых можно предусмотреть многомерную ролевую маршрутизацию, например по ролям, рабочим группам, подразделениям, помещениям, филиалам и т. д. При этом задачи могут создаваться не только бизнес-процессами, но и другими объектами информационной базы и непосредственно пользователями. Более того, в общем случае исполнителем задания может быть не только сотрудник, но и любая внешняя система, например другая учетная система. Объект «Бизнес-процесс» описывает логику выполнения операций для достижения той или иной цели и управляет жизненным циклом созданных бизнес-процессов (их экземпляров) от момента старта до момента завершения. Логика бизнес-процесса (взаимосвязь и последовательность обхода точек маршрута, условные переходы и пр.) наглядно описывается в виде карты маршрута, которая позволяет визуально описывать маршрут бизнес-процесса в виде связного графа и позволяет легко описывать алгоритмы условных переходов и реакцию бизнес-процесса на различные события. Операции, выполняемые в ходе бизнес-процесса, представлены на карте маршрута точками действий, которые содержат информацию о том, кто и что должен сделать на данном этапе. Исполнитель может определяться персонально (Иванов) или с учетом ролевой маршрутизации ("Кладовщик", "Бухгалтер"). При переходе бизнес-процесса на точку действия он автоматически формирует задачи, устанавливая в них предусмотренные реквизиты адресации.
Заполнение настроек на этой закладке служит для настройки отчета по-умолчанию в пользователь-ском режиме работы отчета.
Окно для настройки отчета доступно в пользовательском режиме отчета, при этом отличие от на-стройки СКД в конфигураторе в том, что можно использовать значения не предопределенных дан-ных из базы данных.
Окно настроек состоит из основного окна, где выводятся списки группировок, таблиц и диаграмм и набора закладок в которых устанавливаются параметры настроек для объектов указанных в секции группировок. Какие именно редактируются настройки в данный момент мы можем указать нажав на кнопку с надписью о том какой объект мы редактируем:
Возможно, редактировать общие настройки для всего отчета, а нажав на соответствующую кнопку можно редактировать настройки исключительно для выбранного объекта: элемента группировки, таблицы, диаграммы.
Закладка «Параметры данных»
На этой закладке устанавливаются значения параметров данных. Список доступных параметров данных определяется на закладке «Параметры» схемы СКД, здесь же устанавливаются только пользовательские значения параметров. Причем доступны только те параметры, для которых в схеме СКД сброшена галочка «Ограничение доступности».
В таблице присутствуют несколько колонок:
1. «Использование» - галочкой пользователь указывает использовать или не использовать данный параметр для формирования отчета.
2. «Параметр» - имя параметра
3. «Значение параметра» - значением параметра или указание, откуда значение параметра можно извлечь. Например, если сбросить текущее значение, нажав на «Х», то нажав на кнопку «Т» откроется выбор типа параметра в диалоге:
Источником может служить, какое либо значение простого типа Строка, Дата, Число, Булево или ссылка на объект в базе данных. А также источником для данного параметра может быть значение другого параметра, для этого нужно выбрать значение «Поле компоновки данных» и выбрать нужное поле из списка параметров.
Для даты можно назначать автоматические значения для подстановки: «Начало этого дня», «Начало этой недели» и т.д.
Закладка «Выбранные поля»
На этой закладке определяются поля, кроме группировок, которые будут выводиться отчет. На за-кладке два списка с доступными полями и выбранными полями. Кроме полей определенных в наборах данных к выводу доступны параметры и системные поля «Номер по порядку», «НомерПоПорядкуВГруппировке», «Уровень», «УровеньВГруппировке», а также пользовательские поля определенные на закладке «Пользовательские поля».
Переносить поля можно двойным нажатием на название в левом окне или воспользовавшись специальной кнопкой в командной панели. Добавлять можно такие элементы «Новое поле», «Новая группа», «Новое автополе». «Новое поле» - добавляет элемент в котором можно выбрать поле из доступного списка полей. «Новая группа» - можно сгруппировать ряд полей под одной шапкой. «Новое автополе» - используется для того чтобы указать, что поля выводимые для группировок будут выбираться из настроек группировки вышестоящего уровня. Например, определив для всего отчета ряд полей-ресурсов, мы, указав новое автополе для группировок. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью кнопок перемещения. Установкой галочек можно регулировать видимость полей в отчете.
После определения набора полей мы можем отредактировать поля в списке, нужно войти в режим редактирования поля, нажать на кнопку выбор и выбрать из списка нужное поле.
Для ресурсов доступны для выбора уточнения для расчетов реквизита: «% в группе» - используется для расчета доли значения ресурса для всей группировки в группе, т.е. в итоге в группе по совокупности значений ресурса будет 100%; «% общий» - общий процент не зависимо от группы по всем значениям ресурса.
Для полей объектного типа справочник, документ и т.д. возможно указать в выбранные поля реквизит объекта.
Закладка «Отбор»
На этой закладке определяются отборы, которые влияют на результат отчета.
Как и на закладке «Выбранные поля» есть два окна, слева все доступные поля СКД для выбора в отбор, в правом элементы и значения которые влияют на отбор. Добавить новый элемент или группу элементов можно также клавишей Добавить. Удалить элементы можно с помощью кнопки Удалить , передвинуть по позиции с помощью стрелок перемещения. Установкой галочек можно регулировать активность того или иного отбора в отчете. После нажатия кнопки «Подобно» в списке элементов отбора добавляются уточняющие реквизиты отбора: «Режим отображения» и «Представление».
После добавления нового элемента в список отборов для редактирования доступны поля:
• «Левое значение» - поле СКД или поле простого типа («Число», «Строка», «Дата», «Булево»), на которое накладывается отбор
• «Вид сравнения» - список возможный условий отбора: «Равно», «Не равно», «В списке», «В группе из списка», «В группе», «Не в списке», «Не в группе из списка», «Не в группе», «Со-держит», «Не содержит», «Заполнено», «Не заполнено»
• «Правое значение» - значение отбора, соответствует значению поля «Левое значение». В случае если «Вид сравнения» равен «В списке», «В группе из списка», «Не в списке», «Не в группе из списка» то для установки доступен список значений
• «Режим отображения» - возможный два варианта «Быстрый доступ» и «Обычный». В случае если установлен «Быстрый доступ» то если это возможно значения для выбора отображаются в виде выпадающего списка, особенно это актуально для небольших редко меняющихся справочников, перечислений или видов характеристик. «Обычный» - способ отображения значений принятый для объектов по-умолчанию в виде формы выбора или списка.
• «Представление» - текстовое представление отбора в сокращенном режиме (если не нажата кнопка «Подробно»), а также представление отбора при выводе отчета.
В отборы можно добавлять группы – которые служат для объединения нескольких отборов, по какому либо критерию «И», «ИЛИ», «НЕ».
Например, нужно объединить несколько условий с помощью оператора «И». Для этого нужно в отбор добавить «Группа И» в этой группе перечислить условия. Допускается вложенность групп, с помощью которых можно создавать сложные условия. Кроме «Группа И» доступны «Группа ИЛИ» и «Группа Не». По-умолчанию просто список условий отбора не принадлежащий, какой либо группе соединен между собой с помощью оператора «И».
Закладка «Сортировка»
На данной закладке указываются поля, по которым производится сортировка.
Добавление полей на данной закладке аналогичное тому, как это делается на закладке «Выбранные поля». Единственный параметр, который указывается в выбранных полях сортировки, это направление сортировки.
Закладка «Условное оформление»
На закладке «Условное оформление» мы указываем, какие поля, условия отборов и условия оформления будут применятся при выводе полей в отчет.
«Область» - список полей, на которые влияет условное оформление.
«Отбор» - условия отбора при которых условное оформление действует
Условия отбора указываются также как и на закладке «Отбор» основного окна настройки компоновки.
«Условное оформление» - при заполнении данного поля выводится окно с выбором возможных опций оформления для указанных полей.
Список возможных опций оформления:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (например, 90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения
Закладка «Пользовательские поля»
На данной закладке можно указать пользовательские поля и формулы, по которым поля будут вычисляться.
При нажатии на добавление поля откроется выбор типа пользовательского поля: «Новое поле вы-бор», «Новое поле выражение».
«Поле выбор» - появляется диалог конструирования нового поля выбора. Данное поле будет принимать заданные значения в зависимости от условия отбора заданного в таблице «Варианты».
«Поле выражение» - используется в случае когда, нужно не меняя схемы компоновки вставить вы-числяемые поля. Например, в схеме указаны ресурсы «Количество» и «Сумма». В пользовательском режиме мы хотим вычислить цену. Для этого мы в поле конструирования выражения вставляем формулу:
В пользовательских полях можно использовать выражения из запросов.
Также для обозначения итоговых записей в выражении нужно использовать агрегатные функции СУММА(..), КОЛИЧЕСТВО(), МИНИМУМ(..), МАКСИМУМ(..)
Закладка «Другие настройки»
На закладке «Другие настройки» определяются настройки, которые влияют на расположение группировок, полей выбора, ресурсов и т.д.
Макет оформления Заданные предопределенные макеты оформления
Расположение итогов Параметр влияет на расположение итогов
Расположение полей группировок
Расположение группировок
Расположение реквизитов
Расположение ресурсов
Расположение общих итогов по горизонтали
Расположение общих итогов по вертикали
Тип заголовка полей
Тип диаграммы
Базовое значение
Пропускать базовое значение
Состав подписей
Режим раздвижения
Отображать таблицу данных
Максимальное значение
Минимальное значение
Окантовка
Градиент
Шрифт
Цвет фона
Стиль линии
Размещение легенды
Полосы измерительной диаграммы
Выводить заголовок
Заголовок
Выводить параметры данных
Выводить отбор
Окно настройки группировок
Настройки схемы компоновки данных могут содержать структуру, включающую в себя доступные элементы настроек.
Такими элементами являются:
• группировка;
• таблица;
• диаграмма;
• вложенный отчет.
Для группировки доступны следующие настройки:
• Флаг использования группировки - если установлен - группировка используется при компоновке;
• Поля группировки - набор полей, по которым осуществляется группировка. Каждое поле группировки системы компоновки данных обладает следующими свойствами:
- Флаг использования поля - если установлен - поле используется;
- Поле группировки - путь к данным поля, по которому осуществляется груп-пировка;
- Тип группировки – тип группировки (Иерархия, Только иерархия, Элемен-ты);
- Тип дополнения – необходимость дополнения дат в периоде;
- Начальная дата - начальная дата периода. Может содержать константное зна-чение, либо значение – поле;
- Конечная дата - конечная дата периода. Может содержать константное значе-ние, либо значение - поле;
Печатная форма, получаемая в результате работы СКД в общем случае, не требует разработки, большинство группировок, полей и заголовков генерируются автоматически в зависимости от установленных условий оформлений. Но есть ряд задач, когда нужно для полей, группировок задать собственное оформлений. Для этого служит закладка «Макеты», где определяются секции табличного документа, которые будут выводиться в отчет.
На закладке присутствуют, список оформляемых полей/группировок/ресурсов, табличный документ с областями-секциями оформляемых полей/группировок, список параметров определенных в макете.
Для оформления доступны несколько видов макетов – макет поля, макет группировки, макет заго-ловка группировки, макет ресурсов.
Макет поля – области табличного документа, определяемые для полей. Если указать имя поля и область в табличном документе, то все результирующий отчет поле будет выведено с оформлением указанным в табличном документе.
В окне «Параметры макета» будут перечислены все параметры, которые определены в секции табличного документа, параметры можно определять для ячеек с видом заполнения «Параметр». В списке параметров можно указать выражение, которое отвечает за вывод поля в ячейку, по-умолчанию это «Представление(…)», возможно указать различные поля и реквизиты полей определенных в наборах данных.
Следующим видом оформления является оформления группировок. Если выбрать пункт «Добавить макет группировки» - откроется окно редактирования:
В диалоге можно указать имя группировки или набор полей, которые составляют группировку, т.е. оформление будут применено именно к этому составу полей. Перед этим группировки должны быть определены в настройках СКД, на закладке «Настройки». Далее указывается тип макета, доступны такие типы «Заголовок», «Подвал», «Заголовок иерархии», «Подвал иерархии», «Общий итог заголовок», «Общий итог подвал». После указания параметров группировки и типа макета, нужно указать адрес или имя области.
Именем области может служить как адрес в макете, пример – «R1C1:R10C10» или наименование области указанное в свойствах Имя для группы ячеек:
Аналогично добавляется макет для заголовков группировок.
Для оформления ресурсов используется другой специальный диалог:
Макет для вывода ресурсов можно определить по имени группировки, в которой выводятся ресурсы или же по набору полей, которые формируют данную группировку. Перед этим группировки должны быть определены в настройках СКД, на закладке «Настройки». Тип определяемых макетов такой же как и для группировок. При этом можно указать две группировки, на пересечении которых в отчете со строками и столбцами будет выводиться макет ресурсов.
Нужно заметить, что наиболее быстрый способ сформировать макет отчета воспользоваться специальным конструктором макетов для СКД.
Вызвать его можно из диалога редактирования отчета, при добавлении нового отчета:
После этого откроется окно с доступными элементами оформления:
Порядок закладок на экране отображает этапы построения отчета.
1. «Набор данных» - формирование источников и наборов данных
2. «Связи наборов данных» - связь между наборами
3. «Вычисляемы поля» - определение вычисляемых полей
4. «Ресурсы» - указание состава ресурсов
5. «Параметры» - назначение параметров
6. «Макеты» - создание макетов
7. «Вложенные схемы» - указание вложенных СКД
8. «Настройки» - окончательные пользовательские настройки СКД
Наиболее важной закладкой является «Набор данных», если в процессе построения отчета мы мо-жем не пользоваться некоторыми закладки и предоставляемыми на них функциями, то заполнить наборы данных мы обязаны. Также на этой закладке мы можем сохранить/загрузить схему СКД во внешний файл XML.
Виртуальная таблица "РегистрРасчета.<ИмяРегистра>.ДанныеГрафика" определена для тех регистров расчета, которые поддерживают период действия. При конфигурировании с таким регистром расчета необходимо связать непериодический регистр сведений который и будет поставлять информацию о графике.
Для более удобного получения данных графика в системе определена виртуальная таблица, которая помимо прочих полей содержит виртуальные поля:
То есть для каждого числового ресурса регистра сведений, назначенного регистру расчета в качестве графика, можно получить для строк регистра расчета его сумму с учетом базового периода строки регистра расчета, периода действия, периода регистрации и фактического периода действия.
При построении виртуальной таблицы данных графика происходит соединение таблиц регистра расчета, регистра сведений, а в случае получения поля "<Имя ресурса графика>ФактическийПериодДействия" - еще и таблицы фактического периода действия регистра расчета. Так как данные для всех четырех перечисленных полей получаются путем соединения с таблицей регистра сведений по разным условиям, это значит, что в общем случае будет выполнено четыре соединения с таблицей регистра сведений.
При получении виртуальных таблиц система старается действовать оптимально, в частности, выполняется только то количество соединений, которое необходимо для получения полей виртуальной таблицы перечисленных в разделе "ВЫБРАТЬ".
Следствием этого является то, что при составлении текста запроса не следует выбирать поля данной виртуальной таблицы "про запас". Эта рекомендация может показаться общей, но следует помнить, что, как правило, получение "ненужного" поля в запросе к реальным таблицам или другим виртуальным таблицам приводит к некоторому увеличению сетевого трафика и, в общем случае, весьма незначительному снижению производительности. Ясно, что получение в запросе пяти полей регистра мало чем отличается от получения в запросе еще одного, шестого поля, если речь не идет о "больших" полях. Но в случае виртуальной таблицы данных графика появление еще одного виртуального поля из ряда перечисленных выше изменяет ситуацию принципиально. Время выполнения запроса может измениться в разы. То есть рекомендация составлять запросы оптимально по части числа выбираемых полей принимает особый смысл для данной виртуальной таблицы.
Следует также заметить, что принципиальное влияние на производительность запроса к виртуальной таблице данных графика оказывает не столько число виртуальных полей, сколько число их различных "видов".
Рассмотрим пример. В регистре сведений, назначенном в качестве графика, есть ресурсы "ЧислоДней" и "ЧислоЧасов". Рассмотрим три запроса.
При сопоставлении времени выполнения этих запросов мы обнаружим, что второй запрос при прочих равных условиях выполняется почти то же время, что и первый запрос, несмотря на появление еще одного виртуального поля. А вот третий запрос исполняется заметно дольше (возможно, в несколько раз), чем второй, несмотря на одинаковое число выбираемых виртуальных полей.
Это связано с тем, что для получения полей "ЧислоДнейПериодРегистрации" и "ЧислоЧасовПериодРегистрации" выполняется одно соединение с регистром сведений по значению поля "ПериодРегистрации" регистра расчета (сколько бы ресурсов регистра при этом не пришлось суммировать). А при получении еще и поля "ЧислоЧасовПериодДействия", выполняется еще одно соединение с регистром сведений, которое выполняется по значению поля "ПериодДействия".