Висновок таблиці значень в табличний документ.

Жарознижуючі засоби для дітей призначаються педіатром. Але бувають ситуації невідкладної допомоги при лихоманці, коли дитині потрібно дати ліки негайно. Тоді батьки беруть на себе відповідальність і застосовують жарознижуючі препарати. Що дозволено давати дітям грудного віку? Чим можна збити температуру у дітей старшого віку? Які ліки найбезпечніші?

Добридень!

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

поїхали!

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

Запит = Новий запит ( "ВИБРАТИ * З Справочнік.Банкі"); Таблиця = Запрос.Виполніть (). Вивантажити ();

Виведемо таблицю на керовану форму

Наша основна задача номер РАЗ - вивести результат запиту на керовану форму.

Для цього нам потрібно:

  1. Створити реквізит типу "ТабліцаЗначеній".
  2. Створити реквізити з типом значення, відповідним типом колонки таблиці, для кожної колонки, підлеглі таблиці.
  3. Створити елемент форми типу "ТабліцаФорми" для таблиці.
  4. Створити елементи форми для колонок типу "ПолеФорми".

Таким чином код у нас буде такий:

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

Тут ми створюємо реквізити, що містять таблицю і колонки таблиці. Далі створюємо елементи і прописуємо для них шлях до реквізитів форми. Тобто у нас завжди створюється і реквізит форми, який зберігає значення, і елемент форми, який це значення відображає. У цьому вся суть. При цьому якщо Ви хочете створити групу форми, то реквізит форми вам не потрібен - достатньо створити елемент форми типу "ГруппаФорми", після чого в полі "Вид" прописати соответствующтій вид елемента (Група, Закладка, ...).

даний кодвиводить на керовану форму результат запиту. Але якщо раптом в результаті запиту у Вас будуть елементи, типи яких не можуть бути виведені на форму, то 1С буде лаятися. До таких елементів відносяться сховища значень, унікальні ідентифікатори і, на скільки я знаю, інші таблиці значень (тобто при вибірці табличних частин у нас виникнуть проблеми). Це потрібно враховувати при створенні реквізитів. При цьому, якщо реквізит таблиці має тип "ТабліцаЗначеній", то для його теж потрібно буде створити колонки. Також слід мати на увазі, що імена елементів форми повинні бути унікальними, при цьому імена реквізитів повинні бути унікальні всередині своїх батьків (тобто може існувати дві різні таблиці з однаковими найменуваннями колонок, але в межах однієї таблиці імена колонок повинні відрізнятися).

Додамо колонку в таблицю документа

Тепер давайте подивимося, як можна розширити вже наявну таблицю форми.

Припустимо, ми хочемо додати колонку в таблицю виданих авансів авансового звіту як-небудь так:

Для цього просто напишемо в процедурі ПріСозданііНаСервере такий ось код:

// додамо реквізит МассівРеквізітов = Новий Масив; МассівРеквізітов.Добавіть (Новий РеквізітФорми ( "Колонка1", Новий ОпісаніеТіпов ( "Рядок"), "Об'ект.ВиданниеАванси", "Колонка 1", Брехня)); ІзменітьРеквізіти (МассівРеквізітов); ЕПТ = Елементи.Добавіть ( "Колонка1", Тип ( "ПолеФорми"), Елементи.ВиданниеАванси); Елт.Від = ВідПоляФорми.ПолеВвода; Елт.ПутьКДанним = "Об'ект.ВиданниеАванси.Колонка1";

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

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

опис способу

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

ОбластьЯчеек = ТабДокумент.Область (1, 1, ПоследняяСтрока, ПоследняяКолонка);


2. На основі області осередків табличного документа створюємо опис джерела даних.

ІсточнікДанних = Новий ОпісаніеІсточнікаДанних (ОбластьЯчеек);

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



Результат читання даних з джерела після виклику методу Виконати ()знаходиться у властивості результат. Дана властивість містить об'єкт типу РезультатЗапроса, об'єкт такого ж типу повертається при виконанні запиту.

4. вивантажити результат в таблицю значень (див. Рисунок 2), викликавши метод вивантажити () об'єкта типу РезультатЗапроса.

ТабЗначеній = ПостроітельОтчета.Результат.Вигрузіть ();

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

Підсумковий програмний код

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

Обробку з реалізацією даного способуможна завантажити

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

опис способу

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

ОбластьЯчеек = ТабДокумент.Область (1, 1, ПоследняяСтрока, ПоследняяКолонка);


2. На основі області осередків табличного документа створюємо опис джерела даних.

ІсточнікДанних = Новий ОпісаніеІсточнікаДанних (ОбластьЯчеек);

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



Результат читання даних з джерела після виклику методу Виконати ()знаходиться у властивості результат. Дана властивість містить об'єкт типу РезультатЗапроса, об'єкт такого ж типу повертається при виконанні запиту.

4. вивантажити результат в таблицю значень (див. Рисунок 2), викликавши метод вивантажити () об'єкта типу РезультатЗапроса.

ТабЗначеній = ПостроітельОтчета.Результат.Вигрузіть ();

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

Підсумковий програмний код

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

Обробку з реалізацією даного способу можна скачати

Підтримайте проект - поділіться посиланням, спасибі!
Читайте також
Сбебранк (він же Ощадбанк) Сбебранк (він же Ощадбанк) Рішення проблем з ліцензією у Autocad Чи не запускається autocad windows 7 Рішення проблем з ліцензією у Autocad Чи не запускається autocad windows 7 Інструкція з використання PIN коду КріптоПро, під час підписання кількох документів - Інструкції - АТ Інструкція з використання PIN коду КріптоПро, під час підписання кількох документів - Інструкції - АТ "ПЕК-Торг"