Як отримати дані із табличної частини документів? 1с доступ табличній частині документа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблична частина. Очистити();

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

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

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

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

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

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

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

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

НоваРядок= ТабличнаЧастина. Додати ();

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

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

НовийРядок. Реквізит1 = "Значення";

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

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

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

  • Елемент- Містить елемент управління ТабличнеПоле.
  • НовийРядок- Бульова. Містить значення Істина, якщо додається новий рядок табличної частини, та Брехня,якщо користувач почав редагувати існуючий рядок.
  • Копіювання- Бульова. Містить значення Істина, якщо користувач копіює рядок, та Брехняв інших випадках.

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

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

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

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

Для того, щоб враховувати гроші та товари, у бізнесі широко використовують різні таблиці. Майже кожний документ – це таблиця.

В одній таблиці перераховані товари для відвантаження зі складу. В іншій таблиці – зобов'язання щодо оплати цих товарів.

Тому в 1С чільне місце займає робота з таблицями.

Таблиці 1С також називають «табличні частини». Вони є у довідників, документів та інших.

Запит в результаті виконання повертає таблицю, доступ до якої можна отримати двома різними способами.

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

//Варіант 1 – послідовний доступ до результатів запиту

//отримання таблиці
Вибірка = Запит.Виконати().Вибрати();
//по порядку обходимо всі рядки результату запиту
Поки Вибірка.Наступний() Цикл
Повідомити(Вибірка.Найменування);
КінецьЦикл;

//Варіант 2 – вивантаження таблицю значень
Запит = Новий Запит («ВИБРАТИ Найменування З Довідник. Номенклатура»);
//отримання таблиці
Таблиця = Запит.Выполнить().Выгрузить().
//Далі можемо також обійти всі рядки
Для кожного Рядок з Таблиця Цикл
Повідомити (Рядок.Найменування);
КінецьЦикл;
//або довільно звертатися до рядків
Рядок = Таблиця. Знайти («Лопата», «Найменування»);

Важлива особливість – у таблиці, яка отримана з результату запиту, всі колонки будуть типово типізовані. Це означає, що запитавши поле Найменування із довідника Номенклатура, Ви отримаєте колонку виду Рядка з допустимою довжиною не більше N символів.

Таблиця на формі (товстий клієнт)

Користувач працює із таблицею, коли вона розміщена на формі.

Базові принципи роботи з формами ми з Вами обговорювали в уроці з і в уроці з

Отже, розмістимо таблицю на формі. Для цього можна перетягнути таблицю з панелі елементів керування. Аналогічно можна вибрати в меню Форма/Вставити елемент керування.

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

Натисніть кнопку «…» у властивості Дані. Щоб побачити список табличних частин, потрібно розкрити гілку Об'єкт.

При виборі табличної частини 1С сама додасть колонки таблиці на формі. Рядки введені користувачем у таку таблицю зберігатимуться автоматично разом із довідником/документом.

У цьому ж властивості Дані Ви можете ввести довільне ім'я і вибрати тип ТаблицяЗначень.

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

Натиснувши правою кнопкою на таблиці, Ви можете додати колонку. У властивості колонки можна вказати його ім'я (для звернення в коді 1С), заголовок колонки на формі, зв'язок з реквізитом табличної частини (останнє – якщо обрано не довільну таблицю, а табличну частину).

У властивостях таблиці на формі Ви можете вказати, чи доступно користувачеві додавати/видаляти рядки. Більш просунута форма – галочка Тільки Перегляд. Ці властивості зручно використовуватиме організації таблиць призначених висновку інформації, але з редагування.

Щоб керувати таблицею, потрібно вивести форму командну панель. Виберіть пункт Форма/Вставити елемент керування/Командна панель.

У властивостях командної панелі виберіть пункт Автозаповнення, щоб кнопки на панелі з'явилися автоматично.

Таблиця на формі (тонкий/керований клієнт)

на керованій формізазначені дії виглядають трохи інакше. Якщо Вам потрібно розмістити на формі табличну частину, розкрийте гілку Об'єкт і перетягніть одну з табличних частин ліворуч. І все!

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

Щоб додати колонки, використовуйте меню правою кнопкою миші на цьому реквізиті форми, пункт Додати колонку реквізиту.

Після цього перетягніть таблицю вліво.

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

Вивантаження таблиці в Excel

Будь-яку таблицю 1С, розташовану на формі, можна роздрукувати чи вивантажити до Excel.

Для цього клацніть правою кнопкою миші вільному місціу таблиці та виберіть пункт Вивести список.

У керованому (тонкому) клієнт аналогічні дії можна виконати за допомогою пункту меню Усі дії/Вивести список.

Головна Для розробників-початківців Вчимося програмувати

Як отримати дані із табличної частини документів?

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

Для цього можна скористатися запитом із наступним текстом:

ВИБРАТИ РІЗНІ Реалізація ТоварівПослугТовари.Номенклатура ЯК Номенклатура З Документ.РеалізаціяТоварівПослуг.Товари ЯК РеалізаціяТоварівПослугТовари

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

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

Для того щоб обмежити вибірку номеклатури лише номенклатурою з табличної частини конкретного документа використовуємо параметр Посиланняв умови запиту ( ДЕ...):

ВИБРАТИ РІЗНІ Реалізація ТоварівПослугТовари.Номенклатура ЯК Номенклатура З Документ.РеалізаціяТоварівПослуг.Товари ЯК РеалізаціяТоварівПослугТовари ДЕ РеалізаціяТоварівПослугТовари.Посилання = &Посилання




Top