Шинэ баримт бичгийн маягтыг программын дагуу хэрхэн бөглөж, нээх вэ? Одоо байгаа объектын хэлбэрийг хэрхэн нээх вэ? Шинэ баримт бичгийн хэлбэрийг программчлан нээх 1s 8.3

Удирддаг 1С программ дахь маягтуудыг програмын дагуу нээх нь ердийн програм дээр нээхээс эрс ялгаатай. Эхлээд хуучин аргыг авч үзье. Энэ нь маягтыг хүлээн авч, дараа нь ердийн эсвэл модаль горимд нээхээс бүрдэнэ (модал горимд нээх үед маягт нь програмыг блоклодог).

GetForm() . Нээлттэй()

Энэ бол маягтыг нээх хамгийн удаан арга юм. Гэсэн хэдий ч энэ нь маягтыг нээхээс өмнө програмын дагуу боловсруулах боломжийг олгодог. Кодыг боловсруулахын тулд та бага зэрэг өөрчлөх хэрэгтэй:

Маягт = GetForm( "Баримт бичиг. Бараа, үйлчилгээ хүлээн авсан баримт. Баримт бичгийн маягт") ;
//Энд бид маягттай үйлдлүүдийг гүйцэтгэдэг
Маягт. Нээлттэй();

Маягтыг хүлээн авах үед өөр үйл явдлын процедурыг гүйцэтгэх болно гэдгийг анхаарах хэрэгтэй WhenCreatedOnServer.

Удирддаг 1С програмын маягтыг илүү хурдан бөгөөд хялбараар нээх боломжийг олгодог бусад аргуудыг авч үзье. Тодорхой нөхцөл байдлаас хамааран өөр өөр аргыг хэрэглэж болно.

1. Удирддаг программ дээр линк байгаа бол объектын маягтыг хэрхэн нээх.

Энэ тохиолдолд бүх зүйл маш энгийн байдаг.

RefLink = Лавлах. Нэршил. FindByCode("000000001" );
OpenValue (RefLink);

2. Сонгон шалгаруулалтын маягтыг нээж, дараа нь сонгосон утгыг хэрхэн авах вэ.

Үүнд зориулсан функц байдаг EnterValue().Функц нь 3 параметртэй:

  • Сонгосон утгыг бичих хувьсагч;
  • Сонгох цонхонд харагдах зөвлөмж;
  • Сонгосон утгуудын төрлүүдийн тодорхойлолт. Хэд хэдэн төрөл байж болох бөгөөд энэ тохиолдолд тодорхой утгыг сонгохын өмнө төрлийг сонгохыг хүсэх болно.

Функцийг гүйцэтгэсний үр дүнд заасан төрлийн объектыг сонгох үндсэн маягт нээгдэнэ.

Хувьсах утга;
Массив = шинэ массив;
Массив. Нэмэх(Төрөл( "ЛавлахЛинк.Нэршил") ) ;
Массив. Нэмэх(Төрөл( "DirectoryLink. Эсрэг талууд") ) ;

TypeDescription= шинэ TypeDescription(Массив);

Res = EnterValue(Утга, "Зөвлөгөө", TypeDescription) ;

Өмнөх аргууд нь зөвхөн объектын өгөгдмөл маягтуудыг нээх боломжийг олгодог (объект хэлбэр эсвэл сонгох маягт). Хэрэв та захиалгат маягт нээх шаардлагатай бол функцийг ашиглаж болно OpenForm().

