МЕТОДИ ТАБЛИЦІ ЗНАЧЕНЬ – ЧАСТИНА 3

Повідомити (тЗначКод)

конецЦікла / / Поки КонецПроцедури / / Вивести

Приклад 2У вікно повідомлень виводяться починаючи з третього рядка значення першого шпальти таблиці значень, заданої в табл 34

процедура Вивесті2 ()

// тЗнач змінна модуля, тому доступна в процедурі Вивести

/ / Позиціонуємо на другому рядку таблиці значень тЗнач

тЗначПолучитьСтрокуПоНомеру (2)

/ / Перебір рядків таблиці значень починається з її третього рядка поки тЗначПолучітьСтроку () = 1 цикл

Повідомити (тЗначКод)

конецЦікла / / Поки КонецПроцедури / / Вивесті2

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

+ Матеріал, -3 , що означає, що перш дані упорядковуються за зростанням назв постачальників, потім у межах однакових постачальників дані упорядковуються (так само по зростанню) за назвою матеріалів і, нарешті, в межах однакового постачальника і однакового матеріалу дані упорядковуються за спаданням за кількістю

процедура Виконати () / / Приклад сортування таблиці значень тЗнач

перем тЗнач

перем пост [20], мат [20], Колві [20], ост [20]

перем ін, чіслоЗап / /чіслоЗапчисло рядків у таблиці значень ОчістітьОкноСообщеній ()

тЗнач = СоздатьОбект (ТабліцаЗначеній) чіслоЗап = 9

/ / Зміст таблиці значень

пост [1] = 1

мат [1] = Сталь 45;

Колві [1] = 10

ост [1] = 5

пост [2] = 2

мат [2] = Чавун;

Колві [2] = 20

ост [2] = 10

пост [3] = 1

мат [3] = Сталь 45;

Колві [3] = 90

ост [3] = 40

пост [4] = 3

мат [4] = Свинець;

Колві [4] = 55

ост [4] = 25

пост [5] = 1

мат [5] = Сталь 45;

Колві [5] = 150

ост [5] = 65

пост [6] = 4

мат [6] = Олово;

Колві [6] = 70

ост [6] = 30

пост [7] = 3

мат [7] = Свинець;

Колві [7] = 100

ост [7] = 70

пост [8] = 4

пост [9] = 1

мат [8] = Олово;

мат [9] = Олово;

Колві [8] = 180

Колві [9] = 200

ост [8] = 100

ост [9] = 120

/ / Формуємо стовпчики таблиці значень Опускаючи імена необовязкових параметрів,

/ / Зберігаємо розділяють їх коми тЗначНоваяКолонка (КодПоставщіка, Кількість,,,, 10)

тЗначНоваяКолонка (Матеріал, Рядок,,,, 10) / / 10 ширина другого шпальти тЗначНоваяКолонка (Кількість, Кількість,,,, 8)

тЗначНоваяКолонка (Залишок, Кількість,,,, 8)

для ін = 1 по чіслоЗап цикл

тЗначНоваяСтрока () / / Додаємо новий рядок

/ / Визначаємо, використовуючи атрибут ідентифікатор стовпця, осередки нового рядка тЗначМатеріал = мат [ін]

тЗначКодПоставщіка = пост [ін] тЗначКолічество = Колві [ін] тЗначОстаток = ост [ін]

конецЦікла / / Для

/ / Покажемо таблицю значень до сортування тЗначВибратьСтроку (1, До сортування)

/ / Рядок 1, +2,-Кількість забезпечить той же результат сортування, що і рядок

/ / КодПоставщіка, + Матеріал, -3 тЗначСортіровать (КодПоставщіка, + Матеріал, -3) тЗначВибратьСтроку (1, Після сортування)

Повідомити (тЗначІтог (Кількість)) / / Надрукував 875 КонецПроцедури

Результат наведено на рис 310

Рис 310 Таблиця значень: а до сортування

б після сортування за правилом КодПоставщіка, + Матеріал, -3

Приклад 4Якщо до методу Сортувати у процедуру Виконати прикладу 3 додати код

