Нээлттэй
Хаах

Гадаад мэдээллийн эх сурвалж 1s 8.2. Гадаад мэдээллийн эх сурвалж. Жишээ холболтын мөр

1С бус өгөгдөлтэй ажиллахын тулд, жишээлбэл: SQL мэдээллийн сан, Access мэдээллийн сан, Excel файл болон бусад олон төрлийн 8.2.14 хувилбараас эхлэн технологийн платформд Гадаад мэдээллийн эх үүсвэр гэж нэрлэгддэг механизм (объект) нэвтрүүлсэн.

Энэ нийтлэлд энэ объект бидний дассан Excel файлтай хэрхэн харьцаж байгааг харцгаая. Жишээлбэл, *.xls файлаас өгөгдлийг 1С мэдээллийн сан руу зарим интервалтайгаар унших шаардлагатай байдаг. Хэрэв бид өмнө нь Com объектуудыг ашиглан эхлүүлэх, дараа нь утгын хүснэгт үүсгэж, өгөгдлийг мөр мөрөөр унших шаардлагатай байсан бол одоо эдгээр заль мэх алга болно. Гадаад өгөгдлийн эх сурвалжийг ашиглах үед бид мэдээллийг шууд асууж, авах боломжтой.

Бидэнд дараах агуулга бүхий Excel ажлын ном байна гэж бодъё. Үүнээс бид өгөгдлийг унших хэрэгтэй.

Юуны өмнө, тохируулагч горимд шинэ өгөгдлийн эх үүсвэр нэмж, үүнийг Excel гэж нэрлэнэ.

Одоо бид өгөгдөл, 1С-д байх талбар бүхий хүснэгтийг нэмэх хэрэгтэй. Файлд багануудыг нэрлэсэнтэй ижил аргаар тэдгээрийг үүсгэцгээе. Үүнийг хийхийн тулд үүсгэсэн объект руу очоод Data таб дээрээс Нэмэх дээр дарна уу. Энд би үүнийг гараар үүсгэхийг зөвлөж байна, учир нь 1c-ina өөрөө автоматаар тохируулахыг оролдоход асуудал байнга гардаг.

Хүснэгтээ DataTable гэж нэрлэе. Үүний дараа Data tab руу очиж талбаруудыг үүсгэ (файлтай төстэй).

Талбар бүрийн шинж чанарт та өгөгдлийн эх сурвалжийн нэр, төрөл, нэрийг (файлтай ижил) зааж өгөх ёстой.
Өгөгдлийн эх сурвалжид нэр өгөх. Энд бид хуудасны нэрийг * дээр зааж өгсөн болно. xls-ийн төгсгөлд "$" нэмсэн. Бидэнд 1$ жагсаалт байна.
Түлхүүр талбаруудыг зааж өгөхөө мартуузай. Энд мэдээллийн баазын онолоос харахад мөр нь бүрэн өвөрмөц байх талбарыг зааж өгөх шаардлагатай.
Үзүүлэнгийн талбар - бид мөрийн товч дүрслэлийг өгөх талбарыг зааж өгдөг, манай тохиолдолд Нэршил.

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

XLSX файлуудын холболтын мөр (Office 2007 ба түүнээс хойшхи хувилбарууд)