Энэ функц нь нэлээд хэдэн параметртэй. Тэдгээрийн заримыг нь харцгаая:

  • Маягтын нэр— энд та стандарт объектын аль нэг хэлбэрийг сонгож болно, жишээлбэл, Сонгон шалгаруулалтын маягтэсвэл Жагсаалтын маягт. Эсвэл хөгжүүлэгчдийн бүтээсэн тодорхой хэлбэр.
  • Сонголтууд- маягт дахь маягт руу шилжүүлэх боломжийг танд олгоно бүтэцнээхээс өмнө зарим параметрүүдийг тодорхойлж, улмаар гаралтын өгөгдлийг тодорхойлно. Параметрүүд нь үйлчлүүлэгчээс сервер рүү дамжуулж болох аливаа өгөгдөл байж болно. Маягтыг нээх үед дамжуулсан параметрүүдийг процедурт боловсруулж болно WhenCreatingOnServer()нээгдэж буй маягт дээр.
  • Маягт нээх горим— 3 сонголттой: бие даасан, интерфейсийг бүхэлд нь хаах, эзэмшигчийн маягтыг хаах.

Функцийг хэрхэн ашиглаж байгааг харцгаая OpenForm()янз бүрийн нөхцөл байдалд.

3. Байгаа объектын хэлбэрийг хэрхэн нээх

Маягт бүр нэг гол шинж чанартай байдаг. Энэ нь маягтын дэлгэрэнгүй жагсаалтад тодоор тодорсон бөгөөд ихэвчлэн дуудагддаг Объектлавлах ном, баримт бичгийн элементүүдийн хэлбэрээр. Бусад объектууд өөр нэртэй байж болно. Одоо байгаа объектын маягтыг нээхийн тулд нээсэн маягт руу параметр дамжуулах шаардлагатай Түлхүүрутгыг объектын лавлагааны хамт.

&OnClient
Процедурын команд1 (тушаал)
Параметр = шинэ бүтэц;
Параметр. Insert("Түлхүүр" , FindC() );
OpenForm(, Параметр);
Процедурын төгсгөл

&Сервер дээр
Функц FindC();
Лавлахуудыг буцаах. Эсрэг талууд. FindByRequisites ("TIN", "745107734623")
Төгсгөлийн функц

4. Шинэ объектын хэлбэрийг хэрхэн нээх

Энд энгийн функц ажиллах болно OpenForm()ямар ч параметргүйгээр.

&OnClient
Процедурын команд1 (тушаал)
OpenForm( "Лавлах. Эсрэг талууд. Объектийн маягт") ;
Процедурын төгсгөл

5. Шинэ объектын маягтыг хэрхэн нээж, ямар нэгэн зүйлд тулгуурлан бөглөх

Та параметрийг дамжуулах хэрэгтэй Суурь, утга нь дүүргэх үндсэн объектын лавлагаа байх болно. Энэ нь процедурыг эхлүүлэх болно ProcessFill().

&OnClient
Процедурын команд1 (тушаал)
Параметр = шинэ бүтэц;
Параметр. Insert("Base", LinkToBuyerAccount) ;
OpenForm( "Баримт бичиг. Бараа, үйлчилгээний борлуулалт. Объектийн маягт", Параметр);
Процедурын төгсгөл

Энэ жишээ нь баримт бичгийг үүсгэх болно Бараа, үйлчилгээний борлуулалтлинкийг дамжуулсан худалдан авагчид төлөх төлбөрийн нэхэмжлэлийн үндсэн дээр бөглөсөн.

6. Маягтыг хэрхэн нээх, түүн дээр сонголт хийх

1С маягтыг сонгох нь энгийн эсвэл төвөгтэй байж болно. Энгийн сонголт нь гэх мэт илэрхийллийг агуулдаг Байгууллага = Horns and Hooves ХХК.Нарийн төвөгтэй сонголт нь бусад төрлийн харьцуулалтыг агуулдаг, жишээлбэл. Жагсаалтад. Энэ нийтлэлд бид энгийн сонголтын зохион байгуулалтыг авч үзэх бөгөөд тусдаа өгүүллийг нарийн төвөгтэй сонголтод зориулах болно.

Энгийн сонголтыг зохион байгуулахын тулд та нээгдэж буй маягтын түлхүүр бүхий параметрийг дамжуулах хэрэгтэй Сонголт, утга нь түлхүүр нь динамик жагсаалтын талбарын нэр, утга нь хайж буй өгөгдөл байх бүтэц байх болно.

