Інтернет Windows Android

Заповнюватимемо в табличній частині. Як отримати поточну рядок табличної частини

У цій статті розглянемо процес написання найпростішої зовнішньої обробки заповнення табличній частини в 1С 8 для конфігурацій, що використовують звичайна програма. Для прикладу візьмемо таку задачу: "У конфігурації 1С: Бухгалтерія 2.0 створити зовнішню обробку заповнення табличній частини Товаридокумента Реалізація товарів і послуг, Дані для заповнення взяти з табличній частині Товари документа Надходження товарів і послуг". Таким чином нам необхідно заповнити товари реалізації на підставі товарів надходження, таке завдання досить часто зустрічається в реальній практиці програміста 1С.

2. Створення зовнішньої обробки

зайдемо в 1С 8 в режимі Конфігуратор. За допомогою меню Файл -\u003e Новий або піктограми новий документ створимо нову зовнішню обробку.

У полі ім'я вкажемо: "ПростейшееЗаполненіеТаблічнойЧасті" і збережемо зовнішню обробку на жорсткий диск використовуючи меню Файл -\u003e Зберегти або піктограму зберегти або поєднання клавіш Ctrl + S.

виділивши гілку реквізити в дереві метаданих обробки і натиснувши кнопку Додати(Кнопка з зеленим плюсом) створимо новий реквізит зовнішньої обробки - ДокументПоступленія, Виберемо для нього тип ДокументСсилка.ПоступленіеТоваровУслуг, Цей реквізит потрібен нам для вибору документа Надходження товарів і послуг, На підставі якого буде заповнюватися реалізація.

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

На другій сторінці конструктора нам необхідно вибрати реквізит ДокументПоступленія(Для того що б він з'явився на створюваної формі) І натиснути кнопку Готово.

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

3. Програмування

Приступимо до програмування обробки заповнення табличній частини. перейдемо в модуль об'єктазовнішньої обробки (на нижній панелі обробки кнопка Дії -\u003e Відкрити модуль об'єкта).

У ньому нам необхідно створити експортну процедуру ініціалізувати.

процедура ініціалізувати експорт КонецПроцедури

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

Тепер приступимо до написання програмного коду. В першу чергу створимо змінну для табличній частині документа Реалізація товарів і послуг, Яку ми будемо заповнювати.

ТаблічнаяЧасть \u003d Об'єкт [ІмяТаблічнойЧасті];

При виконанні процедури в параметрі об'єкт міститиметься об'єкт документа, який ми заповнюємо, а в параметрі ІмяТаблічнойЧасті рядок з ім'ям табличній частині, яку ми заповнюємо. Таким чином ця строчка коду отримує табличну частину заповнюється документа по її імені.

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

ФормаВибораПоступленія \u003d ПолучітьФорму ( "Форма");

Тепер відкриємо отриману форму, використовуючи модальне відкриття (поки форма відкрита всі інші вікна 1С недоступні), тому що при такому способі відкриття подальший наш код в процедурі ініціалізувати виконуватися не буде, поки користувач не закриє форму.

ФормаВибораПоступленія.ОткритьМодально ();

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

Якщо НЕ ЗначеніеЗаполнено (ДокументПоступленія) Тоді Повідомити (); повернення; КонецЕсли;

Для перевірки заповнювання реквізиту тут використовується функція глобального контексту ЗначеніеЗаполнено (<Значение>) , Вона перевіряє відрізняться Чи має значення передане в параметрі від значення за замовчуванням того ж типу. процедура Повідомити виводить вказаний текст у вікно повідомлень 1С 8. Ключове слово повернення перериває виконання процедури.

Приступимо до написання запиту, який буде вибирати дані табличній частині Товари документа Надходження товарів і послуг. Створимо новий запит:

Запит \u003d Новий запит;

Запрос.УстановітьПараметр ( "ДокументПоступленія", ДокументПоступленія);

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

Запрос.Текст \u003d "";