Driver=(Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;

XLS болон өмнөх файлуудын холболтын мөр.

Драйвер=(Microsoft Excel драйвер (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;

Холбогдох, холболтыг мэдээлэх шинэ гадаад боловсруулалтыг бий болгоё.

Процедурын товчлуурыг гүйцэтгэх товчийг дарах(товчлуур)ConnectionParameters = NewConnectionParametersExternalDataSource; Холболтын параметрүүд. ConnectionString= “Драйвер= ( Microsoft Excel драйвер (*. xls) ); DriverID= 790; DBQ= D:\жимс. xls; "; Гадаад мэдээллийн эх сурвалж. Excel. SetGeneralConnectionParameters(ConnectionParameters) ; Гадаад мэдээллийн эх сурвалж. Excel. Холболт үүсгэх() ; Хүсэлт = Шинэ хүсэлт() ; Хүсэлт. Текст = "СОНГОХ | Өгөгдлийн хүснэгт. Код, | Өгөгдлийн хүснэгт. Нэршил, | Өгөгдлийн хүснэгт. Нэгж, | Өгөгдлийн хүснэгт. Тоо хэмжээ | FROM | Гадаад өгөгдлийн эх сурвалж. Excel. Хүснэгт. DataTable AS DataTable"; TK = Хүсэлт. Гүйцэтгэх ( ) . буулгах(); Тайлан("Холбогдсон"); Процедурын төгсгөл

Хэрэв бид таслах цэгийг тогтоож, техникийн үзүүлэлтэд юу байгааг харвал бид дараахь зүйлийг харах болно.

P.S. Талбаруудын нэрсийн өмнө Excel файлд хоосон мөр байх ёсгүй, эс тэгвээс odbc алдаа гарна. sqlstate 07002 (odbc excel драйвер хэтэрхий цөөн параметртэй).

Гадаад мэдээллийн эх сурвалжууд 1C - харьцангуй шинэ мета өгөгдлийн объект 1С 8.3 ба 8.2, 1С гадаад мэдээллийн эх сурвалжтай холбогдох боломжтой: SQL хүснэгтүүд, Excel, Access, FoxPro (dbf), өөр 1С мэдээллийн сан, Oracle, Paradox (db) , - мөн энгийн txt/csv файлуудаас унших боломжтой.

Энэ нь бусад системүүдтэй хамтран ажиллах олон боломжийг олгодог. Илүү дэлгэрэнгүй харцгаая.

1С 8 дээр гадаад мэдээллийн эх үүсвэрийг тохируулах

Гадаад эх үүсвэрийг тохируулах нь системийн төрөл бүрийн хувьд хувь хүн юм. Гэхдээ дүрмээр бол тохиргооны ерөнхий хэсэг нь ижил байдаг - энэ нь холболтын мөрийг тохируулах явдал юм.

1С дээр 267 видео хичээлийг үнэгүй аваарай:

Хэрэв холболтын мөрийг зөв зааж өгсөн бол систем нь мэдээллийн сангаас хүссэн хүснэгтээ сонгохыг танд сануулна. Үүний үр дүнд бид түлхүүр талбар (өвөрмөц талбар) болон танилцуулгын талбарыг (бичлэгийг 1С-д хэрхэн тусгах) зааж өгөх боломжтой бэлэн хүснэгтийг авах болно.

1С 8.3-д гадаад мэдээллийн эх сурвалжийг ашиглах

1С дахь өгөгдлийн гадаад эх сурвалжийг бусад мэдээллийн сангийн хүснэгтүүдийн нэгэн адил ашиглаж болно. Платформ нь зааж өгөөгүй бол автоматаар тэдэнд зориулж маягт үүсгэдэг. Мөн асуулгад гадны эх сурвалжаас авсан өгөгдлийг ашиглах боломжтой.

1С програмын 8-р хувилбарт хөгжүүлэгчид COM холболт болон OLE объектыг ашиглахгүйгээр гуравдагч талын мэдээллийн санг холбож, тэдгээрээс мэдээллийг тохируулагчаас шууд авах боломжийг нэмж оруулсан. Энэ функцийг "Гадаад мэдээллийн эх сурвалж" гэсэн шинэ объект ашиглан хэрэгжүүлсэн.

1С дахь гадаад өгөгдлийн эх сурвалжийг системийн бусад хүснэгтүүдийн нэгэн адил ашиглаж болно.

  1. Мэдээллийн бүтцийн систем (DCS) ашиглан тайлан, тооцоолол хийх үед;
  2. Гуравдагч этгээдийн эх сурвалжид хадгалагдсан мэдээллийн холбоосыг авах;
  3. Хүснэгтэд хадгалагдсан өгөгдлийг өөрчлөх;
  4. Хүсэлт үүсгэх үед.

1C.Enterprise үйлдлийн загвар нь өөрөө физик хүснэгтийн түвшинд өгөгдөлд хөндлөнгөөс оролцох гэсэн үг биш тул энэ механизм нь бусад 1С мэдээллийн сантай ажиллахад зориулагдаагүй гэдгийг мэдэх нь чухал юм.

Шинэ эх сурвалж үүсгэх

Хөтөлбөрт шинэ гадаад эх үүсвэр нэмэх нь "Тохируулагч" горимд явагдана. Тохиргооны модонд харгалзах салбар байна (Зураг 1)

Шинэ объектын хэлбэр нь зөвхөн дөрвөн табтай байсан ч шинэ эх сурвалж үүсгэхдээ шаргуу ажиллах шаардлагатай болно.

  1. Үндсэн;
  2. Өгөгдөл;
  3. Чиг үүрэг;
  4. Эрх.

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

Удирдлагатай түгжээ нь автоматаас ялгаатай нь DBMS-д биш, харин програмд ​​хамаарах гүйлгээний механизмыг ашигладаг бөгөөд энэ нь хүснэгтийн бичлэгийг илүү доод түвшинд шилжүүлэх боломжийг олгодог.

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

Гадаад эх сурвалжийн шинж чанарын маягтын "Өгөгдөл" таб

"Өгөгдөл" табын хэлбэрийг Зураг дээр үзүүлэв. 2

Цагаан будаа. 2

Энд бид гадаад эх сурвалжийн хүснэгтүүд болон кубуудыг нэмж болно. Хүснэгт нэмэх хоёр арга бий:

  1. Гараар, дараа нь хүснэгт нэмэх маягт бидний өмнө нээгдэнэ (Зураг 3);

Цагаан будаа. 3

  1. Эсвэл физик эх сурвалжийн хүснэгтүүдийн жагсаалтаас сонгоно уу (Зураг 4), энэ тохиолдолд тусгай байгуулагч бидний өмнө нээгдэнэ.

Цагаан будаа. 4

Хүснэгт нэмэх маягтыг нарийвчлан авч үзье. "Нэр" шинж чанар нь тохиргоонд байгаа объектыг өвөрмөц байдлаар тодорхойлоход хэрэглэгддэг.

Мета өгөгдлийн объект болон эцсийн физик хүснэгтийг харьцуулах нь "Нарийвчилсан" таб дээр байрлах "Өгөгдлийн эх сурвалж дахь нэр" шинж чанараар хийгддэг (Зураг 5).

Цагаан будаа. 5

Дараа нь бид хүснэгтийн төрлийг, эс тэгвээс түүний бодит байдлыг тодорхойлох ёстой. Хэрэв бүтцэд хадгалагдсан өгөгдлийг аль нэг талбараар дамжуулан өвөрмөц байдлаар тодорхойлох боломжтой бол хүснэгт нь объект байж болно. Хэрэв бичлэгийн хувийн шинж чанарыг түлхүүр талбаруудын багцаар тодорхойлдог бол хүснэгт нь объектын бус төрөлтэй байх ёстой.

Ийм хүснэгтүүдийг бусад мета өгөгдлийн объектуудтай харьцуулахдаа дараахь аналогийг өгч болно.

  • Объектын хүснэгтүүд нь лавлах ном юм;
  • Объект бус нь мэдээллийн бүртгэл юм.

Түлхүүр талбаруудын багцыг дараах хэлбэрийн параметрээр ("Түлхүүр талбарууд") тодорхойлсон. Энэ талбар шаардлагатай; хэрэв та үүнийг хоосон орхивол тохиргоог хадгалахад амжилтгүй болно.

5-р зурагнаас харахад маягтын зарим талбар, товчлуурыг засварлах боломжгүй байна.

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

Хүснэгтийн талбаруудыг бөглөж, төрлийг нь тодорхойлж, танигчийг зааж өгсний дараа л тэдгээрийг ашиглаж болно (Зураг 6).

Цагаан будаа. 6

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

Ширээ бүтээгч

Магадгүй гадаад эх сурвалжтай ажиллахад хамгийн чухал бөгөөд сонирхолтой зүйл бол холболтын мөр үүсгэх явдал юм. Хэрэв та "Холболтын мөр" параметрийн хажууд гурван цэг бүхий товчлуур дээр дарвал түүний бүтээгч нээгдэнэ.

Юуны өмнө бид холболтод ашиглах драйвераа шийдэхийг хүсэх болно (Зураг 7).

Цагаан будаа. 7

Энэ параметрийн буруу тодорхойлолт нь таныг гуравдагч талын мэдээллийн сантай холбохыг зөвшөөрөхгүй. Унждаг жагсаалтад заасан бүх драйверуудыг холболтын мөрийг автоматаар үүсгэхэд ашиглах боломжгүй гэдгийг та ойлгох хэрэгтэй. Хэрэв платформ алдаа гаргавал (Зураг 8), холболтын мөрийг гараар оруулах шаардлагатай болно.

Зураг 8

Цагаан будаа. 9

Уг шугам нь өөрөө хатуу зохицуулалттай барилга юм.

Жишээ холболтын мөр

Microsoft Access дээр үүсгэсэн, D драйвын үндэст байрлах гуравдагч этгээдийн мэдээллийн санг авч үзье. Энэ мэдээллийн санг холбохын тулд бид тохирох драйверийг ашиглах ёстой, гэхдээ мөр үүсгэгч дээр сонгоход алдаа гарч ирнэ Зураг 8.

Бид холболтын параметрүүдийг өөрсдөө тохируулах болно.

Driver=(Microsoft Access Driver (*.mdb)) – мөрийн эхний хэсэг иймэрхүү харагдаж байна. Буржгар хаалтанд бид жолоочийг тодорхойлсон.

Excel файлуудын хувьд (Microsoft Excel Driver (*.xls)) 2003 оноос хуучин оффис дээр үүсгэсэн Excel файлуудын хувьд драйверийн мөр (Microsoft Excel Driver (*.xls, *.xlsx, *.)) шиг харагдана. xlsm, *.xlsb)).

Энэ параметрийг дараагийнхаас таслалаар тусгаарлахдаа бид хадгалах сангийнхаа хаягийг оруулах ёстой (бидний тохиолдолд DBQ=D:\Database1.mdb).

Энэ хоёр параметрийг нэмснээр бид Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb-г олж авна. Энэ параметрийг бичсэнээр бид энэ мэдээллийн сангийн дотоод бүтцэд хандах боломжтой болно.

"Гадаад эх сурвалж" объектын хувьд үүнийг зөвхөн тохиргоонд үүсгэхэд хангалттай биш бөгөөд үүнийг "Аж ахуйн нэгж" горимд холбох шаардлагатай. Үүнийг "Бүх функцууд">Гадаад эх сурвалжууд цэснээс хийж болно. Хүснэгтдээ анх орохдоо бид ижил холболтын мөрийг "Enterprise" горимд оруулах хэрэгтэй.

Энэ боломж яагаад ийм сонирхолтой байгаа юм бэ? 1С-д программчлагдсан, SQL-ийг сайн мэддэг, бизнесийн хэрэглээний бусад технологийн платформыг хөгжүүлэх архитектур, зарчмуудыг ерөнхийд нь мэддэг аливаа хүн 1С-ийн талаар юунд хамгийн их дуртайг итгэлтэйгээр хэлэх болно. Мэдээжийн хэрэг, асуулга үүсгэгч нь миний биечлэн уулзаж байсан харилцааны бүтцээс өгөгдөл авах хүсэлтийг бичих хамгийн тохиромжтой, ухаалаг механизм юм. Одоо 1С нь зөвхөн 1С төдийгүй бусад хүснэгтэд ашиглах гайхалтай боломжийг бидэнд олгосон. Зүгээр л энэ "баррель зөгийн бал" нь "тос дотор ялаа" ихтэй байдаг. Эхлээд хийх зүйлс:

1) Тохируулах, ашиглах- "Хэнгээрээ бүжиглэх"гүйгээр энэ нь ажиллахгүй
a) Гадны өгөгдлийн эх үүсвэр нэмэх - энэ нь тийм ч төвөгтэй биш юм шиг санагддаг
б) "Жагсаалтаас сонгох" нүдийг чагтална уу - заавал байх ёстой - энэ нь функцийг эхнээс нь шалгахад шаардлагатай бөгөөд таныг шаардлагагүй асуудлаас аврах болно.
в) - "..." дээр дарахаа мартуузай - холболт нь ODBC юм. Бидний дассан шиг OLEDB биш, харин нэг түвшин доогуур

