Работа с фиксированным макетом в СКД

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

Тренироваться будем на конфигурации «Управление торговлей 11».

Задача. Необходимо реализовать печать расходной накладной в следующем виде:

Вид печатной формы

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

Группировки печатной формы

2. Зададим имена для всех группировок: Шапка, ТЧТовары (таблица), Подвал.

Имена группировок

3. Чтобы определить фиксированный макет, перейдем на закладку «Макеты»

4. Создадим макет оформления для группировки «Шапка». Группировка шапка включает в себя следующие поля:Номер, Дата, Грузоотправитель, Грузополучатель.

Выберем пункт «Добавить макет группировки«. В открывшемся диалоге выберем имя группировки «Шапка» и тип макета «Заголовок»

Макет оформления группировки "Шапка"

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

Параметры группировки шапка

5. Для вывода табличной части понадобится создать 3 макета оформления:

  • Макет заголовки группировки — для вывода шапки таблицы
  • Макет группировки — для вывода строк таблицы
  • Макет группировки — для вывода итога по таблицы.

Добавим макет заголовка группировки для вывода шапки группировки (шапки таблицы).  В открывшемся диалоге выберем имя группировки «ТЧТовары» и тип макета «Заголовок«.  В правом окне настроим свойства ячеек.

Вывод шапки таблицы фиксированного макета

Добавим макет группировки для вывода значений группировки.  В открывшемся диалоге выберем имя группировки «ТЧТовары» и тип макета «Заголовок«.  В правом окне настроим свойства ячеек.

Вывод строк таблицы фиксированного макета

Добавим макет группировки для вывода итогов по группировке.  В открывшемся диалоге выберем имя группировки «ТЧТовары» и тип макета «Общий итог заголовок«.  В правом окне настроим свойства ячеек.

Вывод итога таблицы фиксированного макета

6. Добавим макет группировки для вывода подвала нашей печатной формы. В открывшемся диалоге выберем имя группировки «Подвал» и тип макета «Заголовок«.

Вывод подвала фиксированного макета

7. Чтобы общие макеты не влияли на наш созданный макет, необходимо на закладке «Другие настройки» установить макет оформления «Без оформления».

Другие настройки фиксированного макета

Вот и все. Конечный результат будет иметь вид:

Результат вывода фиксированного макета

Пример можно скачать здесь.

Популярность: 100%

Рубрика: Отчеты (работа СКД) | Метки: , | 9 комментариев

Работа с базой TempDB

Системная база данных TEMPDB участвует в работе пользователей, подключённых ко всем пользовательским базам данных сервера СУБД.

TEMPDB используется при работе с временными таблицами и процедурами, в ней создаются внутренние (internal) и пользовательские объекты (user objects) промежуточных результатов запросов и т.п..

При запуске сервера, TEMPDB создаётся заново, если  TEMPDB по каким то причинам не может быть создана, то сервер СУБД не запуститься. По умолчанию размер этой базы данных неограничен и увеличение его осуществляется при необходимости автоматически, порциями по 10% от текущего размера TEMPDB, однако эти параметры могут быть переопределены пользователем. По умолчанию, минимальный размер этой базы данных, который устанавливается при старте Microsoft SQL Server, определяется размером системной базы данных MODEL. Очистка журнала транзакций в этой базе данных производится автоматически, при этом удаляются только неактивные записи журнала транзакций.

При работе 1С:Предприятия 8 в режиме клиент-сервер широко используются временные таблицы. Кроме того, TEMPDB используется Microsoft SQL Server при выполнении запросов, использующих операторы GROUP BY, ORDER BY, UNION, SORT, DISTINCT и т.п.

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

Какие могут быть решения данной проблемы:

1. Перезапустить MS SQL Server. В этом случае размер базы данных TEMPDB будет установлен по умолчанию.

2. Сжать базу данных TEMPDB. Для этого нужно в Query Analyzer выполнить следующую команду: DBCC SHRINKDATABASE (TEMPDB).

3. Уменьшить размер отдельных файлов. Для этого нужно в Query Analyzer выполнить команды:

DBCC SHRINKFILE (Логическое_Имя_Файла_Данных, Желаемый_Размер_Файла_Данных_В_Мегабайтах)
go
DBCC SHRINKFILE (Логическое_Имя_Файла_Журнала_Транзакций,
Желаемый_Размер_Файла_Журнала_Транзакций_В_Мегабайтах)
go

Пример.

Уменьшение размера файлов базу TEMPDB до 20 мегабайт

USE TempDB
DBCC SHRINKFILE (tempdev, 20)
go
DBCC SHRINKFILE (templog,20)
go

Пункты 2 и з также можно выполнить с помощью Management Studio

Сжатие базы TempDB

4. Переместить базу данных TEMPDB нас диск большего размера. Изменить месторасположение файлов базы данных TEMPDB можно с помощью команды ALTER DATABASE. Для этого нужно в Query Analyzer выполнить следующую последовательность команд и перезапустить сервер СУБД:

USE master
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = ‘Новый_Диск:\Новый_Каталог\tempdb.mdf’)
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = ‘Новый_Диск:\Новый_Каталог\templog.ldf’)
GO

В завершении еще парочка советов по работе с базой TEMPDB:

1. Для оптимизации работы базы данных TEMPDB рекомендуется ее вынесение на отдельный жёсткий диск или RAM-диск и разбиение MDF файла на части (одинакового размера) по числу процессоров (ядер): если процессоров < 8, то количество файлов = количество процессоров; если процессоров > 8, то количество файлов для начала 8, а затем добавлять по мере необходимости.

2. При использовании временных таблиц используется кеширование, но это не относится к операциям создания индексов, сортировки, группировки и т.п. Например: создали таблицу, построили индекс (что разумно с точки зрения построения плана), то данная таблица кешироваться не будет. Но если таблица очень маленькая и почти наверняка она  SQL-сервером будет сканироваться и создается она очень часто, то возможно имеет смыл операцию создания индекса опустить, в этом случае за счет кеширования таблица будет создаваться быстрее.

Популярность: 38%

Рубрика: Настройка и оптимизация | Метки: | 3 комментария

Резервное копирования баз данных MS SQL Server на сетевой диск

При использовании клиент-серверного варианта «1С Предприятие 8» появляется возможность создания резервной копии базы средствами СУБД. Например MS SQL Server позволяет выполнять резервное копирование в то время, когда база данных находится в многопользовательском режиме.

При резервном копирования стандартными средствами Enterprise Manager для MS SQL 2000 и SSMS для MS SQL 2005 (2008R2) невозможно создать устройство резервного копирования, расположенное на сетевом диске, поскольку они видят только локальные, физически подключенные диски. Поэтому выполнение резервного копирования возможно только на локальные диски компьютера, на котором установлен Microsoft SQL Server. Использование этого варианта организации резервного копирования существенно снижает надежность, поскольку в случае выхода компьютера из строя становится недоступной как рабочая база данных, так и резервная копия.
Одним из способов решить эту проблему является создание сетевого устройства резервного копирования с помощью системной процедуры SP_ADDUMPDEVICE. Для этого нужно в Query Analyzer выполнить следующую команду:

USE master
GO
EXEC SP_ADDUMPDEVICE ‘disk’,
‘Логическое_Имя_Сетевого_Устройства_Резервного_Копирования’,
‘\\Имя_Компьютера\Имя_Каталога\Имя_Файла.bak’

Следующий пример иллюстрирует добавление удаленного дискового устройства резервного копирования с именем ‘AdvWorksData’ и создание резервной копии базы ‘TestData’. Необходимым условием использования сетевого устройства резервного копирования является запуск Microsoft SQL Server с использованием доменной учетной записи.

USE master
GO
EXEC sp_addumpdevice ‘disk’, ‘AdvWorksData’,
‘\\server-sql1\sqlbackup\Test5.bak’;
GO
BACKUP DATABASE TestData
TO AdvWorksData
WITH FORMAT;
GO

Популярность: 13%

Рубрика: Настройка и оптимизация | Метки: | Оставить комментарий

Использование System Monitor для диагностирования проблем в производительности