Поставимо курсор між символами лапок, натиснемо праву кнопку миші і виберемо пунк Конструктор запиту .... Після цього відобразиться запит на створення новий запит, натиснемо кнопку "ОК". Відкриється вікно конструктора, в лівій його частині розташовані всі доступні таблиці бази даних, нам необхідний документ ПоступленіеТоваровУслуг. Знайдемо його і розкриємо за допомогою символу "+", виберемо табличну частину Товари і перетягнемо її до другої частини екрану конструктора, яка називається таблиці(Також перемістити потрібну таблицю можна за допомогою кнопки "\u003e").

Тепер розкриємо по "+" обрану нами таблицю ( ПоступленіеТоваровУслугТовари) І перетягнемо необхідні для нашого заповнення табчасті поля в третю частину екрану конструктора, яка так і називається - поля. Всі доступні поля вибирати не будемо, обмежимося таким набором: Номенклатура, Кількість, Ціна, Сума, СтавкаНДС, СуммаНДС.

Так як нам потрібні дані тільки одного документа надходження (який ми вибрали перед початком заповнення), то в на закладці "Умови" накладемо умову на посилання документа за допомогою переданого нами параметра.

Створення тексту запиту в конструкторі на цьому завершено, натиснемо кнопку "ОК". В результаті у нас вийшов наступний текст запиту:

Запрос.Текст \u003d "ВИБРАТИ | З | ДЕ;

Створений запит залишилося тільки виконати і вивантажити в змінну:

Результат \u003d Запрос.Виполніть (). Вивантажити ();

В змінної результат зберігається таблиця значень з рядками табличній частині Товари обраного нами документа Надходження товарів і послуг. Тепер можна приступати до заповнення табличної частини Товари нашій реалізації. Але перш ніж заповнювати дані слід її очистити, на той випадок якщо там вже є якісь рядки.

ТаблічнаяЧасть.Очістіть ();

За допомогою циклу Для кожного обійдемо таблицю значень з результатами запиту.

Для Кожного ЕлементРезультата з Результат Цикл КонецЦікла;

У цьому циклі створимо і заповнимо рядки табличній частини документа Реалізація товарів і послуг. Створити новий рядок ми можемо за допомогою змінної ТаблічнаяЧасть, Через яку можна здійснювати з нею будь-які дії.

НоваяСтрокаТЧ \u003d ТаблічнаяЧасть.Добавіть ();

Заповнимо створену рядок таб. частини даними з рядка результату запиту використовуючи процедуру глобального контексту - ЗаполнітьЗначеніяСвойств (<Приемник>, <Источник>) .

ЗаполнітьЗначеніяСвойств (НоваяСтрокаТЧ, ЕлементРезультата);

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

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

що ми можемо викликати тільки експортні процедури з модуля об'єкта документа).

Об'ект.ЗаполнітьСчетаУчетаВСтрокеТабЧасті (НоваяСтрокаТЧ, ІмяТаблічнойЧасті, Істина);

На цьому програмування заповнення табличній частини для 1С 8 завершено. Обробку можна використовувати. Повний текст процедури ініціалізувати, виглядає так:

процедура ініціалізувати (Об'єкт, ІмяТаблічнойЧасті \u003d Не визначено, ТаблічноеПолеОб'екта \u003d Не визначено) експорт ТаблічнаяЧасть \u003d Об'єкт [ІмяТаблічнойЧасті]; ФормаВибораПоступленія \u003d ПолучітьФорму ( "Форма"); ФормаВибораПоступленія.ОткритьМодально (); Якщо НЕ ЗначеніеЗаполнено (ДокументПоступленія) Тоді Повідомити ( "Не встановлено документ надходження"); повернення; КонецЕсли; Запит \u003d Новий запит; Запрос.УстановітьПараметр ( "ДокументПоступленія", ДокументПоступленія); Запрос.Текст \u003d "ВИБРАТИ | ПоступленіеТоваровУслугТовари.Номенклатура, | ПоступленіеТоваровУслугТовари.Колічество, | ПоступленіеТоваровУслугТовари.СтавкаНДС, | ПоступленіеТоваровУслугТовари.Сумма, | ПоступленіеТоваровУслугТовари.СуммаНДС, | ПоступленіеТоваровУслугТовари.Цена | З | Документ.ПоступленіеТоваровУслуг.Товари ЯК ПоступленіеТоваровУслугТовари | ДЕ | ПоступленіеТоваровУслугТовари.Ссилка \u003d & ДокументПоступленія "; Результат \u003d Запрос.Виполніть (). Вивантажити (); ТаблічнаяЧасть.Очістіть (); Для Кожного ЕлементРезультата з Результат Цикл НоваяСтрокаТЧ \u003d ТаблічнаяЧасть.Добавіть (); ЗаполнітьЗначеніяСвойств (НоваяСтрокаТЧ, ЕлементРезультата); Об'ект.ЗаполнітьСчетаУчетаВСтрокеТабЧасті (НоваяСтрокаТЧ, ІмяТаблічнойЧасті, Істина); КонецЦікла; КонецПроцедури

