Соңғы мақалалар
Үй / терезелерге шолу / 1c басқарылатын пішін мәнінің кестесін қосу бағаны. Нысан сипатын нысан әдісімен ешқашан шатастырмау маңызды.

1c басқарылатын пішін мәнінің кестесін қосу бағаны. Нысан сипатын нысан әдісімен ешқашан шатастырмау маңызды.

Міне, бастау үшін кішкене факт - қарапайым мысалдармәндер кестесімен жұмыс:

1. Мәндер кестесін құру

ValueTable = Жаңа мәндер кестесі;


2. Мәндер кестесінің бағандарын құрыңыз:

ValueTable.Columns.Add("Аты");
ValueTable.Columns.Add("Тегі");


3. Баған атауларын пайдаланып жаңа жолдарды қосыңыз:


NewString.Name = "Василий";
NewRow.LastName = "Асқабақ";


4. Мәндер кестесінде мәнді іздеу жолы:
Қажетті мәнді қамтитын кесте жолын табу керек.

FoundString = ValueTable.Find(LookupValue);


5. Мәндер кестесінің белгілі бағандарындағы бірінші ретті табу

FoundString = ValueTable.Find(LookupValue, "Жабдықтаушы, Сатып алушы");


6. Мәндер кестесіндегі барлық оқиғаларды табу қажет болса:
Біз іздеу құрылымын қолданамыз.

