Як створити зовнішню обробку типової конфігурації. Додавання зовнішньої обробки до бази Опис зовнішньої обробки 1с 8.3

Блог компанії 1С GOODWILL

Розглянемо у цій статті покрокову інструкцію зі створення зовнішньої обробки в 1С 8.3 як керованого докладання, відповідно використовуватимемо керовані форми. А найголовніше - ми навчимося підключати її до механізму зовнішніх обробок конфігурацій 1С, побудованих на бібліотеці стандартних підсистем версії 2.0 і новіше.

Завдання буде наступне: створити найпростішу зовнішню обробку, яка виконуватиме групову дію над довідником «Номенклатура», а саме, встановлюватиме обраний відсоток ставки ПДВ для зазначеної групи номенклатури.

Включення механізму зовнішніх обробок у програмі

Для цього одразу зробимо необхідне налаштування у програмі (розглядається конфігурація 1С 8.3: «Бухгалтерія підприємства 3.0» на керованих формах).

Установка даного прапорця дає можливість використовувати зовнішні обробки.

Створення нової зовнішньої обробки 1С 8.3 на прикладі

Тепер переходимо до конфігуратора. У меню "Файл" вибираємо "Новий ...". Відкриється вікно вибору виду створюваного файлу. Вибираємо «Зовнішня обробка»:

Відкриється вікно нової зовнішньої обробки. Відразу поставимо їй ім'я. Воно буде запропоновано за умови збереження обробки на диск:

Додамо нову керовану форму обробки. Вказуємо, що це форма обробки, і вона є основною:

На формі у нас буде два реквізити:

Створюємо реквізити у колонці «Реквізит» у верхньому правому вікні. Перетягуємо мишкою їх у верхнє ліве вікно. Нові реквізити повинні одразу відобразитись на формі внизу.

Черговість реквізитів можна міняти стрілками «Вгору» – «Вниз»:

Залишилося додати кнопку "Встановити". У керованих формах не можна просто додати кнопку на форму. Навіть якщо додати її до структури елементів форми, на самій формі її видно не буде. Кнопку обов'язково потрібно зв'язати з командою, яку виконуватиме. Переходимо до закладки "Команди" і додаємо команду "ВстановитиСтавку ПДВ". У властивості команди створюємо дію. Обробник команди вибираємо "На клієнті". Команду можна додати на форму також простим перетягуванням в розділ з елементами форми.

У модулі форми буде створено однойменну процедуру. У ній викличемо процедуру на сервері:

&На Клієнті

Процедура ВстановитиСтавку ПДВ(Команда)

ВстановитиСтавку ПДВСервері();

КінецьПроцедури

У процедурі на сервері напишемо невеликий запит та дії, пов'язані із встановленням ставки ПДВ:

&На сервері

Процедура ВстановитиСтавку ПДВСервері()

Запит = Новий Запит;

Запит.Текст =

| Довідник Номенклатура ЯК Номенклатура

| І НЕ Номенклатура.

| І НЕ Номенклатура. Це Група »;

Запит.ВстановитиПараметр(«Група номенклатури», група номенклатури);

РезЗапроса = Запрос.Выполнить();

ВибДетЗаписи = РезЗапроса.Вибрати();

Поки ВибДетЗаписи.Наступний() Цикл

СпрНомОбъект.СтавкаПДВ = ВибСтавкаПДВ;

СпрНомОбъект.Записать();

Виняток

Повідомити(«Помилка запису об'єкта «»» + СпрНомОб'єкт + «»»!

|» + ОписПомилки());

КінецьСпроби;

КінецьЦикл;

КінецьПроцедури

Повертаємось на закладку «Форма», додаємо на форму кнопку та зв'язуємо її з командою:

Як така наша обробка готова до використання. Щоб її викликати, у режимі "1С Підприємства" потрібно зайти в меню "Файл" - "Відкрити" і вибрати створений файл.

Однак робота в такому режимі зручна для налагодження обробки, а для роботи користувачу не зовсім підходить. Користувачі звикли, щоб у них все було під рукою, тобто в самій базі даних.

Для цього служить розділ «Додаткові звіти та обробки».

Але щоб додати туди нашу обробку, потрібно спочатку дати їй опис та повідомити програму її властивості.

Опис функції «Відомості про зовнішню обробку»

