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

24.11.11

Задачи пользователя - Адаптация типовых решений

Пример показывает, как можно сохранить сообщения выдаваемые в окно "Служебные сообщения" при автоматическом выполнении обработки "Проведение по партиям" с помощью регламентного задания.

Скачать файлы

Наименование Файл Версия Размер
Архив со всеми файлами
.7z 9,87Kb
107
.7z 9,87Kb 107 Скачать

Данный прием пришлось изобретать из-за следующей ситуации доставшейся мне в наследство:

- каждый месяц бухгалтеру требуется выполнять стандартную обработку «Проведение по партиям» и анализировать сообщения выдаваемые обработкой;

- из-за большого объема данных обработка выполняется длительное время;

- при выполнении в немонопольном режиме периодически обработка останавливается по ошибке (пользователи проводят документы в уже обработанном периоде поэтому блокировки) – следовательно, сотрудник запустивший обработку должен периодически мониторить процесс выполнения – что не очень удобно;

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

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

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

            Через пару месяцев мне это надоело, и родилась идея сделать один раз механизм – и потом вообще про эту проблему забыть. Исходя из вышесказанного, и наличия сервера 1С родилась идея -  запускать автоматически через регламентное задание по ночам, когда пользователи не работают.

Первым делом из стандартной обработки «Проведение по партиям» делаем «упрощенный вариант». Разрешим пользователю выбирать только месяц, а остальные параметры настроим сами (смотрим в файле обработки «АвтоматическоеПроведениеПоПартиям.epf»).

Затем настраиваем регламентное задание на выполнение этой обработки (тексты процедур, которые надо добавить в модуль «МодульРегламентныхЗаданий» смотрим в файле «Общий модуль МодульРегламентныхЗаданий_ Модуль.txt»):

Процедура Автоматическое_Проведение_По_Партиям() Экспорт

  ОбработкаФоновогоЗадания   = Обработки.АвтоматическоеПроведениеПоПартиям.Создать();

  ОбработкаФоновогоЗадания.АвтоматическиПровестиПоПартиям(ТекущаяДата());

КонецПроцедуры

Довольно потираем руки… и вспоминаем про сообщения, которые обработка выдает в окно «Служебные сообщения»! А как прочитать сообщения, когда выполняется регламентное задание? Может они в журнал регистрации записываются? – Записываются да не все… самые нужные и не записываются как раз. Что делать? Поиск ответа в документации и интернете дает пару вариантов: запускать на сервере через назначенные задания с записью служебных сообщений в текстовый файл и пытаться скопировать сообщения из окна «Служебные сообщения» через copy/paste.

Через copy/paste подходит… даже работает… но не из регламентного задания!

Через файл надо настраивать на сервере назначенные задания, в процедуре при старте определять, что стартовали из назначенного задания (например, по пользователю), потом еще организовывать через другое регламентное или назначенное задание отправку файла по электронной почте. А как обеспечивать взаимодействие заданий: сначала выполнение обработки, потом отсылка файла с логом?

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

В этой процедуре и поставим сохранение сообщений в переменную. Будем сохранять сообщения в параметре сеанса. Создаем параметр сеанса «СообщенияФоновогоЗадания». В «МодулеСеанса» в процедуре «УстановкаПараметровСеанса» инициализируем параметр (тексты процедур, которые надо доработать в модуле «МодулеСеанса» смотрим в файле «УправлениеПроизводственнымПредприятием_ Модуль сеанса.txt»):

ПараметрыСеанса.СообщенияФоновогоЗадания = "";

В модуле «ОбщегоНазначения» в процедуре «СообщитьОбОшибке» собственно сохраняем служебные сообщения – дописываем в наш параметр сеанса если он не пустой (тексты процедур, которые надо доработать в модуль «ОбщегоНазначения» смотрим в файле «Общий модуль ОбщегоНазначения_ Модуль.txt»):

#Если не Клиент Тогда // т.к. сообщения перехватываем, когда запуск не интерактивный

  Если НЕ ПараметрыСеанса.СообщенияФоновогоЗадания = "" Тогда

    ПараметрыСеанса.СообщенияФоновогоЗадания = ПараметрыСеанса.СообщенияФоновогоЗадания + Символы.ПС

+ ТекстСообщения;

  КонецЕсли;     

#КонецЕсли

В нашей обработке вначале инициализируем параметр сеанса (записываем в него что-нибудь), чтобы он был непустой и при возникновении ошибок в него дописывались сообщения:

ПараметрыСеанса.СообщенияФоновогоЗадания = ПараметрыСеанса.СообщенияФоновогоЗадания

                                         + Формат(ТекущаяДата(), "ДФ=дд/ММ/гггг чч:мм:сс") + ": "

                                         + "Запущено автоматическое перепроведение по партиям за "

                                         + Формат(ПараметрПериодПерепроведения, "ДФ=""ММММ гггг""");

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