Рано или поздно мы все сталкиваемся с проблемой производительности. Поэтому для своевременного обнаружения узких мест в оборудовании необходимо проводить регулярный мониторинг загруженности всех основных аппаратных компонентов системы. К ним в первую очередь относятся:

  • Все рабочие сервера кластера 1С:Предприятия
  • Сервер СУБД
  • Клиентские рабочие станции, работающие под большой нагрузкой

Для каждого из этих компьютеров необходимо настроить постоянный сбор информации по загруженности оборудования.

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

Компоненты анализируемой системы интерпретируются как объекты, параметры которых представляются в виде набора счетчиков, при этом для каждого объекта определен свой набор счетчиков. Некоторые приложения в процессе установки расширяют системный набор своими, специфическими объектами и счетчиками, характеризующими производительность этого приложения. Например, при установке Microsoft SQL Server к стандартному набору объектов и счётчиков операционной системы добавляются специфические объекты и счётчики сервера баз данных.

Узкие места, которые могут оказать наибольшее влияние на производительность:
Память

  • Недостаток объема оперативной памяти, установленной на компьютере, оказывает негативное влияние на производительность всех компонент 1С:Предприятия 8 и Microsoft SQL Server.
  • При увеличении количества пользователей и объема информационной базы требования к этому ресурсу со стороны сервера 1С:Предприятия 8 и Microsoft SQL Server возрастают.
  • Нехватка памяти приводит к увеличению интенсивности страничного обмена между файлом подкачки и физической памятью, что существенно снижает производительность системы.

Процессоры

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

Дисковые операции

  • Производительность дисковой подсистемы является одним из решающих факторов, определяющих производительность Microsoft SQL Server.
  • На производительность сервера 1С:Предприятия 8 влияния, как правило, не оказывает.

Конфликты блокировок Microsoft SQL Server

  • Один из основных факторов снижения производительности в многопользовательском режиме
  • Вероятность возникновения конфликтов блокировок можно снизить за счет доработки прикладного решения

Перечень основных объектов и счетчиков, используемых при анализе
проблем с производительностью.

счетчики производительности

счетчики производительности

P.S.

По данной теме хочу порекомендовать посмотреть сервис http://www.gilev.ru/hardware/.

Популярность: 5%

Рубрика: Настройка и оптимизация | Метки: | Оставить комментарий

Как программно выделить все строки динамического списка?

Приветствую Вас, дорогие читатели.

В платформе «1с предприятие 8.2» появился такой замечательный объект как «динамический список«. Данный объект я часто использую в подборах, если не нужно делать сложные расчеты, а просто показать данные и выбрать.

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

Для решения это задачи я использовал объект «WSCript.Shell«.

В процессе реализации у меня получилось 2 варианта.

Вариант №1

Определим кнопку «Выделить все строки» и в модуль обработчика добавим код:

wsh = Новый COMОбъект(«WSCript.Shell»);
ЭтаФорма.ТекущийЭлемент = Элементы.ДинамическийСписок;
wsh.sendkeys(«^{A}»);

С помощью данного кода выполняется нажатие клавиш «Ctrl + A«, т.е. «выделить все».

Вариант №2

Вариант №1 не всегда срабатывал. Тогда данный код я переписал следующим образом:

  • Добавим реквизит формы «ПоследняяСтрокаСписка»
  • Для списка укажем свойство «Начальное отображение списка» = В конце списка
  • В процедуру «ПриОткрытии» добавим заполнение реквизита, определенного в пункте 1.

ПоследняяСтрокаСписка = Элементы.ДинамическийСписок.ВыделенныеСтроки[0];

  • Определим кнопку «Выделить все строки» и в модуль обработчика добавим код:

wsh = Новый COMОбъект(«WSCript.Shell»);
ЭтаФорма.ТекущийЭлемент = Элементы.ДинамическийСписок;
wsh.sendkeys(«{END}»);
ТекДанные = Элементы.ДинамическийСписок.ТекущиеДанные;
Если
ТекДанные <> Неопределено Тогда
  wsh.sendkeys(«+{UP » + ПоследняяСтрокаСписка + «}»);
КонецЕсли;

С помощью данного кода выполняется нажатие клавиш «Shift + кнопка вверх«.

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

Популярность: 12%

Рубрика: Особенности работы управляемого интерфейса | Метки: | Оставить комментарий