Наведу приклад вмісту цієї функції. Вона має бути експортною і, відповідно, розташовуватися в модулі обробки:

Функція ВідомостіЗовнішнійОбробці() Експорт

ДаніДляРег = Новий Структура();

ДаніДляРег.Вставити(«Найменування», «Установка ставки ПДВ»);

ДаніДляРег.Вставити(«БезпечнийРежим», Істина);

ДаніДляРег.Вставити(«Версія», «ver.: 1.001»);

ДаніДляРег.Вставити(«Інформація», «Обробка для встановлення ставки ПДВ у довіднику Номенклатура»);

ДаніДляРег.Вставити(«Вигляд», «Додаткова Обробка»);

ТабЗнКоманда = Новий ТаблицяЗначень;

ТабЗнКоманди.Колонки.Додати(«Ідентифікатор»);

ТабЗнКоманди.Колонки.Додати(«Використання»);

ТабЗнКоманди.Колонки.Додати(«Подання»);

НовийРядок = ТабЗнКоманда.Додати();

НовСтрока.Ідентифікатор = «Відкрити Обробку»;

НовийРядок.Використання = «ВідкриттяФорми»;

НовСтрока.Представлення = «Відкрити обробку»;

ДаніДляРег.Вставити(«Команда», ТабЗнКоманда);

Повернення ДаніДляРег;

КінецьФункції

Щоб краще зрозуміти, які поля структури реєстраційних даних потрібно використовувати, переглянемо реквізити довідника «Додаткові звіти та обробки»:

Як бачимо, все досить просто. Не збігається лише один реквізит: "Варіант Запуску" - "Використання". Якщо подивитися код одного із загальних модулів, то ми побачимо, як виникає зв'язка цих полів:

Щоб визначити, які поля структури є обов'язковими, можна спочатку не описувати її, просто створити порожню, а далі скористатися відладчиком. Якщо трасувати модулі під час реєстрації обробки, відразу стає зрозуміло, які поля потрібні, а які ні.

Підключення зовнішньої обробки до 1С 8.3

Перейдемо тепер у режим «1С Підприємства» та додамо зовнішню обробку:

Після запису обробки довідника, натисканням кнопки «Виконати» вона відкривається на виконання. Тут же можна вказати в яких розділах (підсистемах) програми відображатиметься ця обробка і для яких користувачів.

Як створити зовнішню обробку в 1С 8.3 (керовані форми) вперше з'явилася Блог компанії 1С GOODWILL.

Розділ конфігурування: Прикладні об'єкти

Відразу зазначу, цей матеріал більше підходить для конфігурацій, що розробляються на керованих формах. Проте загальні принципи однакові всім форм.

Для створення зовнішньої обробки або звіту вам достатньо вибрати меню Файл/Новий і вибрати вид обробку або звіт. Після створення обробки в принципі вже можна користуватися. Але для того, щоб підключити її в типову конфігурацію як додаткову обробку або звіт цього недостатньо.

Для цього ви повинні у модуль обробки прописати декілька процедур. Загальний їх зміст зводиться до того, що ви даєте зрозуміти зміни, що це за обробка (відробка, звіт, друкована форма, заповнення табличної частини і т.д.), так само ви вказуєте в якій підсистемі вона повинна знаходитися.

Нижче наведено цей код. Для власної обробки вам потрібно змінити кілька параметрів.

Ну перш за все це версія та назва обробки, а також назва команди. Як я вже писав, потрібно вказати підсистему, де вона буде розміщена або конкретний об'єкт (довідник, документ).
Також вид обробки, і режим використання. Безпечний режим не дозволяє змінювати базу даних.

Функція ВідомостіЗовнішнійОбробці() Експорт
// Оголосимо змінну, в якій ми збережемо і повернемо назовні необхідні дані
ПараметриРеєстрації = Новий Структура;

// Оголосимо ще одну змінну, яка буде потрібно нижче
МасивПризначень = Новий Масив;

// Перший параметр, який ми повинні вказати – це який вид обробки системі має зареєструвати.
// Допустимі типи: Додаткова Обробка, Додатковий Звіт, Заповнення Об'єкта, Звіт, Друкована Форма, Створення Пов'язаних Об'єктів
ПараметриРеєстрації.Вставити("Вигляд", "Додаткова Обробка");