D) Гэхдээ энд маш болгоомжтой байгаарай.

Энэ бол ODBC драйвер бөгөөд хэрэв та клиент-серверийн хувилбарыг ашигладаг бол энэ нь сервер дээр байх ёстой. Хэрэв та нэг систем дээр хөгжиж, өөр систем дээр ажиллаж байгаа бол (ихэвчлэн тохиолддог шиг) таныг ямар ч гэнэтийн зүйл хүлээж байгаа эсэхийг шалгаарай. Хачирхалтай зөвлөмж, гэхдээ хэрэв та хурдны талаар онцгой анхаарал тавьдаггүй бөгөөд SQL92 стандартын чадвараас хэтрүүлэхийг хүсэхгүй байгаа бол хамгийн эртний эсвэл хамгийн түгээмэл драйверийг сонгоорой. Энэ нь танд илүү сайн нийцтэй байдлыг өгөх болно. Жишээлбэл, SQL Server 2008-ийн хувьд хамгийн сайн драйвер нь SQL Server Native Client 11 байх болно, гэхдээ би зөвхөн SQL Server-ийг сонгохыг зөвлөж байна, эс тэгвээс энэ эх клиентийг сервер дээр эсвэл бүх клиент машин дээр (хэрэв ашиглаж байгаа бол) суулгах шаардлагатай болно. файлын хувилбар), давуу тал нь энгийн учраас онцгой бөгөөд тэр танд ямар ч даалгавар өгөхгүй.
e) Стандарт сервер сонгох харилцах цонхнууд

