1s hujjatning jadval qismiga qator qo'shing 8.3. Issiq tugmalar: umumiy harakatlar

Oldingi misol uchun siz quyidagi kod qatorlarini qo'shishingiz mumkin:

Form Elements.TableField1.AddRow(); sahifa = FormElements.TableField1.CurrentRow; p.Birinchi = 3; p.Second = "Un"; p.Miqdori = 350;

1s 8 qiymatlar jadvalidagi qatorlar sonini qanday aniqlash mumkin?

countRows = table.Quantity(); Hisobot("Jadval qiymatlari jadvalidagi qatorlar soni = " + qatorlar soni);

Natija:

Jadval qiymatlari jadvalidagi qatorlar soni = 3

1s 8 qiymatlari jadvalidagi qatorni qanday o'chirish mumkin?

rowTable = jadval; table.Delete(rowTable);

1s 8 da qiymatlar jadvalini qanday yopish mumkin?

Yig'ish:

table.Collapse("Ikkinchi", "Miqdor");

Konvolyutsiyadan keyin biz quyidagilarni olamiz:

1s 8 da qiymatlar jadvalini qanday saralash mumkin?

Ikkinchi va uchinchi ustunlar bo'yicha saralash:

table.Sort("Ikkinchi, Miqdor");

1c 8 da jadval maydonini chiziqqa qanday joylashtirish mumkin?

Ikkinchi qatorda:

Form Elements.TableField1.CurrentRow = jadval;

1s 8 da chop etish mumkin bo'lgan shakl

Birinchidan, biz maket qilamiz (hudud nomi: joylashuvning kerakli satrlarini tanlang, xususiyatlarda, Ism maydoniga hudud nomini kiriting), so'ngra uni elektron jadval hujjatida ko'rsating:

Protsedura CommandPanel1Print(Button) o'zgaruvchisi td, rs, rs1, maket, kod, nom, nom; kod = 0; layout = GetLayout ("Mahsulotlar"); sarlavha = layout.GetArea("Sarlavha"); header.Parameters.datta = CurrentDate(); kompyuter = layout.GetArea("kompyuter"); pc1 = layout.GetArea("pc1"); td = Yangi jadval hujjati; td.Output(qopqoq); nom = Kataloglar.Nomenklatura; tanlash = nom.SelectHierarchically(); while fetch.Next() sikl kodi = kod + 1; agar sample.ThisGroup = True keyin pc1.Parameters.code = code; pc1.Parameters.name = tanlash.Name; td.Output(rs1); Aks holda rs.Parameters.code = kod; rs.Parameters.name = tanlash.Name; td.Withdraw(rs); endIf; endCycle; etc.ViewOnly = rost; td.Show("Katalog ""Nomenklatura"""); EndProcedure

Dasturlash tilining asosiy imkoniyatlari odatda raqamlar va satrlar bilan ishlashni o'z ichiga oladi. Odatda bu xususiyatlar kompilyator kodiga qattiq kodlangan (yoki dasturlash tilining "asosiy" sinflari amalga oshiriladi).

1C da satrlar bilan ishlash qobiliyati platformaning o'zida dasturlashtirilgan. Bugun biz o'rnatilgan 1C tilidagi dasturlarda 1C satrlari bilan ishlash xususiyatlarini ko'rib chiqamiz.

Chiziq qiymati 1C

1. Eng oddiyidan boshlaylik. O'zgaruvchini yaratish va unga doimiy satr qiymatini belgilash 1C da shunday ko'rinadi:

O'zgaruvchi = "Salom, dunyo!";

Agar siz doimiy 1C satr qiymatida tirnoq belgisini ko'rsatishingiz kerak bo'lsa, uni ikki barobarga oshirishingiz kerak ""

O'zgaruvchi = "Salom, dunyo"!;

2. 1C chiziq uzilishi bir vaqtning o'zida ikkita usulda belgilanishi mumkin. Birinchisi | belgisidan foydalaniladi

