К вопросу о регламентном задании – восстановлении последовательности

23.06.09

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

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

К вопросу о регламентном задании – восстановлении последовательности.
В связи с тем, что, когда передо мной стояла подобная задача, материала в интернете я нашел очень мало. Попытаюсь немного компенсировать этот пробел.
Заранее предупреждаю – информация для начинающих разработчиков :)
1. Необходимо создать в конфигурации модуль «ИмяМодуля», со флажками, как показано на рисунке.
 
2. Создадим процедуру, которая будет восстанавливать последовательность и писать сообщение в лог на диске.

	 Процедура РоботВосстановлениеПоследовательностей () Экспорт
   глТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию("Сис. админ");
   ПолныеПрава.УстановитьПараметрыСеанса();
   Док = Новый ТекстовыйДокумент;  
   Док.Вывод = ИспользованиеВывода.Разрешить;
   Док.ДобавитьСтроку("Вход в обработку: Восстановление последовательностей: " + ТекущаяДата());
   Док.ДобавитьСтроку("Текущее состояние: ");
   Док.ДобавитьСтроку("Точка актуальности: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Дата);
   Док.ДобавитьСтроку(Последовательности.ПартионныйУчет.ПолучитьГраницу().Ссылка);
   Попытка
       Последовательности.Восстановить();
       Док.ДобавитьСтроку("Обновлено состояние:");
       Док.ДобавитьСтроку("Точка актуальности: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Дата);
       Док.ДобавитьСтроку("Последний правильный документ: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Ссылка);
   Исключение
       Док.ДобавитьСтроку("Зафиксирована ошибка: " + ОписаниеОшибки() + Символы.ПС + "Возможно, в базе имеются работающие пользователи");
       Док.ДобавитьСтроку("--------------- users -------------------");
       МассивС = ПолучитьСоединенияИнформационнойБазы();
       Для Каждого тмп Из МассивС Цикл
           Док.ДобавитьСтроку(Строка(тмп.ИмяКомпьютера) + " | " +
           Строка(тмп.ИмяПриложения) + " | " +
           Строка(тмп.НачалоСеанса) + " | " +
           Строка(тмп.Пользователь.Имя) 
           );
       КонецЦикла;
   КонецПопытки; 
   Док.ДобавитьСтроку("--------------------------------------------------");
   Док.Записать("d:\sms_.txt", "windows-1251");
КонецПроцедуры 


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

3. Создаем в конфигурации новое регламентное задание и настраиваем его, в т.ч. указываем расписание выполнения данного регламентного задания.
 
4. При желании можно настроить отправку сообщения на почту администратору. Я это сделал на базе AutoMate, код скрипта очень прост (файл отправляется в виде вложения, сам скрипт собирается из шаблонов в течении минуты).  В результате на почту будем получать подобные файлы:

Вход в обработку: Восстановление последовательностей: 11.01.2009 4:00:07
Текущее состояние:
Точка актуальности: 01.01.2009 08:07:50
Реализация товаров и услуг 1/26077 от 01.01.2009 08:07:50
Обновлено состояние:
Точка актуальности: 10.01.2009 12:09:50
Последний правильный документ: Реализация товаров и услуг 1/26177 от 10.01.2009 12:09:50

 Обновлено: По поводу прав пользователя USR1CV81 нашел интересную информацию. (Может кому и пригодиться).

Безопасность каталога данных приложения
В каталоге данных приложения при установке кластера серверов 1С:Предприятия 8.1 создается специальный каталог, предназначенный только для файлов кластера серверов 1С:Предприятия:
Пользователю USR1CV81, от имени которого стартует по умолчанию агент сервера, назначаются полные права на этот каталог. Другим пользователям доступ в этот каталог запрещается. Запуск менеджера кластера выполняет агент сервера от имени того же самого пользователя, от которого запущен он сам.
Пользователь USR1CV81 обладает только одним правом – «Log on as service».
Запуск рабочих процессов также осуществляет агент сервера. По умолчанию рабочий процесс запускается от имени того пользователя, от которого запущен агент сервера. Однако предусмотрена возможность создания дополнительного пользователя операционной системы, от имени которого стартуют только рабочие процессы. Это позволяет предотвратить непосредственный доступ программного кода конфигураций к служебным данным.
Для того, чтобы рабочий процесс запускался не от имени того же пользователя, что и агент сервера, в каталоге данных приложений, относящемся к пользователю агента сервера, может быть размещен файл swpuser.ini следующего формата:
user=<имя пользователя операционной системы>
password=<пароль пользователя операционной системы>
Например, файл swpuser.ini может содержать следующие данные:
user=\\server_comp\uuuu
password=1234567
В этом случае рабочие процессы, запускаемые на данном рабочем сервере, будут запускаться от имени заданного пользователя (\\server_comp\uuuu), зарегистрированного в операционной системе.

 

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159364    872    399    

861

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7759    55    22    

66

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

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

9360 руб.

17.05.2024    23422    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10409    36    20    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15389    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187968    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17298    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7693    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4692 23.06.09 01:00 Сейчас в теме
я дeлaл пoдoбнoe для пapтионного учёта, нo c иcпoльзoвaниeм штaтныx пpoцeдуp УТ. лoг y мeня пишeтcя в жypнaл peгиcтpaции. выкладывать не стал, но если есть интерес.
2. artbear 1563 23.06.09 08:19 Сейчас в теме
(0) Лучше оформить в виде отдельного класса-обработки, в которой решать проблемы по выводу информации и т.п.
Например. вместо
Док.ДобавитьСтроку(Сообщение)
намного лучше будет смотреться вызов спец.метода
ВывестиСообщение(Сообщение)

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

У меня в подобных задачах юзается следующий интерфейс, т.е. методы типа
Инит
Сброс
ВывестиСообщение
ВывестиСостояние
ОсновнаяОбработка (или типа ВыполнитьВыгрузку_КокаКола, ВыполнитьВыгрузку_Мултон, ВыполнитьВыгрузку_Сладко, ВыполнитьВыгрузку_Лебедянь, Балтика и т.д. )
ПолучитьТекстЛог
3. Dimasik2007 430 23.06.09 09:14 Сейчас в теме
(2) Разумеется. В рабочей конфигурации так и сделано. Это же, повторяю, был пример для начинающих разработчиков.
(1) Чем больше информации в открытом доступе, тем лучше. Сам я начинал с сборника ЕСИС, т.к. с работы доступ к интернету был очень ограничен. :)
4. Поручик 4692 23.06.09 14:14 Сейчас в теме
(3) Кстати, код процедуры лучше разукрась. Разукрашка для инфостарта здесь валяется.
5. Dimasik2007 430 23.06.09 14:55 Сейчас в теме
(4) Да я бы разукрасил, тем более что саму "разукрашку" нашел. Но! Скачать не могу, лимит исчерпан :))) Так что завтра наверное :)
6. artbear 1563 23.06.09 18:53 Сейчас в теме
(3) Даже для начинающих разработчиков пример слишком уж упрощен :(
1. Сохранение данных в файл не лучший вариант.
а) В случае нескольких выполнений предыдущее содержание файла удалится.
б) У пользователя Винды, от чьего имени запускается и работает клиент-сервер, просто может не быть прав на каталог C:\ (при обычной установке 1С без доп.настройки прав прав на этот каталог не будет точно !! )

