Информационный поток
Задания вакансии материалы разработки сообщения форума
Яндекс-директ

Свободное проведение документов

  • Добавить свою разработку
 
Балашов Роман (Администрация)
Связаться с автором
28.02.2012 03:20:40
0
Конец отчетного периода. Бухгалтерии, финотделу или другим офисным структурам требуется срочно перепровести огромное количество документов, исправить ошибки партионного учета, учесть и исправить то , что учтено и исправлено не было.

Чтобы это сделать, и не парализовать работу предприятия предлагается данная обработка.
Помимо этого обработка может просто мониторить загруженность информационной базы.
Скриншоты
Описание

Очень часто в больших компаниях, особенно с УПП или с КА возникают проблемы, называемые простыми пользователями торможением 1С. Раздается звонок с гневными выкриками вроде : я уже не полчаса не могу провести реализацию, у меня клиенты ушли!. Или : почему так тормозит 1С

 

Почему это происходит? Если пользователь не может провести документ, то в сообщении об ошибке с большой долей вероятности найдется фрагмент текста типа  "... конфликт блокировок ..." (надо оговориться, что речь идет о базе на MSSQL).  

 

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

 

Но часто на вышеописанные реляции накладывается еще один фактор: конец отчетного периода. Бухгалтерии, финотделу или другим офисным структурам требуется срочно(обморочно) перепровести огромное количество документов, исправить ошибки партионного учета, учесть и исправить то , что учтено и исправлено не было. А так как УПП или КА - это и управленческий и бухгалтерский учет в одном флаконе - получаем побочный эффект такого смешивания : конфликты блокировок.

 

 - А давайте перепроведем 100500 документов за прошлый месяц?

 - Фирма встанет.

 - А нам нужно НДС сдавать..

 

Конечно, не во всех крупных организациях такой порядок вещей. Но ситуация явно неуникальная.

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

Другой вариант - проводить с документы с паузой. Т.е перед проведением очередного документа делается пауза вроде

 

ТекВремя = ТекущаяДата();
Пока ТекущаяДата() - ТекВремя < ВеличинаПаузыВСекундах Цикл
	ОбработкаПрерыванияПользвателя();
КонецЦикла;

 

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

 

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

 

Если заглянуть в административную консоль 1С во время жалоб на блокировки и отсортировать таблицу по колонке Захвачено СУБД, то можно увидеть однотипную картину. В первой строчке обычно локомотив этого паровоза с наибольшем временем обращения к базе, далее следуют "вагоны" поменьше - с меньшим временем захвата. Иногда напротив вагонов проскакивают SPIDы в колонке Заблокировано (это уже тяжелый случай блокировок). И при первом же взгляде на этот паровоз можно сразу же прикинуть загруженность системы по длине "состава". Чем он длиннее - тем меньше шансов провести документ.  

 Изображение

И теперь о сути метода:

Вместо паузы мы проверяем длину паровоза: если его длина более заданного числа "вагонов" - делаем холостой цикл. Как только длина уменьшилась - проводим документ. Остальное - дело техники и конкретной реализации.

 

В нашей обработке делаем следующие:

  • Заполняем список документов с помощью запроса
  • Подключаемся к агенту через V82.COMConnector
  • Получаем список сеансов у которых поле захвачено или заблокировано имеет непустое значение
  • Последовательно запускаем проведение документов из списка предварительно вычислив длину паровоза из предыдущего пункта. При этом в фрагмент кода, непосредтвенно проводящего документ, вынесен в настройки. Что позволяет кроме просто проведения записать документ, отменить его проведение или (и) установить реквизиты.

Заполнение списка документов реализовано с помощью консоли компоновки данных (она встроена в макет обработки и запускается при необходимости). В консоли создается специальный алиас #СвободноеПроведение, запрос из которого будет использован для заполнения списка перепроводимых документов. Что такое алиасы и как использовать консоль вы можете ознакомиться в руководстве к ней.  При этом запрос должен содержать одно обязательное поле: ссылка - это ссылка на перепроводимый документ. И тот список,  который вы увидите на закладке результата консоли после выполнения запроса, будет взят обработкой за основу.

 

Список сеансов получаем с помощью примера из обработки "КонсольКластераСерверов.epf" с диска ИТС. Обязательно нужно задать в коде обработки имя сервера, пользователя информационной базы, порт кластера и пароль в модуле обработки. На модуль обработки при желании можно установить пароль. Возможно не во всех системах будет работать такой способ подключения.

 

Проводим документ  с помощью фрагмента кода, изменять который можно в настройках: 

ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

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

  • СтрокаВыборки. Строка таблицы значений результата запроса. Содержит все поля запроса.
  • ДокументОбъект СтрокаВыборки.Ссылка.ПолучитьОбъект(). 

 

 

Упрощенно схему работы можно обозначить следующим образом:

  • Переходим в настройки
  • Нажимаем на кнопку "Редактировать запрос"
  • Составляем и отлаживаем запрос
  • Переходим на основную закладку, нажимаем кнопку "Заполнить".
  • Список документов готов. Нажимаем кнопку Выполнить.

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

 

PS. Обработка предназначена для использования только квалифицированными пользователями, знающими что такое запрос.

Кроме того у них должны быть права на внешнее подключение.

 

Ключевые слова:   Консоль   Торможение 1С   Проведение   Блокировки
Файлы для скачивания
0
    Разработки
    Еще от автора
    Читайте также
    1С помощь
    Помощь программиста 1С, рано или поздно, требуется любому пользователю 1С.
    1с помощь
    Текущая помощ 1С оказывается специалистами
    Пример перевода конфигурации на управляемый интерфейс
    Когда количество изменений на предприятии превышает критический уровень в сторону необновляемых конфигураций - 1С предлагает создание управляемого приложения
    ≡ к списку разработок