O'zgaruvchi = "Salom,
| dunyo! ";

Ikkinchisi, Symbols tizimi ro'yxatidan foydalanish. Bu sizga 1C qatorlarini ham, TAB kabi chop etilmaydigan belgilarni ham qo'shish imkonini beradi.

O'zgaruvchi = "Salom" + Symbols.PS + "tinchlik!";

3. 1C-dagi konfiguratsiyalar nafaqat bir til (rus, ingliz yoki boshqa) uchun, balki bir vaqtning o'zida bir nechta tillar uchun ham ishlab chiqilishi mumkin. Bunday holda, hozirda foydalanilayotgan til 1C oynasining pastki qismida tanlanadi.

Tillar ro'yxati Umumiy/Tillar bo'limidagi konfiguratsiya oynasida joylashgan. Har bir tilda qisqa identifikator mavjud, masalan ru yoki uzb.

Bunday konfiguratsiyani dasturlashda 1C liniyalari ham ko'p tilli bo'lishi mumkinligi aniq. Buning uchun orqali ko'rsatib, shunday 1C chizig'ini yaratish mumkin; til identifikatori bo'yicha variantlar:

Variable = "ru=""Salom, dunyo! ""; en=""Salom, dunyo! """;

Agar siz odatdagidek shakllangan 1C chizig'idan foydalansangiz, unda yozilgan narsa bo'ladi. Tizim uni ikkita variantga bo'lish va kerakli variantni ishlatish uchun siz NStr() funktsiyasidan foydalanishingiz kerak:

//ikki tilli konfiguratsiyalar uchun to'g'ri
Hisobot (NStr(O'zgaruvchi));

1C tipidagi chiziqli rekvizitlar

Atribut 1C katalogi/hujjatidagi maydondir. U 1C tilidagi dasturdagi o'zgaruvchidan farq qiladi, chunki atribut uchun uning turi aniq ko'rsatilgan (raqam, 1C qatori va boshqalar). Agar siz rekvizit nima ekanligi haqida xotirangizni yangilashingiz kerak bo'lsa, darsni tomosha qiling.

Agar siz atribut turini belgilasangiz - 1C qatori, u holda siz qo'shimcha ravishda parametrlarni ko'rsatishingiz kerak.

1C chiziqlari cheksiz uzunlikda (uzunlik = 0 sifatida ko'rsatilgan) va cheklangan uzunlikda bo'lib, belgilarning aniq sonini ko'rsatadi. Cheksiz uzunlikdagi 1C qatorlari alohida SQL jadvalida saqlanadi, shuning uchun ulardan foydalanish cheklanganlarga qaraganda unumdor emas.

Shuning uchun cheksiz uzunlikdagi 1C satrlaridan foydalanish o'z cheklovlariga ega - ularni hamma joyda ishlatish mumkin emas. Masalan, hujjat raqami, mos yozuvlar kodi yoki o'lchov sifatida ruxsat etilmaydi.

1C strings bilan ishlash

Satrlar bilan ishlash uchun 1C platformasining bir nechta o'rnatilgan funktsiyalari mavjud.

  • AbbrLP ("Aql bovar qilmaydigan, lekin haqiqat!")
    1C chizig'idan qo'shimcha bo'shliqlarni olib tashlaydi. Har qanday turlarni 1C qatoriga aylantirish uchun ham foydalanish mumkin (masalan, raqamlar).
  • O'zgaruvchi = "Vasya" + AbbrLP(" plus") + "Olya"; //"Vasya plus Olya" bo'ladi
    Bir nechta 1C satr qiymatlarini yig'ish misoli. Natijada bitta chiziq 1C bo'ladi.
  • O'zgaruvchi = Lev("Musiqa", 2); //"Mu" bo'ladi
    O'zgaruvchi = O'rta("Musiqa", 2, 2); //"tahdid" bo'ladi
    O'zgaruvchi = Huquqlar ("Musiqa", 2); //"ka" bo'ladi
    1C qatoridan pastki qatorni olishning turli xil variantlari.
  • O'zgaruvchi = Top ("Musiqa", "zy"); // 3 ta bo'ladi
    1C satrida 1-belgidan boshlab pastki qatorni qidiring.
  • O'zgaruvchi = StrLength ("Musiqa"); //6 bo'ladi
    1C qatoridagi belgilar sonini qaytaradi.
  • Hisobot("Salom") //1C oynasining pastki qismidagi xabarlar oynasida
    Ogohlantirish ("Salom") // qalqib chiquvchi dialog oynasi
    Status("Salom") //pastki chap tarafdagi holatni ko'rsatish qatorida
    .

Ob'ektlarni 1C qatoriga olib kelish

Ma'lumki, hozirgi vaqtda tuzilgan ma'lumotlarni almashishning eng mashhur formati XML hisoblanadi. Hatto MS Office Word va Excelning so'nggi versiyalari fayllarni ushbu formatda saqlaydi (docx va xlsx mos ravishda kengaytmani zip-ga o'zgartiradi, arxivatorda ochadi).

Ma'lumotlar almashinuvi uchun 1C platformasi bir nechta variantlarni taqdim etadi, ulardan asosiysi ham XML.

1. Eng oddiy usul Abbreviation() yoki String() funksiyasidan foydalanishdir. Siz so'rov tanasida REPRESENTATION() funksiyasidan foydalanishingiz mumkin. Ularning harakatlarining natijasi bir xil - ular foydalanuvchi uchun har qanday 1C ob'ektining satrli tasvirini yaratadilar.

Sukut bo'yicha katalog uchun bu uning nomi bo'ladi. Hujjat uchun - hujjat nomi, raqami va sanasi.

2. Har qanday 1C ob'ekti (cheklovlar bilan) XML ga va aksincha o'zgartirilishi mumkin. O'tkazish jarayoni serializatsiya deb ataladi.

StringViewXml = XMLString(Qiymat); //1C qiymatidan XML oling
Value1C = XMLValue(Type("DirectoryLink.Nomenklatura"), TypeStringXml); //XML qatoridan 1C qiymatini oling, siz qabul qilinishi kerak bo'lgan 1C turini ko'rsatishingiz kerak

3. 1C platformasining har qanday 1C ob'ektini satrga aylantirishning o'ziga xos usuli mavjud. U 1C 7.7 versiyasidan ko'chirildi. Ushbu format boshqa dasturlar tomonidan tushunilmaydi, lekin boshqa 1C buni tushunadi, bu esa uni 1C ma'lumotlar bazalari o'rtasida almashish uchun ishlatishni osonlashtiradi.

Qator = ValueInRowInt(Value1C); //1C qiymatidan 1C qatorini oling
ValueVFile("C:\MyFile.txt", Value1C); //boshqa variant, biz 1C qiymatidan saqlangan satrli faylni olamiz
Value1C = ValueFromStringInt(String); //1C qatoridan orqaga
Value1C = ValueFile("C:\MyFile.txt"); // fayldan qaytish

Shaklda 1C satrlarini tahrirlash

1C tilidagi dasturda 1C satrlari bilan ishlashdan tashqari, albatta, foydalanuvchi ularni tahrir qila olishini istardim. Buning uchun bir nechta imkoniyatlar mavjud:

1. Eng oson yo'li - talab bo'yicha 1C liniyasini kiritishni so'rash. Ushbu usul 1C dasturlashni o'rgatishda qo'llaniladi, hayotda u kamroq qo'llaniladi (lekin u ishlatiladi!).

O'zgaruvchi = "";
Qator = EnterValue(O'zgaruvchi, "To'liq ismni kiriting");

2. 1C ob'ektining tafsilotlarini (katalog / hujjat) yoki shakl tafsilotlarini (qarang) ko'rsatish uchun kiritish maydoni ko'pincha ishlatiladi. Bu foydalanuvchi tahrirlash maydonlari bilan ishlash uchun 1C-da eng keng tarqalgan vositadir.

3. Kirish maydonining imkoniyatlari kengaytirilishi mumkin (kiritish maydonining xususiyatlariga qarang, ustiga o'ng tugmasini bosing, batafsilroq):

  • Ko'p qatorli tahrirlash rejimini belgilang
  • Kengaytirilgan tahrirlash katagi (agar oldingi katakcha belgilansa mavjud)
  • Belgilash qutisi Parol rejimi (qarang).

4. Agar kiritish maydonining barcha imkoniyatlari siz uchun etarli bo'lmasa, o'rnatilgan muharrir mavjud. Uni formaga qo'shish uchun Form/Insert Control menyusiga Matnli hujjat maydonini qo'shishingiz kerak. Uning xususiyatlarida siz uning ishlash rejimini - Kengaytma xususiyatini belgilashingiz mumkin.

Matnli hujjat maydonini ma'lumotlar bilan bevosita bog'lash mumkin emas. Shaklning OnOpen() hodisasi ishlovchisida funktsiyani yozish kerak (qarang):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //bu erda ValueString - bu atributdan olingan matn

Va saqlash ishlov beruvchisida - masalan, Saqlash tugmachasida - saqlashni qo'shing:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueBu yerdagi satr biz qiymatni saqlaydigan atributdir

5. 1C 8.2.11 versiyasida boshqariladigan shakllarda 1C liniyasini ifodalash uchun yangi variant paydo bo'ldi - Formatlangan hujjat maydoni.


Matn hujjatining maydoniga o'xshab, uni ochishda uni o'rnatishingiz va dastur yordamida o'zingiz saqlaganingizda yozib olishingiz kerak.

  • Biz shakl yaratayotgan 1C ob'ektida (katalog, hujjat, ishlov berish va boshqalar) - qiymatni saqlash turi bilan atribut qo'shing.
  • OnReadOnServer() funksiyasida biz atributdan matnni o'rnatamiz

    //bu erda Atribut 1C ob'ektining qo'shilgan atributidir
    //bu yerda FormattedDocument - tahrirlash uchun formadagi maydon nomi
    &Serverda

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • BeforeWritingOnServer() funksiyasida yoki tugma yordamida biz matnni maydondan yozamiz

    &Serverda
    ReadingOnServer(CurrentObject) paytidagi protsedura
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

1C da ko'plab ob'ektlar uchun jadval qismlari mavjud:

  • Kataloglar
  • Hujjatlar
  • Hisobotlar va qayta ishlash
  • Hisoblar jadvallari
  • Xarakterli turdagi rejalar
  • Hisoblash turi rejalari
  • Biznes jarayonlari va vazifalari

Jadvalli qismlar bir ob'ektga tegishli bo'lgan cheksiz miqdordagi tuzilgan ma'lumotlarni saqlashga imkon beradi.

Keling, jadval qismlari bilan ishlashning ba'zi usullarini ko'rib chiqaylik.

Jadvalli qismni qanday chetlab o'tish mumkin

Stol qismini aylanib o'tish uchun siz pastadirdan foydalanishingiz mumkin Har biriga

Tsiklning jadval qismidan har bir qator uchun

Hisobot(String. TabularPart atributi) ;

EndCycle;

O'zgaruvchiga har bir iteratsiyada Chiziq jadvalli qismning keyingi qatori uzatiladi. Qator tafsilotlarining qiymatlarini ifoda orqali olish mumkin Line.AttributeName.

Jadval qismining tanlangan qatorlarini qanday olish va chetlab o'tish

Ob'ektning jadval qismidagi ma'lumotlarni ko'rsatish uchun forma elementidan foydalaning Jadval maydoni. Jadval maydonida bir nechta qatorlarni tanlash imkoniyatini yoqish uchun siz qiymatni belgilashingiz kerak Bir nechta uning mulkida Tanlash rejimi.

Tanlangan qatorlar roʻyxatini olish uchun quyidagi koddan foydalaning:

Tanlangan satrlarni takrorlash uchun tsikl ishlatiladi. Har biriga:

SelectedRows = FormElements. TableFieldName. Tanlangan qatorlar;

Tanlangan qatorlardan har bir qator uchun

//loop tarkibi

EndCycle;

Jadval qismining (jadval maydoni) qatorlarini dasturli tanlash va ularni tanlashni qanday olib tashlash mumkin

Jadval maydoni qatorlarini dasturiy ravishda bekor qilish uchun:

Shakl elementlari. TableFieldName. Tanlangan qatorlar. Clear();

Jadval maydonining barcha qatorlarini dasturiy ravishda tanlash uchun:

Har bir CurrentRow from TabularPart Loop uchun
Shakl elementlari. TableFieldName. Tanlangan qatorlar. Qo'shish (CurrentRow);
EndCycle;

Jadval qismini qanday tozalash kerak

Jadval qismi. Clear();

Jadval bo'limining joriy qatorini qanday olish mumkin

Joriy qator - foydalanuvchi hozirda kursorga ega bo'lgan vaqt jadvalidir. Uni olish uchun jadval qismi bilan bog'langan shakldagi boshqaruv elementiga kirishingiz kerak.

Oddiy shakllar uchun kod quyidagicha ko'rinadi:

Shakl elementlari. TableFieldName. CurrentData;

Boshqariladigan shakllar uchun:

Elementlar. TableFieldName. CurrentData;

Jadval bo'limiga yangi qatorni qanday qo'shish kerak

Jadval bo'limining oxiriga yangi qator qo'shish:

NewRow = TablePart. Qo'shish();

Jadval bo'limining istalgan joyiga yangi qator qo'shish (keyingi satrlar siljiydi):

NewRow = TablePart. Qo'shish (indeks)
//Indeks - qo'shilgan qatorning raqami. Qator raqamlash noldan boshlanadi.

Yangi qator. Props1 = "Qiymat" ;

Jadval qatori tafsilotlarini dasturli tarzda qanday to'ldirish kerak

Agar siz foydalanuvchi tomonidan qo'shilgan jadval bo'limi qatorining tafsilotlarini dasturiy ravishda to'ldirishingiz kerak bo'lsa, jadval bo'limi hodisasi ishlovchisidan foydalanishingiz kerak. Tahrirlashni boshlaganda.

Ishlovchi tomonidan yaratilgan protsedura uchta parametrga ega:

  • Element- boshqaruv elementini o'z ichiga oladi Jadval maydoni.
  • Yangi qator- mantiqiy. Qiymatni o'z ichiga oladi To'g'ri, agar yangi jadval qatori qo'shilsa va Yolg'on, agar foydalanuvchi allaqachon mavjud qatorni tahrirlashni boshlagan bo'lsa.
  • Nusxalash- mantiqiy. Qiymatni o'z ichiga oladi To'g'ri, agar foydalanuvchi chiziqni ko'chirsa va Yolg'on boshqa hollarda.

Keling, bir misolni ko'rib chiqaylik. Aytaylik, jadval bo'limining tafsilotlarini to'ldirishimiz kerak Hisob qaydnomasi, agar yangi qator qo'shilgan bo'lsa. Mavjud qatorni tahrirlashda siz buxgalteriya hisobini o'zgartirishingiz shart emas.

TabularPartAtStartEditing protsedurasi (Element, Yangi qator, Nusxalash)

//Agar foydalanuvchi mavjud qatorni tahrir qilsa, biz hech narsa qilmaymiz
Agar NewRow BO'lmasa, unda
Qaytish;
EndIf;

//Agar qator yangi bo'lsa, buxgalteriya hisobini o'rnating
TechString = Element. CurrentData; //Jadval qismining joriy qatorini oling
TechString. Buxgalteriya = Hisob jadvallari. O'z-o'zini qo'llab-quvvatlash. RequiredAccount;
EndProcedure