E) Нууц үгээ хадгалах тухай асуултад "тийм" гэж хариулахыг зөвлөж байна, эс тэгвээс та энэ бизнесийг эхлүүлэх боломжгүй болно.
g) Хүснэгт болон дэлгэрэнгүй мэдээллийг сонго... гайхалтай боломж - та хүссэнээрээ нэн даруй нэрийг нь өөрчлөх боломжтой (мөн дэлгэрэнгүй мэдээлэл), мөн шинж чанаруудаас та мэдээллийн эх сурвалжийн талбаруудын нэрийг харах болно.

Z) Одоо та үүнийг эхлүүлээд, асуулгын дизайнерыг нээнэ үү - хүснэгт болон OPA-аас бүх бичлэгийг тэнэгээр сонгоорой - алдаа. Юу хийх вэ? Хэрэв танд удирддаг интерфэйс байгаа бол үйлчилгээний цэсийг харна уу, хэрэв ердийн...
Би хувьдаа энэ кодыг ашигласан:
Код 1C v 8.x Параметрүүд = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = Үнэн;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=өгөгдлийн сан";
Parameters.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Параметрүүд);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
Зарим хэсэг нь шаардлагагүй байж болох ч энэ нь ажилладаг.
Та кодыг НЭГ УДАА ажиллуулах хэрэгтэй. Үүний дараа холбогдох нь хэвийн байх болно ... мэдээж ид шидийн үзэл - энэ нь яагаад шаардлагатай байсан нь тодорхойгүй байна ...

