Как выполнить внешнюю обработку в 1с 8.3. Добавление внешней обработки в базу

2016-12-08T15:04:29+00:00

Расскажу на примере своих обработок, которые я выкладываю у себя на .

1. Скачайте на рабочий стол архив с обработкой.

2. Сделайте двойной щелчок мышью по скачанному архиву и попадете внутрь.

Внимание! Если попасть внутрь архива не получилось (пишет ошибку "Приложение не найдено"), тогда нажмите на архиве правой кнопкой и выберите один из вариантов:

      • Извлечь всё
      • Открыть при помощи 7-Zip
      • Открыть при помощи WinRar
      • Или что-то похоже...

3. Там файл с обработкой (и уже с русским названием). Нажмите на нём правой кнопкой и выберите пункт "Копировать".

4. Вернитесь на рабочий стол, нажмите опять правой кнопкой на пустом места стола и выберите пункт "Вставить" (или можете просто перетащить файл обработки из архива на рабочий стол ).

5. На рабочем столе должен появиться файл из архива.

Для обычного интерфейса

Из меню выберите пункт "Файл->Открыть...":

Для управляемого интерфейса (такси и прочее)

Открываем напрямую из файла

Из меню выберите пункт "Файл"->"Открыть...":

В появившемся окне перейдите на рабочий стол, выберите файл с обработкой и нажмите кнопку "Открыть".

Готово! Обработка должна открыться в программе и ею можно пользоваться. Для удобства можно на рабочем столе создать специальную папку "Обработки" и хранить такие файлы там.

Регистрируем обработку в базе

Если же на этапе открытия файла у вас появилась ошибка "Нарушение прав доступа!":

Тогда придётся разрешить открытие внешних обработок (об этом ) или зарегистрировать обработку в базе - сделать это несложно, для этого:

Зайдите в раздел "Администрирование", пункт "Печатные формы, отчеты и обработки":

В открывшемся окне установите галку "Дополнительные отчеты и обработки" и откройте ссылку "Дополнительные отчеты и обработки":

В открывшемся окне нажмите кнопку "Создать":

Прочтите предупреждение и нажмите кнопку "Продолжить":

В появившемся окне перейдите на рабочий стол, выберите файл с обработкой и нажмите кнопку "Открыть":

Если на этом этапе выскочит ошибка "Невозможно подключить дополнительную обработку из файла...", то чтобы открыть обработку ничего не остаётся, кроме как разрешить открывать файлы из меню "Файл"->"Открыть" - вот об этом.

Найдите и нажмите пункт "Размещение":

В следующем окне отметьте галкой раздел "Операции" и нажмите "ОК".

В верхем меню заходим Сервис ->->.

Появляется форма списка справочника внешних обработок. В верхнем меню нажимаем кнопку Добавить .

Появится форма добавление нового объект. Нажимаем но кнопку открыть, и выбираем файл с нужной обработкой. После того как вы выбрали нужный файл, при необходимости, задайте имя обработки(поле Наименование). После этого нужно нажать ОК, чтобы сохранить сделанные изменения.

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

На этом все! Процесс добавления обработки в конфигурацию завершен. Чтобы впоследствии открывать эту обработку, заходите по старому пути: Сервис ->Дополнительные отчеты и обработки ->Дополнительные внешние обработки .

Для БП 3.0, ЗУП 3.0, УТ 11, ERP 2.0.

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

Для первого случая добавим обработку по заполнению справочника номенклатуры из Эксель.

Переходим в соответствующий раздел программы:


Необходимо, чтобы был установлен признак использования дополнительных отчетов и обработок, переходим по гиперссылке в список внешних объектов:

В списке нажимаем Создать :


В открывшемся диалоговом окне выбираем нужный файл с обработкой:


Заполнилась карточка нового внешнего объекта в программе, осталось только настроить размещение (разделы программы, из которых будет доступна обработка):


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


Записываем и закрываем карточку внешнего объекта:


Теперь откроем обработку из интерфейса:


Список пустой, нажимаем Настроить список :


Выбираем нашу обработку:


Теперь она доступна для выбора. Чтобы открыть обработку, нужно нажать Выполнить :


Теперь посмотрим, как добавляется обработка по заполнению (модификации) конкретных объектов. Для примера возьмем внешнюю обработку, которая прикрепляет сканы к выбранным элементам справочников или документам системы. Начало добавления такой обработки не отличается от предыдущего варианта. Различие в том, что в данном случае размещение заполняется автоматически (и не разделом программы, а типами объектов базы):


При желании список размещения можно скорректировать (не добавить дополнительное размещение, а убрать лишнее ):