Данный алгоритм работает на 1С УПП 1.2.22.3.

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4453    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2954    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    1995    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. iov 406 24.11.11 23:50 Сейчас в теме
(0) нет ну что сказать ... Не то что нового - вообще ничего особенного - это даже не работа а так 15 минут пока кофе пьешь. Плюс за то что расписал - трудился сделал все почти без глобального переписывания конфы. но блин и код посмотрел . ну нету изюминки
За полезность - это должен уметь каждый.
За подачу плюс.... За то что ДВА месяца не писал такого а задерживался - минус.
И не новичок вроде (24.12.2008 09:38).
Нужен рейтинг для возможности качать? Пиши статьи - есть у тебя потенциал. Изложение художественное . Но опиши например топ ошибок и способы их решения тобой... Систему начисления бонусов манагерам или способ определения себестоимости продукта - до распределения на него всех косвенных затрат.
А так - решения для песочницы. Даже выгонялку и проверялку на другие регламентные задания не сделал.
2. VarvarV 40 25.11.11 08:29 Сейчас в теме
(1) iov,
За комментарий спасибо - любая информация полезна.
Не то что нового - вообще ничего особенного - это даже не работа а так 15 минут пока кофе пьешь
Ну так не на "зубров" рассчитано а на начинающих.
ну нету изюминки
Столкнулся с проблемой - решил. Мне не изящество надо было а решение проблемы.
За то что ДВА месяца не писал такого а задерживался
Сначала просто думал что это разово попросили... потом пытался "организовать" ручное выполнение бухгалтером... и только когда стало ясно что надо придумывать как самому выкручиваться - тогда и написал.
А так - решения для песочницы. Даже выгонялку и проверялку на другие регламентные задания не сделал.
Если не трудно покажите ту песочницу где про это написано - я сначала поискал в литературе и интернете - негусто...
Здесь выложен принцип и код как при автоматичеком запуске обработки "Проведение по партиям" сохранять сообщения. У себя в рабочей системе есть и проверки и ... здесь не хотел перегружать статью, так как на уровень новичков рассчитывал.
3. iov 406 25.11.11 12:25 Сейчас в теме
(2) Так я и написал что песочница- читай новички.
Плюс за то что расписал - трудился сделал все почти без глобального переписывания конфы
Просто выложил все это как обработку а не как статью - вот потому и вопросы. Будь это просто статья- словил бы плюс... Но именно как решение - слишком просто (если новичок это не способен сделать - то боюсь это уже не лечится).
4. aspirator23 339 03.12.11 13:35 Сейчас в теме
Аналогичную задачу делал через журнал. Для моих задач там все есть.
Но ни один раз сталкивался, что на продолжительных проведениях - 5 и более часов фоновое задание запускаемое сервером падало. Версия 8.2
Не сталкивался?
5. climepost 59 06.12.11 11:17 Сейчас в теме
(4) aspirator23,
да, в 8.2 дублирование сообщений в журнал регистрации как раз избавляет от необходимости менять конфигурацию.
6. vec435 15 06.12.11 11:49 Сейчас в теме
еще вариант: запуск 1С из ярлыка с параметром /Out "полный путь к файлу-логу"
7. amyd 94 16.08.13 10:13 Сейчас в теме
все гениальное просто - и не нужно сумашедших идей, которые описаны по всему инету .. спасибо!
8. Al-77 73 05.09.13 15:44 Сейчас в теме
Уважаемый вы пишите очищаем параметр сеанса что бы система не писала туда ошибки, не совсем понятна эта фраза. получается все что теперь происходит на сервере пишиться в параметр сеанса. или я что то не до понял.
9. AndrewVVS 16.10.13 22:14 Сейчас в теме
в 8.2 дублирование сообщений в журнал регистрации, кто в теме, поподробней с этого момента. Где в УТ 10.3 это настраивается? А то пришлось ошибки партии писать в журнал регистрации, а потом в конце регл задания их оттуда выгребать и отправлять Прльзователю + самому всегда можно посмотреть, кто из Пользователей начхал при проведении на данне сообщения! )), 1 строчка кода в СообщитьОНехваткеПартииУпр()
ЗаписьЖурналаРегистрации("Сообщение", УровеньЖурналаРегистрации.Примечание, СтрокаДокумента.Регистратор.Метаданные(), СтрокаДокумента.Регистратор, СтрокаСообщения, РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
10. kainder 68 12.02.14 17:28 Сейчас в теме

У нас при перепроведнии, может возникнуть несколько ошибок на несколько тысяч строк.
Спасибо! Статья пригодилась для общего развития.
Я проверил её на практике, но в итоге я сделал по другому:
Запуск 1С из ярлыка с параметром /Out "полный путь к файлу-логу", затем обработал полученный текстовый лог-файл, разложил ошибки по их видам в разные колонки, сохранил табличку в эксель . Экселька отправляется бухгалтеру на почту и все довольны)
Katren; kolesnikovdv; neyaka; +3 Ответить
13. kolesnikovdv 14.10.15 08:45 Сейчас в теме
(10) kainder,
Приветствую!
Скажите пожалуйста, а как можно налету сохранять служебные сообщения при перепроведение документов, когда закрывается месяц?
Это нужно на тот случай когда проведение слетело по какой-то причине: связь с сервером БД пропала, свет отключили и т.д..
Таким образом мы бы имели ошибки и сообщения до момента аварийного выхода из системы и потом можно было бы продолжить проведение с той даты, на которой вылетела программа.
Спасибо!
14. VarvarV 40 01.06.16 16:15 Сейчас в теме
(13) kolesnikovdv,
Например завести в конфигурации новый регистр сведений для таких сообщений, и писать сообщения не в параметр сеанса а в этот регистр новыми записями. Или вообще не в регистр писать а в текстовый файл.
11. slelvi 02.10.14 16:14 Сейчас в теме
Поделитесь обработкой на slelvi@rambler.ru . Заранее спасибо
12. Angel_19 6 26.03.15 13:30 Сейчас в теме
15. alexsu4236 10.11.16 13:27 Сейчас в теме
6 - /OUT не срабатывает при аварийном завершении.
16. Petrony 29.08.17 08:49 Сейчас в теме
Автору спасибо!
Искал идею, как решить такую же задачу.
Оставьте свое сообщение