1в четене от табличната част на документа. Как да получа данни от табличната част на документите? Как програмно да попълните детайлите на ред от таблица

17.03.2024

Табличните части съществуват за много обекти в 1C:

  • Справочници
  • Документи
  • Справки и обработка
  • Сметкопланове
  • Характерни типови планове
  • Планове от калкулационен тип
  • Бизнес процеси и задачи

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

Нека да разгледаме някои техники за работа с таблични части.

Как да заобиколите табличната част

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

За всеки ред от табличната част на цикъла

Доклад(Низ. Атрибут TabularPart) ;

Краен цикъл;

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

Как да получите и заобиколите избрани редове от табличната част

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

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

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

SelectedRows = FormElements. TableFieldName. SelectedRows;

За всеки ред от цикъла на избраните редове

//съдържание на цикъл

Краен цикъл;

Как програмно да изберете редове от таблична част (поле на таблица) и да премахнете избора им

За програмно премахване на избора на редове от поле на таблица:

Елементи на формата. TableFieldName. Избрани редове. Clear() ;

За да изберете програмно всички редове на поле на таблица:

За всеки CurrentRow From TabularPart Loop
Елементи на формата. TableFieldName. Избрани редове. Add(CurrentRow) ;
Краен цикъл;

Как да изчистите частта от масата

TabularPart. Clear() ;

Как да получите текущия ред на раздел на таблица

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

За обикновените форми кодът ще изглежда така:

Елементи на формата. TableFieldName. CurrentData;

За управлявани формуляри:

Елементи. TableFieldName. CurrentData;

Как да добавите нов ред към раздел на таблица

Добавяне на нов ред в края на частта от таблицата:

NewRow = TablePart. Добавяне();

Добавяне на нов ред навсякъде в раздела на таблицата (следващите редове ще бъдат изместени):

NewRow = TablePart. Вмъкване (индекс)
//Индекс - номер на добавения ред. Номерацията на редовете започва от нула.

Нов ред. Props1 = "Стойност" ;

Как програмно да попълните детайлите на ред от таблица

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

Процедурата, създадена от манипулатора, има три параметъра:

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

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

Процедура TabularPartAtStartEditing(Element, NewRow, Copy)

//Ако потребителят редактира съществуващ ред, ние не правим нищо
Ако НЕ NewRow Тогава
Връщане;
EndIf ;

//Ако редът е нов, задайте счетоводната сметка
TechString = Елемент. CurrentData; //Вземете текущия ред от табличната част
TechString. Счетоводство = Сметкопланове. Самоподдържащ се. RequiredAccount;
Край на процедурата

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Начало За ​​начинаещи разработчици Учим се да програмираме

Как да получа данни от табличната част на документите?

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

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

ИЗБЕРЕТЕ РАЗЛИЧНИ Продажби на стоки и услуги AS Номенклатура ОТ Продажби на стоки и услуги AS Стоки

Като източник посочваме табличната част на документите – табл Документ. Продажби на стоки и услуги. Декларираме изходното поле за поле Номенклатура, която е част от изходната таблица. Освен това, тъй като един и същ артикул на продукта, естествено, може да присъства повече от веднъж в документите, ние използваме РАЗЛИЧНИза да получите само отделните редове в изходната таблица на заявката.

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

За да ограничим избора на елементи само до елементи от табличната част на конкретен документ, използваме параметъра Връзкав условието в заявката ( КЪДЕ...):

ИЗБЕРЕТЕ РАЗЛИЧНИ Продажби на стоки и услуги Стоки. Номенклатура КАТО Продажби на стоки и услуги Стоки КЪДЕ Продажби на стоки и услуги Стоки