1с створити таблицю значень програмно. Які методи існують і як шукати одночасно за кількома значеннями

Головна / Налаштування

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Структура таблиці значень як об'єкта

Властивості таблиці значень визначаються комбінаціями двох визначених колекцій: її колонок та рядків.

Таблиця значень Колонки

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

Оскільки колонки є колекцією об'єктів, ви можете додавати, видаляти і редагувати колонки.

Рядок таблиці значень

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

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

Створити таблицю значень

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

Створення таблиці конструктором

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

ДемоТаблиця = Новий ТаблицяЗначень; // Насамперед ініціалізуємо ТЗ // Далі визначаємо необхідні параметри нових колонок і додаємо в колекцію // Створення колонки " Номенклатура " Ім'я = " Номенклатура " ; ТипЗначення = Новий ОписТипів("ДовідникПосилання.Номенклатура"); Заголовок = "Номенклатура (товар)"; ДемоТаблиця.Колонки.Додати(Їм, ТипЗначення, Заголовок); // Створення колонки "Кількість" Ім'я = "Кількість"; ТипЗначення = Новий ОписТипів("Число"); ДемоТаблиця.Колонки.Додати(Ім'я, ТипЗначення); // В результаті даних маніпуляцій ми створили порожню таблицю з типізованими колонками // Якщо вам необхідно використовувати більш точну типізацію примітивних типів, слід використовувати розширений синтаксис конструктора “ОписТипов”

Створення таблиці копіюванням

Якщо у вас під рукою є стандарт з відповідною структурою та/або складом, ви можете скопіювати або вивантажити еталонну таблицю значень. Якщо зразком є ​​інша таблиця, необхідно застосувати спосіб «Скопіювати таблиці-эталона». Якщо ви маєте справу з табличною частиною або набором записів регістру, необхідно використовувати метод «Вивантажити таблицю значень». Якщо вам потрібна лише структура, то можна скористатися методом «СкопіюватиКолонки».

// Варіант з копіюванням з ТЗ-еталону всіх рядків але зі збереженням лише двох зазначених колонок Колонки Еталону = "Номенклатура, Кількість"; ДемоТаблиця = ТаблицяЕталон.Скопіювати(, КолонкиЕталону); // Варіант з копіюванням з ТЗ-еталону попередньо відібраних рядків, зі збереженням двох зазначених колонок Рядки Еталону = Відібрати В Масив Потрібні Нам Рядки З Таблиці Еталону (); Колонки Еталону = "Номенклатура, Кількість"; ДемоТаблиця = ТаблицяЕталон.Скопіювати(Рядки Еталону, Колонки Еталону); // Варіант з копіюванням з ТЗ-еталону рядків за вказаним фільтром, зі збереженням однієї колонки "Номенклатура" // Будуть відібрані всі рядки де значення в колонці Кількість дорівнює 0, в результуючу таблицю потрапить тільки колонка Номенклатура Відбір Строк = Новий Структура 0); Колонки Еталону = "Номенклатура"; ДемоТаблиця = ТаблицяЕталон.Скопіювати(Рядки Еталону, Колонки Еталону); // Варіант з повним копіюванням таблиці і подальшому видаленні одного рядка зі значенням поля кількість рівним нулю і видаленням цілої колонки "Кількість" Колонки Еталону = "Номенклатура"; ДемоТаблиця = ТаблицяЕталон.Скопіювати(Рядки Еталону, Колонки Еталону); РядокТаблиці = ДемоТаблиця.Найти(0, "Кількість"); ДемоТаблиця.Видалити(РядокТаблиці); ДемоТаблиця.Колонки.Видалити("Кількість"); // Аналогічні варіанти та їх модифікації можна застосовувати до табличних частин та наборів записів регістрів

Створення таблиці запитом

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

// Приклад із створенням порожньої таблиці за зразком структури регістру накопичення // Неважко здогадатися, що таким чином можна отримати і заповнену таблицю Запит = Новий Запит ("ВИБРАТИ ПЕРШІ 0 * З Регістр Накопичення. Товарина Складі"); РезультатЗапиту = Запит.Виконати(); ДемоТаблиця = Результат Запиту. Вивантажити (); // Приклад із створенням порожньої таблиці за явно заданими типами та іменами полів Запит = Новий Запит; Запит.Текст = "ВИБРАТИ ПЕРШІ 0 | Значення(Довідник.Номенклатура.ПустаПосилання) ЯК Номенклатура, | ВИРАЗИТИ(0 ЯК ЧИСЛО(15, 3)) ЯК Кількість"; РезультатЗапиту = Запит.Виконати(); ДемоТаблиця = Результат Запиту. Вивантажити (); // ВАЖЛИВО! Не варто забувати, що в типах значень колонок, отриманих із запиту завжди є тип Null // Таким чином, ТЗ створена запитом, завжди має складові типи колонок

Висновок

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

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

Статті про інші універсальні колекції значень в 1С

Вивчайте програмування в 1С у місці з моєї книги «Програмувати в 1С за 11 кроків»

  1. Книга написана зрозумілою та простою мовою – для новачка.
  2. Навчіться розуміти архітектуру 1С;
  3. Станете писати код мовою 1С;
  4. Опануйте основні прийоми програмування;
  5. Закріпіть отримані знання з допомогою задачника;

Відмінний посібник з розробки в керованому додатку 1С, як для розробників-початківців, так і для досвідчених програмістів.

  1. Дуже доступна та зрозуміла мова викладу
  2. Книга надсилається на електронну пошту у форматі PDF. Можна відкрити будь-який пристрій!
  3. Зрозумієте ідеологію керованого додатка 1С
  4. Дізнаєтеся, як розробляти керовану програму;
  5. Навчіться розробляти керовані форми 1С;
  6. Зможете працювати з основними та потрібними елементами керованих форм
  7. Програмування під керованим додатком стане зрозумілим

Промо-код на знижку в 15% 48PVXHeYu


Якщо Вам допоміг цей урок вирішити якусь проблему, сподобався чи виявився корисним, то Ви можете підтримати мій проект, перерахувавши будь-яку суму:

можна сплатити вручну:

Яндекс.Гроші — 410012882996301
Web Money - R955262494655

Вступайте до моїх груп.

© 2023 androidas.ru - Все про Android