В наступній частині стати буде розказано, як налагодити обробку заповнення табличній частини і як підключити її до документа.

4. Налагодження

Досить часто потрібно налагоджувати код, який ви пишете. Для того що б налагодити обробку заповнення табличній частини в 1С 8 створимо у неї реквізит СсилкаНаОб'ект типу ДокументСсилка.РеалізаціяТоваровУслуг

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

Після того як форма буде створена, перейдемо в її модуль. Там знайдемо автоматично створену процедуру КнопкаВиполнітьНажатіе. Ця процедура відпрацьовує при натисканні кнопки виконати. Викличемо з неї процедуру ініціалізувати, Яка знаходиться в модулі обробки, в параметри передамо об'єкт документа Реалізація товарів і послуг(Який ми отримаємо з реквізиту СсилкаНаОб'ект) І рядок з назвою заповнюється табличній частині (в нашому випадку Товари).

процедура КнопкаВиполнітьНажатіе (Кнопка) Ініціалізувати (СсилкаНаОб'ект.ПолучітьОб'ект (), "Товари"); КонецПроцедури

Тепер необхідно зробити створену форму основною формою обробки. Для цього виберемо її в поле "Форма обробки".

Тепер ви можете ставити крапку зупинки в потрібному місці процедури ініціалізувати або процедури КнопкаВиполнітьНажатіе форми налагодження, і запускати обробку заповнення табличній частини в режимі налагодження 1С: Підприємства.

5. Підключення до документа

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

Заповнимо приналежність обробки, для цього скориставшись кнопкою Підбір виберемо документ Реалізація товарів і послуг

І зазначимо, що заповнення призначене для табличній частині Товари.

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

1. Постановка завдання

У цій статті розглянемо процес написання найпростішої зовнішньої обробки заповнення табличній частини в 1С 8 для конфігурацій, що використовують звичайна програма. Для прикладу візьмемо таку задачу: "У конфігурації 1С: Бухгалтерія 2.0 створити зовнішню обробку заповнення табличній частини Товари документа, дані для заповнення взяти з табличній частині Товари документа Надходження товарів і послуг". Таким чином нам необхідно заповнити товари реалізації на підставі товарів надходження, таке завдання досить часто зустрічається в реальній практиці програміста 1С.

2. Створення зовнішньої обробки

зайдемо в 1С 8 в режимі Конфігуратор. За допомогою меню Файл -\u003e Новий або піктограми новий документ створимо нову зовнішню обробку.

У полі ім'я вкажемо: "ПростейшееЗаполненіеТаблічнойЧасті" і збережемо зовнішню обробку на жорсткий диск використовуючи меню Файл -\u003e Зберегти або піктограму зберегти або поєднання клавіш Ctrl + S.

виділивши гілку реквізити в дереві метаданих обробки і натиснувши кнопку Додати(Кнопка з зеленим плюсом) створимо новий реквізит зовнішньої обробки - ДокументПоступленія, Виберемо для нього тип ДокументСсилка.ПоступленіеТоваровУслуг, Цей реквізит потрібен нам для вибору документа Надходження товарів і послуг, На підставі якого буде заповнюватися реалізація.

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

На другій сторінці конструктора нам необхідно вибрати реквізит ДокументПоступленія(Для того що б він з'явився на створюваній формі) і натиснути кнопку Готово.

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

3. Програмування

Приступимо до програмування обробки заповнення табличній частини. перейдемо в модуль об'єкта зовнішньої обробки (на нижній панелі обробки кнопка Дії -\u003e Відкрити модуль об'єкта).

У ньому нам необхідно створити експортну процедуру ініціалізувати.

