За стомашно-чревни заболявания

Пълен синтаксис (щракнете за разширяване)

ListValues

Описание:

Списък със стойности е обект, който не се запазва в базата данни, което ви позволява да изграждате динамични набори от стойности за решаване на проблеми с интерфейса и да ги манипулирате (добавяне, редактиране, изтриване на елементи, сортиране). Може да се попълни със стойности от всякакъв тип, т.е. В един списък типовете съхранени стойности могат да бъдат различни. Един пример за използване на този обект е организирането на избора на конкретен документ от списък с възможни документи, генериран с помощта на сложен алгоритъм.

Колекция елементи: ValueListElement

Възможно е обект да заобиколи колекцията с помощта на оператора За всеки... От... Цикъл. Обходът избира елементите на колекцията.

Възможно е достъп до елемент на колекция с помощта на оператора [...]. Индексът на елемента се предава като аргумент ( номерация от 0).

Имоти:

Методи:

Вмъкване (индекс, стойност, представяне, етикет, изображение) Вмъква нов елемент в списъка със стойности на позицията на посочения индекс.SelectElement (Title, Element) Извиква прозорец за интерактивен избор на един от елементите, включени в списъка със стойности. елемент- елементът, към който първоначално трябва да бъде позициониран списъкът със стойности по време на интерактивен избор. Ако стойността на параметъра не е елемент от списък със стойности, който е включен в дадения списък, няма да се извърши позициониране.UnloadValues() Създава масив и копира стойностите на елементите от списъка със стойности в него.Добавяне (стойност, представяне, етикет, изображение) Добавя нов елемент в края на списъка със стойности.LoadValues(ArrayValues) Зарежда списък със стойности със стойностите от предадения масив. В този случай всички предишни елементи от списъка се изтриват.Попълнете Бележки(Маркиране) Поставя маркировка за всички елементи от списъка със стойности.Index(Element) Получава индекса на елемент в списък със стойности. Ако не бъде намерено, тогава се връща -1.Count() Получава броя на елементите в списъка със стойности.FindByValue(SearchValue) Търси стойността на елемент в списък със стойности. Ако никой елемент не съхранява стойност, равна на търсената стойност, тогава стойността се връща Недефиниран. Търсене по ID(Идентификатор) Извлича списъка със стойности елемент по идентификатор. Ако елементът не бъде намерен, той се връща Недефиниран. MarkItems(Заглавка) Задава или премахва отметките (интерактивно) на елементите в списъка със стойности. Се завръща Вярно, ако в диалоговия прозорец се натисне бутонът "ОК", Лъжа- в противен случай.Clear() Изчиства списъка със стойности, като премахва всички елементи от него.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Извиква прозорец за интерактивен избор на един от елементите, включени в списъка със стойности.ShowMark елементи(Описание на предупреждения за затваряне, заглавка) Предназначен за интерактивно задаване на състояния на маркировка за елементи от списъка със стойности.Get(Index) Извлича стойността по индекс. Работи подобно на оператора.Shift (Element, Offset) Премества елемент от списъка със стойности напред или назад с определен брой позиции.Copy() Създава копие на списък със стойности.Сортиране по стойност(Посока) Сортира списък със стойности във възходящ или низходящ ред на стойностите, съхранени от елементите. Вижте примера по-долу.SortByView(Посока) Сортира списъка със стойности във възходящ или низходящ ред по азбучен ред на представянията на елементите, включени в списъка със стойности. Вижте примера по-долу.Премахване (елемент) Премахва елемент от списък със стойности, където елемент- индекс на елемента за изтриване или самия елемент.

Дизайнери:

Нов списък със стойности
&На клиентска процедура ExecuteCode(команда) /// Как да създадете списък със стойности в 1s 8.3, 8.2Списък = Нов списък със стойности; /// Как да добавите елемент към списъка със стойности в 1s 8.3, 8.2 // добавяне на параметри на метода:// - значение // - производителност // - маркирайте (задължително) // - снимка (задължително)списък. Добавяне (1980, // стойност на елемента "Година на раждане на Вася"// производителност ) ; списък. Добавяне (1985, "Година на раждане на Юлия") ; // стойностите могат да бъдат от различни типовесписък. Add("Полина" , "Име на детето" ) ; /// Как да вмъкнете елемент в списък със стойности в 1s 8.3, 8.2 // вмъкнете в позиция № 2 (елементите са номерирани от 0) // елемент със стойност 2010 и представяне // "Годината, в която се роди общата им дъщеря"списък. Вмъкване (2, 2010 г., „Годината, в която се роди общата им дъщеря“) ; /// Как да заобиколите елементи от списъка със стойности в 1s 8.3, 8.2За всеки елемент от списъка Loop Report( Element. Representation + ": " + String(Element. Value) ) ; Краен цикъл; /// Как да изчистите списъка със стойности в 1s 8.3, 8.2списък. Clear() ; списък. Добавяне ("Понеделник"); списък. Добавяне ("вторник"); списък. Добавяне ("сряда"); /// Как да разберете броя на елементите на списък със стойности, както и /// вземете елемент от списък по неговия индекс в 1s 8.3, 8.2 // номериране от нулатаЗа индекс = 0 по списък. Quantity() - Отчет за 1 цикъл (Списък[Индекс]); Краен цикъл; /// Как да намерим елемент от списък по неговата стойност в 1s 8.3, 8.2 ValueTuesday = Списък. FindByValue("вторник"); /// Как да разберете индекса на елемент в списък в 1s 8.3, 8.2Доклад(Списък. Индекс(СтойностВторник) ) ; // 1, тъй като номерирането започва от нула /// Как да сортирате списък по неговите стойности в 1s 8.3, 8.2 // беше: понеделник, вторник, срядасписък. SortByValue(SortDirection.Descending) ; // стана: сряда, понеделник, вторник /// Как да премахнете елемент от списък със стойности в 1s 8.3, 8.2 // премахване на първия елемент // параметър: елемент от списък // или индекс на елемент// можете да направите този списък. Изтрий(Списък[ 0 ]); // или нещо такова // List.Delete(0); /// Как да преместите елемент от списък със стойности в 1s 8.3, 8.2 // преместване на нулевия елемент една позиция напред // беше: понеделник вторниксписък. Преместване (0, 1); // стана: вторник понеделник /// Как да направите копие на списък в 1s 8 ListCopy = Списък. Копие() ; Цветове = NewValueList; Цветове. Добавяне ("Червено"); Цветове. Добавяне ("Зелено" ); Цветове. Add("Blue");/// Как да кача списък със стойности в масив в 1s 8.3, 8.2 ArrayColors = Цветове. UnloadValues() ;/// Как да заредите стойности на списък от масив в 1s 8.3, 8.2 Цветове. LoadValues(ArrayColors) ; Край на процедурата /// Как да направите безмоден избор на стойност от списък/// стойности в 1s 8.3, 8.2 &На процедурата на клиента Как да направите избор на немодална стойност (команда) Цветове = Нов списък със стойности; Цветове. Добавяне ("Червено"); Цветове. Добавяне ("Зелено" ); Цветове. Add("Blue");// процедура AfterSelectingElement е дефинирана точно по-долу AlertAfterElementSelection = Ново описание Alerts("AfterElementSelection" , Този обект ); Цветове. ShowElementSelection( NotificationAfterElementSelection,„Избери любимия си цвят“<>) ; Край на процедура &На клиентска процедура AfterElementSelection(Element, Parameters) Export If Element Undefined Then Report(Element.Value) ; EndIf ; Край на процедурата /// Как да направите безмоден избор на стойност от списък&На процедурата на клиента Как да направите немодално маркиране на стойности (команда) Цветове = нов списък със стойности; Цветове. Добавяне ("Червено"); Цветове. Добавяне ("Зелено" ); Цветове. Add("Blue"); // процедурата AfterMarkingElements е дефинирана точно по-долу AlertAfterMarkingItems = Ново описание Alerts( „След маркиране на елементи“, Този обект ); Цветове. ShowTagItems( AlertAfterTagItems, „Изберете любимите си цветове“) ; Цветове. FillNotes(True) ; Край на процедура &На клиентска процедура след маркиране на елементи (елементи, параметри) Експортиране на елементи<>Undefined След това за всеки цвят от елементи Цикъл, ако цвят. Маркирайте след това Доклад(Цвят.Стойност) ; EndIf ; Краен цикъл; EndIf ; Край на процедурата /// Как да направите модален избор на стойност от списък в 1s 8.3, 8.2&На процедурата на клиента Как да направите ModalValueSelection(Command) Colors = New ValueList; Цветове. Add("Red" ); Цветове. Добавяне ("Зелено" ); Цветове. Add("Blue"); SelectColor = Цветове. Избери предмет( , Този обект ); Цветове. ShowElementSelection( NotificationAfterElementSelection,) ; Ако SelectColor<>Undefined Then Report(SelectColor.Value) ; EndIf ; Край на процедурата /// Как да маркирате модално стойности от списък /// Как да направите безмоден избор на стойност от списък&На процедурата на клиента Как да направите модална маркировка на стойности (команда) Цветове = нов списък със стойности; Цветове. Add("Red" ); Цветове. Добавяне ("Зелено" ); Цветове. Add("Blue"); Ако Цветове. MarkItems( „Изберете любимите си цветове“) След това за всеки цвят от цветен цикъл, ако цвят. Маркирайте след това Доклад(Цвят.Стойност) ; EndIf ; Краен цикъл; EndIf ; // така можете да зададете всички знаци наведнъж // списък до определена стойностЦветове. FillNotes(True) ; Край на процедурата /// Изтеглете и стартирайте тези примери на вашия компютър