а)

тЗначСвернуть (1, 3)

тЗначВибратьСтроку (1, Після згортання 4, а) б)

тЗначСвернуть (1, 2, 3)

тЗначВибратьСтроку (1, Після згортання 4, б) в)

тЗначСвернуть (1, 2, 3,4)

тЗначВибратьСтроку (1, Після згортання 4, в)

то отримаємо наведений на рис 311 і 312 результат

Рис 311 Таблиця значень: адо згортання б після згортання 4, а

Рис 312 Таблиця значень: а після згортання 4, б б після згортання 4, в Приклад 5Якщо до методу Сортувати у процедуру Виконати прикладу 3 доба-

вити код

сЗнач = СоздатьОбект (СпісокЗначеній) тЗначВигрузіть (сЗнач, 1, 4, 1, 2, 3)

сЗначВибратьЗначеніе (1, Дані перенесені з таблиці тЗнач)

то отримаємо наведений на рис 313 результат

Рис 313 Таблиця і список значень: а фрагмент таблиці,

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

Приклад 6Неодноразове застосування методу ВідімостьКолонкі призводить до спотворення представленої методом ВибратьЗначеніе таблиці значень Так, код

тЗначВибратьСтроку (1, Початкове уявлення таблиці значень) тЗначВідімостьКолонкі (2, 0)

тЗначВідімостьКолонкі (3, 1, 2)

тЗначВибратьСтроку (1, Після дворазового вживання методу ВідімостьКолонкі)

доданий до методу Сортувати у процедуру Виконати прикладу 3, призведе до того, що замість трьох стовпців метод ВибратьСтроку відобразить два стовпці табли ци значень (рис 314, б)

а б

Рис 314 Таблиця значень: а до приховування стовпців б з невірним числом відображуваних стовпців

Зауваження   З елементом діалогу Таблиця значень метод ВідімостьКолонкі працює коректно

Приклад7 Відображення таблиці значень, наведеної на рис 39, після застосування методу Фіксувати Недоступні осередку виводяться на сірому фоні (рис 315)

тЗначФіксіровать (2, 1)

Рис 315 Елемент діалогу Таблиця значень,

в якому недоступні два перші рядки і перший стовпець

Приклад 8 Відображення піктограм в осередках елемента діалогу Таблиця значень

Візьмемо таблицю значень, створену в розд 342 і подану на рис 39 і 314, і додамо в неї на третю позицію стовпець під імям Стан, використавши код

тЗначНоваяКолонка (Стан,,,,, 5) / / 5 ширина стовпця

Заборонимо, застосувавши метод Фіксувати, редагування стовпців Код та Імя і будемо виводити взяті з рис 316 і наведені в табл 38 піктограми

Рис 316 Послідовність піктограм,

виводиться в стовпці Стан розглянутої таблиці значень

Таблиця 38

Піктограми осередків елемента діалогу Таблиця значень

Можливий варіант стану таблиці значень наведено на рис 317

Рис 317 Таблиця значень з піктограмами з табл 38

Для управління таблицею значень і її відображення створимо форму, за зразком представленому на рис 318

Рис 318 Проект форми, керуючої таблицею значень

Звяжемо, використовуючи закладку Додатково, кнопку Заборонити з процедурою Заборона, яка встановлює в клітинку поточного рядка стовпця Стан число 2, якщо редагувати кількість не можна, або колишнє значення клітинки Для пояснення призначення кнопки на закладці Опис у вікні Властивості кнопки введемо наведений на рис 319 текст і активізуємо прапорець Використовувати опис, що забезпечить висновок опису як підказка, коли в процесі роботи з формою мишка затримається на кнопці Заборонити

Рис 319 Використовуємо опис як підказки

Кнопка Заборонити надає дію тільки на непомеченние для видалення запису

Перші 3 піктограми для таблиці значень маються на зображенні (рис 320) з бібліотеки картинок, яка відкривається на закладці Картинка вікна Властивості таблиці після вибору кнопки Змінити картинку

Рис 320 Бібліотека картинок

