Обробка заповнення табличних частин (звичайні форми)

  1. Як створити свою обробку заповнення з нуля?
  2. особливості використання
  3. Остаточний код обробника (для прикладу)

У типових конфігурація існує підсистема заповнення табличних частин, яка дозволяє безпосередньо обробляти документи і довідники, які не модифікуючи код конфігурації і не знімаючи її з підтримки.

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

Розглянемо її створення на прикладі документа «Переміщення товарів» конфігурації «Бухгалтерія підприємства 2.0"

швидкий перехід

Як створити свою обробку заповнення з нуля?

    1. Створюєте обробку в конфігуратор: меню «Файл \ Новий \ Зовнішня обробка»
    2. Задаєте її ім'я без пробілів і синонім, під яким ця обробка буде підключатися
    3. У модулі об'єктів додаєте процедуру «Ініціалізувати ()». Вона повинна бути експортної і мати 3 параметра (з зручними вам іменами)

Процедура Ініціалізувати (Об'єкт, ІмяТаблічнойЧасті = Не визначено, ТаблічноеПоле = Не визначено) Експорт ТаблічнаяЧасть = Об'єкт [ІмяТаблічнойЧасті]; // Тепер можна її обробляти КонецПроцедури;

  1. Додаєте за бажанням Макет «Параметри автореєстрації» У типових конфігурація існує підсистема заповнення табличних частин, яка дозволяє безпосередньо обробляти документи і довідники, які не модифікуючи код конфігурації і не знімаючи її з підтримки
  2. Додаєте обробку в «Додаткові обробки табличних частин» в меню «Сервис \ Додаткові обробки»
  3. Чи використовуєте після перезапуску 1С в меню «Заповнити» обраної табличній частині

Ось так швидко і просто створюється обробка. Залишається тільки написати код обробника)

особливості використання

Обробка запускається завжди з форми об'єкта.

Конфігурація надає доступ безпосередньо до об'єкта, навіть якщо він не записаний.

  • Це дуже зручно.
  • Необхідно пам'ятати що об'єкт може бути не записаний і його «Посилання» порожня і запитом його дані не отримаєш.

Потрібно додаткові права для використання підсистеми рядовим користувачем: за це відповідає роль «ПравоЗапускаВнешніхОбработок»

Налагоджувати обробку складніше

  • можна використовувати обробку-прошарок
  • додати форму обробки, а в ній реквізит форми з типом отлаживаемого, виклик налагодження: «Ініціалізувати (СсилкаНаОтлажіваемийОб'ект.ПолучітьОб'ект (),« Товари »);
  • ставити крапку зупинка в загальному модулі

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

Необхідно відпрацьовувати всі можливі місця помилок, адже конфігурація запускає обробку через «Спробу Виняток» - значить код перериватися буде саме там, а не в місці помилок.

Обробляється об'єкт може змінюватися розробником конфігурації - перейменовувати його реквізити - це зробить обробку непрацездатною, якщо ви не приймете додаткові заходи.

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

Вам доступно читання і зміна реквізитів об'єкта - не обов'язково повинна бути оброблена таблична частина.

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

Остаточний код обробника (для прикладу)

Процедура Ініціалізувати (Об'єкт, ІмяТаблічнойЧасті = Не визначено, ТаблічноеПоле = Не визначено) Експорт Спроба Товари = Об'єкт [ІмяТаблічнойЧасті]; Виняток Повідомити ( "Відсутня таблична частина" + ІмяТаблічнойЧасті + "в документі"); повернення; КонецПопиткі; Товари .Очістіть (); ІмяРеквізітаСклада =? (ТіпЗнч (Об'єкт) = Тип ( "ДокументОб'ект.ПеремещеніеТоваров"), "СкладОтправітель", "Склад"); Спроба Склад = Об'єкт [ІмяРеквізітаСклада]; Виняток Повідомити ( "Відсутня реквізит склад" + ІмяРеквізітаСклада + "в документі"); повернення; КонецПопиткі; Запит = Новий запит; Запит .Текст = "ВИБРАТИ | ХозрасчетнийОстаткі.Субконто1, | ХозрасчетнийОстаткі.Счет, | ХозрасчетнийОстаткі.КолічествоОстатокДт, | ХозрасчетнийОстаткі.Субконто1.БазоваяЕдініцаІзмеренія як ЕдініцаІзмеренія | З | РегістрБухгалтеріі.Хозрасчетний.Остаткі (& Період, Рахунок У ІЄРАРХІЇ (& Рахунок),, Субконто2 = & Склад) ЯК ХозрасчетнийОстаткі "; Запит .УстановітьПараметр ( "Період", Об'єкт .Дата - 1); Запит .УстановітьПараметр ( "Рахунок", ПланиСчетов .Хозрасчетний .Товари); Запит .УстановітьПараметр ( "Склад", Склад); Спроба Вибірка = Запит .Виполніть () .Вибрать (); Виняток Повідомити ( "При запиті по залишкам складу помилка:" + ОпісаніеОшібкі ()); повернення; КонецПопиткі; Поки Вибірка Слід () Цикл Строката = Товари Додамо (); Строката .Номенклатура = Вибірка .Субконто1; Строката .ЕдініцаІзмеренія = Вибірка .ЕдініцаІзмеренія; Строката .Коеффіціент = 1; Строката .Кількість = Вибірка .КолічествоОстатокДт; Строката .СчетУчета = Вибірка .рахунок; Якщо ІмяРеквізітаСклада = "СкладОтправітель" Тоді // це переміщення Строката .НовийСчетУчета = Вибірка .рахунок; КонецЕсли; КонецЦікла; КонецПроцедури

Як створити свою обробку заповнення з нуля?
Очістіть (); ІмяРеквізітаСклада =?