SearchStructure = Құрылым («Қызметкер», LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Іздеу құрылымын жасайық, оның әрбір элементі кілт ретінде бағанның атын және мән ретінде осы бағандағы ізделетін мәнді қамтитын болады. FindStrings() әдісіне параметр ретінде Іздеу құрылымын береміз. Нәтижесінде біз кестенің жолдарын аламыз.
Егер іздеу құрылымына қажетті мәнді іздеуді қосатын болсақ, мысалы, Жауапты бағанында, онда FindRows() әдісін қолдану нәтижесінде біз Қызметкер де, Жауапты да қажетті мәнге тең болатын барлық жолдарды аламыз. мән.

7. Кездейсоқ ретпен мәндер кестесін қалай айналдыруға болады

ValueTable циклінен әрбір CurrentRow үшін
Есеп(CurrentLine.Name);
EndCycle;

Индекстерді пайдаланып, дәл осылай жасаңыз:

SeniorIndex = ValueTable.Count() - 1;
SeniorIndex циклі бойынша MF = 0 үшін
Есеп(Мәндер кестесі[Санау].Аты);
EndCycle;


8. Бар мәндер кестесінің жолын жою

ValueTable.Delete(RemoveRow);

индексі бойынша

ValueTable.Delete(0);


9. Мәндер кестесінің бар бағанын жою

ValueTable.Columns.Delete(RemoveColumn);


индексі бойынша

ValueTable.Columns.Delete(0);

Мәндер кестесінің «ортасынан» жолды (немесе бағанды) жою жойылғаннан «кейін» болған жолдар индекстерінің біріне төмендеуіне әкелетінін ескеру қажет.

10. Баған атаулары айнымалылар құрамында болса, мәндер кестесі қалай толтырылады?

NewRow = ValueTable.Add();
NewRow[ColumnName] = Мән;


11. Мәндер кестесінің барлық бағанасын қажетті мәнмен қалай толтыруға болады?
Мәндер кестесінің мәндер кестесіндегі FiscalAccounting Flag бағаны False мәнімен толтырылуы керек.

ValueTable.FillValue(False, "фискалдық есеп жалауы");


Мәндер кестесі үшін FillValues() әдісін қолданамыз. Бірінші параметр толтырылатын мән болып табылады. Екінші параметр - толтырылған бағанның аты.

12. «КестеАлушы» мәндер кестесін «Сурстық кесте» мәндер кестесінің деректерімен қалай толтыруға болады?

Егер қабылдаушы кестесі операция кезінде әлі жоқ болса немесе оның алдыңғы бағандарын сақтау қажет болмаса, оны келесідей жасауға болады. толық көшірметүпнұсқа

TableReceiver = TableOriginal.Copy();


Екінші нұсқа: TableReceiver кестесі бар және оның бағандары мен баған деректер түрлеріндегі шектеулерін жоғалту өкінішті. Бірақ атаулары бастапқы кестенің атауларына сәйкес келетін бағандар үшін деректерді толтыру керек.

Сәйкес атаулары бар бағандар үшін деректерді ішінара тасымалдау:

SourceTable циклінен бастапқы кестенің әрбір жолы үшін
FillPropertyValues(NewString, SourceTableString);
EndCycle


Бастапқы кестенің әрбір жолы үшін тағайындалған кестеге жаңа жол қосылады және мәндер атаулары бастапқы кестедегі бағандардың атауларына сәйкес келетін жаңа кестенің бағандарында толтырылады.

Егер кестелерде аттас бағандар болмаса, тағайындалған кесте бастапқы кестеде қанша жол болса, сонша нөл мәндері бар жолдармен аяқталады.
Егер аттас кейбір бағандар үшін бастапқы кестедегі деректер мәнінің түрі тағайындалған кесте бағанының рұқсат етілген түрлерінің массивіне түспесе, біз мұндай өрістерде бос мәндерді аламыз.
Үшінші жағдайды қарастырайық. Бірдей атаудағы бағандар болған жағдайда тағайындалған кестенің бағанасы бастапқы кестенің бағанына толық сәйкес келуі керек.

Сәйкес атаулары бар бағандар үшін толық деректер көшірмелері

ұқсас бағандар = Жаңа массив();

SourceTable.Columns цикліндегі әрбір баған үшін
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Егер MatchedColumn<>Анықталмаған Содан кейін

// Баған сипаттарын алу.
Name = Column.Name;
ValueType = Column.ValueType;
Тақырып = Column.Title;
Width = Column.Width;

// Тағайындалған кестедегі бағандарды ауыстырыңыз.
Index = TableReceiver.Columns.Index(CoincidentColumn);

TableReceiver.Columns.Delete(Index);
TableReceiver.Columns.Insert(индекс, атау, мән түрі, тақырып, ені);

// Жиымға сәйкес келетін бағандардың келесі атын қосыңыз.
Same-nameColumns.Add(Column.Name);

EndIf;

EndCycle;

// Бастапқы кестенің жолдары бойынша цикл.
SourceTable циклінен бастапқы кестенің әрбір жолы үшін

// Тағайындалған кестеге жаңа жолды қосыңыз.
NewString = TableReceiver.Add();

// Сәйкес ұяшықтарға мәндерді толтырыңыз.
Әрбір атау үшін бір атаудағы бағандар бағандар циклі
NewString[ColumnName] = SourceTableString[ColumnName];

EndCycle;

EndCycle;


Біз тағайындалған кестедегі бағанды ​​жаңасымен ауыстыруымыз керек, оның қасиеттері бастапқы кестенің бағанына толығымен сәйкес келеді.
Сондықтан, егер қабылдаушы кестесінде аттас баған табылса, біз жаңа бағанның барлық қасиеттерін айнымалыларға жинаймыз. Содан кейін ескісін жойып, жаңа баған жасаңыз. Содан кейін біз бастапқы кестенің жолдарын айналдырамыз.
Циклде біз алушы кестесіне жаңа жол қосамыз және сәйкес бағандар массивіндегі бағандардың атаулары арқылы циклды ашамыз.
Осы кірістірілген цикл ішінде біз алушы кестенің ұяшықтарын бастапқы кесте ұяшығының деректерімен толтырамыз.

13. «Мәндер кестесі» мәндер кестесіне тип шектеулері бар бағандарды қалай қосуға болады?

Бағанды ​​қосқанда оның атын жай ғана көрсетуге болады және Add() әдісінің екінші параметріне қол тигізбеңіз. Бұл жағдайда бағанның деректер түрі ерікті болып табылады.

Деректер түрін көрсетпей бағанды ​​қосу

// Түр шектеулері жоқ бағанды ​​қосыңыз.
ValueTable.Columns.Add("Объект");


Екінші параметрдің мәнін толтыруға болады. Онда бағанға рұқсат етілген түрдің сипаттамасын беру қажет. Сипаттаманың өзін конструкторды пайдаланып, жол түрінің атауын параметр ретінде соңғысына (егер түрлер көп болса, онда үтірмен бөлінген) немесе жарамды типтердің массивіне беру арқылы алуға болады.

Деректер түрін көрсететін бағанды ​​қосу

// Баған деректерінің түрлеріне шектеулер:
// Тек «Контракторлар» каталогының элементтері.
ValueTable.Columns.Add("Тіркелгі", New TypeDescription("ReferenceReference.Accounts"));


Баған деректерін толтыруға рұқсат етілген түрлер арасында жол болса, оның разрядтық тереңдігін (ұзындығын) шектей аласыз, айнымалы немесе тіркелген ұзындықты пайдалануды көрсете аласыз. Мұның бәрі StringQualifiers конструкторын пайдаланып объект құру арқылы қамтамасыз етіледі. Әрі қарай бұл нысан TypeDescription конструкторының параметрлерінің бірі ретінде пайдаланылады.

Мәндер кестесі бағанының деректер түрін көрсету үшін жіктеуіштерді пайдалану

// Жол түрінің деректері үшін шектеулерді дайындаңыз және орнатыңыз.
Жолдық сараптауыштар = Жаңа жол квалификациялары(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Нөмір мен күнді анықтауыштар үшін де солай жасауға болады.
Назар аударыңыз: типтің сипаттамасын конструктор «нөлден» де құрастыра алады және негіз ретінде бар түр сипаттамасын пайдалана аласыз.

Мәндер кестесінің бағанының деректер түрін көрсету үшін бар түр туралы мәлімдемелерді пайдалану

// Бұрын қолданылған типтердің сипаттамасын кеңейту.
Санды сараптауыштар = Жаңа санды анықтауыштар(10, 2, ValidSign.Non-negative);
DateQualifiers = Жаңа DateQualifiers(DateParts.Date);
ExtendedValidTypes = NewTypeDescription(ValidTypes, "Number, Date",NumberQualifiers,DateQualifiers);

ValueTable.Columns.Add("Ескертпе", ExtendedAllowedTypes);

Ақша мен тауарды есепке алу үшін бизнесте әртүрлі кестелер кеңінен қолданылады. Әрбір дерлік құжат кесте болып табылады.

Бір кестеде қоймадан жөнелтілетін тауарлардың тізімі берілген. Басқа кестеде - осы тауарларды төлеу міндеттемесі.

Сондықтан 1С-де кестелермен жұмыс маңызды орын алады.

1С-дегі кестелер «үстел бөліктері» деп те аталады. Анықтамаларда, құжаттарда және басқаларында олар бар.

Сұрау орындалу нәтижесінде кестені қайтарады, оған екі түрлі жолмен кіруге болады.

Біріншісі - жылдамырақ - таңдау, одан жолдарды алу тек тәртіппен мүмкін. Екіншісі - сұрау нәтижесін мәндер кестесіне түсіру, содан кейін оған кездейсоқ қол жеткізу.

//1-нұсқа – сұрау нәтижелеріне ретті қол жеткізу

// кестені алу
Таңдау = Query.Execute().Select();
// сұрау нәтижесінің барлық жолдарын ретімен айналып өту
While Selection.Next() циклі
Есеп (таңдау.Аты);
EndCycle;

//2-нұсқа – мәндер кестесіне жүктеп салу
Сұраныс = Жаңа сұрау("Каталогтан атау ТАҢДАУ. Номенклатура");
// кестені алу
Кесте = Query.Execute().Upload().
// онда біз барлық жолдарды айналып өте аламыз
Кесте цикліндегі әрбір жол үшін
Report(String.Name);
EndCycle;
//немесе жолдарға еркін қол жеткізу
Жол = Table.Find("Күрек", "Аты");

Маңызды ерекшелігі - сұрау нәтижесінен алынған кестеде барлық бағандар қатты терілетін болады. Бұл Номенклатура іздеуінен Атау өрісін сұрау арқылы рұқсат етілген ұзындығы N таңбадан аспайтын Жол түріндегі бағанды ​​алатыныңызды білдіреді.

Пішіндегі кесте (қалың клиент)

Пайдаланушы кесте пішінге орналастырылған кезде онымен жұмыс істейді.

Пішінмен жұмыс істеудің негізгі принциптерін біз сабақта және сабақта талқыладық

Сонымен, кестені пішінге орналастырайық. Ол үшін кестені басқару тақтасынан сүйреп апаруға болады. Сол сияқты мәзірден Пішін/Кірістіру басқару элементін таңдауға болады.

Деректер конфигурацияда сақталуы мүмкін - содан кейін пішіні өңделетін конфигурация нысанының бар (бұрын қосылған) кестелік бөлігін таңдау керек.

Деректер сипатындағы «...» түймесін басыңыз. Кестелік бөліктердің тізімін көру үшін Объект тармағын кеңейту керек.

Кестелік бөлікті таңдағанда, 1С өзі пішіндегі кестеге бағандарды қосады. Мұндай кестеге пайдаланушы енгізген жолдар каталогпен/құжатпен бірге автоматты түрде сақталады.

Сол Деректер сипатында ерікті атауды енгізіп, Құнды кесте түрін таңдауға болады.

Бұл мәндердің ерікті кестесі таңдалғанын білдіреді. Ол бағандарды автоматты түрде қоспайды, ол автоматты түрде сақталмайды, бірақ онымен қалағаныңызды жасай аласыз.

Кестені тінтуірдің оң жақ түймешігімен басу арқылы баған қосуға болады. Бағанның қасиеттерінде оның атын (1С кодындағы анықтама үшін), пішіндегі баған тақырыбын, кестелік бөліктің атрибутымен байланысын (соңғысы - ерікті кесте болмаса, кестелік) көрсетуге болады. бөлігі таңдалады).

Пішіндегі кесте сипаттарында пайдаланушының жолдарды қосу/жою мүмкіндігін көрсетуге болады. Неғұрлым жетілдірілген пішін - ViewOnly құсбелгісі. Бұл сипаттар ақпаратты көрсетуге арналған кестелерді ұйымдастыру үшін пайдалы, бірақ өңдеу үшін емес.

Кестені басқару үшін пішінде пәрмендер тақтасын көрсету керек. Пішін/Кірістіру басқару/Пәрмендер тақтасы мәзір элементін таңдаңыз.

Құралдар тақтасындағы түймелер автоматты түрде пайда болуы үшін пәрмендер тақтасының сипаттарында Автотолтыру құсбелгісін қойыңыз.

Пішіндегі кесте (жұқа/басқарылатын клиент)

Басқарылатын пішінде бұл әрекеттер сәл басқаша көрінеді. Пішінге кестелік бөлімді орналастыру қажет болса, Нысан тармағын кеңейтіп, кестелік бөлімдердің бірін солға қарай сүйреңіз. Болды!

Мәндер кестесін орналастыру қажет болса, жаңа пішін төлсипатын қосып, оның қасиеттерінде типті – мәндер кестесін көрсетіңіз.

Бағандарды қосу үшін осы пішін төлсипатында тінтуірдің оң жақ түймешігі мәзірін, Төлсипат қосу бағаны тармағын пайдаланыңыз.

Содан кейін кестені солға қарай сүйреңіз.

Кестеде пәрмен жолағы болуы үшін кесте сипаттарында Қолдану - Пәрмен жолағы орны бөлімінде мәндерді таңдаңыз.

Кестені Excel бағдарламасына экспорттау

Пішінде орналасқан кез келген 1С кестесін басып шығаруға немесе Excel бағдарламасына жүктеуге болады.

Ол үшін кестедегі бос орынды тінтуірдің оң жақ түймешігімен басып, Тізімді көрсету опциясын таңдаңыз.

Басқарылатын (жұқа) клиентте ұқсас әрекеттерді Барлық әрекеттер/Тізімді көрсету мәзір элементі арқылы орындауға болады.

1С 8.3 платформасындағы мәндер кестесі (8.2) - әзірлеуші ​​өзінің алгоритмдерін іске асыру үшін бағдарламалық жасақтаманы әзірлеуде пайдалана алатын мәндердің әмбебап жинағы. Шын мәнінде, 1С мәндер кестесі - бұл бағандары мен бағандары бар мәндердің динамикалық жиынтығы.

1С басқа әмбебап құндылықтар жинақтары туралы мақалалар

1С тілінде бағдарламалауды менің «11 қадамдағы 1С бағдарламасындағы бағдарлама» кітабымнан үйреніңіз.

  1. Кітап түсінікті және қарапайым тілде жазылған - жаңадан бастағандар үшін.
  2. 1С архитектурасын түсінуге үйрету;
  3. Сіз кодты 1С тілінде жаза бастайсыз;
  4. Бағдарламалаудың негізгі әдістерін меңгеру;
  5. Алған білімдерін тапсырма дәптері арқылы бекіту;

Жаңадан бастаушыларға да, тәжірибелі бағдарламашыларға да басқарылатын 1С қосымшасын әзірлеуге арналған тамаша нұсқаулық.

  1. Өте қолжетімді және түсінікті тіл
  2. Кітап жіберіледі электрондық пошта PDF форматында. Кез келген құрылғыда ашуға болады!
  3. Басқарылатын 1С қолданбасының идеологиясын түсіну
  4. Басқарылатын қолданбаны әзірлеуді үйреніңіз;
  5. Жобалауды үйреніңіз басқарылатын формалар 1С;
  6. Сіз басқарылатын пішіндердің негізгі және қажетті элементтерімен жұмыс істей аласыз
  7. Басқарылатын қолданба бойынша бағдарламалау анық болады

15% жеңілдікке арналған промокод - 48PVXHeYu


Егер бұл сабақ сізге қандай да бір мәселені шешуге көмектессе, ұнаса немесе пайдалы болса, онда сіз менің жобамды кез келген соманы аудару арқылы қолдай аласыз:

қолмен төлеуге болады:

Yandex.Money — 410012882996301
Web Money - R955262494655

Менің топтарыма қосылыңыз.

2011 жылдың 21 қыркүйегінде жарияланған

1С мәндер кестесі - 3 бөлім. метадеректер. Мәндер кестесінің бағандары бойынша қайталау

Бұл мақалада мен сізге «белгісіз» құрылымның мәндер кестесімен қалай жұмыс істеу керектігін, мәндер кестесінің бағандары арқылы итерациялауды, баған атауларын пайдаланбай бағандар мен жолдардан деректерді қалай шығару керектігін айтамын. (Бұл мақала 1С нөлден бастап мақалалар сериясына сілтеме жасайды; 1c нөлден бағдарламалау; 1c мәндер кестесі)

Материалды түсіндіру және «тірі» бағдарлама кодының мысалдарын іске қосу үшін бізге кейбіреулер қажет 1С мәндерінің сынақ кестесі. Біздің мысалдарымыздың бір бөлігі мәндер кестесінен деректерді шығарады, сондықтан біз «Тегі», «Аты», «Әкесінің аты» үш бағанынан тұратын кесте жасаймыз және оған деректердің аз мөлшерін енгіземіз - 3 жолға дейін. :)