// Тепер нам необхідно передати у вигляді масиву імен, до чого буде підключено нашу ВПФ
// Майте на увазі, що можна задати ім'я у такому вигляді: Документ.* - у цьому випадку обробка буде підключена до всіх документів у системі,
// які підтримують механізм ВПФ
МасивПризначень.Додати("Підсистеми.РегламентованийОблік");
ПараметриРеєстрації.Вставити("Призначення", МасивПризначень);

// Тепер задаємо ім'я, під яким ВПФ буде зареєстровано у довіднику зовнішніх обробок
ПараметриРеєстрації.Вставити("Найменування", "Аналіз негативних залишків по регістрам");

// Задамо право обробці використання безпечного режиму. Докладніше можна дізнатися у довідці до платформи (метод ВстановитиБезпечнийРежим)
ПараметриРеєстрації.Вставити("БезпечнийРежим", Істина);

// Наступні два параметри грають більше інформаційну роль, тобто. це те, що бачитиме користувач в інформації до обробки
ПараметриРеєстрації.Вставити("Версія", "1.0");
ПараметриРеєстрації.Вставити("Інформація", "Аналіз негативних залишків по регістрам");

// Створимо таблицю команд (детальніше дивимося нижче)
ТаблицяКоманд = ОтриматиТаблицюКоманд();

// Додамо команду до таблиці
Додати Команду (Таблиця Команд, "Аналіз негативних залишків за регістрів", "Аналіз негативних залишків за регістрів", "ВідкриттяФорми");

// Збережемо таблицю команд параметри реєстрації обробки
ПараметриРеєстрації.Вставити("Команда", ТаблицяКоманд);

// Тепер повернемо системі наші параметри
Повернення ПараметриРеєстрації;
КінецьФункції

Функція ОтриматиТаблицюКоманд()

// Створимо порожню таблицю команд та колонки в ній
Команди = Новий ТаблицяЗначень;

// Як виглядатиме опис друкованої форми для користувача
Команди.Колонки.Додати("Подання", Новий ОписТипів("Рядок"));

// Ім'я нашого макета, що могли б відрізнити викликану команду в обробці друку
Команди.Колонки.Додати("Ідентифікатор", Новий ОписТипів("Рядок"));

// Тут задається, як має викликатися команда обробки
// Можливі варіанти:
// - ВідкриттяФорми - у цьому випадку в колонці ідентифікатор має бути вказано ім'я форми, яке має відкрити система
// - Виклик Клієнтського Методу – викликати клієнтську експортну процедуру з модуля форми обробки
// - Виклик Серверного Методу – викликати серверну експортну процедуру з модуля об'єкта обробки
Команди.Колонки.Додати("Використання", Новий ОписТипів("Рядок"));

// Наступний параметр вказує, чи потрібно показувати оповіщення на початку та завершення роботи обробки. Немає сенсу при відкритті форми
Команди.Колонки.Додати("ПоказуватиОповідання", Новий ОписТипів("Булево"));

// Для друкованої форми повинен містити рядок Друк MXL
Команди.Колонки.Додати("Модифікатор", Новий ОписТипів("Рядок"));
Повернення Команди;
КінецьФункції

Процедура ДодатиКоманду(ТаблицяКоманд, Подання, Ідентифікатор, Використання, ПоказуватиОповідання = Брехня, Модифікатор = "")
// Додаємо команду до таблиці команд за переданим описом.
// Параметри та їх значення можна переглянути у функції ОтриматиТаблицюКоманд
НоваКоманда = ТаблицяКоманд.Додати();
Нова Команда. Подання = Подання;
Нова Команда. Ідентифікатор = Ідентифікатор;
Нова Команда. Використання = Використання;
НоваКоманда.ПоказуватиОповідання = ПоказуватиОповідання;
Нова Команда. Модифікатор = Модифікатор;

У верхньому меню заходимо Сервіс->->.

З'являється форма списку довідника зовнішніх обробок. У верхньому меню натискаємо кнопку Додати.

З'явиться форма додавання нового об'єкта. Натискаємо кнопку відкрити, і вибираємо файл з потрібною обробкою. Після того як ви вибрали потрібний файл, за потреби, задайте ім'я обробки (поле Найменування). Після цього потрібно натиснути ОК, щоб зберегти зміни.

