Табличну частину таблицю значень 1с 8.3. Так усе просто

Комірнику потрібно вивантажити список усієї номенклатури, у якої не встановлена ​​позначка видалення. Поля для розвантаження:

  1. Найменування.
  2. Артикул.
  3. Вид номенклатури.
  4. Тип номенклатури.

Ось так виглядатиме таблиця Excel після вивантаження:

Розглянемо два способи вирішення: без програмування та за участю програміста.

Програмуємо

Щоб вивантажити номенклатуру в XLS-файл, сформуємо запит до бази даних для отримання номенклатури і помістимо результат у табличну частину обробки вивантаження. Ось форма обробки:

Після натискання на кнопку "Заповнити" заповнюється таблична частина "Дані Вивантаження" обробки, до якої додано відповідні реквізити. Обробник цієї кнопки має наступний програмний код:

Процедура КнопкаВиконатиНатискання(Кнопка) Запит = Новий Запит; Запит. Текст = " ВИБРАТИ | Номенклатура. Посилання ЯК Номенклатура, | Номенклатура. Артикул, | Номенклатура. ВидНоменклатури, | Номенклатура. Вид Номенклатури. ТипНоменклатури ЯК ТипНоменклатури |З| Довідник . Номенклатура ЯК Номенклатура|ДЕ | НЕ Номенклатура. Позначка Видалення | І НЕ Номенклатура. Це група" ; ТаблицяДаних = Запит. Виконати () . Вивантажити() ; ДаніВивантаження. Завантажити(ТаблицяДаних) ; КінецьПроцедури

Тут все має бути зрозумілим. Найцікавіше починається натисканням на кнопку "Зберегти". Спочатку викликається діалог вибору шляху збереження таблиці XLS. Потім, використовуючи дані у табличній частині обробки, заповнюється табличний документза створеним раніше макетом. Макет, доданий до обробки, наступний:

Процедура ОсновніДіїФормиДія(Кнопка) // Викликаємо діалог вибору файлу для збереження XLS-таблиціРежим = РежимДіалогуВиборуФайлу. Збереження; ДіалогВідкриттяФайлу = Новий ДіалогВиборуФайлу(Режим) ; ДіалогВідкриттяФайлу. ПовнеІм'яФайла = ""; ДіалогВідкриттяФайлу. МножиннийВибір = Брехня; Текст = "uk = " " Таблиця XLS " " ; en =" " XLS table " " " ; Фільтр = НСтр(Текст) + " (*. xls) | *. xls" ; ДіалогВідкриттяФайлу. Фільтр = Фільтр; ДіалогВідкриттяФайлу. Заголовок = " Виберіть шлях для збереження" ; Якщо ДіалогВідкриттяФайлу. Вибрати() Тоді ШляхКФайлу = ДіалогВідкриттяФайлу. ПовнеІм'яФайлу; Інакше Текст = " Шлях збереження не вибрано!" ; Попередження (Текст) ; Повернення ; КінецьЯкщо ; // Створюємо табличний документТаблицяЗбереження = Новий ТабличнийДокумент; // Отримуємо макет заповнення та області макетаМакет = Цей об'єкт. ОтриматиМакет(" ТаблицяВивантаження" ) ; ОбластьШапка = Макет. ОтриматиОбласть(" Шапка " ) ; ОбластьРядок = Макет. ОтриматиОбласть(" Рядок" ) ; // Виводимо дані у табличний документТаблицяЗбереження. Вивести(ОбластьШапка) ; Для Кожного Стр З ДаніВивантаження Цикл ЗаповнитиЗначенняВластивостей(ОбластьРядка. Параметри, Стр) ; ТаблицяЗбереження. Вивести(ОбластьРядка) ; КінецьЦикл; // Зберігаємо табличний документ на дискТаблицяЗбереження. Записати(ШляхКФайлу, ТипФайлаТабличногоДокумента. XLS) ; КінецьПроцедури

Після збереження на диску буде файл таблиці Excel зі списком вивантаженої номенклатури. Приклад файлу можна побачити на початку статті.

Користувач може сам

Насправді долі програміста для подібного завдання не потрібні. Користувач все сам може зробити без будь-яких хитрощів.

Наприклад, перейшовши до списку номенклатури та виконавши команду "Всі дії" -> "Вивести список" зі списку номенклатури, користувач отримає список номенклатури у сформованому табличному документі.

Після того, як табличний документ буде сформований, натиснувши кнопку "Зберегти" або через меню "Файл->Зберегти" користувач може записати табличний документ у файл XLS вказавши його ім'я та кінцевий каталог.

От і все! Жодної обробки для вивантаження не потрібно. Звичайно, якщо у вас досить простий випадок із розвантаженням даних.

То все просто?

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

Обробку з прикладом із статті Ви можете завантажити за посиланням.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Висновок

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



Завантаження...
Top