Сонымен, 1С мәндерінің сынақ кестесін жасап, оны толтырайық:

MyTR = Жаңа мәндер кестесі; // MyTR.Columns.Add («Тегі») «MyTR» айнымалысында сақталған мәндердің жаңа кестесін жасаңыз; // "Тегі" бағанасын құру MyTR.Columns.Add("Аты"); // «Аты» бағанын құру MyTM.Columns.Add («Әкесінің аты»); // «Орташа атау» бағанасын жасаңыз // мәндер кестесіне бірінші жолды қосыңыз NewRow = MyТЗ.Add(); NewLine.Surname = "Чапаев"; NewString.Name = "Василий"; NewString.Patronymic = "Иванович"; // екінші жолды қосу NewLine = MyТЗ.Add(); NewLine.Lastname = "Дзержинский"; NewString.Name = "Феликс"; NewLine.Patronymic = "Эдмундович"; // үшінші жолды қосу NewLine = MyTR.Add(); NewRow.LastName = "Котовский"; NewString.Name = "Грегори"; NewString.Patronymic = "Иванович";

Біздің сынақ кестеміз үш бағаннан тұрады: Аты, Тегі, Әкесінің аты; Азамат соғысы батырларының есімдері жазылған үш аяқталған жол бар.

Бірінші код үлгісі жинақ ретінде 1С мәндер кестесінің бағандары арқылы қайталанады.