2) Зөвхөн унших боломжтой мэдээллийн эх сурвалж- Тийм ээ, гайхамшгууд тохиолддоггүй ... гэхдээ заримдаа та үүнийг хүсдэг ...

3) ДОТООД МЭДЭЭЛЛИЙН ЭХ ҮҮСВЭРТЭЙ ХАМТ АШИГЛАХ БОЛОМЖГҮЙ
Хувь хүнийхээ хувьд энэ баримт намайг газар дээрээ үхүүлсэн.

Энэ нь яаж байж болох вэ ... бидний хүлээж байсан, аль хэдийн төсөөлж байсан, одоо бид өгөгдлөө 1С-тэй хэрхэн нэгтгэх талаар нэг хүсэлтээр уруулаа долоож, үүнийг нурааж, бүлэглэж, тайланд оруулах, гэхдээ тийм биш юм. ...
Гэхдээ энэ нь мэдээж туршлагатай хүмүүсийг зогсоохгүй ... ямар бодол санаанд орж ирэв? Энэ нь зөв - түр зуурын хүснэгтүүд:

4) ТҮР ШИРЭЭТЭЙ ХАМТ АШИГЛАХ БОЛОМЖГҮЙ

Гэхдээ энэ нь технологийн хүндрэл мэт харагдахаа больсон, харин "амьдрал диваажин шиг санагдахгүй байхын тулд" бидний хийхийг хүсч буй зүйл шиг харагдаж байна :).

5) Зөвхөн ACS холболтод ашиглах боломжтой
Мэдэхгүй хүмүүсийн хувьд энэ нь "Өгөгдлийн багц холбоосууд" таб дээрх ACS-д байдаг. Та тэдгээрийг байнга ашигладаг уу? Тав тухтай юу? Тэд биднийг илүү олон удаа ашиглахыг албадахыг хүсч байгаа бололтой. Зөвхөн "Харилцаа холбооны нөхцөл" ба "Харилцаа холбооны параметр" гэсэн багана байна. Би тэдгээрийг ямар ч стандарт тохиргоонд ашиглах жишээг олж хараагүй; Хэн нэгэн надад "холболтын нөхцөл" хэрхэн ажилладаг талаар тайлбарлаж чадах уу? Хэрэв та тэнд Source Attributes = Receiver Attributes гэж бичвэл ажиллахгүй. Мэдээжийн хэрэг, нөхцөлийг "Илэрхийлэл" талбарт бичиж болно - ихэнх тохиолдолд энэ нь хангалттай ... гэхдээ ямар нэг байдлаар энэ нь тийм ч амархан бүтдэггүй.

Нийтдээ энэ асуудлыг өмнө нь иймэрхүү байдлаар шийдэж байсан.
Code 1C v 8.x Function InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Хэрэв DataCon > "20100101" Дараа нь
DataCon = "20100101";
endIf;

CN = Шинэ шалгуурын дугаар(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = Шинэ массив();
ArrayNumber.Add(Type("Дугаар"));

ArrayString = Шинэ массив();
ArrayString.Add(Type("String"));

ArrayData = Шинэ массив();
ArrayDate.Add(Type("Огноо"));

//Бид нягтлан бодох бүртгэлийн зардлыг хүснэгтэд бөглөнө
TypeNumber = Шинэ Тайлбар Төрөл (Массив дугаар, CN);
TypeString = Шинэ TypeDescription(ArrayString, KS);
TypeDate = Шинэ TypeDescription(ArrayDate);

//SQL-ээс өгөгдөл ачаалах хүснэгт
TZ = Шинэ утгын хүснэгт();
TK.Columns.Add("Нэршлийн код", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Цэг", DateType);

TK.Indices.Add("Цэг");

//SQL-д холбогдох
Холболтын мөр = "Үйлчилгээ үзүүлэгч=SQLOLEDB.1; Байнгын аюулгүй байдлын мэдээлэл=Үнэн;Хэрэглэгчийн ID=sa;Pwd=;Өгөгдлийн эх сурвалж=;Бэлтгэх журам=1;Auto Translate=True;Пакетийн хэмжээ=4096;Ажлын станцын ID=;Ашиглах Өгөгдлийн шифрлэлт=Худал;Боломжтой үед баганыг холбосон шошготой=Худал;Анхны каталог=Тайлангууд";
Холболт = Шинэ COMObject("ADODB.Connection");
Тушаал = Шинэ COMObject("ADODB.Command");
RecordSet = Шинэ COMObject("ADODB.RecordSet");
Огноо = "";
оролдлого
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Холболт;
Command.CommandText = "S_elect * ph om PH үед >= "" + String(Format(DateStart, "DF=yyyyMMdd"))) + "" ба үе<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Үл хамаарах зүйл
Техникийн тодорхойлолтыг буцаах;
EndAttempt;

While RecordSet.EOF = Худал давталт
Шугам = TK.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Нэр).Утга;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Нэр).Утга;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Нэр).Утга;
RecordSet.MoveNext();
Төгсгөлийн мөчлөг;

