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

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

24900 руб.

20.08.2024    59957    320    160    

289

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    244607    1340    419    

1122

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

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    40918    81    22    

95

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    35163    90    40    

112

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    49228    169    63    

205

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    23559    84    42    

99

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    6169    2    2    

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

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

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

Хотя в базе никого нет
Для отправки сообщения требуется регистрация/авторизация