За какво е тази статия?

Тази статия продължава поредицата от статии „Първи стъпки в разработването на 1C“. Обхваща принципите на работа с универсални колекции. След като прочетете статията, ще научите:

  • Какво представляват универсалните колекции и кога и в какви случаи трябва да се използват?
  • Какво е общото между всички универсални колекции? Какви техники можете да използвате, за да работите с всички тях?
  • Какво е масив, как и кога да го използваме? Какви методи има?
  • Защо да използвате структура? Как се различава от масив?
  • Кога трябва да използвате списък със стойности? Как да го покажа във формуляра?
  • Съответствие – какво е това и кога да го използваме? Какви са предимствата по отношение на структурата?
  • За какво се използва таблицата със стойности? Как да опишем неговата структура? Как да добавя/премахвам редове? Как да го покажа във формуляра?
  • Дърво на ценностите - за какво се използва? Как да попълня и изведа формуляра? Как да работим с него?

Приложимост

Статията разглежда платформата 1C:Enterprise 8.3 от текущото издание.

Как да работите с универсални колекции в 1C

Колекция от стойности е контейнер, който обикновено може да съдържа произволен брой елементи. Често обаче няма строги ограничения за типа данни.

Можете да добавяте стойности към обща колекция. Всички стойности в колекцията могат да бъдат обхождани. Тези колекции се използват главно за някакъв вид обработка в алгоритми. Тези. Това са някои динамични структури, които съществуват, докато алгоритъмът работи.

Важно е да се разбере, че колекциите не се съхраняват в база данни (не говорим за типа данни Value Store, който може да съхранява почти всеки тип данни).

Има различни видове универсални колекции: масив, структура, съвпадение, фиксиран масив, таблица със стойности, част от таблица и др. Но всички колекции имат подобно поведение.

Колекция може да бъде създадена в резултат на действие на функция (функцията връща универсална колекция като стойност).

Можете да получите нова колекция ръчно, като извикате конструктора и създадете екземпляр на класа.

Например: OurArray = Нов масив;

Конструкторите за много общи колекции са параметризирани.

И така, в конструктора за Можете да посочите броя на членовете в съответните измерения. Тези. можете веднага да декларирате многоизмерен .

Съответното описание на конструктора е в асистента за синтаксис.

По този начин, използвайки параметри на конструктора, можете веднага да зададете желаното поведение на даден обект.

Но параметрите не са задължителни; разработчикът не може да ги зададе и допълнително да дефинира поведението на масива, както намери за добре.

Почти всяка универсална колекция може да бъде създадена с помощта на конструктор (изключение са частите на таблицата, които действат като конфигурационни обекти).

За универсалните колекции има общи понятия като индекс и номер. Всеки елемент от колекцията има индекс. В този случай индексът започва от нула.

За достъп до елемент Нашият масив, можете да използвате индексен достъп; за това индексът е посочен в квадратни скоби.

Например, Нашият масив. Моля, имайте предвид, че в този случай системата връща елемента Array с индекс 3 и по ред това е четвъртият елемент от Array.

За някои колекции има и понятието номер на ред. Номерът на реда започва с единица. Например за табличната част има такова свойство като номер на ред. Важно е да се има предвид, че ако знаем номера на реда и искаме да имаме достъп до него чрез индекс, тогава трябва да използваме стойност с едно по-малко от номера на реда като индекс.

