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

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), зарегистрированного в операционной системе.

 

См. также

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

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

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

10000 руб.

02.09.2020    124812    682    389    

732

Infostart PrintWizard

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

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

18000 руб.

06.10.2023    7753    24    6    

42

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

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

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

10000 руб.

10.11.2023    4265    12    2    

36

SALE! %

PowerTools

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

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

3600 2280 руб.

14.01.2013    178623    1083    0    

861

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

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

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

5000 руб.

07.02.2018    99605    239    97    

298

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

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

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

3000 руб.

27.08.2019    18376    6    8    

40

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

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

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

2400 руб.

24.09.2019    23853    16    15    

33

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

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

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

2040 руб.

27.12.2017    28309    3    10    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4674 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 1522 23.06.09 08:19 Сейчас в теме
(0) Лучше оформить в виде отдельного класса-обработки, в которой решать проблемы по выводу информации и т.п.
Например. вместо
Док.ДобавитьСтроку(Сообщение)
намного лучше будет смотреться вызов спец.метода
ВывестиСообщение(Сообщение)

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

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

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