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

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

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

Скрипты

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

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

Задача

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

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

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

Пишем простейший скрипт

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

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

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

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

В начале мы вставим из шаблонов пример "Привет, база":

А затем заменим текст процедуры Главная на свой:

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

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

Скрипт готов - нажмём кнопку "Запустить" предварительно выбрав базы для запуска:

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

Дополняем скрипт выводом в файл

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

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

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

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



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

Нажмите одну из кнопок, чтобы поделиться:



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

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