Після цього вікно створення елемента довідника закривається, і ви потрапляєте на форму списку, в якій вже присутня нова обробка.

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

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

Зовнішні обробки для 1С:Підприємство 8 бувають декількох видів. У цій інструкції я покажу, як прикріплювати обробки групової модифікації та обробки заповнення конкретних об'єктів.

Для першого випадку додамо обробку із заповнення довідника номенклатури з Екселю.

Переходимо у відповідний розділ програми:


Необхідно, щоб була встановлена ​​ознака використання додаткових звітів та обробок, переходимо за посиланням до списку зовнішніх об'єктів:

У списку натискаємо Створити:


У діалоговому вікні, що відкрилося, вибираємо потрібний файл з обробкою:


Заповнилася картка нового зовнішнього об'єкта у програмі, залишилося лише налаштувати розміщення(розділи програми, з яких буде доступна обробка):


Як розміщення вибираємо довільний розділ (або кілька):


Записуємо та закриваємо картку зовнішнього об'єкта:


Тепер відкриємо обробку з інтерфейсу:


Список порожній, натискаємо Налаштувати список:


Вибираємо нашу обробку:


Тепер вона доступна для вибору. Щоб відкрити обробку, потрібно натиснути Виконати:


Тепер подивимося, як додається обробка із заповнення (модифікації) конкретних об'єктів. Наприклад візьмемо зовнішню обробку, яка прикріплює скани до обраних елементів довідників чи документів системи. Початок додавання такої обробки не відрізняється від попереднього варіанта. Відмінність у цьому, що у разі розміщення заповнюється автоматично (і розділом програми, а типами об'єктів бази):


За бажанням список розміщення можна скоригувати ( не додати додаткове розміщення, а забрати зайве):


Для ухвалення зміни картку зовнішнього об'єкта також потрібно записати.

Для того, щоб скористатися обробкою, необхідно зайти в об'єкт бази (зі списку розміщення), натиснути пункт Заповнитиу командній панелі та вибрати команду:

У рамках цієї статті ми напишемо обробку заповнення табличної частини 1С 8.3 для типової конфігурації 1С:ERP 2.1. Припустимо, що метою поставленого завдання є встановлення ручної знижки в розмірі 5% для всіх номенклатурних позицій цього документа. Приклад із статті можна завантажити або іншою аналогічної обробки по .

Ця інструкція призначена для керованих форм (8.2 та 8.3). Для традиційних форм (8.1, 8.2) можна скористатися .

Створіть та збережіть на ваш комп'ютер нову обробку. Спочатку необхідно провести деякі реєстраційні дії.

Відкрийте модуль об'єкта і пропишіть наведений нижче код (його також можна взяти з даної обробки). Загалом структура не змінюватиметься залежно від ситуації. Редагуються лише деякі параметри налаштувань, а також за потреби імена змінних.

У рамках цієї статті ми не будемо докладно зупинятись на реєстрації зовнішніх обробок та друкованих форм у 1С. Вся ця інформація є в інших статтях.

Заповнення табличної частини документа

Створимо нову форму обробки.

Тепер нам потрібно додати на створеній формі нову команду. Передбачається, що вона автоматично змінюватиме дані в табличній частині як одного, так і декількох документів (їх форми списку) одночасно, записуючи їх згодом.

В рамках нашого прикладу буде проведено обробку вже існуючої табличної частини «Товари». Для кожного рядка буде встановлено ручну знижку у розмірі 5%. Також ми розрахуємо саму суму даної знижки, рівну сумі товарів у рядку, помножених на 0,05.

&На сервері Процедура ВиконатиКоманду(Команда, Об'єктиПризначення) Для кожного ЗамовленняКлієнта з Об'єктиПризначення Цикл ЗамовленняКлієнтаОб'єкт = ЗамовленняКлієнта. Отримати Об'єкт () ;

Для кожного РядокТЗ із ЗамовленняКлієнтаОб'єкт. Товари Цикл СтрокаТЗ. Відсоток Ручної Знижки = 5;

РядокТЗ. СумаРучноїЗнижки = РядокТЗ. Сума *0. 05;

Кінець циклу;

Замовлення Клієнта Об'єкт. Записати() ;

Кінець циклу;



gastroguru 2017