Жишээлбэл, лавлах жагсаалтын маягтыг нээцгээе GTD дугааруудтэнд эзэмшигчийн сонголт хийх - лавлах элемент Нэршил.

&OnClient
Процедурын команд1 (тушаал)
Параметр = шинэ бүтэц;

Сонголт= шинэ бүтэц;
Сонголт. Insert("Эзэмшигч", LinkToNomenclature);

Параметр. Insert("Сонголт", Сонголт);

OpenForm( "Лавлах. GTD дугаарууд. Жагсаалтын маягт", Параметр);
Процедурын төгсгөл

7. Мэдээллийн бүртгэлийн бүртгэлийн маягтыг хэрхэн нээх

Үүнийг хийхийн тулд танд мэдээллийн бүртгэлийн түлхүүр хэрэгтэй болно.

Бичлэгийн түлхүүр- эдгээр нь бүх хэмжилт ба хугацааны утгууд юм (хэрэв бүртгэл тогтмол бол). Өөрөөр хэлбэл бичлэгийн түлхүүр нь бичлэгийг өвөрмөц байдлаар тодорхойлох боломжтой параметрүүд юм.

Нээлтийн алгоритм нь дараах байдалтай байна.

  1. Бид бүтцэд шаардлагатай утгууд бүхий бүртгэлийн түлхүүр өгөгдлийг оруулна.
  2. Бид үүссэн бүтцийг массиваар байрлуулна.
  3. Бид массиваас бичлэгийн түлхүүр үүсгэдэг.
  4. Бид нээгдсэн маягт руу параметр дамжуулдаг Түлхүүр 3-р алхамаас бичлэгийн түлхүүрийг утга болгон ашиглана.

&OnClient
Процедурын команд1 (тушаал)
Параметр = шинэ бүтэц;

KeyParameters= шинэ бүтэц;
Гол параметрүүд. Insert("Нэршил", LinkToNomenclature) ;
Гол параметрүүд. Insert("PriceType", LinkToPriceType) ;
Гол параметрүүд. Insert("Цэг", Огноо);

KeyArray = Шинэ массив;
KeyArray. Нэмэх (түлхүүр параметрүүд);

EntryKey = Шинэ( "Мэдээллийн бүртгэлийн бүртгэлийн түлхүүр. Үнэ нэршил", KeyArray);

Параметр. Insert("Түлхүүр", Бичлэгийн түлхүүр);

OpenForm( "Мэдээллийн бүртгэл. Нэршлийн үнэ. Бүртгэлийн маягт", Параметр);
Процедурын төгсгөл

гэр Эхлэн хөгжүүлэгчдэд зориулсан Програмчилж сур

Одоо байгаа объектын хэлбэрийг хэрхэн нээх вэ?

Одоо байгаа объектын маягтыг нээхдээ маягтын нэрээс гадна хэлбэрийг нь нээх объектыг зааж өгөх ёстой. Үүнийг хийхийн тулд Түлхүүр маягтын параметр болон бидний сонирхож буй объектын холбоосыг ашиглана уу.

Жишээлбэл, байгууллагуудын жагсаалтаас курсор байрлах байгууллагын маягтыг нээх шаардлагатай бол та үүнийг дараах байдлаар хийж болно.

Бид маягтын параметрүүдийг бүтцийн хэлбэрээр дамжуулдаг бөгөөд бүтцийн элементийн нэр нь маягтын параметрийн нэртэй тохирч, утга нь маягтын параметрийг тохируулахыг хүссэн утга юм.

Хэрэв та үндсэн маягтын стандарт нэрийн (ObjectForm) оронд тохируулагч дээр үүсгэсэн объектын үндсэн биш, дурын хэлбэрийг нээхийг хүсвэл Form гэдэг үгийг дараа нь цэгээр тэмдэглэнэ үү. тохируулагч.

Жишээлбэл:

ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Шинэ бүтэц("Түлхүүр", ReferenceToDirectoryElement); OpenForm("Лавлах. Байгууллага. Маягт. UniversalObjectForm", FormParameters);