Концепцията за номер на ред не съществува във всички колекции, но главно в тези, които могат да бъдат показани в потребителския интерфейс.

Всички колекции използват преминаване на елемент на колекция. Байпасът е възможен по два начина: цикъл ЗаИ цикъл За всеки от.

Методите, които се прилагат за повечето общи колекции, са Преброяване, Индексиране, Добавяне, Вмъкване, Изтриване и Намиране.

Count е функция, която връща броя на елементите в колекция. Може да се използва преди цикъл За, както е показано на фигурата.

Методът Index не съществува за всички колекции, а само за тези, чиито елементи могат да бъдат препратени. Пример е Таблица със стойности.

Таблица със стойности– това е специфична колекция от редове; редовете могат да съдържат различни колони с различни типове стойности.

Всеки ред представлява независим обект. Можете да получите връзка към него; чрез този ред можете да получите достъп до стойностите на колоните в този ред.

Методът Index ви позволява да определите кой индекс съответства на даден ред (т.е. текущата позиция на реда в таблицата). Стойностите на индекса започват от нула.

Почти всяка универсална колекция има методи за добавяне на нови стойности към дадена колекция. Фигурата показва как да попълните масив със стойности от 0 до 10 по два начина.

За да добавим елемент към масива, можем да използваме метода Добавете, посочете стойността, която трябва да се добави в скоби. В този случай стойността ще бъде добавена в края на списъка, т.е. Масивът непрекъснато ще се увеличава поради последната позиция.

Друг метод, който ви позволява да добавяте стойности към колекция, е Поставете. Различно е от метода Добаветев това, че можете да посочите къде да вмъкнете добавения елемент.

Синтаксис: Вмъкване (,)

Първият параметър указва индекса, в който ще бъде вмъкната новата стойност. Тези. например, можем да посочим, че всяка стойност трябва да бъде вмъкната в началото на списъка (вторият метод на фигурата по-горе).

За да премахнете елементи от колекция, използвайте метода Изтрий. Методът Delete указва по индекс кой елемент ще изтрием.

Синтаксис: Изтрий()
Пример за употреба: Нашият масив.Изтрий(5);

Трябва да се отбележи, че за тези колекции, където низовете представляват независим обект (например for Таблици със стойности), можем също да използваме метода за получаване на индекса, за да изтрием по-късно този ред.

Почти всички колекции имат метод за търсене на стойност - намирам. Стойността, която искаме да намерим, се предава на метода. Някои колекции ви позволяват да зададете някои ограничения.

Например в Таблица със стойностиможете да посочите редовете и колоните, в които искате да търсите.

Ако стойността бъде намерена, тогава този метод връща индекса или посочения низ. Ако стойността не бъде намерена, се връща стойност тип Недефиниран. Във връзка с масив, връща Индекс, или стойност Недефиниран.

Пример за употреба: OurVariable = OurArray.Find(8);

Универсалните колекции могат да бъдат изчистени много бързо, т.е. премахнете абсолютно всички елементи. За тази цел се използва методът Изчисти(), който премахва елементи от масив, редове Таблици със стойности, или данни от други колекции.

Допълнителни методи за Array

Метод BBorder()връща броя на елементите минус едно. Тези. ако използваме цикъл За, тогава вместо метода Quantity можем веднага да използваме метода Граница().

По-специално, променливата QuantityInArray може да бъде дефинирана по различен начин:

QuantityInArray = OurArray.InBorder();
След това, когато се описва самият цикъл, не трябва да се изважда от тази променлива.

Методът Set ви позволява да присвоите стойност на елемент от масив по индекс.

Синтаксис: Инсталирай(,)

Пример: OurArray.Set(2,8);

Алтернативен вариант: Нашият масив = 8;

Можете да използвате метода за масив Вземете, за четене на стойност в индекс, без да се прибягва до използване на квадратни скоби.

Синтаксис: Вземи()

Пример: OurVariable = OurArray.Get(2);

Алтернативен вариант: OurVariable = OurArray;

Универсална колекция Структура

Една структура, подобно на масив, може да има неограничен брой елементи, но съдържанието на елемента е различно от това на масива.

Структурата е колекция, всяка стойност от която се състои от двойка. Първият елемент от двойката се нарича Ключ. Вторият елемент на двойката е Значение.