Для принятия изменения карточку внешнего объекта также нужно записать.

Для того, чтобы воспользоваться обработкой, необходимо зайти в конкретный объект базы (из списка размещения), нажать пункт Заполнить в командной панели и выбрать команду:

Ранее была написана внешняя обработка, позволяющая просматривать количество документов в базе, введенных за текущий день по дате документа. Для чего она была создана не суть важно. Форма обработки достаточно простая, как и реализация:

Программный код обработки Вы можете посмотреть, скачав ее по ссылке в конце статьи. Мы же решим другую задачу. Нам нужно эту обработку запускать из меню "Сервис":

По нажатию на кнопку обработка запускается с уже введенной текущей датой в поле "Дата проверки".

Запуск

Сначала добавим кнопку "Количество документов за сутки" в интерфейс "Полный" и создадим для нее процедуру-обработчик в общем модуле.

Программный код процедуры-обработчика представлен на следующем листинге:

Процедура ПолныйДействие() Экспорт // Получаем ссылку на элемент справочника "Внешние обработки", //в котором находися искомый файл обработки СсылкаНаОбработку = Справочники. ВнешниеОбработки. НайтиПоНаименованию(" Количество введенных документов " , Истина ) ; // Записываем двоичные данные файла обработки во временный файл ИмяФайла = ПолучитьИмяВременногоФайла() ; ДвоичныеДанные = СсылкаНаОбработку. ХранилищеВнешнейОбработки. Получить() ; ДвоичныеДанные. Записать(ИмяФайла) ; // Получаем форму внешней обработки Форма = ВнешниеОбработки. ПолучитьФорму(ИмяФайла) ; // Открываем форму для пользователя Форма. Открыть() ; КонецПроцедуры

В общих чертах последовательность действия такая:

  1. Получаем ссылку на элемент справочника "ВнешниеОбработки".
  2. Извлекаем двоичные данные файла обработки, сохраненные в найденном элементе справочника.
  3. Записываем полученные двоичные данные во временный файл.
  4. С помощью созданного файла получаем форму внешней обработки и открываем ее.

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

Преимущества

Для чего это может понадобиться? Не легче ли добавлять обработки или очтеты непосредственно в конфигурацию?

Да, легче. Но что, если Вы часто дорабатываете обработку? Каждый раз при ее изменении обновлять информационную базу? Использовать динамическое обновление со всеми вытекающими рисками?

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

Использованная в статье обработка "Подсчет количества документов".

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

Создаем внешнюю обработку в 1С 8.3

Чтобы создать новую внешнюю обработку, используем конфигуратор. Через меню «Файл» выбираем команду создания «Новый…» и определяемся, что мы будем создавать внешнюю обработку. В открывшемся окне задаем имя, и при нажатии «Enter» оно заполняется автоматически. Также это имя вам предложит система в качестве названия файла при сохранении.

Добавим форму обработки, нажав на кнопку с изображением лупы в соответствующем окне. Для примера создадим обработку, показывающую, в каких заказах клиента используется определенная номенклатура. Для этого нам необходимо разместить на форме:

  • Реквизит – поле для установки номенклатуры;
  • Кнопку, которая выполнит вызов кода.

Добавляем реквизит «Номенклатура» с типом данных «СправочникСсылка.Номенклатура» в соответствующем разделе и кнопку «Показать» в меню «Команды» -> «Команды формы».

Чтобы на форме отразились добавленные данные, их необходимо перетащить в элементы формы, расположенные в левой верхней части. Есть возможность поменять местами элементы с помощью синих стрелок. Чтобы созданная нами кнопка выполняла задуманное, ей нужно назначить процедуру. Через контекстное меню выберем «Действие команды», и на вопрос, где нужен обработчик, ответим: «Создать на клиенте и процедуру на сервере».


Фрагмент 1

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере() //Вставить содержимое обработчика. КонецПроцедуры

Мы выбрали создание процедуры на сервере, так как хотим в качестве результата получить выборку из базы данных. На клиенте у нас нет такой возможности, поэтому потребуется подключение к серверу, который и обменивается с БД данными. Теперь нам необходимо написать код, который реализует задуманное нами. Будет использоваться запрос и вывод всех документов через функцию «Сообщить()».


Фрагмент 2

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(Номенклатура); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказКлиентаСостав.Ссылка КАК Ссылка | ИЗ | Документ.ЗаказКлиента.Состав КАК ЗаказКлиентаСостав | ГДЕ | ЗаказКлиентаСостав.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка); КонецЦикла; КонецПроцедуры

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

