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