// TK-ның барлық бағандарының атын көрсету. Менің TK-дан әрбір баған үшін TK. Columns Хабарландыру циклі("Баған атауы: " + Column.Name); EndCycle;

Біздің цикл 1С хабарлама жолағындағы барлық баған атауларын көрсетеді:

Бағанның аты: Тегі Бағанның аты: Аты Бағанның аты: Әкесінің аты

Жолдың қайталану цикліне ұқсас (соңғы мақалада) бағандар арқылы қайталау үшін арнайы жинақ циклі қолданылатынын көреміз. MyTM.Columns- бұл 1С мәндері кестесінің бағандарының жинағы «МояТЗ». Жинақта түрдегі нысандар бар «ColumnValueTable»Осы түрдегі әрбір нысан мәндер кестесінің бағаны болып табылады және сипаттар мен әдістерді қамтиды. Осы қасиеттер мен әдістерге сілтеме жасай отырып, біз бір баған туралы қажетті ақпаратты аламыз немесе онымен басқа әрекеттерді орындаймыз.

Мысалы, мүлікке қол жеткізу «Аты» (Баған.Аты) ағымдағы бағанның атын аламыз.

Мен сіздердің назарларыңызды циклдің тақырыбына аударғым келеді: «Әрқайсысы үшін Спикер MyTR.Columns циклінен» айнымалы деп аталды «Спикер»өзіміз ойлап тапқан. Бірдей атауды пайдалану міндетті емес. Сіз бұл айнымалыны қалағаныңызша атай аласыз, мысалы «Менің ағымдағы бағаным»Сонда жоғарыдағы мысал келесідей болады:

// MyTK.Columns From MyCurrent Column үшін TK барлық бағандарының атын басып шығарыңыз. EndCycle;

1С орындау ішкі жүйесі осындай циклмен кездескенде, циклдің әр өтуінде ол біздің коллекциядан бір элементті көрсетілген атаумен айнымалыға тағайындайды. бұл жағдай - коллекцияның бір элементімәндер кестесінің бағандары MyTM.ColumnsСодан кейін біз ағымдағы бағанды ​​қамтитын айнымалыға сілтеме жасаймыз және сипатты қолданамыз «Аты».

Мен баған атауының жанындағы бағандар жинағындағы әрбір бағанның нөмірін көрсетуді ұсынамын:

// MyTR.Columns LoopColumnNumber Әр баған үшін мәндер кестесінің барлық бағандарының санын және атауларын көрсету. = MyTR.Columns.Index(Column); // баған нөмірін алу ColumnName = Column.Name; // баған атын алу Report("Баған нөмірі:" + Баған нөмірі + " Баған аты: " + Баған атауы); EndCycle;

Мәтін 1С хабарлама жолағында көрсетіледі:

Баған нөмірі:0 Баған атауы: Тегі Баған нөмірі:1 Баған атауы: Аты-жөні Баған нөмірі:2 Бағанның аты: Әкесінің аты

1С мәндер кестесіндегі бағандар мәндер кестесінің жолдары сияқты нөлден бастап нөмірленетініне назар аударайық.

Мәндер кестесіндегі бағандар саны 1С

Мәндер кестесіндегі бағандардың санын білу үшін бағандар жиынында «Number()» әдісін қолданамыз.

Бағандар саны = MyTM.Columns.Number(); Есеп (бағандар саны);

Экранда «3» саны көрсетіледі. Шынында да, біздің кестеде үш баған бар: «Тегі», «Аты», «Әкесінің аты»

