Содержание
Рассмотрим в данной статье пошаговую инструкцию по созданию внешней обработки в 1С 8.3 в режиме управляемого приложения, соответственно, будем использовать управляемые формы. А самое главное — мы научимся подключать её к механизму «внешних обработок» конфигураций 1С, построенных на библиотеке стандартных подсистем версии 2.0 и новее.
Задача будет следующая: создать простейшую внешнюю обработку, которая будет выполнять групповое действие над справочником «Номенклатура», а именно, устанавливать выбранный процент ставки НДС для указанной группы номенклатуры.
Включение механизма внешних обработок в программе
Для этого сразу произведем необходимую настройку в программе (рассматривается конфигурация 1С 8.3: «Бухгалтерия предприятия 3.0» на управляемых формах).
Заходим в меню «Администрирование» и по ссылке «Печатные формы, отчеты и обработки» переходим в настройки. Здесь нужно установить флажок «Дополнительные отчеты и обработки»:
Установка данного флажка дает нам возможность использовать внешние обработки.
Создание новой внешней обработки в 1С 8.3 на примере
Теперь переходим в конфигуратор. В меню «Файл» выбираем «Новый…». Откроется окно выбора вида создаваемого файла. Выбираем «Внешняя обработка»:
Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:
Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:
На форме у нас будет два реквизита:
- ГруппаНоменклатуры – ссылка на справочник «Номенклатура»;
- ВыбСтавкаНДС – ссылка на перечисление Ставки НДС.
Создаем реквизиты в колонке «Реквизит» в верхнем правом окне. Перетаскиваем мышкой их в левое верхнее окно. Новые реквизиты должны сразу отобразиться на форме внизу.
Очередность реквизитов можно менять стрелками «Вверх» – «Вниз»:
Получите 267 видеоуроков по 1С бесплатно:
Осталось добавить кнопку «Установить». В управляемых формах нельзя просто так добавить кнопку на форму. Даже если добавить её в структуру элементов формы, на самой форме её видно не будет. Кнопку обязательно нужно связать с командой, которую она будет выполнять. Переходим к закладке «Команды» и добавляем команду «УстановитьСтавкуНДС». В свойствах команды создаем действие. Обработчик команды выбираем «На клиенте». Команду можно добавить на форму также простым «перетаскиванием» в раздел с элементами формы.
В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:
В процедуре на сервере напишем небольшой запрос и действия, связанные с установкой ставки НДС:
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)
| И НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа»;
Запрос.УстановитьПараметр(«ГруппаНоменклатуры», ГруппаНоменклатуры);
РезЗапроса = Запрос.Выполнить();
ВыбДетЗаписи = РезЗапроса.Выбрать();
Пока ВыбДетЗаписи.Следующий() Цикл
СпрНомОбъект = ВыбДетЗаписи.Ссылка.ПолучитьОбъект();
СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;
Попытка
СпрНомОбъект.Записать();
Исключение
Сообщить(«Ошибка записи объекта «»» + СпрНомОбъект + «»»!
|» + ОписаниеОшибки());
КонецПопытки;
Возвращаемся на закладку «Форма», добавляем на форму кнопку и связываем ее с командой:
Как таковая наша обработка готова к использованию. Чтобы ее вызвать, в режиме «1С Предприятия» нужно зайти в меню «Файл» – «Открыть» и выбрать созданный файл.
Однако работа в таком режиме удобна для отладки обработки, а для работы пользователю не совсем подходит. Пользователи привыкли, чтобы у них все было «под рукой», то есть в самой базе данных.
Для этого и служит раздел «Дополнительные отчеты и обработки».
Но чтобы добавить туда нашу обработку, нужно сначала дать ей описание и сообщить программе ее свойства.
Описание функции «Сведения О Внешней Обработке»
Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить(«Наименование», «Установка ставки НДС»);
ДанныеДляРег.Вставить(«БезопасныйРежим», Истина);
ДанныеДляРег.Вставить(«Версия», «ver.: 1.001»);
ДанныеДляРег.Вставить(«Информация», «Обработка для установки ставки НДС в справочнике Номенклатура»);
ДанныеДляРег.Вставить(«Вид», «ДополнительнаяОбработка»);
ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить(«Идентификатор»);
ТабЗнКоманды.Колонки.Добавить(«Использование»);
ТабЗнКоманды.Колонки.Добавить(«Представление»);
НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = «ОткрытьОбработку»;
НовСтрока.Использование = «ОткрытиеФормы»;
НовСтрока.Представление = «Открыть обработку»;
ДанныеДляРег.Вставить(«Команды», ТабЗнКоманды);
Чтобы лучше понять, какие поля структуры регистрационных данных нужно использовать, посмотрим реквизиты справочника «Дополнительные отчеты и обработки»:
Как видим, все довольно просто. Не совпадает лишь один реквизит: «ВариантЗапуска» – «Использование». Если посмотреть код одного из общих модулей, то мы увидим, как возникает связка этих полей:
Чтобы определить, какие поля структуры обязательны, можно сначала не описывать ее, просто создать пустую, а далее воспользоваться отладчиком. Если трассировать модули при регистрации обработки, сразу становится ясно, какие поля требуются, а какие нет.
Подключение внешней обработки в 1С 8.3
Перейдем теперь в режим «1С Предприятия» и добавим внешнюю обработку:
После записи обработки в справочник нажатием кнопки «Выполнить» она открывается на выполнение. Здесь же можно указать, в каких разделах (подсистемах) программы будет отображаться данная обработка и для каких пользователей.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Михаил Сайко
Внешние обработки – очень удобный инструмент для компаний, использующих типовые конфигурации на 1С:Предприятие 8.3. Они позволяют не тратить силы и средства на обновления 1С, давая возможность обновлять базы одной кнопкой в режиме простого пользователя. Используя механизм библиотеки стандартных подсистем, можно добавить различные кнопки в документы и справочники, не изменяя типовую конфигурацию. Рассмотрим пример создания и подключения внешней обработки в одной из конфигураций 1С.
Создаем внешнюю обработку в 1С 8.3
Чтобы создать новую внешнюю обработку, используем конфигуратор. Через меню «Файл» выбираем команду создания «Новый…» и определяемся, что мы будем создавать внешнюю обработку. В открывшемся окне задаем имя, и при нажатии «Enter» оно заполняется автоматически. Также это имя вам предложит система в качестве названия файла при сохранении.
Добавим форму обработки, нажав на кнопку с изображением лупы в соответствующем окне. Для примера создадим обработку, показывающую, в каких заказах клиента используется определенная номенклатура. Для этого нам необходимо разместить на форме:
- Реквизит – поле для установки номенклатуры;
- Кнопку, которая выполнит вызов кода.
Добавляем реквизит «Номенклатура» с типом данных «СправочникСсылка.Номенклатура» в соответствующем разделе и кнопку «Показать» в меню «Команды» -> «Команды формы».
Чтобы на форме отразились добавленные данные, их необходимо перетащить в элементы формы, расположенные в левой верхней части. Есть возможность поменять местами элементы с помощью синих стрелок. Чтобы созданная нами кнопка выполняла задуманное, ей нужно назначить процедуру. Через контекстное меню выберем «Действие команды», и на вопрос, где нужен обработчик, ответим: «Создать на клиенте и процедуру на сервере».
Мы выбрали создание процедуры на сервере, так как хотим в качестве результата получить выборку из базы данных. На клиенте у нас нет такой возможности, поэтому потребуется подключение к серверу, который и обменивается с БД данными. Теперь нам необходимо написать код, который реализует задуманное нами. Будет использоваться запрос и вывод всех документов через функцию «Сообщить()».
На текущем этапе мы можем в запущенной базе 1С осуществить открытие внешней обработки как обыкновенного файла, и она уже будет работоспособна. Но если у нас много пользователей, нам придется разослать им всем этот файл, снабдив при этом его инструкцией о том, как его, собственно, открывать в 1С, что крайне неудобно. Чтобы этого избежать, наша обработка должна располагаться внутри одного из разделов 1С. Для этого нам необходимо еще немного ее доработать через конфигуратор, указав определенные настройки.
Чтобы разместить внешнюю обработку в разделе 1С, необходимо ей в модуле объекта прописать процедуру «СведенияОВнешнейОбработке». В основном меню обработки нажмите «Действия» и выберите «Модуль объекта». Здесь необходимо прописать все нужные для 1С настройки, чтобы система поняла, что от нее требуется и что за файл перед ней. На скриншоте изображен код функции «СведенияОВнешнейОбработке».
Подключение внешней обработки в 1С
Перед тем, как подключать внешнюю обработку к типовой конфигурации, необходимо включить использование этого инструмента. В «Администрировании» в подпункте «Печатные формы, отчеты и обработки» устанавливаем флаг напротив нужного нам механизма. Нам становится доступна кнопка перехода к справочнику дополнительных обработок и отчетов.
При переходе к списку создадим новую строчку в нем, и система предложит выбрать файл. Выбираем сделанную нами и сохраненную обработку, и конфигурация 1С самостоятельно заполняет большинство полей. Через кнопку «Выполнить» мы уже можем проверить работоспособность нашей обработки, но это не слишком удобно для остальных пользователей. Чтобы у пользователей появилась наша команда, и они могли сделать вызов, нам необходимо:
- Указать размещение объекта. Нажатием на «Не определено» мы открываем окно разделов и укажем, в каких разделах будет доступна операция;
- Выбрать пользователей, у которых данная команда появится в меню «Дополнительные обработки» выбранных разделов без лишних настроек. Для этого в табличной части нужно выбрать пункт «Быстрый доступ» и добавить в правую половину ответственных пользователей;
- На вкладке «Дополнительная информация» вы можете указать папку, в которой будет находиться загруженная обработка;
- После нажатия клавиши «Записать» в выбранном разделе в меню «Дополнительные обработки» пользователи обнаружат нашу команду и смогут ею воспользоваться.
Если мы хотим внести изменения в нашу обработку, необходимо сначала выгрузить ее из базы. Для этого в справочнике «Дополнительные обработки и отчеты» найдите нужную строчку и воспользуйтесь командой «Выгрузить в файл…». Внесите изменения, сохраните обработку и через клавишу «Загрузить из файла…» найдите измененный файл epf, не меняя параметры. После записи все пользователи увидят внесенные изменения.
Если вы используете не типовую или снятую с поддержки базу 1С, то воспользуйтесь возможностью загрузить обработку через конфигуратор. В дереве объектов в разделе «Обработки» создайте новую обработку и через контекстное меню выберите «Заменить на внешнюю обработку, отчет…». Останется лишь настроить запуск внешней обработки из нужного раздела, включив добавленную обработку в нужную подсистему.
Работа с внешними обработками весьма удобна и позволяет избежать многих конфликтов. Единственный их существенный недостаток – они не обновляются автоматически вместе с конфигурацией. То есть, если разработчики поменяли название документа или справочника в основной конфигурации, нам придется вручную выполнять настройку обработки.
Обучение программированию на 1С
Внешние отчёты и обработки
Обработка 1С – это объект конфигурации, который служит для изменения и преобразования данных в информационной базе 1С.
Отчёт 1С – это объект конфигурации, который формирует вывод данных в удобном для восприятия пользователем виде.
Рассмотрим некоторые вопросы, связанные с этими объектами:
- Чем отличается отчёт от обработки?
- Чем внешняя обработка/отчёт отличается от внутренней?
- Как создать отчёт или обработку в обычном и управляемом приложении?
- Как внешние отчёты или обработки могут быть подключены к информационной базе 1С?
Отличия обработки от отчёта 1С
Главное различие объектов – это назначение в их использовании:
- Отчёты нужны для отображения информации
- Обработки используются для изменения данных.
На уровне различия в структуре метаданных в отчётах дополнительно можно указать основную Схему Компоновки Данных (СКД) и настройки для сохранения параметров. Также здесь есть используемый в текущий момент компоновщик настроек. В обработках данные структуры не используются.
Указание в отчётах основной СКД является полезной функцией, т.к. при этом можно создать требуемый отчёт, не написав ни единой строчки кода в самом модуле отчёта, что ускоряет разработку и понимание принципов функционирования СКД для новичков.
Внешние отчёты и обработки 1C
В режиме конфигуратора 1С есть возможность создавать не только объекты внутри конфигурации (в дереве метаданных), но и создавать внешние объекты в виде отдельных файлов. Это касается, в том числе, отчётов и обработок. Преимуществом внешних объектов в том, что новые объекты не требуется каждый раз включать в состав конфигурации и, соответственно, обновлять при этом всю информационную базу 1С. Вместо этого можно использовать любые необходимые отчёты и обработки и изменять их без внесения изменений в метаданные базы 1С.
Внешние отчёты/обработки сохраняются в отдельные файлы и имеют следующие расширения:
- Внешний отчёт — *.erf
- Внешняя обработка — *.epf
Пример создания внешней обработки 1С
Создавать внешние объекты довольно просто. Функционал, закладываемый разработчиком в конкретную реализацию отчёта или обработки в 1С 8.3 или 8.2, индивидуален и зависит от решаемой задачи.
Покажем пример создания простой обработки 1С. Обработка по нажатию на кнопку «Выполнить» должна выводить на экран сообщение, заданное пользователем в поле «Вывести».
1. Выбираем информационную базу из списка, заходим в режим конфигуратора 1С.
2. В конфигураторе выбираем пункт меню Файл – Новый…
3. Выбираем из списка вид объекта – Внешняя обработка.
4. Задаём имя обработки. В данном случае имя нашей обработки будет «ПримерВнешнейОбработки».
5. Определяем структуру данных обработки. По условию нашей задачи в структуру реквизитов нужно добавить строковое поле «Вывести».
6. Создаём пользовательскую форму. Тип формы: Обычная.
7. Правой клавишей мыши вызываем контекстное меню. Определяем обработчик нажатия на кнопку «Выполнить».
8. Прописываем код обработки.
9. Сохраняем нашу обработку на диск. Заходим в режим предприятия 1С.
10. Выбираем пункт меню Файл – Открыть…
11. Выбираем созданную нами обработку и нажимаем «Открыть».
12. В форме самой обработки вводим текст и нажимаем кнопку «Выполнить». При этом в служебных сообщениях появляется наш текст.
Мы рассмотрели создание внешней обработки. О том, как создать простейший внешний отчёт на СКД, написано более подробно в этой статье: http://life1c.ru/post/478.
Созданную обработку можно скачать по ссылке ниже.
Дополнительные отчёты и обработки
В конфигурациях 1С существуют также подключаемые внешние отчёты и обработки. Чтобы включить в информационную базу 1С соответствующую обработку/отчёт нужно выполнить ряд действий:
1. Зайти в конфигурацию в режиме предприятия 1С
2. В главном меню выбрать Сервис – Дополнительные отчеты и обработки – Дополнительные внешние обработки
3. Открылся список внешних обработок, загруженных в информационную базу 1С. Нажимаем кнопку «Добавить».
4. Загружаем файл обработки.
5. Запускаем обработку двойным кликом мышки, чтобы проверить её работоспособность.
С помощью данного механизма дополнительных обработок можно также изменять стандартные печатные формы на собственные и добавлять новые. Любой пользователь, таким образом, может расширить функционал типовой конфигурации 1С.
В этой статье мы рассмотрели создание и использование внешних отчётов и обработок. Создание внешних обработок в режиме управляемого приложения более подробно будет рассмотрено в следующей статье.