Ключе строго низов тип данни, който описва стойност. Например, Към ключа"Код" може да съответства на стойността 113; Към ключа„Име“ означава „Вася“. Самата стойност не подлежи на ограничение за тип данни.

Структурата е много удобна за използване, ако искаме да създадем определен списък от параметри. Ако това СтруктураНаречен Нашата структура, тогава ще се позоваваме на неговите две стойности, както следва: OurStructure.Code и OurStructure.Name.

Този вид достъп е много по-удобен, отколкото ако дефинираме всички параметри в масив и достъпваме до тях по индекс.

Структурата прави програмния код четим (разбираем). Структурата се използва доста често, много по-често от масива.

Използва се за описание на определени параметри, от които често има доста голям брой във всички алгоритми.

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

Тогава е много по-удобно да запишете всички параметри в структурата и да я предадете. Тези. параметрите на процедурите и функциите са “опаковани”.

Отделно трябва да се отбележи, че като КлючВ структурата не може да се появи абсолютно никакъв ред. Прилагат се определени ограничения.

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

Приемливо начало Ключс буква или долна черта. По този начин, Ключтрябва да отговаря на изискванията за създаване на идентификатори.

Нека отбележим как иначе структурата се различава от масива. В Структурата има метод Поставете, има два метода за вмъкване в масив: Поставете(до определена позиция) и Добавете(до края на списъка). В масива всички елементи са подредени.

Структурата е вид неподреден набор. Ето защо има само метод за вмъкване за структура.

Стойността се вмъква не на конкретна позиция, а в посочения набор. Структурата не може да бъде достъпна чрез индекс, подобно на други общи колекции.

Елементите на структурата са достъпни само чрез име на ключ. Цикълът For Every обаче работи и за структурата, но не трябва да разчитате на реда на елементите на структурата.

Структурата се създава по същия начин като другите генерични колекции, като се използва конструкторът New, като се указва типът данни Structure.

Подобно на масив, конструкторът на структура може да има параметри. Тези. възможно е да се опише самото съдържание на една структура с помощта на конструктор.

За разлика от масив, където можете просто да посочите броя на елементите за всички измерения, в структура можете да посочите самото съдържание.

Например: OurStructure = Нова структура (“Код, Име”, 133, “Вася”);

Разделени със запетаи, първо се изброяват имената на ключовете и след това, съответно, в същата последователност, стойностите на параметрите.

Има метод за добавяне на нова стойност към структурата Поставете, който вмъква нова двойка (ключ и стойност).

Например: OurStructure.Insert(“Членове на семейството”,3);

Структурата се характеризира с друг метод, който се използва доста често. Това е методът Имот.

Използвайки този метод, можете да разберете дали има елемент в тази структура, чийто ключ има такова и такова име.

Ако такъв елемент съществува, системата ще върне стойността True, в противен случай – False.

Например изразът OurStructure.Property („Членове на семейството“)ще бъде равна на стойността True. Този метод се използва доста често при анализ на структурата.

Както при всяка универсална колекция, е възможно да получите достъп до свойствата на структура чрез индекс. Но индексът за структурата е стойност на низ.

Например: Доклад(Нашата структура["Членове на семейството"]);

Не бива обаче да забравяме, че структурата е неподреден набор от обекти, поради което достъпът с индекс 0, 1, 2 е неприемлив.

Обща колекция Списък със стойности

ListValuesе линеен списък от елементи от произволен тип данни.

Всеки елемент се състои от няколко стойности. Схематично списък със стойности може да бъде представен като списък с четири колони.

Първа колона - Марк. Той има булев тип данни и позволява на потребителя да постави отметка или да я премахне.

Другата колона е картина, която по някакъв начин може визуално да представи този елемент, т.е. съпоставете този низ с картина.

Третата колона е самата съхранена стойност, т.е. това е всеки тип данни и може да е различно в различните редове.

Четвъртата колона е презентацията, т.е. това е вид описание на низ на дадена стойност. Изгледът ще се показва на потребителя, когато разглежда този елемент. В този случай, ако представянето не е посочено, системата ще се опита да получи представяния за елемента, съдържащ се в тази позиция.

ListValues– това е обектът, с който потребителят може да работи визуално. Тези. ListValuesмогат да бъдат показани във формуляра.