процедура ініціалізувати експорт КонецПроцедури

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

Тепер приступимо до написання програмного коду. В першу чергу створимо змінну для табличній частині документа Реалізація товарів і послуг, Яку ми будемо заповнювати.

ТаблічнаяЧасть \u003d Об'єкт [ІмяТаблічнойЧасті];

При виконанні процедури в параметрі об'єкт міститиметься об'єкт документа, який ми заповнюємо, а в параметрі ІмяТаблічнойЧасті рядок з ім'ям табличній частині, яку ми заповнюємо. Таким чином ця строчка коду отримує табличну частину заповнюється документа по її імені.

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

ФормаВибораПоступленія \u003d ПолучітьФорму ( "Форма");

Тепер відкриємо отриману форму, використовуючи модальне відкриття (поки форма відкрита всі інші вікна 1С недоступні), тому що при такому способі відкриття подальший наш код в процедурі ініціалізувати виконуватися не буде, поки користувач не закриє форму.

ФормаВибораПоступленія.ОткритьМодально ();

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

Якщо НЕ ЗначеніеЗаполнено (ДокументПоступленія) Тоді Повідомити (); повернення; КонецЕсли;

Для перевірки заповнювання реквізиту тут використовується функція глобального контексту ЗначеніеЗаполнено (<Значение>) , Вона перевіряє відрізняться Чи має значення передане в параметрі від значення за замовчуванням того ж типу. процедура Повідомити виводить вказаний текст у вікно повідомлень 1С 8. Ключове слово повернення перериває виконання процедури.

Приступимо до написання запиту, який буде вибирати дані табличній частині Товари документа Надходження товарів і послуг. Створимо новий запит:

Запит \u003d Новий запит;

Запрос.УстановітьПараметр ( "ДокументПоступленія", ДокументПоступленія);

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

Запрос.Текст \u003d "";

Поставимо курсор між символами лапок, натиснемо праву кнопку миші і виберемо пунк Конструктор запиту .... Після цього відобразиться запит на створення новий запит, натиснемо кнопку "ОК". Відкриється вікно конструктора, в лівій його частині розташовані всі доступні таблиці бази даних, нам необхідний документ ПоступленіеТоваровУслуг. Знайдемо його і розкриємо за допомогою символу "+", виберемо табличну частину Товари і перетягнемо її до другої частини екрану конструктора, яка називається таблиці(Також перемістити потрібну таблицю можна за допомогою кнопки "\u003e").

Тепер розкриємо по "+" обрану нами таблицю ( ПоступленіеТоваровУслугТовари) І перетягнемо необхідні для нашого заповнення табчасті поля в третю частину екрану конструктора, яка так і називається - поля. Всі доступні поля вибирати не будемо, обмежимося таким набором: Номенклатура, Кількість, Ціна, Сума, СтавкаНДС, СуммаНДС.

Так як нам потрібні дані тільки одного документа надходження (який ми вибрали перед початком заповнення), то в на закладці "Умови" накладемо умову на посилання документа за допомогою переданого нами параметра.

Створення тексту запиту в конструкторі на цьому завершено, натиснемо кнопку "ОК". В результаті у нас вийшов наступний текст запиту:

Запрос.Текст \u003d "ВИБРАТИ | З | ДЕ;

Створений запит залишилося тільки виконати і вивантажити в змінну:

Результат \u003d Запрос.Виполніть (). Вивантажити ();

В змінної результат зберігається таблиця значень з рядками табличній частині Товари обраного нами документа Надходження товарів і послуг. Тепер можна приступати до заповнення табличної частини Товари нашій реалізації. Але перш ніж заповнювати дані слід її очистити, на той випадок якщо там вже є якісь рядки.

ТаблічнаяЧасть.Очістіть ();

За допомогою циклу Для кожного обійдемо таблицю значень з результатами запиту.

Для Кожного ЕлементРезультата з Результат Цикл КонецЦікла;

У цьому циклі створимо і заповнимо рядки табличній частини документа Реалізація товарів і послуг. Створити новий рядок ми можемо за допомогою змінної ТаблічнаяЧасть, Через яку можна здійснювати з нею будь-які дії.