Объект руу холбохоос гадна нээгдэж буй маягт руу параметр дамжуулах шаардлагагүй бөгөөд энэ нь одоо байгаа объектын үндсэн хэлбэр болсон тохиолдолд та илүү энгийн аргыг ашиглаж болно гэдгийг тэмдэглэх нь зүйтэй. - процедурыг ашиглан маягтыг нээх OpenValue():

OpenValue(Items.List.CurrentRow);

Энэ арга нь уян хатан биш боловч зарим тохиолдолд цаг хугацаа, хүчин чармайлтыг хэмнэдэг. Жишээлбэл, авч үзсэн тохиолдолд ийм нэг мөр нь бидний өмнө бичсэн гурван мөрийн процедурыг бүхэлд нь орлуулж болно.

Гэхдээ энэ аргыг хэрэглэхдээ болгоомжтой байх хэрэгтэй. Зарим тохиолдолд энэ нь сервер рүү нэмэлт дуудлага үүсгэж болно, жишээлбэл, шаталсан лавлахын маягтыг нээх шаардлагатай үед. Энэ процедурыг ашиглах үед платформ нь элемент болон бүлэгт өөр өөр маягтууд нээгдэх ёстой тул элемент нь бүлэг мөн эсэхийг тодорхойлохын тулд сервер рүү нэмэлт дуудлага хийх болно.

Үүний зэрэгцээ, энэ мэдээллийг хөгжүүлэгч өөрийн алгоритмын дагуу урьдчилан мэдэж болох бөгөөд OpenForm() функцийг ашиглан хөгжүүлэгч сервер рүү нэмэлт дуудлага хийхгүйгээр хүссэн маягтыг нээж, үндсэн файлын стандарт нэрийг нэн даруй зааж өгөх боломжтой. хэлбэр.

Бүгдэд нь энэ өдрийн мэнд!
Энэ сэдвийн мэдээлэл нь энэ форумд зочилсон олон хүмүүст маш их хэрэгтэй байх болно гэж би бодож байна.
Удаан хугацааны турш би асуудлыг шийдэж чадаагүй - шинэ баримт бичгийн маягтыг хоосон биш, харин програмын дагуу аль хэдийн хэсэгчлэн бөглөсөн байхаар хэрхэн нээх вэ, баримт бичиг өөрөө мэдээллийн санд бүртгэгдээгүй байна уу? Би энэ асуудлыг шийдэх арга замыг интернетээс хайж олон цагийг зарцуулж, энэ асуудлыг хөндсөн олон форумд зочилсон боловч цөөхөн хэд нь шийдлийг олж мэдсэн. Тэдгээрийн хамгийн энгийн нь эхлээд программын дагуу шинэ баримт бичгийг үүсгэж, шаардлагатай мэдээллийг програмын дагуу бөглөж, баримтыг мэдээллийн санд бичиж, дараа нь хэрэглэгчдэд нээх явдал юм. Хэрэв хэрэглэгч үүнийг хадгалахыг хүсэхгүй байвал яах вэ? Хэрэв тэр бодлоо өөрчилж, нээлттэй хэлбэрийг хаавал яах вэ? Энэ тохиолдолд аль хэдийн бүртгэгдсэн баримт нь мэдээллийн санд үлдэх болно. Мөн мэдээллийн санд нэмэлт баримт бичиг хэнд хэрэгтэй вэ?
Хэрэв та баримт бичгийг хадгалахгүй бол GetForm аргыг ашиглах нь хамгийн түгээмэл сонголт юм ("Баримт бичиг. Шаардлагатай баримт бичгийн төрөл. Баримт бичгийн маягт"). Гэхдээ энэ тохиолдолд та хоосон баримт бичгийн маягт авч, Open() аргыг ашиглан зүгээр л харуулах боломжтой. Энэ бас сонголт биш...
Хэсэг хугацааны дараа асуудлыг "Хөрөнгийн утгыг бөглөх" глобал контекст функцийг ашиглан шийдсэн.