Потребителят може да извършва някои действия с него. Освен това, ListValuesмогат да бъдат изведени независимо с помощта на методи, т.е. показват на екрана в някой клон на алгоритъма (с изключение на сървърния код), така че потребителят да избере някакъв ред или да постави отметки в някои квадратчета.

Ще намерим ListValuesв Sitax Assistant. Конструктор ListValuesне е параметризиран (не можете да задавате стойности по подразбиране).

Има методи като:

  • Вмъкване(,) ;
  • Добавяне (,);
  • Количество();
  • Индекс().

Има и специални методи, напр. UnloadValues(). Това създава масив, в който се копира списъкът със стойности. Например:

Масив от елементи = списък на PriceTypes.OutloadValues();

Има и обратен метод:
ListPriceTypes.LoadValues(ArrayItems);

Има методи за търсене:
FindByValue(); FindByIdentifier().

Има метод за копиране:
ListCopy = PriceTypeList.Copy();
Този метод има за цел да направи някакъв вид модификация на копието.

Има методи:
Сортиране по стойност();
SortByView().

Методи Избери предмет(,)И MarkItems()извикване на модален диалогов прозорец, който спира изпълнението на алгоритъма, докато потребителят не затвори прозореца.

За да използвате тези методи в свойствата на конфигурацията Начин на използване на модалносттатрябва да се настрои на Използвайте.

Примерен код, извикан от модул за управлявано приложение:

Показване на този код в потребителски режим (модален диалог).

По-долу ListValuesизползвани като наличен тип данни за атрибути на формуляр. Създаваме нов атрибут за формата за обработка и определяме неговия тип ListValuesи го покажете във формуляра.

Създаване на нов екип Регистрация Подаръци, прехвърлете го във формуляра и дефинирайте манипулатор на действие за него.

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

Ако желаете, списъкът може да бъде редактиран: някои елементи могат да бъдат добавени, някои могат да бъдат премахнати.

Разнообразно събиране Съответствие

Тази колекция е много подобна на Структура. Точно като Structure, Matching представлява набори от стойности, които се състоят от ключ и самата стойност.

Основната разлика е, че всеки тип данни може да бъде посочен като ключ, както и като стойност. С оглед на тази функция е необходимо да получите достъп до стойността на съвпадението по индекс; стойността на ключа се посочва като стойност на индекса.

Ключът може да бъде тип данни, различен от низ. Свойствата и методите за работа с Compliance са почти същите като тези на Structure.

Конструкторът на съответствие, за разлика от структурата, не съдържа възможност за указване на параметри.

Пример за употреба:

Кореспонденцията е удобна за използване, когато трябва да свържете две структури. Например всеки ред в табличния раздел трябва да съответства на ред от таблицата със стойности.
В този случай редът на раздела на таблицата се използва като ключ за съвпадение и се посочва съответната стойност.

При вмъкване на елементи в колекция Съвпадение в допълнение към метода вмъкване(,)Друг начин за вмъкване на стойност е да използвате обикновения оператор за присвояване.

Например: OurMatch = NewMatch;
Съвпадение = 999;

Тези. ако даден елемент не присъства в колекцията, тогава той ще бъде добавен с помощта на оператора за присвояване, а ако е присъствал, ще бъде актуализиран.

Това е в контраст със структурата.

Универсална колекция Таблица на стойностите

Таблица със стойностие таблица с произволен брой редове и произволен брой колони. Пресечната точка може да съхранява стойности от всякакъв тип данни. Ако е необходимо, можете да въведете колони, т.е. можете да определите в коя колона какъв тип данни да се съхраняват.

Можете да оставите колоните без тип, тогава стойности от различни типове могат да се съхраняват в една колона в различни редове.

Разлики Таблици със стойностиот двуизмерен масив:

  • това е обект, с който потребителят може да работи (таблицата със стойности може да се покаже на екрана, потребителят може да я попълни и след това въведените данни могат да бъдат прочетени);
  • изграждане на индекси за бързо търсене;
  • клониране, запълване на цяла колона с определена стойност, разтоварване на всички колони в масив.

Таблица със стойностиизползвани като вид буфер за съхранение на информация. Таблица със стойностисе връща и приема като параметър от много системни методи. Възможно е да се изгради заявка спрямо таблицата със стойности.

Така, Таблица със стойностисе състои от набор от редове и набор от колони. Както редовете, така и колоните са колекции.

Тези. вътре в колекцията Таблица със стойностиима още две колекции. Нека се обърнем към асистента за синтаксис и да намерим Таблица със стойности.

