1c добавяне на колона към таблицата със стойности.

1c добавяне на колона към таблицата със стойности.
1c добавяне на колона към таблицата със стойности.

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

Статии за други универсални колекции от стойности в 1C

Научете програмиране в 1C в моята книга „Програмиране в 1C в 11 стъпки“

  1. Книгата е написана на ясен и прост език - за начинаещ.
  2. Научете се да разбирате 1C архитектурата;
  3. Ще започнете да пишете код на езика 1C;
  4. Овладейте основни техники за програмиране;
  5. Затвърдете знанията си с помощта на проблемна книга;

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

  1. Много достъпен и разбираем език на изложение
  2. Книгата се изпраща по имейл в PDF формат. Може да се отвори на всяко устройство!
  3. Разберете идеологията на управлявано 1C приложение
  4. Научете как да разработите управлявано приложение;
  5. Научете се да разработвате управлявани 1C формуляри;
  6. Ще можете да работите с основните и необходими елементи на управляваните форми
  7. Програмирането под управлявано приложение ще стане ясно

Промо код за 15% отстъпка - 48PVXHeYu


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

Можете да платите ръчно:

Yandex.Money - 410012882996301
Web Money - R955262494655

Присъединете се към моите групи.

Ето малко факти за начало - прости примери за работа с таблица със стойности:

1. Създайте таблица със стойности

ValueTable = Нова таблица със стойности;


2. Създайте колони за таблицата със стойности:

ValueTable.Columns.Add("Име");
Стойност Table.Columns.Add("Фамилно име");


3. Добавете нови редове, като използвате имена на колони:


NewLine.Name = "Василий";
NewLine.LastName = "Pupkin";


4. Как да потърсите стойност в таблицата със стойности:
Необходимо е да се намери ред от таблицата, съдържащ желаната стойност.

FoundRow = ValueTable.Find(SearchValue);


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

FoundRow = ValueTable.Find(SearchValue, "Доставчик, Купувач");


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

SearchStructure = Structure("Employee", SearchValue);
Масив от FoundRows = ValueTable.FindRows(SearchStructure);


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

7. Как да итерирате таблица със стойности в произволен ред

За всеки текущ ред от цикъла на таблицата със стойности
Доклад(CurrentRow.Name);
EndCycle;

Същото нещо, използвайки индекси:

SeniorIndex = ValueTable.Quantity() - 1;
За сметка = 0 към SeniorIndex цикъл
Отчет(ТаблицаСтойности[Акаунт].Име);
EndCycle;


8. Изтриване на съществуващ ред от таблица със стойности

ValueTable.Delete(Ред за изтриване);

по индекс

Стойност.Изтриване(0);


9. Изтриване на съществуваща колона от таблицата със стойности

ValueTable.Columns.Delete(ColumnDeleted);


по индекс

Таблица със стойности.Колони.Изтриване(0);

Необходимо е да се има предвид, че изтриването на ред (или колона) „от средата“ на таблицата със стойности ще доведе до намаляване с единица на индексите на редовете, разположени „след“ изтритите

10. Как да попълните таблица със стойности, ако имената на колоните се съдържат в променливи?

NewRow = ValueTable.Add();
НовРед[Име на Колона] = Стойност;


11. Как да попълним цялата колона на таблицата със стойности с желаната стойност?
Колоната "Флаг за фискално счетоводство" в таблицата със стойности на таблицата със стойности трябва да бъде попълнена със стойността False

Таблица със стойности. Попълнете стойности (False, „Флаг за фискално счетоводство“);


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

12. Как мога да попълня таблицата със стойности “Receiver Table” с данни от таблицата със стойности “SourceTable”?

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

Таблица получател = Таблица източник.Копиране();


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

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

За всеки ред на SourceTable от цикъла SourceTable
FillPropertyValues(NewRow, SourceTableRow);
Край на цикъла


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

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

Пълно копиране на данни за колони със съвпадащи имена

Същите колони = Нов масив();

За всяка колона от SourceTable.Columns цикъл
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Ако MatchingColumn<>Недефиниран Тогава

// Получаване на свойства на колона.
Име = Име на колона;
ValueType = Колона.ValueType;
Header = Column.Header;
Ширина = Колона.Ширина;

// Замяна на колони в целевата таблица.
Индекс = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Индекс);
ReceiverTable.Columns.Insert(Индекс, Име, ValueType, Header, Width);

// Добавете следващото име на съответстващи колони към масива.
Същите Columns.Add(Column.Name);

endIf;

EndCycle;

// Цикъл през редовете на изходната таблица.
За всеки ред на SourceTable от цикъла SourceTable