Дэлхийн нөхцөл байдал
FillPropertyValues
Синтакс:
PropertyValues ​​бөглөх(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
Тодорхойлолт:
Үл хөдлөх хөрөнгийн утгыг хуулна<Источника>өмч рүү<Приемника>. Тохируулгыг үл хөдлөх хөрөнгийн нэрээр гүйцэтгэдэг.

Би даалгавраа жишээ болгон ашигласнаар шинэ баримт бичгийн маягтыг бөглөхдөө энэ функцийг хэрхэн ашиглаж болохыг тайлбарлахыг хүсч байна. Даалгавар нь дараах байдалтай байв: Нэг баримт бичиг (Ажлын захиалга) байдаг бөгөөд түүний хүснэгтийн хэсэг нь өөр баримт бичиг (Үйлчилгээ үзүүлэх) юм. Тиймээс "Ажлын захиалга" -ын хүснэгтийн хэсэгт "Үйлчилгээ үзүүлэх" шинэ баримт бичгийг нэмэхэд "Үйлчилгээ үзүүлэх" шинэ баримт бичгийн хэлбэрийг дэлгэцэн дээр дэлгэрэнгүй мэдээлэлтэй харуулсан эсэхийг шалгах шаардлагатай байв. аль хэдийн бөглөсөн, үүсгэсэн ажлын дарааллаас авсан. Үүний зэрэгцээ, шинэ баримт бичиг нь дэлгэцэн дээр гарч ирэх үед мэдээллийн санд хараахан бүртгэгдээгүй байна. Хэрэв хэрэглэгч гэнэт баримт бичгийг бөглөхгүй гэж шийдэж, маягтыг хаасан бол үүнийг хийх ёстой байв.
Асуудлын шийдэл бүхий кодын хэсэг энд байна:

&Client Procedure дээр EnterRecord()RecordForm = GetForm("Баримт бичиг.Эрүүл мэндийн үйлчилгээ үзүүлэх.ObjectForm"); Fill inPropertyValues(RecordForm.Object,Object,"Огноо,Мэргэжилтэн,Мэргэшсэн байдал,Сувилагч,Гүйцэтгэлийн байдал",); // Хоёр баримт бичигт ижил нэртэй дэлгэрэнгүй мэдээллийг бөглөнө үү TextStr = Elements.Reception.CurrentData; //Эх баримт бичгийн одоогийн мөрийн өгөгдөлProperty Structure = Шинэ бүтэц; // Бүтэц нь шинэ баримт бичгийн маягт дээр бөглөх шаардлагатай, гэхдээ эх баримт бичигт байхгүй байгаа дэлгэрэнгүй утгуудыг агуулна StructureProperties.Insert("Ажлын захиалга", Object.Link); PropertyStructure.Insert("ReceptionTime",TexStr.ReceptionTime); PropertyValues ​​дотор бөглөнө үү(RecordForm.Object, PropertyStructure,"RecordOrder,AppointmentTime",); EntryForm.Open(); Процедурын төгсгөл

Өөрөөр хэлбэл, бид бие даан үүсгэсэн нэг процедурын хүрээнд сервертэй холбоо барихгүйгээр бүх үйлдлийг үйлчлүүлэгч дээр шууд гүйцэтгэдэг. Үнэн хэрэгтээ, ийм байдлаар та ямар ч баримт бичиг, лавлах номын маягтыг бөглөж, нээж болно. Эхлээд би маягтын объектуудыг ашиглан нэг маягтаас нөгөө рүү дэлгэрэнгүй мэдээллийг бөглөж, дараа нь дутуу дэлгэрэнгүй мэдээллийг оруулсан "Бүтэц" объектыг ашиглан нээгдэж буй маягтын дэлгэрэнгүй мэдээллийг бөглөж, дараа нь нээсэн. хэлбэр.
Энэ сэдэв нь ижил төстэй даалгавартай тулгарсан олон хүмүүсийн цагийг хэмнэсэн гэж найдаж байна!