Як налаштувати смартфони та ПК. Інформаційний портал

1с цикл за таблицею значень.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

І лише таблиця значень:

  • Здатна безпосередньо заповнювати табличні частини документів, довідників та обробок;
  • Є результатом виконання запиту;
  • Легко читається та наочно формується;
  • і багато багато іншого.

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

З чого складаються таблиці значень

Всі розробники-початківці чітко знають, що у таблиці значень є:

  1. Колонки, що описують структуру таблиці;
  2. Рядки, що наповнюють таблицю інформацією.

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

Але про все по порядку.

На Рис.1 показано, як виглядає таблиця значень, виведена на друк найпростішою процедурою, яка показує їхню структуру та наповнення.

Як очевидно з прикладу, колонок у таблиці 5, крім номера рядка по порядку.

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

Якщо надалі планується використання таблиці значень як джерела даних для запиту, вказівка ​​типу даних необхідна (Рис.2).

Додавання рядка відбувається методом Додати(), з присвоєнням імені нового рядка.

Індекси таблиці значень

Пошук за таблицею значень здійснюється двома методами:

  • Знайти (повертає перший знайдений елемент за певними параметрами, інакше значення невизначено);
  • ЗнайтиРядки (повертає масив рядків таблиці, що задовольняють певним умовам).

Пошук за великими таблицями сильно «підвішує» систему і може бути тривалим за часом. Саме в цих випадках треба використовувати індекси.

У першому випадку пошук відбувається за одним значенням і однією колонкою, саме її треба передавати в індекси (Рис.3)

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

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

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

Тут на допомогу знову приходить таблиця значень. У ТЗ, скориставшись методом табличних частин Вивантажити() можна:

  1. Повністю повторити структуру таблиці документа зі збереженням всієї можливої ​​інформації;
  2. Визначити лише ті колонки та рядки, які необхідні для подальшої роботи, та вивести їх.

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

Слід зазначити, що зіставлення колонок табличної частини та ТЗ відбувається за іменами.

Повністю скопіювати одну ТЗ в іншу, а також визначити, які рядки та колонки буде перенесено можна методом Скопіювати().

Рис.4

При цьому будуть збережені колонки таблиці, а інформація та рядки з дубліката будуть видалені.

Таблиця значень та запит

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

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

Рис.5

Замінивши «*» на найменування колонок (рядок виду ТЗ.Номенклатура) можна зменшити обсяг інформації, що вивантажується.

Помилка під час виконання запиту (Рис.5) «Тип може бути оброблений запиті», свідчить, що розробник забув виконати частину коду Рис.2 і типизував колонки.

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

При переборі рядків таблиці значень методом, що містить лічильник (Рис. 6), важливо пам'ятати, що початкове значення індексу рядків – 0, а кінцеве значення ітератора має бути на 1 менше кількості рядків у таблиці. В іншому випадку є 100% ймовірність виникнення помилки «Значення індексу виходить за межі діапазону»

Рис.6

Взагалі ж, перебір рядків ТЗ краще здійснювати через конструкцію «Для кожного з», визначивши ім'я ітератора.

(Ця стаття відноситься до циклу статей 1С з нуля; програмування 1с з нуля; таблиця значень 1с)

Минулої статті я розповідав про створення таблиці значень 1ста способів звернення до даних, які у ній містяться.

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

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

Метод ТаблицяЗначень.Кількість()- Повертає кількість рядків у таблиці значень.

Нагадую, що якщо метод ТаблицяЗначень.Кількість()показав, що у таблиці 5 рядків, то індекси(номери) цих рядків такі: 0, 1, 2, 3, 4.

Припустимо, що ми маємо таблицю значень 1Сз колонкою "Прізвище Клієнта"

Якщо ми бажаємо перебрати всі рядки таблиці значень за допомогою індексу рядків, ми маємо використовувати заголовок циклу, як у прикладі. У ньому ми виводимо на екран вміст колонки "Прізвище Клієнта" для кожного рядка, тобто по суті друкуємо весь стовпець з прізвищами клієнтів.
Отже:

Для НомерРядки = 0 По НашаТаблиця.Кількість() - 1 Цикл // тут перебираються рядки ПоточнеПрізвище = НашаТаблиця[НомерРядки].ПрізвищеКлієнта; // "Прізвище Клієнта" - це ім'я колонки, що містить прізвище клієнта Повідомити (Поточне Прізвище); КінецьЦикл;

Зверніть увагу, що лічильник циклу ми нарощуємо до значення, що дорівнює кількості рядків таблиці мінус один: НашаТаблиця.Кількість() - 1

Давайте з'ясуємо, що означає код: НашаТаблиця[НомерРядки]. Це і є звернення до конкретного рядка таблиці значень щодо її індексу (номеру).

У наступному прикладі я покажу, як НашаТаблиця[НомерРядки]повертає нам об'єкт, який має тип "РядокТаблиціЗначень".
У додаткову змінну я поміщаю результат звернення до рядка за номером: РядокТаблиці = НашаТаблиця[НомерРядки]

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

Для НомерРядки = 0 За НашаТаблиця.Кількість() - 1 Цикл // тут перебираються рядки РядокТаблиці = НашаТаблиця[НомерРядки].ПрізвищеКлієнта; // отримуємо поточний рядок таблиці значень за її індексом (номером) Поточне Прізвище = Рядок Таблиці. Прізвище Клієнта; // "Прізвище Клієнта" - це ім'я колонки, що містить прізвище клієнта Повідомити (Поточне Прізвище); КінецьЦикл;

Якщо всередині циклу ми напишемо такий код: Повідомити(РядокТаблиці)- цей код НЕ виведе на екран дані з поточного рядка таблиці значень (наприклад, прізвище клієнта та інше).

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

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

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

Для перебору рядків таблиці значень 1Сми можемо скористатися іншим варіантом циклу. Це спеціальний цикл для вибору елементів об'єктів-колекцій. Таблиця значень 1с є так званою колекцію. В даному випадку – колекцію рядків.

А будь-яку колекцію в 1С можна перебрати за допомогою циклу:

Для кожного з Цикл....... дія всередині циклу КінецьЦикл

Виведемо всі прізвища клієнтів зі всіх рядків таблиці за допомогою перебору колекції рядків таблиці значень:

Для кожного РядокТаблиці З НашаТаблиця Цикл Повідомити(РядокТаблиці.ПрізвищеКлієнта); КінецьЦикл

При переборі колекції нам не знадобився лічильник номерів рядків (індексів). Спеціальна форма циклу допомогла обійтись без лічильника. У довільну змінну РядокТаблиціпри кожному проході циклу автоматично надається об'єкт-рядок таблиці значень.

Таким чином у РядокТаблиціу міру виконання циклу, поспіль потрапляють усі рядки нашої таблиці значень. А ми тільки й робимо, що у кожного переданого нам рядка виводимо на екран вміст колонки "Прізвище Клієнта" за допомогою конструкції Повідомити (Рядок Таблиці. Прізвище Клієнта);

3. А тепер: повторення матеріалу.

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

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

Отримати доступ до рядка таблиці значень можна за індексом, що починається з нуля. За допомогою коду МояЧетвертаРядок = МояТаблиця- ми одержуємо четвертий рядок таблиці значень, оскільки нумерація рядків починається з нуля: 0, 1, 2, 3.

Число рядків ми визначаємо методом МояТаблиця.Кількість(). Дужки в кінці не забуваємо, тому що ми викликаємо метод без параметрів.

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

Останнє: Як перебрати колекцію, як отримати номер рядка таблиці значень?
Отримати номер поточного рядка можна викликом методу Індекс() для таблиці значень, до якого ми передаємо об'єкт-рядок.

Приклад нижче виведе на екран номери всіх рядків у таблиці значень 1С:

Для кожного РядокТаблиці З НашаТаблиця Цикл Повідомити(НашаТаблиця.Індекс(РядокТаблиці)); КінецьЦикл

Продовження матеріалів буде в наступних статтях.

Дегтярьов Роман.

Як навчитися програмувати в 1С з нуля?

Як працювати програмістом 1С та отримувати до 150 000 рублів на місяць?

ЗАПИШИСЯ НА БЕЗКОШТОВНИЙ

2-ТИЖНЕВИЙ КУРС

"ПРОГРАМУВАННЯ в 1С ДЛЯ НОВИЧКІВ"

Курс прийде електронною поштою. Стань програмістом, виконуючи покрокові завдання.

Для участі потрібен лише комп'ютер та інтернет

Безкоштовний доступ на курс:

Sp-force-hide ( display: none;).sp-form ( display: block; background: #eff2f4; padding: 5px; width: 270px; max-width: 100%; border-radius: 0px; -moz-border -radius: 0px; -webkit-border-radius: font-family: "Helvetica Neue", sans-serif; .sp-form input ( display: inline-block; opacity: 1; visibility: visible;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; width: 260px;).sp-form .sp -form-control ( background: #ffffff; border-color: #cccccc; border-style: solid; border-width: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; border -radius: 4px; -moz-border-radius: -webkit-border-radius: 4px; width: 100%;). size: 13px; font-style: normal; font-weight: bold;).sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; background-color: #f4394c; #ffffff; width: 100%; font-style: normal; font-family: Arial, "Helvetica Neue", sans-serif; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; background: linear-gradient(to top, #e30d22 , #f77380);).sp-form .sp-button-container (text-align: center;

Ось є для початку невеликий фак – прості приклади роботи з таблицею значень:

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

ТаблицяЗначень = Новий ТаблицяЗначень;


2. Створити колонки таблиці значень:

ТаблицяЗначень.Колонки.Додати("Ім'я");
ТаблицяЗначень.Колонки.Додати("Прізвище");


3. Додати нові рядки використовуючи імена колонок:


НоваРядок.Ім'я = "Василь";
НоваРядок.Прізвище = "Пупкін";


4. Як шукати значення у таблиці значень:
Необхідно знайти рядок таблиці, що містить потрібне значення.

ЗнайденаРядок = ТаблицяЗначень.Знайти(ШуканийЗначення);


5. Знайти перше входження у певних колонках таблиці значень

ЗнайденаРядок = ТаблицяЗначень.Знайти(ШуканеЗначення, "Постачальник, Покупець");


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

СтруктураПошук = Структура("Співробітник", ШуканеЗначення);
МасивЗнайденихРядок = ТаблицяЗначень.ЗнайтиРядки(СтруктураПошуку);


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

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

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

Теж саме використовуючи індекси:

СтаршийІндекс = ТаблицяЗначень.Кількість() - 1;
Для Сч = 0 за СтаршимІндексом Цикл
Повідомити(ТаблицяЗначень[Сч].Ім'я);
КінецьЦикл;


8. Видалення наявного рядка таблиці значень

ТаблицяЗначень.Видалити(Видалити Рядок);

за індексом

ТаблицяЗначень.Видалити(0);


9. Видалення наявної колонки таблиці значень

ТаблицяЗначень.Колонки.Видалити(ВилученаКолонка);


за індексом

ТаблицяЗначень.Колонки.Видалити(0);

Необхідно враховувати, що видалення рядка (або колонки) «з середини» таблиці значень призведе до зменшення на одиницю індексів рядків, що стояли після віддаленої

10. Як заповнити таблицю значень, якщо імена колонок містяться у змінних?

НовийРядок = ТаблицяЗначень.Додати();
НоваРядок[Ім'яКолонки] = Значення;


11. Як заповнити всю колонку таблиці значень необхідним значенням?
Колонку ПрапораФіскальногоОбліку в таблиці значень ТаблицяЗначень необхідно заповнити значенням Брехня

ТаблицяЗначень.ЗаповнитиЗначення(Брехня, "Прапор ФіскальногоОбліку");


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

12. Як таблицю значень «ТаблицяОтримувач» заповнити даними таблиці значень «Вихідна Таблиця»?

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

ТаблицяОтримувач = ТаблицяВихідна.Скопіювати();


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

Часткове перенесення даних для колонок з іменами, що збігаються:

Для кожного рядка Вихідної Таблиці З Вихідна Таблиця Цикл
ЗаповнитиЗначенняВластивостей(НовийРядок,РядокВихідноїТаблиці);
КінецьЦикл


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

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

Повне копіювання даних для колонок з іменами, що збігаються.

ОдноіменніКолонки = Новий Масив();

Для кожного Колонка З ВихіднаТаблиця.Колонки Цикл
ЗбігаючаКолонка = ТаблицяОтримувач.Колонки.Знайти(Колонка.Ім'я);

Якщо ЗбігаючаКолонка<>Невизначено Тоді

// Отримати властивості колонки.
Ім'я = Колонка. Ім'я;
ТипЗначення = Колонка.ТипЗначення;
Заголовок = Колонка.Заголовок;
Ширина = Колонка.

// Замінити колонки у таблиці-одержувачі.
Індекс = ТаблицяОтримувач.Колонки.Індекс(ЗбігаючаКолонка);

ТаблицяОтримувач.Колонки.Видалити(Індекс);
ТаблицяОтримувач.Колонки.Вставити(Індекс, Ім'я, ТипЗначення, Заголовок, Ширина);

// Додати чергове ім'я колонок, що збігаються в масив.
ОдноіменніКолонки.Додати(Колонка.Ім'я);

КінецьЯкщо;

КінецьЦикл;

// Цикл перебору рядків вихідної таблиці.
Для кожного Рядок Вихідної Таблиці З Вихідна Таблиця Цикл

// Додати новий рядок у таблицю-одержувач.
НовийРядок = ТаблицяОтримувач.Додати();

// Заповнити значення в комірках, що збігаються.
Для кожного Ім'яКолонки З ОдноіменніКолонки Цикл
НоваРядок[Ім'яКолонки] = РядокВихідноїТаблиці[Ім'яКолонки];

КінецьЦикл;

КінецьЦикл;


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

13. Як додати колонки до таблиці значень «ТаблицяЗначень» з обмеженнями на кшталт?

При додаванні стовпчика можна просто вказати її ім'я, а другий параметр методу Додати() не чіпати. І тут тип даних колонки – довільний.

Додавання колонки без зазначення типу даних

// Додати колонку без обмежень на кшталт.
ТаблицяЗначень.Колонки.Додати("Об'єкт");


Ви можете заповнити значення другого параметра. Туди необхідно передавати опис дозволеного колонки типу. Сам опис можна отримати за допомогою конструктора, передавши останньому як параметр рядкову назву типу (якщо багато типів, то через кому) або масив допустимих типів.

Додавання колонки із зазначенням типу даних

// Обмеження за типами даних колонки:
// Тільки елементи довідника "Контрагенти".
ТаблицяЗначень.Колонки.Додати("Контрагент",Новий ОписТипів("ДовідникПосилання.Контрагенти"));


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

Використання кваліфікаторів для уточнення типу даних колонки таблиці значень

// Підготовка та встановлення обмежень для даних типу Рядок.
КваліфікаторРядки = Новий КваліфікаторРядки(20, ДопустимаДовжина.Змінна);
Допустимі Типи = Новий Опис Типів ("Рядок", КваліфікаториРядки);
ТаблицяЗначень.Колонки.Додати("ПриміткаСтроковеКоротке", ДопустиміТипи);


Аналогічні дії можна здійснювати щодо кваліфікаторів числа та дати.
Зверніть увагу: опис типів можна будувати конструктором як «з нуля», так і використовувати як основу вже існуючий опис типів

Використання існуючих типів описів для вказівки типу даних колонки таблиці значень

// Розширення вже використаного описи типів.
КваліфікаториЧисла = Новий КваліфікаториЧисла(10, 2, ДопустимийЗнак.Неотрицательный);
КваліфікаториДати = Новий КваліфікаториДати(ЧастіДати.Дата);
РозширеніДопустиміТипи = Новий ОписТипів(ДопустиміТипи, "Число, Дата", КваліфікаториЧисла, КваліфікаториДати);

ТаблицяЗначень.Колонки.Додати("Примітка", РозширеніДопустиміТипи);

Найкращі статті на тему