Хүсэлт = Шинэ хүсэлт();
VrTable = Шинэ TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Эхлэх огноо", Эхлэх огноо);
Request.SetParameter("DataCon", DateCon);
Query.Text = "СОНГОХ
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Өгөгдлийн хүснэгтийг байрлуулах
|FROM
| &vDataTable AS vrDataTable
|ХАААН
| vrDataTable.Period >= &StartDate
| Мөн vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = Тодорхойгүй;

Хүсэлт = Шинэ хүсэлт;
Query.TemporaryTableManager = VrTable;
Query.Text = "Энд хувьсагчийн хүснэгтийг хамарсан асуулга байна";

Үр дүн = Query.Run();
Буцах үр дүн;

Төгсгөлийн функц

ExternalSet = InitializeDataSource();
DataSet = шинэ бүтэц();
DataSet.Insert("SQL Хүснэгт", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Үр дүн, Шифр ​​тайлах өгөгдөл, OutputToReportForm, DataSet);

Үнэн хэрэгтээ кодын олон мөр байдаггүй бөгөөд тэдгээр нь нэлээд стандарт юм ... энэ тохиолдолд та асуулга зохион бүтээгчийн бүрэн функцийг ашиглах боломжтой бөгөөд ACS-д зөвхөн DATA COMPOSITION функцийг өгөх боломжтой.

Гэхдээ энэ нь тийм ч сайхан харагдахгүй нь мэдээжийн хэрэг ... мөн та утгыг хүснэгтэд оруулахын тулд код бичиж, дэлгэрэнгүй мэдээллийн нэрэнд алдаа гаргасан эсэхээ шалгах хэрэгтэй ... мөн бидэнд юу өгсөн бэ? 1С ямар нэгэн байдлаар хагас дутуу харагдаж байна. Аль нь хэрэглэхэд илүү тохиромжтойг би хараахан шийдээгүй байна. Та шийдвэрээ гаргаж, гаргасан шийдвэрийнхээ талаар болон таныг юунд хүргэсэн талаар бичээрэй.

Мэдээллийг сайтаас авав

8.2.14.533 хувилбар нь платформын 14 дэх хувилбарын илүү бага тогтвортой хувилбар юм. Эцэст нь "гадаад мэдээллийн эх сурвалж" гэсэн гайхалтай боломжийг туршиж үзэх боломж гарч ирэв.

Энэ боломж яагаад ийм сонирхолтой байгаа юм бэ? 1С-д программчлагдсан, SQL-ийг сайн мэддэг, бизнесийн хэрэглээний бусад технологийн платформыг хөгжүүлэх архитектур, зарчмуудыг ерөнхийд нь мэддэг аливаа хүн 1С-ийн талаар юунд хамгийн их дуртайг итгэлтэйгээр хэлэх болно. Мэдээжийн хэрэг, асуулга үүсгэгч нь миний биечлэн уулзаж байсан харилцааны бүтцээс өгөгдөл авах хүсэлтийг бичих хамгийн тохиромжтой, ухаалаг механизм юм. Одоо 1С нь зөвхөн 1С төдийгүй бусад хүснэгтэд ашиглах гайхалтай боломжийг бидэнд олгосон. Зүгээр л энэ "баррель зөгийн бал" нь "тос дотор ялаа" ихтэй байдаг. Эхлээд хийх зүйлс:

1) Тохируулах, ашиглах - "хэнгэрэг барин бүжиглэх"гүйгээр энэ нь ажиллахгүй болно

A) Гадны өгөгдлийн эх үүсвэр нэмэх - энэ нь тийм ч төвөгтэй биш юм шиг санагддаг
б) "Жагсаалтаас сонгох" нүдийг чагтална уу - заавал байх ёстой - энэ нь эхэндээ функцийг шалгахад шаардлагатай бөгөөд шаардлагагүй асуудлаас таныг аврах болно.
V)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- "..." дээр дарахаа мартуузай - холболт нь ODBC юм. Бидний дассан шиг OLEDB биш, харин нэг түвшин доогуур

Гэхдээ энд байгаарай МАШ БОЛОМЖТОЙ.

