1с дополнительные отчеты и обработки расписание
Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.
Для более полного ознакомления можно развернуть демонстрационную конфигурацию по БСП. В ней есть необходимые примеры.
Что можно подключить
- внешние обработки (файлы с расширением “epf”) ;
- внешние отчеты (файлы с расширением «erf»).
Виды разработок
- Дополнительная обработка.
- Дополнительный отчет.
- Заполнение объекта. Возможность установить свои кнопки по заполнению документа (ранее были только кнопки по заполнению табличной части).
- Печатная форма. Дополнительная печатная форма. Добавляется кнопка «Дополнительные печатные формы».
- Отчет. Прикрепляемый к справочникам и документам.
- Создание связанных объектов. Свой ввод на основании. В пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…».
Возможности БСП:
- В документах можно добавлять кнопки по заполнению всего документа, кнопки по вводу на основании.
- Обработка может содержать несколько команд меню.
- Вводить на основании и заполнять объекты сразу на основании нескольких объектов.
- Задавать расписание выполнение серверных команд (на сервере).
- Задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или полные права
- Задать режим использования: «Не использовать», «Отладка», «Использовать».
- Включить использование в формах объекта и в форма списков
- Привязать ко всем указанным объектам обработку или отчет.
- Настроить быстрый доступ к определенным командам внешних обработок.
- Возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.
Сведения о внешней обработке
«Вид»
Минимальным условием для регистрации разработки является заполнение поля «Вид».
Значение поле может принимать одно из значений, возвращаемых функциями: ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки().
Таблица. Поле «ВИД».
«Назначение»
Содержит массив объектов конфигурации в формате «.», для которых будет назначен внешний отчет/обработка.
«Наименование»
Строка. Подставляется в наименование при создании элемента справочника «Дополнительные отчеты и обработки». Если не заполнено, то используется синоним внешней обработки/отчета.
«Команды»
Таблица значений. Загружается в одноименную табличную часть элемента справочника «Дополнительные отчеты и обработки» при регистрации внешней обработки.
Эту табличную часть можно заполнить и вручную.
Колонки таблицы:
Идентификатор – строка (идентификатор команды).
Представление – описание команды.
Модификатор — строка (используется для дополнительных печатных форм).
ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончания выполнения (для команд клиентских и серверных без формы).
Использование – режим запуска обработки.
В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.
Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.
Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды(), например, ТипКомандыВызовСерверногоМетода().
Таблица. Возможные варианты использования в таблице.
Тип команды | Значение поля «Вид» | Вызываемая экспортная процедура |
ВызовСерверногоМетода | ПечатнаяФорма | Печать( МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) |
ДополнительнаяОбработка ДополнительныйОтчет Отчет | ВыполнитьКоманду( ИдентификаторКоманды, ПараметрыВыполнения) | |
СозданиеСвязанныхОбъектов | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполнения) | |
ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) | |
ВызовКлиентскогоМетода | ПечатнаяФорма | &НаКлиенте Печать( ИдентификаторКоманды, ОбъектыНазначенияМассив) |
ДополнительнаяОбработка ДополнительныйОтчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды) | |
СозданиеСвязанныхОбъектов | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) | |
ЗаполнениеОбъекта Отчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив) | |
Для всех видов | в форму передается параметр ДополнительнаяОбработкаСсылка | |
ОткрытиеФормы | СозданиеСвязанныхОбъектов ЗаполнениеОбъекта Отчет | в форму передается дополнительный параметр ОбъектыНазначения |
Для всех видов | в форму передаются параметры ИдентификаторКоманды ДополнительнаяОбработкаСсылка ИмяФормы | |
Отчет | Отчет с макетом СКД может не иметь форму, тогда будет использована общая форма для отчетов по умолчанию | |
ЗаполнениеФормы | ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) |
СценарийВБезопасномРежиме | Для всех видов | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыСценарийВБезопасномРежиме() |
ЗагрузкаДанныхИзФайла | ДополнительнаяОбработка | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыЗагрузкаДанныхИзФайла() |
Для типа команды ВызовКлиентскогоМетода необходимо создать форму в обработке, назначить ее основной и объявить экспортную процедуру.
«Версия БСП»
Строка, версия встроенной в конфигурации БСП. Необходима для поддержки совместимости. Можно не заполнять.
«Безопасный Режим»
Булево, отображает режим запуска обработка. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.
«Информация»
Строка, комментарий, который характеризует обработку.
«Версия»
Строка, версия обработки.
Подготовка разработки к подключению.
Для подключения разработки в базу необходимо задать параметры в экспортной функции модуля объекта «СведенияОВнешнейОбработке».
Пример
Подключение к базе.
Открываем справочник «Дополнительные отчеты и обработки». Кнопкой «Добавить» создаем элемент справочника. После чего система предложит прикрепить вашу разработку. Система автоматически заполнит поля формы функцией «СведенияОВнешнейОбработке.
Отладка
Единственный минус дополнительных отчетов и обработок заключается в том, что внутри них не работает встроенный в платформу отладчик.
Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.
В типовых конфигурациях существует возможность запуска внешних обработок по расписанию. Наверняка, многие сталкивались с подобной задачей. В данной статье рассмотрим как можно реализовать такую возможность для управляемого приложения и обычного.
Итак, управляемое приложение. В современных конфигурациях данный функционал реализован и остается только им воспользоваться, создадим внешнюю обработку, например хотим производить выгрузку XML через универсальный обмен по расписанию, для этого нам нужно:
создать внешнюю обработку (в моем примере даже не буду создавать форму),
в модуле внешней обработки разместить следующую процедуру:
далее идут процедуры и функции, необходимые для выполнения вашего алгоритма:
теперь добавим подключим нашу обработку к базе, как внешнюю и посмотрим, как это будет выглядеть, теперь мы можем задать расписание для своей обработки:
проверяем журнал регистрации, чтобы убедиться в выполнении нашей обработки:
Как мы видим в управляем приложении все довольно просто, теперь попробуем реализовать то же самое только для обычного приложения. На самом деле на инфостарте куча разных способов, как это можно сделать, но многие из них мне не подошли, а подошел способ, который я нашел на одном из ресурсов, доработал под свои нужды и все заработало, как нужно, хочется его осветить подробнее. Суть будет заключаться во внедрении части функционала БСП управляемых форм, для обычных.
Возьмем какую-нибудь типовую конфигурацию на обычных формах, например УПП.
Для справочника ВнешниеОбработки, добавим табличную часть Команды со следующей структурой (все реквизиты строкового типа):
в модуль формы добавим следующий код, для обработки изменения расписания на форме:
Теперь касаемо БСП, берем за основу подсистему дополнительных отчетов и обработок, и адаптируем ее под обычное приложение, поместим в общий модуль ДополнительныеОтчетыИОбработки, рабочий код выглядит следующим образом:
Добавим подписку на событие ПриЗаписиВнешнейОбработки для события ПриЗаписи, в качестве обработчика будет выступать ДополнительныеОтчетыИОбработки.ПриЗаписиВнешнейОбработки:
Добавим регламентное задание без расписания, назовем ЗапускДополнительныхОбработок, с его помощью и будем запускать внешние обработки, в качестве метода укажем ДополнительныеОтчетыИОбработки.ПриЗаписиВнешнейОбработки:
А теперь создадим, какую-нибудь внешнюю обработку, которую хотим запускать по расписанию, для этого в модуле обработки обязательно наличие следующей процедуры:
Теперь запустим конфигурацию, добавим внешнюю обработку и посмотрим, что получилось, появилась настройка расписания:
Проверяем через консоль заданий, и видим, что добавилось регламентное задание с названием нашей внешней обработки:
С помощью таких способов, можно решить данную задачу, однако изучите и другие способы, возможно придет идея, сделать что - то свое, спасибо человеку, который описывал данный способ для обычных форм, ресурс не помню, но решил доработать и разжевать полученную информацию, всем удачи)
При работе с программой 1С Предприятие 8 возникает необходимость автоматического запуска каких-то обработок по расписанию (ежедневно, каждый час, месяц и т.п.). Например это можно использовать для автоматического обмена между сайтом и 1С или между двумя базами 1С. В этой инструкции мы рассмотрим как настроить такое расписание на примере внешней обработки “Автоматическое закрытие заказов в 1С УТ 11”
Настройка внешней обработки по расписанию в 1С 8.3
Чтобы настроить запуск внешней обработки по расписанию переходим в раздел где мы устанавливали внешнюю обработку (обычно это меню “НСИ и Администрирование – Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки”) и открываем форму нашей обработки. И в табличной части находим строку, в которой можно поставить флажок в колонке “Расписание” и нажимаем его:
Настраиваем ежедневный запуск обработки 1С
На закладке «Общие» поставим значение «Повторять каждые: 1 день» и внизу, в подсказках увидим «Каждый день; один раз в день». Т.е. 1С будет запускать нашу обработку каждый день:
Чтобы настроить конкретное время выполнения обработки в 1С, на закладке «Дневное» можно установить время начала и окончания запуска задания. Например, сделаем запуск задания с 6 утра до 11 дня:
Настройка недельного расписания выполнения обработки 1С
Чтобы ограничить выполнение внешней обработки 1С по дням недели, можно в расписании переключиться на закладку “Расписание” и выбрать дни недели, в которые должна запускаться обработка:
Настройка ежемесячного расписания
На вкладке “Месячное” можно выбрать конкретные месяца, в которые требуется автоматически запуск обработки. Кроме того, здесь же мы можем настроить и конкретные дни для запуска. Например можно настроить, чтобы обработка запускалась в первый или в последний день месяца:
Выполнить обработку по расписанию в 1С
Работа по расписанию работает как в клиент-серверном режиме даже без запущенной 1С. А в файловом режиме работы, работа по расписанию работает когда есть хотя бы один запущенный сеанс работы 1С. Пример готового расписание:
Как проверить работу обработки по расписанию?
Проконтролировать правильность выполнения обработок по расписанию можно в меню “НСИ и администрирование” – Обслуживание (раздел Администрирование) – Регламентные операции – Регламентные и фоновые задания:
В данном списке находим обработку и проверяем, чтобы стояла зеленая галочка (это значит, что расписание активно). В колонке “Состояние” должно быть “Задание выполнено”, а в колонке “Дата окончания” дата и время последнего выполнения обработки:
Здесь же есть кнопка “Выполнить сейчас” её можно использовать для отладки, чтобы не ждать следующего времени запуска по расписанию, а запустить обработку сейчас же.
Если нужно добавить новую обработку, то нажимаем кнопку «Добавить из файла…»
Если нужно обновить уже установленную обработку, то установим курсор на строку с названием обработки и нажимаем кнопку «Обновить из файла…»
На экране может появиться окно «Предупреждение безопасности», нажимаем кнопку продолжить и переходим к выбору файла:
Выбираем файл с внешней обработкой, который скачали с интернета и нажимаем «Открыть»
Как добавить внешнюю обработку в меню?
Для удобства размещения рекомендуем настроить разделы и пользователей, которые смогут пользоваться обработкой. Для этого в строке «Размещение» нажмите на надпись «Не определено» и выберем разделы, например «Операции»
Теперь в колонке «Быстрый доступ» нужно выбрать пользователей, которые смогут пользоваться внешней обработкой. В левой части пользователи, которые не видят эту обработку. Перемещаем нужных сотрудников в правую колонку, нажимаем «ОК» и далее записываем изменения кнопкой «Записать и закрыть»
Где находится внешняя обработка в 1С?
Переходим в раздел, который мы выбрали в качестве размещения (в нашем примере это раздел «Операции») и кликаем на надпись «Дополнительные обработки»
Выбираем строку с нужной обработкой и после нажатия на кнопку «Выполнить» мы сможем начать работу с установленной внешней обработкой.
Автоматическое выполнение обработки по расписанию
Если разработчики внешней обработки предусмотрели, то можно настроить автоматический запуск обработки в 1С по расписанию. Как это сделать мы описали в инструкции “Как в 1С запускать обработки по расписанию?” – в этом случае всю работу она будет выполнять без вашего участия.
Интересное в нашем блоге
Сегодня, после обновления 1С:Бухгалтерия предприятия, при открытии Регламентированных отчетов стала появляться ошибка следующего: “Таблица не найдена «Константы»” Рассказываем о двух способах, как бесплатно решить эту проблему. Ошибки в 1С
Ошибка: Таблица не найдена Константы. Константы КАК Константы
1С ИНН – обработка для заполнения реквизитов контрагентов
В этой статье мы собрали все ответы на вопросы, начинающиеся на “Где в 1С…”. Просто найдите нужный вопрос в списке и нажмите на него, чтобы раскрыть ответ. Мы постоянно будем пополнять новыми вопросами. Кстати, вы свой вопрос вы можете написать нам (смотрите раздел “Контакты”). Где в 1С Предприятие.
Где в 1С: Регистры накопления, сведений, бухгалтерии, расчетов
Рассказываем как подключиться к АПИ телеграм из 1С Предприятие 8, через прокси сервера сокс5. Простой способ: используйте его в своих разработках Программирование в 1С
Как настроить API telegram в 1С через proxy socks5
Как скачать бесплатную версию отчета для 1С?
Статья для тех, кто задаётся вопросом как же быстро загрузить табели в 1С из файла Excel (Эксель). Несколько лет назад мы разработали специальную обработку именно для этого случая и сегодня хотим рассказать о её плюсах и минусах. Обработка для загрузки табелей в 1С ЗУП (Зарплата и управление персоналом) работала следующим образом: В начале месяца отдел […] Статьи
Как загрузить табель из Excel в 1С ЗУП
В процессе использования учётной системы на базе 1С:Предприятие иногда возникает необходимость выполнять какую-то однотипную операцию через определённые промежутки времени.
В системе 1С:Предприятие есть объект, позволяющий решать такие задачи. Это объект "Регламентное задание". Мы можем создать его и настроить под свои потребности. Однако, когда мы имеем дело с типовыми конфигурациями 1С, находящимися на поддержке, создание дополнительного регламентного задания повлечёт за собой невозможность обновления системы в автоматическом режиме.
Выход: сделать внешнюю обработку с возможностью запускать её по расписанию.
Возможность запускать внешнюю обработку по расписанию задаётся в модуле объекта внешней обработки. А именно в теле функции СведенияОВнешнейОбработке () .
Существует три варианта запуска внешней обработки:
- Открытие формы
- Вызов серверного метода
- Вызов клиентского метода
Задаётся вариант запуска в параметрах процедуры ДобавитьКоманду () .
Настраивать расписание можно только для обработок с режимом запуска "Вызов серверного метода" и "Вызов клиентского метода".
Вариант "Вызов серверного метода" означает, что будет вызвана процедура, размещённая в модуле объекта внешней обработки.
Вариант "Вызов клиентского метода" означает, что будет вызвана процедура, размещённая в модуле формы внешней обработки.
Код в модуле объекта внешней обработки:
Программный код, который должен выполняться при запуске внешней обработке, должен находиться в теле процедуры ВыполнитьКоманду () .
После добавления обработки в систему 1С:Предприятие через механизм подключения внешних обработок, станет доступной настройка расписания.
Применяется если требуется выполнять какое-то действие с определенной периодичностью. Например, резервное копирование БД или обновление индексов полнотекстового поиска.
Рассмотрим вариант обновления индексов. Индекс полнотекстового поиска сосотоит из дополнительного индекса и основного индекса. Дополнительный индекс следует обновлять достаточно часто. Это и будет нашим заданием.
Создание задания:
1) Создаем объект конфигурации РегламентноеЗадание(Общие).
2) Создаем новую процедуру в ОбщиеМодули. Она будет делать обновление индексов. Вот ее код:
Код 1C v 8.х
3) Задаем расписание.
На практике мы используем файловый вариант 1С Предприятие. В этом варианте для осуществления выполнения заданий по расписанию небходима постоянно работающая обработка, запущения из клиентского режима.
Используйте готовые обработки: Регламентированные задания, запуск и настройка или создайте такую обработку сами:
Создадим объект конфигурации Обработка. На Форме добавим кнопку с действием ОбработкаЗаданий()
В модуль этой формы добавим код, запускающий выполнение заданий:
Код 1C v 8.х
Эту процедуру необходимо запустить из клиентского режима 1С Предприятие. Пока окно приложения с этой процедурой открыто задания будут выполнятся. Другие действия рекомендуется проводить в другом окне 1С.
В комментариях к статье был задан в вопрос « Как пользоваться в УТ11 запуском СВОИХ обработок по расписанию «.
Постараюсь все подробно объяснить. Начнем.
2. Отредактировать процедуру «СведенияОВнешнейОбработке» в модуле обработке. Все выделенные параметры на рисунке заменить на свои значения
3. Описать код команды для выполнения. Для этого необходимо отредактировать процедуру «ВыполнитьКоманду«.
4. Добавить обработку для выполнения и настроить расписание.
- Перейти в раздел «Администрирование» и выбрать пункт в панели навигации «Печатные формы, отчеты и обработки». Выполнить пункт «Дополнительные отчеты и обработки».
- В форме списка обработок и печатных форм по кнопке «Создать» добавить нашу обработку
- В колонке «Расписание» настраиваем наш регламент.
- После всех настроек необходимо выполнить команду «Записать и закрыть»
Если все выполнено правильно, то обработка будет добавлена в список регламентных заданий.
28 Responses to Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»
Спасибо за помощь! Все понятно. Очень понравились все ваши материалы. Доступно и просто.
в списке регламентных заданий написано что выполнено, но на самом деле обработка ничего не сделала. Нажимаю Выполнить сейчас — все отрабатывает корректно. В чем может быть проблема?
1. Посмотрите в журнале регистрации, может есть ошибки при выполнении задания планировщиком
2. Если ошибок нет, добавьте в код вывод отладочной информации в журнал регистрации.
3. Какой у Вас релиз торговли?
У меня такая же проблема, действительно когда запускаешь руками через команду «Выполнить сейчас»- отрабатывает, когда ждешь выполнения по расписанию, то просто пишет что «Регламентное задание выполнено», но при этом необходимых действий не выполняется.
Здравствуйте. Проверил на платформе 8.3.6.2041 конфигурация «УТ 11.1.10.86 (файловая)» — обработка запускает и код выполняется. Проверить можно прописав
перед началом выполнения команды ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, "До выполнения команды");
там где выполняется команда ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, "Выполнение команды");
Затем посмотреть в журнале регистрации результат.
Если записей не будет, тогда надо искать причину, в коде конфигурации либо в настройках (возможно используются профили безопасности и обработка выполняется
в безопасном режиме либо установлено выполнение в безопасном режиме, что накладывает свои ограничения).
В списке регламентных и фоновых есть , выполнить сейчас — все выполняется ,по расписанию — не запускается…Конфа бух 3.0 типовая. Не подскажите в чем может быть дело? И версия БСП в параметрах регистрации если нужна , то откуда взять?
Здравствуйте.
К сожалению Вы не уточнили какой у Вас тип СУБД (файловый или клиент-серверный) и релиз конфигурации.
Если клиент-серверный, то должно все выполняться если нет ограничений в настройках базы в кластере (регламентные и фоновые задания отключены).
Если файловый, то например в Бух 3.0.23 надо было запускать отдельный сеанс для выполнения регламентных заданий.
Из последних версий проверил шаблон из статьи на 3.0.39 — все работает (отдельный сеанс не нужен).
в том то и дело , что клиент-сервер и в кластере не стоит галка запрета.
К сожалению есть какая то особенность в Вашей базе, потому проверил на демо-базе Бух 3.0.39 платформа 8.3.6 на клиент-сервере, тоже все хорошо.
сама обработка делает COM соединение с другой базой , может где то надо добавить права? Насильственно я запускаю ее под администратором , а по расписанию она под кем запустится(под какими правами)?
Рекомендую в самом начале процедуры сделать запись в журнал регистрации чтобы убедиться запускается рег. задание или нет.
Если в настройках рег. задания указана роль, то задание будет выполнено под это ролью, иначе под любой ролью, которая имеет полные права.
Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
РегистрационныеДанные.Вставить("Наименование", "Прайс по отобранным соглашениям с КЗ расширенный серв.3");
РегистрационныеДанные.Вставить("Версия", "3.00");
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
РегистрационныеДанные.Вставить("Информация", "Прайс по отобранным соглашениям с КЗ расширенный серв.3");
ТЗКоманды = Новый ТаблицаЗначений;
ТЗКоманды.Колонки.Добавить("Идентификатор");
ТЗКоманды.Колонки.Добавить("Представление");
ТЗКоманды.Колонки.Добавить("Модификатор");
ТЗКоманды.Колонки.Добавить("ПоказыватьОповещение");
ТЗКоманды.Колонки.Добавить("Использование");
СтрокаКоманды = ТЗКоманды.Добавить();
СтрокаКоманды.Представление = "Прайс по соглашениям c кратностью Заказа расширенный серв";
СтрокаКоманды.ПоказыватьОповещение = Ложь;
//СтрокаКоманды.Использование = "ОткрытиеФормы";
строкаКоманды.Использование = "ВызовСерверногоМетода";
СтрокаКоманды.Идентификатор = "Прайс расширенный регламентный";
СтрокаКоманды.Модификатор = "";
РегистрационныеДанные.Вставить("Команды", ТЗКоманды);
Возврат РегистрационныеДанные;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды)
Если ИдентификаторКоманды = "Прайс расширенный регламентный" Тогда
ЗаполнитьНастройки();
СформироватьНаСервере() ;
КонецЕсли;
КонецПроцедуры
….
Регистрирую обработку в УТ11 (клиент-сервер). Задаю ей расписание (запуск внешних… разрешен). После сохранения расписание очищается. Регламентное задание не создается. Обработка «руками» запускается и работает нормально.
В чем может быть дело, не подскажете?
Здравствуйте.
В указанный код я бы добавил в процедуру «СведенияОВнешнейОбработке» строку
и процедуру «ВыполнитьКоманду» сделал бы экспортной.
С внесенными правками в присланный код, обработка корректно отработала на платформе 8.3.6.2100 и конфигурации «УТ 11.1.10»
Читайте также: