Контакти

1с завантажити таблицю значень в табличну частину

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

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

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

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

програмуємо

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

висновок

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



Сподобалася стаття? поділіться їй