Чтобы разместить внешнюю обработку в разделе 1С, необходимо ей в модуле объекта прописать процедуру «СведенияОВнешнейОбработке». В основном меню обработки нажмите «Действия» и выберите «Модуль объекта». Здесь необходимо прописать все нужные для 1С настройки, чтобы система поняла, что от нее требуется и что за файл перед ней. На скриншоте изображен код функции «СведенияОВнешнейОбработке».

Функция СведенияОВнешнейОбработке() Экспорт ДанныеДляРег = Новый Структура(); ДанныеДляРег.Вставить("Наименование","Новая внешняя обработка"); ДанныеДляРег.Вставить("БезопасныйРежим", Истина); ДанныеДляРег.Вставить("Версия", "ver.: 1.001"); ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка"); ТабЗнКоманды = Новый ТаблицаЗначений; ТабЗнКоманды.Колонки.Добавить("Идентификатор"); ТабЗнКоманды.Колонки.Добавить("Использование"); ТабЗнКоманды.Колонки.Добавить("Представление"); НовСтрока = ТабЗнКоманды.Добавить(); НовСтрока.Идентификатор = "НоваяВнешняяОбработка"; НовСтрока.Использование = "ОткрытиеФормы"; НовСтрока.Представление = "Новая внешняя обработка"; ДанныеДляРег.Вставить("Команды", ТабЗнКоманды); Возврат ДанныеДляРег; КонецФункции

Фрагмент 3

Подключение внешней обработки в 1С

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


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

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

Если мы хотим внести изменения в нашу обработку, необходимо сначала выгрузить ее из базы. Для этого в справочнике «Дополнительные обработки и отчеты» найдите нужную строчку и воспользуйтесь командой «Выгрузить в файл…». Внесите изменения, сохраните обработку и через клавишу «Загрузить из файла…» найдите измененный файл epf, не меняя параметры. После записи все пользователи увидят внесенные изменения.

Если вы используете не типовую или снятую с поддержки базу 1С, то воспользуйтесь возможностью загрузить обработку через конфигуратор. В дереве объектов в разделе «Обработки» создайте новую обработку и через контекстное меню выберите «Заменить на внешнюю обработку, отчет…». Останется лишь настроить запуск внешней обработки из нужного раздела, включив добавленную обработку в нужную подсистему.


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

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

Отлично, если эти операции у Вас уже написаны внешними обработками, не проблема, если это не так, создать и перенести все туда. Далее для проверки работоспособности рекомендую протестировать все это в ручном режиме и далее, если все работает как надо, переписать основной код обработки таким образом, чтобы при загрузки внешней обработки она стартовала автоматически, без нажатий на кнопку выполнить и тому подобное. Самое простое, перенести код в процедуру ПриОткрытии() .

Следующий шаг, делаем автоматическое закрытие программы после выполнения внешней обработки, которую мы создали и она у нас уже работает. Для этого в процедуре ПриОткрытии() в самом конце вставляем следующую команду: ЗавершитьРаботуСистемы(Ложь); в данном случае параметру ЗапрашиватьВозможность мы передаем значение «Ложь», что бы отсечь различные варианты дополнительных вопросов системы при закрытии, тем самым инициируем безусловное завершение работы 1С после выполнения данной внешней обработки. Для верности опять запускаем программу и выполняем обработку и убеждаемся, что она отработала и программа сама закрылась.

«C:\Program Files (x86)\1cv8\8.3.5.хххх\bin\1cv8.exe» ENTERPRISE /DisableStartupMessages /FС:\путь к базе /N»ИмяПользователя» /P»ПарольПользователя» /Execute с:\путь к обработке\самаобработка.epf

Расшифруем:

1. «C:\Program Files (x86)\1cv8\8.3.5.хххх\bin\1cv8.exe» ENTERPRISE — сам движок 1С в данном случае 8.3, проверьте путь с себя сами, он отличается в зависимости от версии и движка в том числе и не забываем править его после обновления последнего.

2. /DisableStartupMessages — отключаем все сообщения при старте системы.

4. /N»ИмяПользователя» /P»ПарольПользователя» — соответственно /N имя пользователя, также сразу без пробела и /P пароль.

5. /Execute с:\путь к обработке\самаобработка.epf — /Execute запускает нашу обработку, путь и название должно следовать после этого ключа.

Теперь все, остается только добавить в планировщик заданий наш cmd файл: avtozapusk1c.cmd , указав расписание его запуска.

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

Вот такие не хитрые инструменты помогают автоматизировать каждодневные рутинные операции, успехов Вам!

mob_info