НоваяСтрокаТЧ \u003d ТаблічнаяЧасть.Добавіть ();

Заповнимо створену рядок таб. частини даними з рядка результату запиту використовуючи процедуру глобального контекстуЗаполнітьЗначеніяСвойств (<Приемник>, <Источник>) .

ЗаполнітьЗначеніяСвойств (НоваяСтрокаТЧ, ЕлементРезультата);

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

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

що ми можемо викликати тільки експортні процедури з модуля об'єкта документа).

Об'ект.ЗаполнітьСчетаУчетаВСтрокеТабЧасті (НоваяСтрокаТЧ, ІмяТаблічнойЧасті, Істина);

На цьому програмування заповнення табличній частини для 1С 8 завершено. Обробку можна використовувати. Повний текст процедури ініціалізувати, виглядає так:

процедура ініціалізувати (Об'єкт, ІмяТаблічнойЧасті \u003d Не визначено, ТаблічноеПолеОб'екта \u003d Не визначено) експорт ТаблічнаяЧасть \u003d Об'єкт [ІмяТаблічнойЧасті]; ФормаВибораПоступленія \u003d ПолучітьФорму ( "Форма"); ФормаВибораПоступленія.ОткритьМодально (); Якщо НЕ ЗначеніеЗаполнено (ДокументПоступленія) Тоді Повідомити ( "Не встановлено документ надходження"); повернення; КонецЕсли; Запит \u003d Новий запит; Запрос.УстановітьПараметр ( "ДокументПоступленія", ДокументПоступленія); Запрос.Текст \u003d "ВИБРАТИ | ПоступленіеТоваровУслугТовари.Номенклатура, | ПоступленіеТоваровУслугТовари.Колічество, | ПоступленіеТоваровУслугТовари.СтавкаНДС, | ПоступленіеТоваровУслугТовари.Сумма, | ПоступленіеТоваровУслугТовари.СуммаНДС, | ПоступленіеТоваровУслугТовари.Цена | З | Документ.ПоступленіеТоваровУслуг.Товари ЯК ПоступленіеТоваровУслугТовари | ДЕ | ПоступленіеТоваровУслугТовари.Ссилка \u003d & ДокументПоступленія "; Результат \u003d Запрос.Виполніть (). Вивантажити (); ТаблічнаяЧасть.Очістіть (); Для Кожного ЕлементРезультата з Результат Цикл НоваяСтрокаТЧ \u003d ТаблічнаяЧасть.Добавіть (); ЗаполнітьЗначеніяСвойств (НоваяСтрокаТЧ, ЕлементРезультата); Об'ект.ЗаполнітьСчетаУчетаВСтрокеТабЧасті (НоваяСтрокаТЧ, ІмяТаблічнойЧасті, Істина); КонецЦікла; КонецПроцедури

В наступній частині стати буде розказано, як налагодити обробку заповнення табличній частини і як підключити її до документа.

4. Налагодження

Досить часто потрібно налагоджувати код, який ви пишете. Для того що б налагодити обробку заповнення табличній частини в 1С 8 створимо у неї реквізит СсилкаНаОб'ект типу ДокументСсилка.РеалізаціяТоваровУслуг

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

Після того як форма буде створена, перейдемо в її модуль. Там знайдемо автоматично створену процедуру КнопкаВиполнітьНажатіе. Ця процедура відпрацьовує при натисканні кнопки виконати. Викличемо з неї процедуру ініціалізувати, Яка знаходиться в модулі обробки, в параметри передамо об'єкт документа Реалізація товарів і послуг(Який ми отримаємо з реквізиту СсилкаНаОб'ект) І рядок з назвою заповнюється табличній частині (в нашому випадку Товари).

процедура КнопкаВиполнітьНажатіе (Кнопка) Ініціалізувати (СсилкаНаОб'ект.ПолучітьОб'ект (), "Товари"); КонецПроцедури

Тепер необхідно зробити створену форму основною формою обробки. Для цього виберемо її в поле "Форма обробки".

Тепер ви можете ставити крапку зупинки в потрібному місці процедури ініціалізувати або процедури КнопкаВиполнітьНажатіе форми налагодження, і запускати обробку заповнення табличній частини в режимі налагодження 1С: Підприємства.