// Добавяне на нов ред към целевата таблица.
NewRow = TableReceiver.Add();

// Попълнете стойностите в съответстващите клетки.
За всяко име Колони от колони със същото име Цикъл
Нов ред[Име на колона] = Ред на изходна таблица[Име на колона];

EndCycle;

EndCycle;


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

13. Как да добавя колони към таблицата със стойности „ValueTable“ с ограничения за типа?

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

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

// Добавяне на колона без ограничения за типа.
ValueTable.Columns.Add("Обект");


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

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

// Ограничения за типове данни на колони:
// Само елементи от директория "Контрагенти".
Таблица със стойности.Колони.Добавяне("Акаунт", Ново описание на типовете("Връзка към директория.Акаунти"));


Ако сред разрешените типове за попълване на данни в колона е низ, можете да ограничите неговата битова дълбочина (дължина), да посочите използването на променлива или фиксирана дължина. Всичко това се постига чрез създаване на обект с помощта на конструктора String Qualifiers. След това този обект ще се използва като един от параметрите на конструктора TypeDescription.

Използване на квалификатори за указване на типа данни на колона на таблица със стойности

// Подгответе и задайте ограничения за данни от тип String.
Квалификатори на низ = Нови квалификатори на низ (20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("Низ", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Подобни действия могат да бъдат извършени по отношение на квалификатори за число и дата.
Моля, обърнете внимание: описанията на типове могат да бъдат изградени от конструктора или „от нулата“, или съществуващо описание на тип може да се използва като основа.

Използване на съществуващи декларации за тип за указване на типа данни на колона на таблица със стойности

// Разширение на използваното преди това описание на типа.
QualifiersNumbers = Нови квалификационни числа(10, 2, ValidSign.Non-negative);
DateQualifiers = Нови DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Забележка", ExtendedAcceptableTypes);

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

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

Следователно в 1C работата с таблици заема видно място.

Таблиците в 1C се наричат ​​още „таблични части“. Справочници, документи и други ги има.

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

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

//Вариант 1 – последователен достъп до резултатите от заявката

//вземете таблицата
Изберете = Query.Run().Select();
// преминаваме през всички редове на резултата от заявката по ред
Докато Select.Next() цикъл
Доклад(Име на селекция);
EndCycle;

//Вариант 2 – качване в таблица със стойности
Заявка = Нова заявка ("ИЗБЕРЕТЕ име ОТ Директория. Номенклатура");
//вземете таблицата
Таблица = Query.Run().Unload().
//по-нататък можем също да итерираме през всички редове
За всеки ред от цикъла на таблицата
Доклад(Име на низ);
EndCycle;
//или произволен достъп до низове
Ред = Table.Find("Лопата", "Име");

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

Таблица във формуляра (дебел клиент)

Потребителят работи с таблицата, когато е поставена във формата.

Обсъдихме основните принципи на работа с формуляри в урока по и в урока по

И така, нека поставим таблицата върху формуляра. За да направите това, можете да плъзнете таблицата от контролния панел. По същия начин можете да изберете контрола Form/Insert от менюто.

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

Щракнете върху бутона "..." в свойството Данни. За да видите списъка с таблични части, трябва да разгънете клона Обект.

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

В същото свойство на данни можете да въведете произволно име и да изберете типа таблица със стойности.

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

Като щракнете с десния бутон върху таблицата, можете да добавите колона. В свойствата на колона можете да посочите нейното име (за справка в 1C кода), заглавието на колоната във формуляра, връзката с атрибута на табличната част (последното - ако не е избрана произволна таблица, а таблична част).

В свойствата на таблицата във формуляра можете да посочите дали потребителят може да добавя/изтрива редове. По-разширена форма е квадратчето за отметка „Само преглед“. Тези свойства са удобни за използване за организиране на таблици, предназначени за показване на информация, но не и за редактиране.

За да управлявате таблицата, трябва да покажете команден панел във формата. Изберете елемента от менюто Form/Insert Control/Command Bar.

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

Таблица във формуляр (тънък/управляван клиент)

В управлявана форма тези действия изглеждат малко по-различно. Ако трябва да поставите таблична част във формуляра, разгънете клона Обект и плъзнете една от табличните части наляво. Това е всичко!

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

За да добавите колони, използвайте менюто с десен бутон върху този атрибут на формуляр, изберете Добавяне на колона на атрибут.

След това също плъзнете таблицата наляво.

За да има таблица с командна лента, в свойствата на таблицата изберете стойностите в секцията Използване – Позиция на командната лента.

Качване на таблица в Excel

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

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

В управляван (тънък) клиент подобни действия могат да бъдат извършени с помощта на елемента от менюто Всички действия/Списък за показване.