СПИСОК ЗНАЧЕНЬ

321 СТРУКТУРА СПИСКУ ЗНАЧЕНЬ

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

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

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

• позначка

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

В останній стовпець для кожного значення заноситься число 1 або 0 У першому випадку значення вважається поміченим, у другому немає За замовчуванням всі заносяться в список значення не помічені

Зауваження:

1 Надалі кожен рядок збереженої у списку значень таблиці будемо нази вать елементом списку

2 Як значення елементу списку значень може виступати інший список значень (приклад див в розд 2855)

322 ПРИКЛАД СПИСКУ ЗНАЧЕНЬ

Створимо для прикладу список значень, що містить представлені в табл 32

дані, що відображають деякі відомості про підрозділи підприємства

Склад списку значень

Таблиця 32

Код підрозділу (значення елемента списку)

Підрозділ (подання елемента списку)

099

Відділ кадрів

100

Бухгалтерія

111

Постачання та збут

001

Цех 1

002

Цех 2

011

Цех 11

Виконаємо для початку наступні дії:

1 Занесемо вихідні дані в масиви кодПодр іімяПодр, а потім перемістимо їх, використовуючи метод ДобавітьЗначеніе, в список значень Код підрозділу використовуємо для визначення стовпця значення,а назва підрозділу для визначення стовпцяпредставлення значення формованого списку значень Ці дії зробимо в процедурі Виконати обробки Проба

2 Для контролю виведемо елементи списку у вікно повідомлень Висновок здійснимо в процедурі Контроль, в якій для визначення числа елементів списку застосовується метод РазмерСпіска, а для доступу до елемента списку метод ПолучітьЗначеніе

3 Відсортуємо (метод Сортувати) список значень за кодами підрозділів і знову виконаємо висновок результату

4 Вставимо після 3-й позиції списку новий елемент (088, Цех 88), видалимо предпослед ний елемент списку і змінимо імя підрозділи, код якого дорівнює 111, на нове імя, попередньо перевіривши, чи є в списку елемент з таким кодом, зрушимо змінений елемент на одну позицію вгору і виведемо модифікований список Для виконання намічених дій використовуємо методи ВставітьЗначеніе, УдалітьЗначеніе, НайтіЗначеніе, УстановітьЗначеніе і СдвінутьЗначеніе

5 Знову відсортуємо список, але тепер вже за іменами підрозділів (метод СортироватьПоПредставлению) і виконаємо висновок результату

6 Виведемо, викликаючи метод ВибратьЗначеніе, діалог із списком імен підрозділі ний і виберемо в ньому Цех 88 Повернені методом значення (код цеху і його номер у списку значень) виведемо у вікно повідомлень

7 Перетворимо, використовуючи метод ВСтрокуСРазделітелямі, підсумковий список в текст

/ / Попередній опис процедури Контроль процедура Контроль (сЗнач, етап) далі

процедура Виконати () перем сЗнач, ин, поз

перем кодПодр [20], підр [20] / / Вектори для імен підрозділів та їх кодів перем код, нПодр / / Код підрозділу та його номер

перем чіслоПодр / / Число підрозділів

перем стор / / Рядок, в яку вивантажується список значень

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

[ЧіслоПодр = 6

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

кодПодр [5] = 002; підр [5] = Цех 2; кодПодр [6] = 011; підр [6] = Цех 11;

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

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

/ / Додаємо значення та його подання

/ / (Код підрозділу та його назва) в список значень сЗнач

сЗначДобавітьЗначеніе (кодПодр [ін], підр [ін]) конецЦікла / / Для

Контроль (сЗнач, Контрольний висновок початкового списку”)

/ / Сортування списку по зростанню значень імен підрозділів сЗначСортіровать ()

Контроль (сЗнач, Контрольний висновок відсортованого початкового списку”)

/ / Вставка елемента (коду підрозділу та його назви) після 3-го елементу списку сЗначВставітьЗначеніе (4, 088, Цех 88)

/ / Видаляємо передостанній елемент списку Його номер дорівнює сЗначРазмерСпіска () 1 сЗначУдалітьЗначеніе (сЗначРазмерСпіска () 1)

/ / Змінюємо імя підрозділи з кодом 111 на нове,

/ / Якщо елемент з такому кодом є у списку поз = сЗначНайтіЗначеніе (111)

якщо поз> 0 тоді / / Якщо елемент знайдено сЗначУстановітьЗначеніе (поз, 111, Відділ постачання та збуту)

/ / Перемістимо змінений елемент на одну позицію вгору

сЗначСдвінутьЗначеніе (-1, поз) інакше

Попередження (Підрозділ з кодом 111 не знайдено”)

КонецЕсли

Контроль (сЗнач, Контрольний висновок зміненого списку”)

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

Контроль (сЗнач, Контрольний висновок підсумкового відсортованого списку”)

/ / Вікно вибору підрозділу з його імені см на рис 31

/ / Встановимо курсор на рядок, відповідну підрозділу Цех 1

/ / Для цього в змінну код установами код першого цеху код = 001;

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

Повідомити (РазделітельСтрок + Вибрані підрозділ з кодом + код + . НПодр = + нПодр)

стр = сЗначВстрокуСРазделителями () Повідомити (РазделітельСтрок +

“Значення елементів списку у вигляді рядків з роздільником: + Стр) КонецПроцедури / / Виконати

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

перем імяПодр, кодПодр / / Імя підрозділу та його код

/ / Контрольний виведення списку сЗнач

Повідомити (РазделітельСтрок + етап)

чіслоПодр = сЗначРазмерСпіска () / / Метод, який повертає розмір списку для ін = 1 по чіслоПодр цикл

/ / Метод ПолучітьЗначеніе поверне код підрозділу з номером ин

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

/ / Тип параметра процедури Повідомити завжди буде символьним, оскільки

/ / Вираз, що задає значення параметра, починається з порожнього рядка Повідомити (” + кодПодр + ” + імяПодр)

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

Рис 31 Діалог вибору значення списку за його поданням

Після останнього контрольного виводу у вікно повідомлень додасться наступний текст:

Контрольний висновок підсумкового відсортованого списку

099 Відділ кадрів

111 Відділ постачання і збуту 001 Цех 1

011 Цех 11

002 Цех 2

088 Цех 88

Вибрані підрозділ з кодом 088 нПодр = 6

Значення елементів списку у вигляді рядків з роздільником: 099, 111, 001, 011, 002, 088

Зауваження У списки значень часто переносяться дані про обєкти агрегатного типу 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>

*

*