Баған нысанын оның нөмірі (индекс) бойынша алу және баған индексі арқылы бағандар бойынша қайталау

Баған индекстерін (сандарын) пайдаланып, мәндер кестесінің барлық бағандары арқылы цикл жасайық. Бағандарды нөмірлеу нөлден басталатынын есте сақтаңыз. Сондықтан біз «Ш» циклінің санауышын нөлден бір минус бағандар санына тең санға дейін көбейтуіміз керек.

SC үшін = 0 MyTM.Columns.Quantity() бойынша - 1 цикл CurrentColumn = MyTM.Columns[SC]; Notify(Current Column.Name); EndCycle;

Экранда біз келесіні аламыз

Тегі Аты Әкесінің аты

Менің ойымша, бұл мысал түсінікті болды. Біз әдіске жүгіндік Саны()баған жинақтары» MyTM.Columns.Quantity()", бағандар санын алды және есептегіші бар циклды бастады нөлбұрын бағандар саны бір минус. Цикл ішінде біз әрбір бағанды ​​бағандар жиынынан аламыз және ағымдағы баған нысанын айнымалыға тағайындаймыз Current ColumnКелесі, айнымалы Current Columnмүлікке қол жеткіземіз Атыжәне осы сипаттың мәнін экранда көрсетіңіз: Notify(Current Column.Name);

Нысан сипатын нысан әдісімен ешқашан шатастырмау маңызды.

Сипат статикалық мәннің бір түрі және оған қол жеткізу жақшасыз жазылады, мысалы Current Column.Name. Әдіс мәні бойынша объектінің процедурасы немесе функциясы болып табылады және процедуралар мен функцияларға шақыру әрқашан жақшамен жазылады (тіпті енгізу параметрлері болмаса да). Мысалға: MyTM.Columns.Quantity()

Егер біз жақшаларды жазуды ұмытып, әдіске жүгінсек, 1С аудармашысы бізге қате туралы хабар береді және орындау үшін кодты іске қоспайды. Аудармашы әдіске емес, сипатқа қол жеткізіп жатырмыз деп есептейтіндіктен, өйткені жақшалар жоқ. Және ол бұл атаумен сипаттарды таба алмайды (өйткені бұл атаумен ғана әдіс бар) - бұл қате туралы хабарда айтылады.

Әдіс шақыруында жақшаларды дұрыс қоюды ұмытып кетсем, аудармашы осылай жазады MyTM.Columns.Quantity(«Quantity()» дегеннен кейін жақшасыз):

Нысан өрісі табылмады (санау)

Бұл жағдайда «өріс» және «меншік» синонимдер немесе 1С әзірлеушілерінің терминологиясындағы дәлсіздік деп түсіну керек. Олар бір ұғымға сілтеме жасау үшін осы екі сөзді де пайдаланады. Басқа бағдарламалау тілдерінде бұл терминдер әртүрлі ұғымдарды білдіруі мүмкін.

Баған нөмірлері арқылы 1С мәндер кестесінен мәліметтер алу

Мен сізге бастау үшін кестенің бірінші жолынан деректерді алудың қарапайым мысалын ұсынамын. Біз мақаланың басынан бастап алдын ала толтырылған кестені қолданып жатқанымызды ескеріңіз. Кестеде бірінші жол және кем дегенде бір баған бар екенін нақты білеміз. Бұл мысалды бос кестеге қолдансақ, қате пайда болады. Сонымен:

Бірінші жол = MyTR; // бірінші жолды алу (нөлден бастап нөмірлеу) ColumnFirstValue = RowFirst; // бірінші бағанның мәнін алу (бағанды ​​нөмірлеу де нөлден басталады) Report(FirstColumnValue); // кестенің бірінші жолындағы бірінші бағанның мәнін көрсету

Экранда мыналар көрсетіледі:

Чапаев

Біз алдымен [...] операторы арқылы мәндер кестесіне қатынасу арқылы мәндер кестесі жолының нысанын алдық. (мұны қалай жасау керектігін ұмытып қалсаңыз, алдыңғы мақалаларды қарауға болады) Оператордың ішінде біз «0» аргументін өткіздік. Бұл мәндер кестесінің бірінші жолының индексі. Бірінші жол = MyTR;

Әрі қарай, [...] операторы арқылы жол нысанына сілтеме жасауға құқығымыз да бар. Бұл мәлімдеменің ішінде біз мәндер кестесінің баған нөмірін бердік, бұл жағдайда да «0». Осылайша біз «0» саны бар бағанның мәнін алдық ағымдағы сызық«0» нөмірленген кестелер. Біз бұл мәнді экранда көрсеттік және ол «Чапаев» жолын білдіреді.

Мысалымызды сәл қиындатып көрейік:

Бірінші жол = MyTR; // бірінші жолды алу (нөлден бастап нөмірленген) Report(FirstLine); // бірінші бағанның мәнін кестенің бірінші жолында көрсету Report(FirstRow); // екінші бағанның мәнін Report(FirstRow) кестесінің бірінші жолында көрсету; // кестенің бірінші жолындағы үшінші бағанның мәнін көрсету

Енді біз мәндер кестесінің бірінші жолының барлық үш бағанындағы мәндерді көрсеттік:

Чапаев Василий Иванович

Енді мен бұл мысалды айнымалысыз жасай алатындай етіп өзгертемін «Бірінші жол»

Notify(MyTM); // Report(MyTR) кестесінің бірінші жолында бірінші бағанның мәнін көрсету; // Report(MyTR) кестесінің бірінші жолында екінші бағанның мәнін көрсету; // кестенің бірінші жолындағы үшінші бағанның мәнін көрсету

Экран бірдей болады.

Чапаев Василий Иванович

Жоғарыдағы мысалда біз мәндер кестесінің белгілі бір жолында және нақты бағанында орналасқан мәнге қол жеткізу үшін мына пішінде екі оператордың кезекті шақыруын [...] пайдалануға болатынын көрдік: Мәндер кестесі[индексжолдары][индексбағандары]

Сонымен, біз циклды жасауға және жол және баған индекстерін пайдаланып барлық жолдар мен барлық бағандардың деректерін алуға дайынбыз:

RowCount үшін = 0 MyTM.Quantity() бойынша - 1 цикл // жолдар бойынша цикл ColumnCount үшін = 0 MyTM.Columns.Quantity() бойынша - 1 цикл // бағандар арқылы кірістірілген цикл // ұяшық мәнін алу (ағымдағы жолдан) және ағымдағы бағандар) CellValue = MyTR[RowCount][ColumnCount]; // жол нөмірін, баған нөмірін және ұяшық мәнін көрсету Report("Жол #" + RowCount + "баған #" + ColumnCount + " = " + CellValue); EndCycle; EndCycle;

Экранда келесілер көрсетіледі:

№0 жол № 0 баған = Чапаев № 0 баған № 1 = Василий жол № 0 баған № 2 = Иванович № 1 жол № 0 = Дзержинский жол № 1 баған № 1 = Феликс жол № 1 баған № 2 = Эдмундович жол # 2 баған No 0 = Котовский No 2 жол No 1 баған = Григорий жол No 2 баған No 2 баған = Иванович

Біреуі екіншісіне салынған екі циклдің көмегімен біз 1С мәндер кестесінің барлық жолдарынан барлық бағандардың мәндерін көрсеттік. Бұл жағдайда біз бағандардың атын пайдаланбай, индекстері бойынша бағандар мен жолдарға сілтеме жасадық. Жақсырақ түсіну үшін мысалдағы түсініктемелерге назар аударыңыз.

Қорытындылай келе, мен баған нөмірлерінің орнына олардың атауларын экранда көрсететіндей етіп, мысалды сәл өзгертуді ұсынамын. Сонымен қатар, мен экранда мазмұнды көрсету үшін неғұрлым көрнекі дизайн жасаймын.

RowCount үшін = 0 MyTR.Quantity() бойынша - 1 Цикл // жолдар бойынша цикл Есеп(" ======= Жол # " + RowCount + " ======="); Есеп беру (" "); // жол арнасы (бос жолды енгізу) ColumnCount = 0 үшін MyTR.Columns.Quantity() бойынша - 1 цикл // бағандар арқылы кірістірілген цикл // ұяшық мәнін алу (ағымдағы жолдан және ағымдағы бағаннан) CellValue = MyTR[RowCount ][ ColumnCount]; // бағанның атын алу ColumnName = MyTR.Columns[ColumnCount].Name; // баған атын және ұяшық мәнін көрсету Report(ColumnName + ": " + CellValue); EndCycle; Есеп беру (" "); // жаңа жол (бос жолды енгізу) EndCycle;

Енді біздің экранда ақпарат неғұрлым өкілді болып көріне бастады:

№ 0 жол ======= Тегі: Чапаев Аты: Василий Әкесінің аты: Иванович ======= № 1 жол ======= Тегі: Дзержинский Аты: Феликс Орта. аты-жөні: Эдмундович ===== == № 2 жол ======= Тегі: Котовский Аты: Григорий Әкесінің аты: Иванович

Иә, ұмытып кете жаздадым. Қатардағы екі [...][...] операторын пайдаланған кезде баған индексінің орнына осы бағанның атын беруге болады: Мәндер кестесі[жол индексі][баған атауы]

RowCount үшін = 0 MyTR.Quantity() бойынша - 1 Цикл // жолдар бойынша цикл Report(" ======= Row # " + RowCount + " ======="); Есеп беру (" "); // жол арнасы (бос жолды кірістіру) ColumnCount үшін = 0 MyTR.Columns.Quantity() бойынша - 1 цикл // бағандар арқылы кірістірілген цикл ColumnName = MyTR.Columns[ColumnCount].Name; // баған атауын алуCellValue = MyTR[RowCount][ColumnName]; //