Збережемо виділену на рис 320 картинку в файл pbmp, вибравши на рис 320 іконку Завантажимо файл pbmp в Paint (графічний редактор BMP-файлів, запус

Каєм, наприклад, після виконання в Windows послідовності дій Пуск Стандартні Paint, домалюємо в четвертому прямокутнику картинки піктограму 4 з табл 38, привівши таким чином картинку до рис 316 Додамо далі, перебуваючи

у вікні Бібліотека картинок (рис 320), за допомогою іконкив бібліотеку файл pbmp і виберемо нову картинку для таблиці, вплинувши на іконку Тепер

після виконання методу тЗначВиводітьПіктограмми (Стан, 1)

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

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

Алгоритмфункціонування форми:

1 Початкові дії:

• заповнимо таблицю значень тЗнач початковими даними, записавши в усі комірки стовпчика Стан число 1

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

• заборонимо (метод Фіксувати) редагування стовпців Код і Імя таблиці значень

• створимо список значень сЗнач і присвоїмо всім його елементам поодинокі значення

У цьому списку будемо зберігати значення комірок стовпчика Стан Причому в стовпці Значення будемо розміщувати числа 1 або 2, інтерпретуючи їх відповідно до табл 38, а в стовпці Подання рядок Так, якщо можна редагувати кількість, або рядок Ні в іншому випадку Все це нам знадобиться для правильної зміни піктограм при роботі з таблицею значень

2 При натисканні на кнопку Пуск процедура Виконати відновлює початкові стану змінних тЗначі сЗнач

3 При натисканні на кнопку Заборонити виконується процедура 3 апрет, яка:

• якщо виставляється заборона на редагування кількості, змінює в поточному рядку значення комірки Стан на 2, а в стовпець Вистава для відповідного елемента списку сЗнач заносить Ні (не можна редагувати кількість)

• якщо заборона знімається, змінює в поточному рядку значення комірки Стан на вміст стовпця Значення для відповідного елемента списку сЗнач(Встановлює 1 або 3), а в стовпець Вистава для цього елемента сЗнач заносить Так (можна редагувати кількість)

4 При подвійному ударі миші по комірці таблиці значень з шпальти Стан виконується процедура Змінити, яка:

• якщо рядок позначається для видалення, змінює в поточному рядку значення комірки Стан на 4

• якщо знімається позначка видалення, змінює в поточному рядку значення комірки Стан на вміст стовпця Значення для відповідного елемента списку сЗнач (встановлює 1 або 2), якщо в стовпці Вистава для цього елемента варто Та, або встановлює 3, якщо там знаходиться Ні

перем сЗнач / / Змінна доступна у всіх процедурах модуля Процедура Заборона ()

перем номСтрокі

номСтрокі = тЗначТекущаяСтрока ()

якщо тЗначСостояніе = 4 тоді / / Стоку позначена на видалення Попередження (Рядок, позначений на видалення, не обробляється”) повернення

/ / Виставляється заборона на редагування кількості іначеЕслі тЗначСостояніе про 2 тоді

сЗначУстановітьЗначеніе (номСтрокі, тЗначСостояніе, Ні) тЗначСостояніе = 2 / / Піктограма 2 з табл 38

інакше / / Знімається заборона на редагування

тЗначСостояніе = сЗначПолучітьЗначеніе (номСтрокі) сЗначУстановітьЗначеніе (номСтрокі,, Так)

КонецЕсли КонецПроцедури / / Заборона

процедура Змінити ()

перем номСтрокі, номСтолбца

перем ТіпДанних, прапор / / Тип редагованих даних перем значен / / Значення редагованої осередку

перем пред / / Представлення (Так або Ні) елемента списку сЗнач

номСтрокі = тЗначТекущаяСтрока () тЗначТекущаяКолонка (, номСтолбца)

Попередження (Дані в поміченої на видалення рядку не редагуються”) повернення

/ / Заборона на редагування кількості

іначеЕслі тЗначСостояніе = 2 тоді Попередження (Редагування заборонено”) повернення

інакше / / Редагування можливо

тЗначПолучитьПараметрыКолонки (номСтолбца, ТіпДанних) значен = тЗначПолучітьЗначеніе (номСтрокі, номСтолбца)

/ / Передаємо діалогу старе значення комірки

прапор = ВвестіЗначеніе (значен, Введіть нове значення осередку, ТіпДанних) якщо прапор = 1 тоді

/ / Якщо нову кількість відмінно від старого якщо значен про тЗначКолічество тоді

тЗначУстановітьЗначеніе (номСтрокі, номСтолбца, значен) тЗначСостояніе = 3 / / Піктограма 3 з табл 38

/ / Зберігаємо дані про стовпці Стан у списку сЗнач

сЗначУстановітьЗначеніе (номСтрокі, 3, Так) КонецЕсли / / значен <> тЗначКолічество

КонецЕсли / / прапор = 1

КонецЕсли / / тЗначСостояніе =  4

інакше / / Вибрано стовпець 3 (Стан)

/ / Є позначка про видалення Знімаємо позначку заносимо в комірку

/ / Дані зі списку сЗнач

якщо тЗначСостояніе = 4 тоді

значен = сЗначПолучітьЗначеніе (номСтрокі, пред)

якщо перед = Так тоді / / Можна редагувати кількість тЗнач Стан = значен

інакше / / Кількість редагувати не можна тЗнач Стан = 2

КонецЕсли / / пред = Так

інакше / / рядок не позначена на видалення тЗначСостояніе = 4 / / Виконуємо позначку стовпця піктограмою 4

КонецЕсли / / тЗначСосотяніе = 4

КонецЕсли / / номСтолбца = 4 КонецПроцедури / / Змінити

процедура Заповніть () / / Додає в таблицю значень рядка і заповнює перем ін, номСтрокі / / Їх даними з векторів кодПодр, підр і Колві

// Вектори для імен підрозділів, їх кодів і чисельності перем кодПодр [20], підр [20], Колві [20]

перем чіслоПодр чіслоПодр = 6

/ / Число підрозділів

кодПодр [1] = 099; кодПодр [2] = 100; кодПодр [3] = 111; кодПодр [4] = 001; кодПодр [5] = 002; кодПодр [6] = 011;

для ін = 1 по чіслоПодр цикл

тЗначНоваяСтрока ()

підр [1] = Відділ кадрів;

підр [2] = Бухгалтерія; підр [3] = Постачання та збут; підр [4] = Цех 1;

підр [5] = Цех 2;

підр [6] = Цех 11

/ / Додаємо новий рядок

Колві [1] = 10

Колві [2] = 15 Колві [3] = 20 Колві [4] = 100 Колві [5] = 150 Колві [6] = 200

/ / Визначаємо, використовуючи атрибут ідентифікатор стовпця, осередки нового рядка тЗначКод = кодПодр [ін]

тЗначІмя = підр [ін]

тЗначСостояніе = 1 / / Буде відображатися піктограма 1 з табл 38 тЗначКолічество = Колві [ін]

/ / Спочатку дозволено редагувати кількість в таблиці значень сЗначДобавітьЗначеніе (1, Так)

конецЦікла / / Для

КонецПроцедури / / Заповнити

Процедура відкриття () / / Формує таблицю значень

/ / Формуємо стовпчики таблиці значень Опускаючи імена необовязкових параметрів,

/ / Зберігаємо розділяють їх коми

тЗначНоваяКолонка (Код, Рядок,,,, 10) / / 10 ширина першого шпальти тЗначНоваяКолонка (Імя, Рядок,,,, 20) тЗначНоваяКолонка (Стан,,,,, 5) / / 5 ширина стовпця тЗначНоваяКолонка (Кількість, Кількість,,,, 10),

Заповнити () / / Заповнюємо таблицю значень даними

/ / Стовпці Код та Імя недоступні для редагування тЗначФіксіровать (0,2) ,

/ / Виводимо піктограми в стовпці Стан

тЗначВиводітьПіктограмми (Стан, 1) КонецПроцедури / / прочинене

процедура Виконати () / / Відновлює таблицю і список значень

/ / Перед кожним запуском процедури Виконати будемо очищати вікно повідомлень ОчістітьОкноСообщеній ()

тЗначУдалітьСтрокі ()

//

Видаляємо всі рядки таблиці значень тЗнач

сЗначУдалітьВсе ()

//

Очищаємо список значеньсЗнач

/ / Заповнюємо осередки таблиці тЗнач і елементи списку сЗнач значеннями

Заповнити ()

КонецПроцедури

/ / Оператор основної програми модуля

сЗнач = СоздатьОбект (СпісокЗначеній)

Діалог форми обробки Проба після деяких маніпуляцій з таблицею і кнопкою Заборонити показаний на рис 317

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

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

2 Агрегатні типи розділені на дві групи спеціального та загального призначення

Обєкти першої групи описані в конфігурації, другою немає

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

4 Список значень з позначками зручний для створення інтерфейсів У такому списку кожен його елемент можна розглядати як прапорець

5 Таблиця значень може містити довільне число стовпців, з якими можна повязати ідентифікатори Значення комірки таблиці можна міняти, модифікуючи зн ачення ідентифікатора відповідного стовпця, наприклад в результаті виконання оператора присвоєння або викликаючи метод УстановітьЗначеніе

6 Поточний рядок таблиці значень можуть змінити методи ВибратьСтрокі, ПолучітьСтроку, ПолучітьСтрокуПоНомеру, НоваяСтрока, Очистити, Сортувати, а також метод СдвінутьСтроку, коли зсувається поточний рядок Крім того, значення атрибута номерСтрокі змінюється при переміщенні курсора по рядках в елементі діалогу Таблиця значень

7 Методи КолічествоСтрок, УдалітьСтроку і Згорнути можуть зробити невизначеним значення поточного рядка таблиці значень

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

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

10 Ні зумовленою процедури, що дозволяє відслідковувати переміщення по рядках елементів діалогу Список і Таблиця значень і додатково по стовпцях в разі таблиці значень

Перерахуванняце агрегатний тип даних, що містить список деяких значень, наприклад перерахування ДаНет може приймати два значення Так і Ні Наявні в конфігурації Заробітна плата і кадри перерахування (їх синоніми або ідентифікатори, якщо синонім не заданий) виведе наступний код:

/ / Процедура виведення списку наявних у конфігурації перерахувань

процедура Виконати () / / Повязана з кнопкою Пуск обробки проба

перем ін, всегоПереч / /всегоПереч число перерахувань до конфігурації ОчістітьОкноСообщеній ()

всегоПереч = МетаданниеПеречісленіе ()

для ін = 1 по всегоПереч цикл Повідомити (МетаданниеПеречісленіе (ін))

конецЦікла / / Для КонецПроцедури / / Виконати

Результат:

ВідЗапісі ВідиПлатежа ВідиПовишКваліф Придатність

ДаНет ДопСведІТС ІнтервалСведеній Категорії ПФР Освіта ОснованіяВЛ ОснованіяІТС ОснованіяУвольненія ОсобиеУсловіяТруда

ОтношениеКВоинскойОбязанности ПеріодічностьСкідкі

Пол ПрічінаОтсутствія РасходиНаАвторскіе РезультатиАттестаціі СемейноеПоложеніе СпособПеречіслПоІспЛісту СтепеніРодства Територіальні умови ТіпБЛ

ТіпБолезні

ТіпНалоговойЛьготи

ТіпПланаСчетов ТіпПлатежа ТіпРасчетаБольнічного ТіпРасчетаОтпуска ТіпРасчетаПреміі ТіпСотрудніка ТіпФорми ТіпиПособій ТіпиУсловійТруда Упорядкувати формиДоковПерсУчета формиОбученія ФормиТруда ХарактерДоплати ХарактерСкідкі Характеру тримання ЦеліПеречісленія

ОснованіяОплатиПоСреднему ВидСтрокиСреднегоЗаработка Характер роботи

ТіпиЧасов БухгалтерскіеКонфігураціі ПрічінаПростоя

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*