Энэ бол ODBC драйвер бөгөөд хэрэв та клиент-серверийн хувилбарыг ашигладаг бол энэ нь сервер дээр байх ёстой. Хэрэв та нэг систем дээр хөгжиж, өөр систем дээр ажиллаж байгаа бол (ихэвчлэн тохиолддог шиг) таныг ямар ч гэнэтийн зүйл хүлээж байгаа эсэхийг шалгаарай. Хачирхалтай зөвлөмж, гэхдээ хэрэв та хурдны талаар онцгой анхаарал тавьдаггүй бөгөөд SQL92 стандартын чадвараас хэтрүүлэхийг хүсэхгүй байгаа бол хамгийн эртний эсвэл хамгийн түгээмэл драйверийг сонгоорой. Энэ нь танд илүү сайн нийцтэй байдлыг өгөх болно. Жишээлбэл, SQL Server 2008-ийн хувьд хамгийн сайн драйвер нь SQL Server Native Client 11 байх болно, гэхдээ би зөвхөн SQL Server-ийг сонгохыг зөвлөж байна, эс тэгвээс энэ эх клиентийг сервер дээр эсвэл бүх клиент машин дээр (хэрэв ашиглаж байгаа бол) суулгах шаардлагатай болно. файлын хувилбар), давуу тал нь энгийн учраас онцгой бөгөөд тэр танд ямар ч даалгавар өгөхгүй.

E) Стандарт сервер сонгох харилцах цонхнууд

G) Хүснэгт болон дэлгэрэнгүй мэдээллийг сонго... гайхалтай боломж - та үүнийг хүссэнээрээ нэн даруй өөрчлөх боломжтой (мөн дэлгэрэнгүй мэдээллийг) мөн шинж чанаруудаас та мэдээллийн эх сурвалжийн талбаруудын нэрийг харах болно.

Z) Одоо та үүнийг эхлүүлээд асуулгын дизайнерыг нээнэ үү - хүснэгт болон OPA-аас бүх бичлэгийг тэнэгээр сонгоорой - алдаа. Юу хийх вэ? Хэрэв танд удирддаг интерфэйс байгаа бол үйлчилгээний цэсийг харна уу, хэрэв ердийн...
Би хувьдаа энэ кодыг ашигласан:

Параметрүүд = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = Үнэн;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=өгөгдлийн сан";
Parameters.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Параметрүүд);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();

Зарим хэсэг нь шаардлагагүй байж болох ч энэ нь ажилладаг. Та кодыг ажиллуулах хэрэгтэй НЭГ УДАА. Үүний дараа холбогдох нь хэвийн байх болно ... мэдээж ид шидийн үзэл - энэ нь яагаад шаардлагатай байсан нь тодорхойгүй байна ...

2) Зөвхөн унших боломжтой мэдээллийн эх сурвалж
Тийм ээ, гайхамшгууд тохиолддоггүй ... гэхдээ заримдаа та ийм байхыг хүсдэг ...

3) ДОТООД МЭДЭЭЛЛИЙН ЭХ ҮҮСВЭРТЭЙ ХАМТ АШИГЛАХ БОЛОМЖГҮЙ
Хувь хүнийхээ хувьд энэ баримт намайг газар дээрээ үхүүлсэн.

Энэ нь яаж байж болох вэ ... бидний хүлээж байсан, аль хэдийн төсөөлж байсан, одоо бид өгөгдлөө 1С-тэй хэрхэн нэгтгэх талаар нэг хүсэлтээр уруулаа долоож, үүнийг нурааж, бүлэглэж, тайланд оруулах, гэхдээ тийм биш юм. ...

Гэхдээ энэ нь мэдээж туршлагатай хүмүүсийг зогсоохгүй ... ямар бодол санаанд орж ирэв? Энэ нь зөв - түр зуурын хүснэгтүүд:

4) ТҮР ШИРЭЭТЭЙ ХАМТ АШИГЛАХ БОЛОМЖГҮЙ

Гэхдээ энэ нь технологийн бэрхшээл мэт харагдахаа больсон ч тэдний биднээс "амьдрал диваажин мэт санагдахгүйн тулд" хийхийг хүсч буй зүйлтэй төстэй (IMG :))

5) Зөвхөн ACS холболтод ашиглах боломжтой

Мэдэхгүй хүмүүсийн хувьд энэ нь "Өгөгдлийн багц холбоосууд" таб дээрх ACS-д байдаг. Та тэдгээрийг байнга ашигладаг уу? Тав тухтай юу? Тэд биднийг илүү олон удаа ашиглахыг албадахыг хүсч байгаа бололтой. Зөвхөн "Харилцаа холбооны нөхцөл" ба "Харилцаа холбооны параметр" гэсэн багана байна. Би тэдгээрийг ямар ч стандарт тохиргоонд ашиглах жишээг олж хараагүй; Хэн нэгэн надад "холболтын нөхцөл" хэрхэн ажилладаг талаар тайлбарлаж чадах уу? Хэрэв та тэнд Source Attributes = Receiver Attributes гэж бичвэл ажиллахгүй. Мэдээжийн хэрэг, нөхцөлийг "Илэрхийлэл" талбарт бичиж болно - ихэнх тохиолдолд энэ нь хангалттай ... гэхдээ ямар нэг байдлаар энэ нь тийм ч амархан бүтдэггүй.

