Настраиваем полноценную архивацию баз

оглавлениеСоздаем и удаляем пользователей

Собираем статистику из баз (аудит) при помощи Обновлятора-1С

Статья устарела и требует переработки?

Как известно, основная функция обновлятора - это обновление баз. Но многие, наверное, уже обратили внимание на дополнительную закладку "Администрирование баз", которая появилась в программе с начала 2016 года.

И если вы владеете навыками написания скриптов (3 варианта - пакетные cmd скрипты, vbs и onescript, он же 1C), то сможете на этой закладке творить "чудеса",  не связанные напрямую с обновлением :)

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

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

Поставим себе простую цель - нужно проанализировать движения по 51 счёту (банковские счета) за 2013 год во всех базах. Так сказать - собираем статистику :)

Для этого переходим на закладку "Администрирование баз" и выбираем тип скрипта "OneScript":

Пользуясь возможностью, ещё раз передаю слова благодарности Андрею Овсянкину за его замечательный OneScript.

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

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

Итак, вот текст скрипта:

Запрос = v8.NewObject("Запрос");
 
Запрос.Текст = "
|ВЫБРАТЬ
|	ХозрасчетныйОбороты.СуммаОборотДт КАК Приход,
|	ХозрасчетныйОбороты.СуммаОборотКт КАК Расход
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.Обороты(
|		ДАТАВРЕМЯ(2013, 01, 01), ДАТАВРЕМЯ(2013, 12, 31),
|		Год, Счет.Код = ""51"", , , , 
|	) КАК ХозрасчетныйОбороты";
 
Результат = Запрос.Выполнить();
 
Выборка = Результат.Выбрать();
 
Если Выборка.Следующий() Тогда
 
	Сообщить("По банковским счетам за 2013 год ");
	Сообщить("Пришло " + Строка(Выборка.Приход) + " рублей");
	Сообщить("Ушло " + Строка(Выборка.Расход) + " рублей");	
 
КонецЕсли;

Если вы программируете на 1С - вы видите, что скрипт очень простой. Делаем запрос по оборотам 51 счёта за 2013 год. И выводим результат.

Скрипт готов. Из нижних галок ставим только "Создать внешнее подключение к базе (v8)" и запускаем скрипт через кнопку "Запустить (F7)", предварительно выбрав базы для запуска:

Я запустил на двух базах и вот результат:

Я собрал эти данные по двум базам, а можно это делать хоть по 100 базам. Более того, ничего не мешает нам записывать полученную информацию во внешний файл, вот пример такого скрипта:

Запрос = v8.NewObject("Запрос");
 
Запрос.Текст = "
|ВЫБРАТЬ
|	ХозрасчетныйОбороты.СуммаОборотДт КАК Приход,
|	ХозрасчетныйОбороты.СуммаОборотКт КАК Расход
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.Обороты(
|		ДАТАВРЕМЯ(2013, 01, 01), ДАТАВРЕМЯ(2013, 12, 31),
|		Год, Счет.Код = ""51"", , , , 
|	) КАК ХозрасчетныйОбороты";
 
Результат = Запрос.Выполнить();
 
Выборка = Результат.Выбрать();
 
ПутьКФайлу = "C:\Аудит.txt";
 
Файл = Новый Файл(ПутьКФайлу);
Если НЕ Файл.Существует() Тогда
	Документ = Новый ТекстовыйДокумент;
	Документ.Записать(ПутьКФайлу, КодировкаТекста.ANSI);
КонецЕсли;
 
Если Выборка.Следующий() Тогда
 
	Документ = Новый ТекстовыйДокумент;
	Документ.Прочитать(ПутьКФайлу, КодировкаТекста.ANSI);	
 
	Сообщение = "пришло " + Строка(Выборка.Приход) + " рублей";
	Сообщение = Сообщение + ", ушло " + Строка(Выборка.Расход) + " рублей";
 
	Документ.ДобавитьСтроку("Обороты по 51 счёту в " + base_name + " за 2013 год: " + Сообщение);
	Документ.Записать(ПутьКФайлу, КодировкаТекста.ANSI);
 
КонецЕсли;

В данном скрипте результаты пишутся в файл "Аудит.txt" на диске "c:\".

С уважением, (школа 1С программистов).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.



Настраиваем полноценную архивацию баз

оглавлениеСоздаем и удаляем пользователей