Контроль итогов и регистров УФ, ОФ 8.2, 8.3

07.04.15

Разработка - Инструментарий разработчика

Некоторые процессы в УТ шли подозрительно долго, начали разбираться, в итоге появилась обработка, позволяющая взглянуть на регистры и итоги в 1С УТ как со стороны 1С, так и со стороны MS SQL.

Скачать файлы

Наименование Файл Версия Размер
КонтрольИтогов
.epf 29,70Kb
44
.epf v. 2 29,70Kb 44 Скачать

Хотел начать описание с рассказа о регистрах итогах и их пересчетах, но наткнулся на отличную статью //infostart.ru/public/177171/ (жаль, что нашел её только сейчас).

Начав исследовать наши регистры нашли в первую очередь:

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

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

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

После взведения флажков «Выводить данные SQL» и «Спец. Инф.»: 

Предварительно, на закладке «Настройки», требуется заполнить сервер SQL, а также имя БД, логин и пароль.

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

Обработка по нажатию кнопки «Заполнить таблицу регистров», заполняет соответствующую таблицу (левая). Таблица заполнится на основании данных 1С:

СпРегистров = Метаданные.РегистрыНакопления;
		
Для Каждого Регистр ИЗ СпРегистров Цикл
	ДанныеРегистра = Новый Структура(КлючиСтроки);
	ДанныеРегистра.Имя = Регистр.Имя;
	ДанныеРегистра.Вид = Строка(Регистр.ВидРегистра);
... и т.д.

И на основании данных MS SQL:

Запрос = "exec sp_spaceused '" + ИмяТаблицы + "', false";
РезультатЗапроса = ВыполнитьЗапросSQL(Соединение, Запрос);
		
Если РезультатЗапроса <> "Ошибка при выполнении T-SQL запроса!" Тогда
	РазмерыТаблицы = Новый Структура;
	РазмерыТаблицы.Вставить("РазмерДанных", ПересчитатьВ_МБ(РезультатЗапроса[0].data));	
	РазмерыТаблицы.Вставить("РазмерИндекса",  ПересчитатьВ_МБ(РезультатЗапроса[0].index_size));
	РазмерыТаблицы.Вставить("КоличествоСтрок", Число(СокрЛП(РезультатЗапроса[0].rows)));
	РазмерыТаблицы.Вставить("РазмерДанных_В_КБ", ПересчитатьСреднийВесВ_КБ(РезультатЗапроса[0].data,  Число(СокрЛП(РезультатЗапроса[0].rows))));
КонецЕсли;

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

SELECT Period, sum(countI), sum(countD) From
	(SELECT
		 _Period AS Period, 
		 count(*) AS countI,
		 0 AS countD
	FROM 
		" + ИмяТаблицыИтоги + "
	GROUP BY _Period
 
UNION ALL 
 
	SELECT 
		Period as Period, 
	 	0 as countI,
	 	count(*) as countD 
	FROM 
	 	( 
	 		 SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,0, _Period),0) as Period
			 FROM " + ИмяТаблицыОсновная + "
	 	) as v
	GROUP BY Period 
) as al
GROUP by Period
ORDER by Period desc

Динамика считается отдельно, средствами 1С:

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

При двойном нажатии на период можно получить список документов, которые включены в данный период.

 

В дополнение была сделана кнопка, позволяющая сгенерировать SQL запрос на обновление статистики по выделенным через ctrl регистрам.

P.S. Текущие итоги 1С хранит в дате 01.11.5999

 


Upd. v.2 10.04.2015

1. Добавлена вторая форма, теперь обработка открывается как в управляемом приложении так и в обычном. В итоге обработка стала универсальной. Тестировал на УТ 11.1, БП 2.0, УПП, 1C:Деньги 8.3

2. Переделал логику получения информации о регистрах. Раньше всё проходило одним в цикле в процедуре на сервере, из-за чего нельзя было получать нормально обратную связь о происходящем на сервере. Теперь цикл выполняется на клиенте и после каждого обращения на сервер отображает "состояние" с % выполнения в прогресс-баре.

3. Теперь если не выбирать флаги "Получить данные из 1С" и "Получить данные из SQL" получите просто список регистров с указанием вида.

4. Есть небольшие отличия в работе УФ и ОФ.

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

4.2 ОФ. Фильтровать по виду регистра нужно выбирать ДО заполнения таблицы регистров. НЕТ возможность отфильтровать не пустые регистры. Данные по количеству и составу периодов в регистрах НЕ кэшируются. При двойном нажатии на период НЕ открывайется форма со писком регистраторв. Строка состояния внизу окна. прогресс-бар над таблицей регистров.

 Добавил 2 скрин-шота, как стало выглядеть в УФ и ОФ.

Регистры итоги

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122211    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7307    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3552    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177764    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99355    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18122    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28113    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Dach 372 09.04.15 13:26 Сейчас в теме
Работает только для УТ? На нетиповой УППшке запустил, полчаса работы обработки - результат ноль, 1с висит
2. Silmariil 156 09.04.15 13:28 Сейчас в теме
(1) Dach, Привязки к конфигурации нет, но могу предположить что в УПП очень большое количество регистров, к сожалению не пользовался не могу подсказать.
3. Dach 372 09.04.15 13:34 Сейчас в теме
(2) сколько выполнялся запрос в УТ и его обработка? Есть смысл тогда какой-нибудь прогресс-бар запилить... А еще лучше - отбор по метаданным, то есть по регистам
4. Dach 372 09.04.15 14:07 Сейчас в теме
Больше часа - результат 0.... Печаль (((
5. Silmariil 156 10.04.15 21:52 Сейчас в теме
(4) Dach, переделал обработку, см. upd. v2 в описании. Теперь будет видно что происходит. Тестировал на УПП, 30 секунд на получений всех данных.
6. almas 254 24.09.15 00:37 Сейчас в теме
Жаль, что не показывает сколько записей всего и сколько из них нулевых. А так не понятно для чего?
картинка - да красиво сделана. Но какой сэтой картинки можно сделать анализ?
Под 8.3 не работает, пишет что тип не может быть помещен во временное хранилище. Пришлось процедуру заполнения убрать с клиента на сервер
7. tormozit 7138 10.05.16 08:50 Сейчас в теме
(6) Добавил аналогичный инструмент в подсистему "Инструменты разработчика" в версию 3.62. Там показывается количество нулевых строк итогов и можно их удалять до заданного периода.
8. AlexeyX 14.02.19 11:19 Сейчас в теме
Как искали таблицы итогов для УТ11?

ПолучитьСтруктуруХраненияБазыДанных - у меня показывает только основные таблицы; таблицы итогов не показывает.
Оставьте свое сообщение