Поддържани типове данни: себе си Таблица със стойности, който се състои от низове. Всеки ред е представен от тип данни RowTableValues, който има свои собствени свойства и свои собствени методи. На разположение Колекция от стойности на колони на таблицасъщо има определени свойства.

Важен момент! Процедурата, която създава Таблица със стойности, трябва да компилира &OnServer.

Преди да започнете работа с Таблица със стойности, трябва да определите какви колони ще съдържа (т.е. да ги създадете). Синтаксис:

Добавяне(,)
(по избор)
Тип: низ.
(по избор)
Тип: DescriptionTypes
(по избор)
Тип: низ.
(по избор)
Тип: Номер.

Например:

За да извикаме тази процедура, ще използваме командата.

В описанието Таблици със стойностиелементите на колекцията са именно РедовеТаблицаСтойности.

За разлика от колоните, които се състоят само от свойства (Име, Тип, Заглавие, Ширина), в RowTableValuesИма както свойства (достъп по име на колона), така и методи (можете да получите и зададете стойността, да работите със собственици).

За да добавите нов ред към таблицата, трябва да използвате метода Добавяне(), или вмъкване(). Във втория случай трябва да посочите на каква позиция да бъде поставена необходимата линия.

За да присвоим стойност на колона, използваме точка за достъп до името или индекса на колоната (използвайки квадратни скоби).

За пълнене Таблици със стойностиМогат да се използват следните методи:

Изчисти()– за премахване на всички редове от Таблици със стойности.

FillValues(,)– позволява ви да попълните всички колони или избрани колони с една стойност.
Зареди колона(,)– зарежда колона от масива.
UnloadColumn()– разтоварва колоната в масив.

Последните два метода са удобни за използване, когато трябва да прехвърлите колона от една таблица със стойности в друга.

Копие(,)– позволява ви да създадете нова въз основа на съществуваща таблица Таблица със стойности, и не всички редове и всички колони, а само някои от тях. Върната стойност – Таблица със стойности.

Можете да копирате структурата Таблици със стойности. За това има съответен метод Копиране на колони (). Ще вземем празен Таблица със стойностис необходимата структура.

IN Таблица със стойностиима метод Обща сума(). Можете да посочите колоната, в която искате да сумирате числените стойности. Във връзка с предишния показан код в Tableau, можете да изчислите стойността: TZ.Общо („Сума“).

IN Таблица със стойностивъзможно е да се групират (свият) числови стойности по еднакви стойности на определени колони, като се използва методът свиване(,).

Във връзка с предишния показан код в Tableau, можете да изчислите стойността: TK.Collapse(“Ден от седмицата”, “Сума”).

Таблица със стойностиможе да се покаже на потребителския екран, така че да можете да извършвате всякакви действия с него. Но за разлика от ListValuesНе можете просто да извикате таблица на екрана от програмен код.

За показване Таблица със стойностина екрана създайте атрибут на формуляр и му задайте тип данни Таблица със стойности.

След което получената таблица трябва да се покаже на формата.

В модула на формуляра в края на предварително компилирания алгоритъм (в процедурата за създаване на таблица със стойности) трябва да добавите:
ValueInFormData(TK, Таблица);

Универсална колекция Дърво на ценностите

универсална колекция, която много прилича на Таблица със стойности. Разликата от таблицата е, че редовете на дървото могат да бъдат подчинени един на друг, т.е. може да се образува някаква йерархия.

Това може да се отрази и на екрана. Дървото на стойностите изрично се състои от колекция от редове и колекция от колони. В дървото има две свойства: редове и колони.

Тъй като редовете могат да бъдат подчинени един на друг, всеки ред може да има родител, както и неговите подчинени редове.

Нека създадем съответната команда Tree и нейната процедура за обработка.

Да творим в който има един родителски ред и два подчинени реда.

Нека създадем атрибутите на формуляра DerZn(тип данни – Дърво на стойностите).

За този атрибут ще създадем колоните Година и Месец.

Преместете съответния елемент DerZnна формуляра.

Накрая Процедури TreeOnServer()нека добавим:

ValueInFormData(TreeZn, DerZn);

Нека да проверим какво се случи в потребителски режим.

С помощта на бутон Добаветеможете да добавяте нови редове. Те също могат да образуват йерархия.