5. Підключення до документа

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

Заповнимо приналежність обробки, для цього скориставшись кнопкою Підбір виберемо документ Реалізація товарів і послуг

І зазначимо, що заповнення призначене для табличній частині Товари.

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

Табличні частини існують у багатьох об'єктів в 1С:

  • Довідники
  • документи
  • Звіти та обробки
  • плани рахунків
  • Плани видів характеристик
  • Плани видів розрахунку
  • Бізнес-процеси та завдання

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

Розглянемо деякі прийоми роботи з табличними частинами.

Як обійти табличну частину

Для обходу табличній частині можна використовувати цикл Для кожного

Для кожного Рядок з ТаблічнаяЧасть Цикл

Повідомити (Рядок. РеквізітТаблічнойЧасті);

КонецЦікла;

На кожній ітерації в змінну рядокпередається черговий рядок табличної частини. Значення реквізитів рядка можна отримати виразом Строка.ІмяРеквізіта.

Як отримати і обійти виділені рядки табличній частини

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

Для отримання переліку виділених рядків використовується наступний код:

Для того щоб обійти виділені рядки використовується цикл Для кожного:

ВиделенниеСтрокі \u003d ЕлементиФорми. ІмяТаблічногоПоля. ВиделенниеСтрокі;

Для кожного Рядок з ВиделенниеСтрокі Цикл

// вміст циклу

КонецЦікла;

Як програмно виділити рядки табличній частини (табличного поля) і зняти виділення

Щоб програмно зняти виділення рядків табличного поля:

ЕлементиФорми. ІмяТаблічногоПоля. ВиделеннийСтрокі. Очистити ();

Щоб програмно виділити всі рядки табличного поля:

Для кожного ТекущаяСтрока З ТаблічнаяЧасть Цикл
ЕлементиФорми. ІмяТаблічногоПоля. ВиделенниеСтрокі. Додати (ТекущаяСтрока);
КонецЦікла;

Як очистити табличну частину

ТаблічнаяЧасть. Очистити ();

Як отримати поточну рядок табличної частини

Поточний рядок - це терміну, в якій у користувача в даний момент знаходиться курсор. Щоб її отримати, потрібно звернутися до елементу управління на формі, який пов'язаний з табличній частиною.

Для звичайних форм код буде виглядати так:

ЕлементиФорми. ІмяТаблічногоПоля. ТекущіеДанние;

Для керованих форм:

Елементи. ІмяТаблічногоПоля. ТекущіеДанние;

Як додати новий рядок в табличну частину

Додавання нового рядка в кінець табличній частині:

НоваяСтрока \u003d ТаблічнаяЧасть. Додати ();

Додавання нового рядка в будь-яке місце табличній частині (наступні рядки будуть зрушені):

НоваяСтрока \u003d ТаблічнаяЧасть. Вставити (Індекс)
// Індекс - номер додається рядки. Нумерація рядків починається з нуля.

НоваяСтрока. Реквізіт1 \u003d "Значення";

Як програмно заповнити реквізити рядки табличній частини

Якщо потрібно програмно заповнити реквізити рядки табличній частини, яку додає користувач, необхідно використовувати обробник події табличній частині ПріНачалеРедактірованія.

Створювана оброблювачем процедура має три параметри:

  • елемент - містить елемент керування ТаблічноеПоле.
  • НоваяСтрока- логічне. містить значення істина, Якщо додається новий рядок табличній частині, і брехня,якщо користувач почав редагувати вже існуючий рядок.
  • копіювання - логічне. містить значення істина, Якщо користувач копіює рядок, і брехня в інших випадках.

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

Процедура ТаблічнаяЧастьПріНачалеРедактірованія (Елемент, НоваяСтрока, Копіювання)

// Якщо користувач редагує існуючий рядок, то нічого не робимо
Якщо НЕ НоваяСтрока Тоді
повернення;
КонецЕсли;

// Якщо ж рядок нова, встановлюємо рахунок обліку
ТекСтрока \u003d Елемент. ТекущіеДанние; // Отримали поточний рядок табличної частини
ТекСтрока. СчетУчета \u003d ПланиСчетов. Госпрозрахунок. НужнийСчетУчета;
КонецПроцедури