Нийтдээ энэ асуудлыг өмнө нь иймэрхүү байдлаар шийдэж байсан.

InitializeDataSource() функц

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Хэрэв DataCon > "20100101" Дараа нь
DataCon = "20100101";
endIf;

CN = Шинэ шалгуурын дугаар(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = Шинэ массив();
ArrayNumber.Add(Type("Дугаар"));

ArrayString = Шинэ массив();
ArrayString.Add(Type("String"));

ArrayData = Шинэ массив();
ArrayDate.Add(Type("Огноо"));

//Бид нягтлан бодох бүртгэлийн зардлыг хүснэгтэд бөглөнө
TypeNumber = Шинэ Тайлбар Төрөл (Массив дугаар, CN);
TypeString = Шинэ TypeDescription(ArrayString, KS);
TypeDate = Шинэ TypeDescription(ArrayDate);

//SQL-ээс өгөгдөл ачаалах хүснэгт
TZ = Шинэ утгын хүснэгт();
TK.Columns.Add("Нэршлийн код", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Цэг", DateType);

TK.Indices.Add("Цэг");

//SQL-д холбогдох
Холболтын мөр = "Үйлчилгээ үзүүлэгч=SQLOLEDB.1; Байнгын аюулгүй байдлын мэдээлэл=Үнэн;Хэрэглэгчийн ID=sa;Pwd=;Өгөгдлийн эх сурвалж=;Бэлтгэх журам=1;Auto Translate=True;Пакетийн хэмжээ=4096;Ажлын станцын ID=;Ашиглах Өгөгдлийн шифрлэлт=Худал;Боломжтой үед баганыг холбосон шошготой=Худал;Анхны каталог=Тайлангууд";
Холболт = Шинэ COMObject("ADODB.Connection");
Тушаал = Шинэ COMObject("ADODB.Command");
RecordSet = Шинэ COMObject("ADODB.RecordSet");
Огноо = "";
оролдлого
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Холболт;
Command.CommandText = "PH-аас * сонгоно уу. Үе >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" болон үе RecordSet = Command.Execute();
RecordSet.MoveFirst();
Үл хамаарах зүйл
Техникийн тодорхойлолтыг буцаах;
EndAttempt;

While RecordSet.EOF = Худал давталт
Шугам = TK.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Нэр).Утга;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Нэр).Утга;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Нэр).Утга;
RecordSet.MoveNext();
Төгсгөлийн мөчлөг;

Хүсэлт = Шинэ хүсэлт();
VrTable = Шинэ TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Эхлэх огноо", Эхлэх огноо);
Request.SetParameter("DataCon", DateCon);
Query.Text = "СОНГОХ
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Өгөгдлийн хүснэгтийг байрлуулах
|FROM
| &vDataTable AS vrDataTable
|ХАААН
| vrDataTable.Period >= &StartDate
| Мөн vrDataTable.Period Query.Execute();
TZ = Тодорхойгүй;

Хүсэлт = Шинэ хүсэлт;
Query.TemporaryTableManager = VrTable;
Query.Text = "Энд хувьсагчийн хүснэгтийг хамарсан асуулга байна";

Үр дүн = Query.Run();
Буцах үр дүн;

Төгсгөлийн функц

ExternalSet = InitializeDataSource();
DataSet = шинэ бүтэц();
DataSet.Insert("SQL Хүснэгт", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Үр дүн, Шифр ​​тайлах өгөгдөл, OutputToReportForm, DataSet);

Үнэн хэрэгтээ кодын олон мөр байдаггүй бөгөөд тэдгээр нь нэлээд стандарт юм ... энэ тохиолдолд та асуулга зохион бүтээгчийн бүрэн функцийг ашиглах боломжтой бөгөөд ACS-д зөвхөн DATA COMPOSITION функцийг өгөх боломжтой.

Гэхдээ энэ нь тийм ч сайхан харагдахгүй нь мэдээжийн хэрэг ... мөн та утгыг хүснэгтэд оруулахын тулд код бичиж, дэлгэрэнгүй мэдээллийн нэрэнд алдаа гаргасан эсэхээ шалгах хэрэгтэй ... мөн бидэнд юу өгсөн бэ? 1С ямар нэгэн байдлаар хагас дутуу харагдаж байна. Аль нь хэрэглэхэд илүү тохиромжтойг би хараахан шийдээгүй байна. Та шийдвэрээ гаргаж, гаргасан шийдвэрийнхээ талаар болон таныг юунд хүргэсэн талаар бичээрэй.

[Та холбоосыг үзэхийн тулд бүртгүүлэх ёстой]