В итоге запись будет невозможна и задание просто не будет работать.

Я, например, на днях на подобное нарвался - у пользователя Usr1C81, под чьим именем работал сервер 1С, не было прав на каталог на сервере домена.

ИМХО журнал регистрации гарантированно лучше.

2. Для начинающих пользователей еще было очень полезно получить код по непосредственному запуску регламентного задания из клиентского кода, без ожидания срабатывания по расписанию, например, для отладки и/или проверки выполнения
Код
РЗ = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.артВыгрузкаКокаКола);
РЗ.Использование = Истина;
РЗ.Наименование = "Создали программно для немедленного запуска";
РЗ.Записать();
Показать полностью
7. Dimasik2007 430 23.06.09 20:28 Сейчас в теме
(6) Чем больше информации в одном месте, тем лучше :) Опыт лишним не бывает. А что касается файла, то я его делал исходя из личного опыта, т.к. работаю по удаленке, и мне лучше посмотреть электроннку с очетом, который приходит каждое утро, чем лезть по удаленке, загружать базу, смотреть журнал регистрации и т.п.
8. gunslinger 01.07.10 18:48 Сейчас в теме
У меня выдает в текстовый файл
Ошибка при вызове метода контекста (Восстановить): Операция не выполнена!
Возможно, в базе имеются работающие пользователи

Хотя в базе никого нет
Оставьте свое сообщение