Көрсеткімен белгіленген жолға назар аударыңыз ". Бұл жолда ағымдағы бағанның индексінің орнына ағымдағы бағанның атын аргументке береміз. шаршы жақшалар[...] Нәтиже бірдей болады.

Ал енді осы мақаланың соңғысы.

Жолдар мен бағандар жиынын қайталау үшін циклдарды пайдалана отырып, 1С мәндер кестесінің барлық деректерін ДҰРЫС алу

MyTR циклінен әрбір CurrentRow үшін // жолдар жинағы бойынша айналым Report(" ======= Line # " + MyTR.Index(CurrentRow) + " ======="); Есеп беру (" "); MyTR.Columns циклінен әрбір CurrentColumn үшін // бағандар жинағы арқылы кірістірілген цикл ColumnName = CurrentColumn.Name; // баған атауын алуCellValue = CurrentRow[ColumnName]; // ұяшық мәнін NAME бағаны бойынша алу Есеп(ColumnName + ": " + CellValue); // баған атын және ұяшық мәнін көрсету EndCycle; Есеп беру (" "); EndCycle;

Мысалда екі цикл қолданылды. Баған жинау циклі жол циклінің ішінде кірістірілген. Егер сіз жоғарыдағы мысалдарды қарастырып, алдыңғы мақалаларды оқысаңыз, онда бұл мысалдың қалай жұмыс істейтінін түсіну қиын болмайды.

Соңында, аралық айнымалыларды пайдалануды жою арқылы соңғы мысалдағы код жолдарының санын мүмкіндігінше қысқартамын. Біз нақты әлемдегі қолданбаларда қолданылатын «өнеркәсіптік кодтың» үлгісін аламыз.

Мұны сіз не істеп жатқаныңызды жақсы түсінген кезде ғана жасау керек. Егер код өте күрделі болса, өзіңіздің кодыңызды кейінірек түсінуді жеңілдету үшін аралық айнымалыларды қалдыруға болады. Сондай-ақ, кез келген кодқа кем дегенде минималды түсініктеме беру керек, осылайша біраз уақыттан кейін бағдарлама мәтіндерін түсіну оңайырақ болады.

MyTR циклінен әрбір CurrentRow үшін // жолдар бойынша цикл Report(" ======= Line # " + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); MyTr.Columns циклінен әрбір Current Column үшін // бағандар бойынша қайталау Есеп (CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); EndCycle; Есеп беру (" "); EndCycle;

Экрандағы шығыс өзгерген жоқ, ол алдыңғы мысалдағыдай болып қалады:

2 АПТА КУРС

«1С-те БАҒАЛАУҒА БАҒДАРЛАУЛАРҒА БАҒДАРЛАМАЛАР»

Курс сізге электрондық пошта арқылы жіберіледі. Қадамдық тапсырмаларды орындау арқылы бағдарламашы болыңыз.

Қатысу үшін компьютер мен интернет болса болғаны.

Курсқа тегін қол жеткізу:

sp-force-hide (дисплей: жоқ;).sp-form (дисплей: блок; фондық: #eff2f4; толтыру: 5px; ені: 270px; макс-ені: 100%; шекара радиусы: 0px; -moz-шекарасы -радиус: 0px; -webkit-border-radius: 0px; шрифт-отбасы: Arial, "Helvetica Neue", sans-serif; фон-қайталау: қайталанбау; фон-позиция: орталық; фон өлшемі: авто;) .sp-форма кірісі ( дисплей: кірістірілген блок; мөлдірлік: 1; көріну: көрінетін;).sp-формасы .sp-form-fields-wrapper ( маржа: 0 авто; ені: 260px;).sp-форма .sp -form-control (фон: #ffffff; жиек түсі: #cccccc; жиек стилі: тұтас; жиек ені: 1px; қаріп өлшемі: 15px; толтыру-сол: 8,75px; толтыру-оң: 8,75px; жиек -радиус: 4px; -moz-шектік-радиус: 4px; -webkit-шектік-радиус: 4px; биіктік: 35px; ені: 100%;).sp-форма .sp-өріс белгісі ( түсі: #444444; шрифт- өлшемі: 13px; қаріп стилі: қалыпты; шрифт-салмағы: қалың;).sp-form .sp-button ( жиек-радиусы: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; фон түсі: #f4394c; түсі: #ffffff; ені: 100%; шрифт-салмағы ht: 700; шрифт стилі: қалыпты font-family: Arial, "Helvetica Neue", sans-serif; қорап-көлеңке: жоқ -moz-box-shadow: жоқ; -webkit-box-shadow: жоқ; фон: сызықтық-градиент(жоғарыға, #e30d22 , #f77380);).sp-форма .sp-түйме-контейнер (мәтінді туралау: ортасына; ені: авто;)