За да обходим всички елементи на дървото на стойността, ще трябва да използваме рекурсия, т.е. извикване на процедурата от себе си. Например обработката на дърво на стойността може да изглежда така:

Това завършва първото ни запознаване с универсалните колекции.

В следващата статия ще разгледаме какъв важен механизъм може да използва разработчикът, за да опрости достъпа до елемент на директория от програмния код.

В тази част ще се запознаем с нов тип данни на езика 1C, който се нарича ListValues.

Списък със стойностие масив, но с големи възможности. И ако е така, тогава това също е колекция от данни и можете да поставите набор от числа в него:

// създаде списък със стойности

Списък.Добавяне(23);

Дотук всичко изглежда много като масив, нали? Но да продължим. За да покажем тези числа на потребителя, пишем:

// цикъл през всеки елемент от списъка За всеки елемент от списъка Loop Report(Element.Value);

// показва стойността на елемента EndCycle;

И тук е първата разлика. Елементите на редовния масив са самите числа. И достъп до текущата стойност на елемент списъкизползваме опцията Значение, използвайки конструкцията елемент. Смисъл.

Нека да разгледаме някои допълнителни функции Стойности.

Може да сортира

Например, можем лесно да сортираме списък със стойности. Списъкът може да направи това сам:

List.SortByValue(SortDirection.Age); В случай на обикновен масив, ще трябва да приложим един от алгоритмите за сортиране (например „балонче“).

Може да търси

Списъкът със стойности може сам да търси своите елементи. Да приемем, че искаме да разберем дали номер, въведен от потребителя, присъства в нашия списък:

Въведете номер (число); // въведено число от потребителя FoundElement = List. FindByValue(Number);

If FoundItem = Undefined Then OpenValue("Number " + Number + " not found in the list!"); В противен случай

OpenValue("Number " + Number + " присъства в списъка. Ето го:" + FoundElement.Value);

endIf; ListValues

Поддържа вмъкване и изтриване

Списък със стойности, подобно на масив, поддържа вмъкване и премахване на елементи:

списък. Вмъкване (0, 1000);

// вмъкнете хиляда в самото начало на списъка List.Delete(O); // и веднага го премахнете от списъка List. Insert(List.Quantity(), 13);

// вмъкване на 13 в края на списъка Report(List[List.Quantity() - 1]);

// показване на последния елемент от списъка (13)

Поддържа квадратни скоби

Както вече разбрахте, номерирането на елементите на списъка също започва от нула и можем да получим достъп до всеки елемент чрез неговия индекс, като използваме квадратни скоби:

Доклад(Списък.Стойност); // показване на втория елемент от списъка По този начин можем да преминем през всички елементи на списъка по следния начин:

За A = 0 By List.Quantity() - 1 Loop Report(List[A].Value);

EndCycle;

Може да създаде копие на себе си

Списъкът със стойности има просто страхотна функция - може да създаде копие на себе си:

ListCopy = List.Copy();

// направихме копие на списъка // сега можем безопасно да променим копието на списъка // докато оригиналният списък няма да промени копието на списъка. Стойност = 123456;

Може да се превърне в масив

И накрая, можете лесно да изхвърлите всички елементи от списъка в масив по всяко време:

ArrayNumbers = Списък. UnloadValues();

// изхвърлено в масив

За A = 0 Чрез ArrayNumber.Quantity() - 1 цикъл

Доклад(МасивЧисла[A]); // няма нужда да указвате // Стойност на опцията

EndCycle;

За да практикувате и консолидирате материала от тази единица, се препоръчва да изпълните следната задача.

Необходимо е да въведете 5 числа от потребителя, да намерите най-голямото и най-малкото от тях и да ги покажете на потребителя. Решението трябва да използва списък със стойности.

Решение

Списък = Нов списък със стойности;

// създаде списък със стойности за A = 1 до 5 Cycle Number = 0;

Въведете номер (число); // въведете число от потребителя List.Add(Number); // и го добавяме към списъка EndCycle; // и така 5 пъти

// сортиране на списъка с числа

списък. Сортиране по стойност(посока на сортиране.възраст);

// след сортиране, първият елемент от списъка е // най-малкият елемент, а последният е най-големият OpenValue("Най-малък елемент" + Списък +

", и най-големият " + List[List.Quantity() - 1]);



Ако забележите грешка, изберете част от текста и натиснете Ctrl+Enter
ДЯЛ: