იმუშავეთ მათთან სიებში 1C Enterprise რეჟიმში.

თუმცა, სამუშაოში ხშირად არის სიტუაცია, როდესაც მონაცემების ნაწილი ინახება სხვაგან.

  • ონლაინ მაღაზია (ჩვეულებრივ ინახავს მონაცემებს გარე MySQL/SQL მონაცემთა ბაზაში)
  • კიდევ ერთი ბაზა.

სხვა მონაცემთა ბაზებში შენახულ ასეთ მონაცემებთან მუშაობისთვის საჭიროა სპეციალური მექანიზმების შემუშავება.

1C 8.2.14 ვერსიაში გამოჩნდა ახალი სახელწოდებით 1C გარე მონაცემთა წყაროები, რაც მნიშვნელოვნად უწყობს ხელს პროგრამისტის მუშაობას, რადგან:

  • ახლა არ არის საჭირო მონაცემების მოპოვების სპეციალური მექანიზმების შექმნა
  • ასეთი მონაცემების წვდომა შესაძლებელია ჩვეულებრივი გზით
  • ასეთი მონაცემების ნახვა შესაძლებელია 1C სიებში.
    • გარე მონაცემთა წყარო 1C – გარე SQL მონაცემთა ბაზა

      ვთქვათ, გვაქვს SQL მონაცემთა ბაზა, რომელშიც ინახება ჩვენთვის საჭირო მონაცემები. შევეცადოთ მისგან მონაცემების წაკითხვა 1C გარე მონაცემთა წყაროს მექანიზმის გამოყენებით.

      მოდით დავამატოთ გარე 1C მონაცემთა წყარო. თქვენ უნდა გადახვიდეთ კონფიგურატორზე, მონაცემთა გარე წყაროები განლაგებულია კონფიგურაციის ფანჯარაში, ხის ბოლოში.

      1. კავშირი

      მოდით დავამატოთ ახალი გარე მონაცემთა წყარო 1C, დაასახელოთ იგი თვითნებურად.

      მონაცემთა ბაზა შედგება ცხრილებისგან. ჩვენ უნდა დავამატოთ ისინი დამატებული გარე მონაცემთა წყაროს შიგნით. დააწკაპუნეთ მასზე მარჯვენა ღილაკით და აირჩიეთ ცხრილის დამატება.

      პირველად, ის მოგთხოვთ მიუთითოთ კავშირის სტრიქონი. მისი შეყვანა შესაძლებელია ხელით, ან გენერირება ღილაკზე „…“ დაწკაპუნებით.

      ჩვენს კონკრეტულ შემთხვევაში, ჩვენ ვირჩევთ "SQL Server" როგორც დრაივერი

      მოდით შეავსოთ SQL-თან დასაკავშირებლად ძირითადი პარამეტრები. სერვერის სახელი შეიძლება შეიყვანოთ ან აირჩიოთ სიიდან.

      1C დაუკავშირდება SQL-ს და შესთავაზებს კონკრეტული მონაცემთა ბაზის არჩევას სიიდან.

      ამის შემდეგ, 1C აჩვენებს ცხრილების სიას ამ მონაცემთა ბაზაში და მათ სვეტებს. თქვენ უნდა მონიშნოთ ველები საჭირო ცხრილების შესარჩევად.

      დაემატება ცხრილები და სვეტები. სახელები იგივე იქნება, რაც მითითებულია დისტანციურ მონაცემთა ბაზაში. 1C-ში შეგიძლიათ მათი სახელის გადარქმევა (თვისებებში).

      აქ არის დამატებული ცხრილის მაგალითი:

      აქ არის დამატებული სვეტის მაგალითი:

      იმისათვის, რომ 1C პლატფორმამ იმუშაოს გარე მაგიდასთან ისე, როგორც ეს მუშაობს 1C დირექტორიებთან, შეგიძლიათ მიუთითოთ დამატებითი პარამეტრები ცხრილში:

      • Key Field თვისებაში მიუთითეთ ერთ-ერთი სვეტი, რომელიც უზრუნველყოფს მწკრივის უნიკალურ იდენტიფიკაციას; თუ რამდენიმე ხაზი უზრუნველყოფს უნიკალურობას, მაშინ ეს მეთოდი არ მუშაობს (კოდის ველის ანალოგი)
      • Presentation Field თვისებაში, მიუთითეთ ერთ-ერთი სვეტი, რომელიც უზრუნველყოფს ხაზის მოკლე წარმოდგენას (ანალოგური სახელის ველი)
      • Table Data Type თვისებაში მიუთითეთ Object Data.

      2. ხედი

      დისტანციურ ბაზასთან კავშირი ავტომატურად არ ხდება. დასაკავშირებლად, თქვენ უნდა აირჩიოთ სტანდარტული მენიუ.

      სტანდარტული ფილიალში არის სპეციალური ბრძანება მონაცემთა გარე წყაროების მართვა, რომელიც საშუალებას გაძლევთ მიუთითოთ კავშირის პარამეტრები (სპეციფიკური 1C Enterprise რეჟიმისთვის) და დაამყაროთ კავშირი.

      ჯერ უნდა მიუთითოთ მონაცემთა ბაზასთან დაკავშირების პარამეტრები.

      როდესაც თქვენ გააკეთეთ პარამეტრები კონფიგურატორში, მან აჩვენა კავშირის სტრიქონი შედეგად. თქვენ შეგიძლიათ იხილოთ ისევ კონფიგურატორში ცხრილის დამატებაზე დაწკაპუნებით.

      დააკოპირეთ კავშირის სტრიქონი და მიუთითეთ იგი 1C Enterprise რეჟიმში.

      ამის შემდეგ, თქვენ უნდა დაამყაროთ ფაქტობრივი კავშირი.

      დაკავშირების შემდეგ შესაძლებელია სიებთან მუშაობა.

      3. გამოიყენეთ 1C ენაზე

      კავშირი ასევე შეიძლება განხორციელდეს პროგრამის კოდიდან 1C ენაზე.

      კავშირის პარამეტრები მითითებულია შემდეგნაირად:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters();

      ConnectionParameters.AuthenticationStandard = True;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "პაროლი";
      ConnectionParameters.ConnectionString = „დაკავშირების სტრიქონი კონფიგურატორიდან“;
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      თქვენ შეგიძლიათ მოიძიოთ მონაცემები მონაცემთა ბაზიდან რეგულარული გამოყენებით. მოთხოვნის ტექსტის მაგალითი გარე წყაროსთვის OurExternalSource და ცხრილების ExternalSource Table:

      არჩევა
      ExternalSourceTable.FieldName
      FROM
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      მონაცემთა გარე წყარო 1C - მუშაობა Excel ფაილთან

      მოდით ვცადოთ სხვა ვარიანტი - მუშაობა Excel ფაილთან გარე 1C მონაცემთა წყაროს საშუალებით.

      მოდით შევქმნათ მარტივი Excel ფაილი.

      მოდით დავამატოთ გარე წყარო, თვითნებურად დავარქვათ FileExcel. მოდით დავამატოთ მას ცხრილი „Sheet1$“. როგორც ადვილად ხედავთ, ეს არის ფურცლის სახელი Excel-ში "$" სიმბოლოს დამატებით.

      როგორც SQL-ის შემთხვევაში, მოდით დავამატოთ სვეტები. მათი დამატება შესაძლებელია ხელით. მნიშვნელოვანია დარწმუნდეთ, რომ თქვენ მიერ დამატებული სვეტების ტიპები ემთხვევა, წინააღმდეგ შემთხვევაში შეიძლება მოგვიანებით მიიღოთ შეცდომა, როგორიცაა „მონაცემთა ტიპის შეუსაბამობა“.

      სვეტისთვის თქვენ უნდა მიუთითოთ სახელი 1C-ში და სახელი მონაცემთა წყაროში.

      არსებობს Excel-ის ფუნქცია (შეცდომა, როგორიცაა „ძალიან ცოტა პარამეტრი. საჭიროა 3“):

      • თუ Excel ცხრილის პირველი სტრიქონი შეიცავს სვეტების სახელებს, მაშინ უბრალოდ უნდა მიუთითოთ ამ სვეტის სახელი, მაგალითად "კოდი".
      • წინააღმდეგ შემთხვევაში, თქვენ უნდა მიუთითოთ სრული სახელი ცხრილის სახელით "Sheet1$.Code", მაგრამ პარამეტრებში დაამატეთ "HDR=NO;".

      Excel ფაილის კავშირის პარამეტრები ასე გამოიყურება:

      • XLSX ფაილები (Office 2007 და შემდეგ)
        დრაივერი=(Microsoft Excel-ის დრაივერი (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS ფაილები (ადრე)
        დრაივერი=(Microsoft Excel-ის დრაივერი (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        თქვენ უნდა მიუთითოთ თქვენი სახელი და ფაილის გზა.

8.3.5 ვერსიიდან დაწყებული, პლატფორმამ დანერგა მონაცემთა გარე წყაროების ცხრილებზე მონაცემების ჩაწერის შესაძლებლობა. სტატიაში განხილულია ეს ფუნქცია, რომელიც აფართოებს არსებულ შესაძლებლობებს მესამე მხარის სისტემებთან კონფიგურაციის ინტეგრირებისთვის.

გამოყენებადობა

სტატიაში განხილულია 1C 8.3.5 პლატფორმა. მასალა ასევე აქტუალურია პლატფორმის მიმდინარე გამოშვებებისთვის.

ჩაწერა მონაცემთა გარე წყაროებზე 1C:Enterprise 8-ში

პლატფორმაში 8.2.14 მეტამონაცემების ხეს დაემატა ახალი ობიექტი - გარე მონაცემთა წყაროები. ამ მექანიზმის მიზანია მონაცემების მოპოვება გარე მონაცემთა ბაზებიდან 1C-თან მიმართებაში.

ახალი პლატფორმის გამოშვებით, გარე მონაცემების წყაროები განვითარდა, მაგალითად, შესაძლებელი გახდა მათი განთავსება დროებით ცხრილებში და კავშირების შესრულება ჩვეულებრივ ცხრილებთან.

ამ სტატიაში განვიხილავთ, თუ რა ინსტრუმენტები აქვს დეველოპერს მონაცემთა გარე წყაროებზე ჩაწერისთვის.

ყველა ქმედება შესრულდა Microsoft SQL Server 2008 R2 DBMS-ზე.

პლატფორმა 8.3.4 შემოიღო გარე მონაცემთა წყაროებში აღწერილი ფუნქციების გამოყენების შესაძლებლობა.

ეს ფუნქცია საშუალებას გაძლევთ გაუშვათ შენახული პროცედურები SQL Server-ის მხარეს და მათი დახმარებით შეხვიდეთ მონაცემებზე გარე წყაროებიდან, ჩაწერის ჩათვლით.

მოდით შევხედოთ მაგალითს. SQL Management Studio-ს გამოყენებით შევქმნათ ახალი მონაცემთა ბაზა სახელად kursy_test. ყველა შემდგომი ექსპერიმენტი ჩატარდება მასზე.

ამ მონაცემთა ბაზაში შევქმნით ცხრილის ნომენკლატურას, ამისთვის დავწერთ სკრიპტს შემდეგი შინაარსით:

გამოიყენეთ [kursy_test]
წადი
ცხრილის შექმნა [dbo]. [ნომენკლატურა](
[id] [int] NOT NULL,
[ აღწერა ] [ nvarchar ](150) NOT NULL,
[ფასი] [ციფრული](15, 2) NULL,
შეზღუდვა [ PK_id ] ძირითადი გასაღები ([ id ])
წადი

შესრულების შედეგად შეიქმნება ცხრილი შემდეგი სტრუქტურით:

ახლა ჩვენ უნდა შევქმნათ ორი შენახული პროცედურა, რომელთა დახმარებითაც მოხდება მონაცემთა მოდიფიკაცია.

პირველ პროცედურას დავარქვათ ჩასმა_ნომენკლატურა. იგი შექმნილია იმისთვის, რომ დაემატოს ახალი მწკრივი მაგიდაზე. მისი შექმნის სკრიპტი ასე გამოიყურება:

გამოიყენეთ [kursy_test]
წადი
CREATE PROCEDURE insert_nomenklatura
@id int
@description nvarchar(150),
@ფასი რიცხვითი (15, 2)
ას
დასაწყისი
INSERT INTO [kursy_test].dbo. [ნომენკლატურა] ([ id ], [ აღწერა ], [ ფასი ])
VALUES (@id, @description, @price)
ᲓᲐᲡᲐᲡᲠᲣᲚᲘ
წადი

მეორე პროცედურა, სახელწოდებით update_nomenklatura, განაახლებს ცხრილში არსებულ ჩანაწერს. მის შესაქმნელად, ამოქმედდა შემდეგი სკრიპტი:

Object Browser-ში შექმნილი ცხრილი და ორი შენახული პროცედურა ასე გამოიყურება:

ჩვენ დავასრულეთ ყველა მოსამზადებელი ნაბიჯი Microsoft SQL Server-ის მხარეს, ახლა გადავდივართ 1C:Enterprise 8 კონფიგურატორზე.

შექმენით ახალი გარე მონაცემთა წყარო სახელწოდებით Nomenklatura. ამ მონაცემთა წყაროში ახალი ცხრილის შექმნისას ჩვენ ვაზუსტებთ შემდეგ პარამეტრებს მონაცემთა წყაროსთან დასაკავშირებლად:

ჩვენ განვსაზღვრავთ შემდეგი კავშირის სტრიქონს:

დრაივერი = (SQL Server) ; სერვერი =(ლოკალური); მონაცემთა ბაზა = kursy_test ; მომხმარებლის ID = sa; პაროლი =;

თუ sa მომხმარებელს აქვს პაროლი, ის უნდა იყოს მითითებული კავშირის ხაზის Password პარამეტრში.

თუ კავშირის ყველა პარამეტრი სწორად არის მითითებული, როდესაც დააწკაპუნებთ OK, გაიხსნება ფანჯარა, რომელიც შეიცავს მონაცემთა წყაროში არსებულ ცხრილებს:

ჩვენ ვნიშნავთ ცხრილის ველებს, რომლებიც გვაინტერესებს. როდესაც დააჭირეთ ღილაკს მზადაა dbo_nomenklatura ცხრილი შეიქმნება მონაცემთა გარე წყაროში Nomenklatura:

ახლა ჩვენ გადავდივართ ჩვენი მონაცემთა წყაროს "ფუნქციების" ჩანართზე.

მსგავსი ოსტატის გამოყენებით, ჩვენ ვამატებთ ორ შენახულ პროცედურას:

ჩვენ ვიღებთ "ფუნქციების" ჩანართის შემდეგ იერს:

ახლა მოდით დავაპროგრამოთ მომხმარებლის ინტერფეისი მონაცემთა გარე წყაროსთან მუშაობისთვის.

ბრძანების პანელზე არსებული სიის ფორმაში განვათავსებთ ღილაკს „დამატება“ შემდეგი დამმუშავებლით:

&OnClient
პროცედურა დამატება()
გაფრთხილება = ახალი აღწერა გაფრთხილებები("OpenTableComplete", ThisObject );
OpenForm (
"ExternalDataSource.Nomenklatura.Table.dbo_nomenklatura.ObjectForm"
, , , , , ,
გაფრთხილება, FormWindowOpenMode.LockEntireInterface);
დასრულების პროცედურა

&OnClient
პროცედურის შენახვა (ბრძანება)
SaveOnServer();
პროცედურის დასასრული & სერვერზე
Პროცედურა SaveOnServer()
თუ ობიექტი.ბმული. ცარიელი() მერე
ExternalDataSources.Nomenklatura.dbo_insert_nomenklatura
წინააღმდეგ შემთხვევაში
ExternalDataSources.Nomenklatura.dbo_update_nomenklatura
(Object.id, Object.description, Object.price);
Დაასრულე თუ ;
დასრულების პროცედურა

Enterprise რეჟიმში, სიის ფორმა ასე გამოიყურება:

ობიექტის ფორმა ნაჩვენებია ქვემოთ:

გასადიდებლად დააწკაპუნეთ სურათზე.

ამრიგად, შენახული პროცედურების გამოყენებით, ჩვენ განვახორციელეთ ჩაწერა გარე მონაცემთა წყაროებზე.

პლატფორმა 8.3.5 გამოჩნდა ახალი ფუნქცია - ჩაწერა გარე მონაცემთა წყაროებზე, ზემოთ განხილული შენახული პროცედურის მექანიზმის გვერდის ავლით.

მონაცემების რედაქტირება შესაძლებელია როგორც პროგრამულად, ასევე ინტერაქტიულად. და ჩვენი მაგალითისთვის არ არის საჭირო კონფიგურაციის გამოყენება.

ბრძანების პანელებში და მენიუში "მეტი" შეგიძლიათ იხილოთ სტანდარტული ღილაკები, როგორიცაა "შექმნა", "ასლი", "რედაქტირება" და ა.შ.

გასადიდებლად დააწკაპუნეთ სურათზე.

და ღილაკები "შენახვა" და "შენახვა და დახურვა" გამოჩნდა ობიექტის სახით:

როგორც ხედავთ, ახლა გარე წყაროებთან მუშაობა მსგავსია საცნობარო წიგნებთან, დოკუმენტებთან და ა.შ.

ვნახოთ, რა ცვლილებები განხორციელდა მეტამონაცემების დონეზე, რათა შესაძლებელი ყოფილიყო მონაცემთა გარე წყაროებზე ჩაწერა.

მონაცემთა ცხრილს დაემატა ახალი თვისება მხოლოდ კითხვა(ტიპი – ლოგიკური).

თუ ეს თვისება დაყენებულია True-ზე, ამ ცხრილში მონაცემების ჩაწერა პლატფორმის ხელსაწყოების გამოყენებით შეუძლებელია.

მონაცემთა ცხრილის ველს ახლა აქვს შემდეგი თვისებები:

  • მხოლოდ კითხვა(ტიპი – ლოგიკური) – შესაძლებელია თუ არა ამ ველში მონაცემების შეცვლა;
  • AllowNull(ტიპი – ლოგიკური) – შესაძლებელია თუ არა ამ ველში NULL მნიშვნელობის შენახვა.

საკუთრება მხოლოდ კითხვაუნდა დაყენდეს მართალიამონაცემთა ბაზის ველებისთვის ავტომატური ცვლილებებით, ავტომატურად გენერირებული საკვანძო ველებისთვის, გამოთვლილი ველებისთვის და ა.შ.

თქვენ შეგიძლიათ დაამატოთ, შეცვალოთ და წაშალოთ მონაცემები გარე წყაროებში ჩაშენებული ენის გამოყენებით.

ამისათვის, ობიექტები ExternalDataSourceTableRecordSetდა ExternalDataSourceTableObjectდაინერგა ახალი მეთოდები დაწერე ()და წაშლა ().

მოდით შევხედოთ ზემოთ განხილული გარე მონაცემთა წყაროსთვის ახალი ჩანაწერის პროგრამულად დამატების მაგალითს.

&OnClient
Პროცედურა შექმენით პროგრამულად(გუნდი)
CreateProgrammaticallyOnServer();
პროცედურის დასასრული & სერვერზე

Პროცედურა CreateProgrammaticallyOnServer()
WritableObject=
ExternalDataSources.Nomenklatura.Tables.dbo_nomenklatura.CreateObject();
WriteableObject.id= 5 ;
WriteableObject.description= "გარდერობი" ;
WritableObject.ფასი= 5000 ;
WriteableObject.ჩაწერე();
დასრულების პროცედურა

გარე მონაცემთა წყაროს ცხრილის ობიექტის მოდულში ახლა შეგიძლიათ მიუთითოთ ჩაწერის მოვლენის დამმუშავებლები, როგორიცაა ადრე დაწერა (), OnWrite ()და ა.შ.:

ამ სტატიაში განხილული იყო მონაცემების გარე წყაროებზე ჩაწერის ორი ვარიანტი - შენახული პროცედურების გამოყენება და 8.3.5 პლატფორმის ახალი მექანიზმების გამოყენება.

ამრიგად, პლატფორმა ახლა ახორციელებს მექანიზმებს გარე აპლიკაციებთან სრული ინტეგრაციისთვის.

8.3.6 ვერსიაში ზემოთ აღწერილი ფუნქციონალობა გაფართოვდა ახალი სპეციალური მეთოდების GetModifiableFields() და SetModifiableFields() დახმარებით. მათი გამოყენებით შესაძლებელია ჩაწერის ოპერაციის შესრულება VIEW ცხრილის იმ ველებში, რომლებიც კონფიგურატორში არის მონიშნული, როგორც მხოლოდ წაკითხვადი. ამის წყალობით შესაძლებელი გახდა სცენარის განხორციელება, რომელშიც VIEW ცხრილის ცალკეულ ველებზე ჩაწერა შესაძლებელია მხოლოდ იმ შემთხვევებში, როდესაც ეს აუცილებელია აპლიკაციის ბიზნეს ლოგიკის შესაბამისად.

8.3.7 ვერსიაში, მექანიზმი გაუმჯობესდა, რათა დადგინდეს VIEW ცხრილების რომელი კონკრეტული ველი შეიძლება შეიცავდეს NULL მნიშვნელობებს. ამ მომენტამდე, ყველა VIEW ცხრილს შეუძლია მიიღოს ეს მნიშვნელობა. ეს ცვლილება განპირობებულია ამ ველების მიხედვით დინამიურ სიებში დახარისხების სიჩქარის გაზრდით.

8.3.8 ვერსიაში საბოლოოდ შესაძლებელი გახდა იმის დადგენა, რომ გარე მონაცემთა წყარო ტრანზაქციის მდგომარეობაშია. ეს ფუნქცია უზრუნველყოფილია ახალი მეთოდით ExternalDataSourceManager.TransactionActive()

დასასრულს, ჩვენ აღვნიშნავთ, რომ მონაცემთა გარე წყაროებისთვის, როგორც ზემოთ ნაჩვენებია, აღწერილია მონაცემთა ცხრილები კლასიკური რელაციური მოდელიდან. პლატფორმა იყენებს მონაცემებთან მუშაობის განსხვავებულ პარადიგმას, რომელიც დეველოპერს სთავაზობს აპლიკაციის ობიექტების ტიპების გარკვეულ კომპლექტს (ცნობარები, დოკუმენტები, რეესტრები და ა.შ.). სწორედ ამიტომ, სისტემა, მონაცემთა გარე წყაროების ცხრილებთან მუშაობისას, არ უჭერს მხარს ფუნქციების უმეტესობას, რომელიც თანდაყოლილია მის "მშობლიურ" ობიექტებში. ამიტომ რეკომენდირებულია თავი შეიკავოთ ნებისმიერი ბიზნეს ლოგიკის შემუშავებისგან, VID ცხრილების გამოყენების გათვალისწინებით, თუ ეს არ არის დაკავშირებული არსებულ სისტემებთან ინტეგრაციის ამოცანებთან. ან, მარტივად რომ ვთქვათ, თქვენ უნდა შეეცადოთ თავიდან აიცილოთ მონაცემების შენახვა, რომლებიც აქტიურად გამოიყენება თქვენს აპლიკაციაში გარე სისტემის სხვა ცხრილებში, თუ ისინი არ გამოიყენება ამ სისტემის მიერ.

შემდეგ სტატიაში ჩვენ გადავხედავთ 1C: Enterprise სისტემაში მონაცემთა გარე წყაროების ტექნოლოგიის გამოყენების ლოგიკურ გაგრძელებას.

გამოშვება 8.2.14.533 საბოლოოდ არის პლატფორმის მე-14 გამოშვების მეტ-ნაკლებად სტაბილური ვერსია. დაბოლოს, გაჩნდა შესაძლებლობა, გამოეცადა მშვენიერი შესაძლებლობა - "გარე მონაცემთა წყაროები".

რატომ არის ეს შესაძლებლობა ასეთი საინტერესო? ნებისმიერი ადამიანი, ვინც დაპროგრამებულია 1C-ში და კარგად იცნობს SQL-ს და, სულ მცირე, ზოგადად იცნობს ბიზნეს აპლიკაციებისთვის სხვა ტექნოლოგიური პლატფორმების განვითარების არქიტექტურას და პრინციპებს, მტკიცედ გეტყვით, რა მოსწონს ყველაზე მეტად 1C-ში. რა თქმა უნდა, შეკითხვის შემქმნელი არის ყველაზე მოსახერხებელი და გააზრებული მექანიზმი შეკითხვის დასაწერად რელაციური სტრუქტურებიდან მონაცემების მოსაპოვებლად, რომლებიც მე პირადად ოდესმე შემხვედრია. ახლა კი 1C-მ მოგვცა ასეთი მშვენიერი შესაძლებლობა, გამოვიყენოთ იგი არა მხოლოდ 1C-თან, არამედ ნებისმიერ სხვა ცხრილებთან ერთად. უბრალოდ, ამ "თაფლის კასრში" ბევრი "ბუზებია". პირველ რიგში:

1) დაყენება და გამოყენება - „თამბურთან ცეკვის“ გარეშე არ იმუშავებს

ა) დაამატეთ მონაცემთა გარე წყარო - ეს არ ჩანს რთული
ბ) მონიშნეთ ჩამრთველი „აირჩიეთ სიიდან“ - სავალდებულოა - ეს აუცილებელია თავიდანვე ფუნქციონირების შესამოწმებლად და გიხსნით ზედმეტი პრობლემებისგან.
V)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- დარწმუნდით, რომ დააწკაპუნეთ "..." - კავშირი არის ODBC. არა OLEDB, როგორც ჩვენ ყველა მიჩვეული, მაგრამ ერთი საფეხურით დაბალია

მაგრამ იყავი აქ ᲫᲐᲚᲘᲐᲜ ᲤᲠᲗᲮᲘᲚᲐᲓ.

ეს არის ODBC დრაივერი - თუ იყენებთ კლიენტ-სერვერის ვერსიას, ის უნდა იყოს სერვერზე. თუ თქვენ ვითარდებით ერთ სისტემაზე და მუშაობთ მეორეზე (როგორც ეს ჩვეულებრივ ხდება), დარწმუნდით, რომ სიურპრიზები არ გელოდებათ. უცნაური რეკომენდაციაა, მაგრამ აირჩიეთ უძველესი ან ყველაზე გავრცელებული დრაივერი, თუ განსაკუთრებით არ გაინტერესებთ სიჩქარე და არ აპირებთ SQL92 სტანდარტის შესაძლებლობებს გასცდეთ. ეს მოგცემთ უკეთეს თავსებადობას. მაგალითად, SQL Server 2008-ისთვის საუკეთესო დრაივერი იქნება SQL Server Native Client 11, მაგრამ გირჩევთ აირჩიოთ მხოლოდ SQL Server, წინააღმდეგ შემთხვევაში ეს ძალიან მშობლიური კლიენტი უნდა იყოს დაინსტალირებული სერვერზე ან ყველა კლიენტის აპარატზე (თუ იყენებთ ფაილის ვერსია), და სარგებელი განსაკუთრებულია იმისთვის, რომ ის არ მოგცემთ რაიმე დავალებას.

ე) სტანდარტული სერვერის შერჩევის დიალოგები

ზ) აირჩიეთ ცხრილი და დეტალები... მშვენიერი შესაძლებლობა - შეგიძლიათ დაუყოვნებლივ გადაარქვათ სახელი, როგორც გსურთ (და დეტალებიც) და თვისებებში ნახავთ მონაცემთა წყაროს ველების სახელებს.

ზ) ახლა კი გაუშვით, გახსენით შეკითხვის დიზაინერი - სულელურად შეარჩიეთ ყველა ჩანაწერი ცხრილიდან და OPA - შეცდომა. Რა უნდა ვქნა? თუ თქვენ გაქვთ მართული ინტერფეისი, გადახედეთ სერვისის მენიუს და თუ ჩვეულებრივი...
მე პირადად გამოვიყენე ეს კოდი:

პარამეტრები = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
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(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();

ზოგიერთი ნაწილი შეიძლება არ იყოს საჭირო, მაგრამ მუშაობს. თქვენ უნდა გაუშვათ კოდი ერთხელ. რის შემდეგაც ნორმალური იქნება დაკავშირება... მისტიკა რა თქმა უნდა - რატომ იყო ეს საჭირო, გაუგებარია...

2) მხოლოდ წაკითხული მონაცემთა წყაროები
დიახ, სასწაულები არ ხდება... მაგრამ ხანდახან ასე გინდა...

3) მათი გამოყენება არ შეიძლება მონაცემთა შიდა წყაროებთან ერთად
მე პირადად ამ ფაქტმა ადგილზე მომკლა.

როგორ შეიძლება ეს ასე იყოს... რასაც ველოდით და უკვე წარმოვიდგინეთ და ტუჩები მოვილოკა, თუ როგორ გავაერთიანოთ ჩვენი მონაცემები 1C-თან ერთ მოთხოვნაში, დავშალოთ - დაჯგუფება, ჩასმა ანგარიშში, მაგრამ ეს არ არის საქმე...

მაგრამ რა თქმა უნდა ეს არ აჩერებს გამოცდილ ადამიანებს... რა აზრი მოუვიდა თავში? მართალია - დროებითი ცხრილები:

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";
დაასრულე თუ;

CN = New QualifiersNumbers(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = ახალი მასივი();
ArrayNumber.Add(Type("Number"));

ArrayString = ახალი მასივი();
ArrayString.Add(Type("String"));

ArrayData = ახალი მასივი();
ArrayDate.Add(Type("თარიღი"));

//აღრიცხვის ღირებულებას შევავსებთ ცხრილში
TypeNumber = New DescriptionTypes(ArrayNumber, CN);
TypeString = New TypeDescription(ArrayString, KS);
TypeDate = New TypeDescription(ArrayDate);

//ცხრილი SQL-დან მონაცემების ჩატვირთვისთვის
TZ = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("პერიოდი", DateType);

TK.Indices.Add("პერიოდი");

//SQL-თან დაკავშირება
კავშირის სტრიქონი = "პროვაიდერი=SQLOLEDB.1; მუდმივი უსაფრთხოების ინფორმაცია=True;მომხმარებლის ID=sa;Pwd=;მონაცემთა წყარო=;მომზადების პროცედურის გამოყენება=1;ავტომატური თარგმნა=True;პაკეტის ზომა=4096;სამუშაო სადგურის ID=;გამოყენება დაშიფვრა Data=False;Tag სვეტების დალაგებით როცა ეს შესაძლებელია=False;Initial Catalog=Reports";
კავშირი = ახალი COMObject ("ADODB.Connection");
Command = New 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();
გამონაკლისი
ტექნიკური მახასიათებლების დაბრუნება;
ბოლო მცდელობა;

ხოლო RecordSet.EOF = False Loop
ხაზი = TZ.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
საბოლოო ციკლი;

მოთხოვნა = New Request();
VrTable = New TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter ("დაწყების თარიღი", დაწყების თარიღი);
Request.SetParameter ("DataCon", DateCon);
Query.Text = "SELECT
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|ადგილის მონაცემთა ცხრილი
|საიდან
| &vDataTable AS vrDataTable
|სად
| vrDataTable.Period >= &DateStart
| და vrDataTable.Period Query.Execute();
TZ = განუსაზღვრელი;

მოთხოვნა = ახალი მოთხოვნა;
Query.TemporaryTableManager = VrTable;
Query.Text = "აქ არის შეკითხვა, რომელიც მოიცავს ცვლად ცხრილს";

შედეგი = Query.Run();
დაბრუნების შედეგი;

საბოლოო ფუნქცია

ExternalSet = InitializeDataSource();
DataSet = new Structure();
DataSet.Insert("SQL Table", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

სინამდვილეში, კოდის ბევრი სტრიქონი არ არის და ისინი საკმაოდ სტანდარტულია... ამ შემთხვევაში შეგიძლიათ გამოიყენოთ შეკითხვის დიზაინერის სრული ფუნქციონირება და მხოლოდ DATA COMPOSITION ფუნქცია მისცეთ ACS-ს.

მაგრამ, რა თქმა უნდა, არც ისე ლამაზად გამოიყურება... და ყოველთვის, როცა დაგჭირდებათ კოდის დაწერა, რომ ატვირთოთ მნიშვნელობები ცხრილში და შეამოწმოთ, დაუშვით თუ არა შეცდომა დეტალების სახელში... და რა მოგვცეს 1C გამოიყურება რაღაცნაირად ნახევრად. ჯერ არ გადამიწყვეტია რომელი უფრო მოსახერხებელია გამოსაყენებლად. თქვენ გადაწყვიტეთ და დაწერეთ თქვენი გადაწყვეტილებების შესახებ და რამ გიბიძგათ მათკენ.

[ლინკის სანახავად უნდა დარეგისტრირდეთ]

რატომ არის ეს შესაძლებლობა ასეთი საინტერესო? ნებისმიერი ადამიანი, ვინც დაპროგრამებულია 1C-ში და კარგად იცნობს SQL-ს და, სულ მცირე, ზოგადად იცნობს ბიზნეს აპლიკაციებისთვის სხვა ტექნოლოგიური პლატფორმების განვითარების არქიტექტურას და პრინციპებს, მტკიცედ გეტყვით, რა მოსწონს ყველაზე მეტად 1C-ში. რა თქმა უნდა, შეკითხვის შემქმნელი არის ყველაზე მოსახერხებელი და გააზრებული მექანიზმი შეკითხვის დასაწერად რელაციური სტრუქტურებიდან მონაცემების მოსაპოვებლად, რომლებიც მე პირადად ოდესმე შემხვედრია. ახლა კი 1C-მ მოგვცა ასეთი მშვენიერი შესაძლებლობა, გამოვიყენოთ იგი არა მხოლოდ 1C-თან, არამედ ნებისმიერ სხვა ცხრილებთან ერთად. უბრალოდ, ამ "თაფლის კასრში" ბევრი "ბუზებია". პირველ რიგში:

1) დაყენება და გამოყენება- "თამბურთან ცეკვის" გარეშე არ იმუშავებს
ა) დაამატეთ გარე მონაცემთა წყარო - ეს არ ჩანს რთული
ბ) მონიშნეთ ჩამრთველი „აირჩიეთ სიიდან“ - სავალდებულოა - ეს აუცილებელია თავიდანვე ფუნქციონირების შესამოწმებლად და გიხსნით ზედმეტი პრობლემებისგან.
გ) - აუცილებლად დააწკაპუნეთ "..." - კავშირი არის ODBC. არა OLEDB, როგორც ჩვენ ყველა მიჩვეული, მაგრამ ერთი საფეხურით დაბალია

დ) მაგრამ აქ იყავით ძალიან ფრთხილად.

ეს არის ODBC დრაივერი - თუ იყენებთ კლიენტ-სერვერის ვერსიას, ის უნდა იყოს სერვერზე. თუ თქვენ ვითარდებით ერთ სისტემაზე და მუშაობთ მეორეზე (როგორც ეს ჩვეულებრივ ხდება), დარწმუნდით, რომ სიურპრიზები არ გელოდებათ. უცნაური რეკომენდაციაა, მაგრამ აირჩიეთ უძველესი ან ყველაზე გავრცელებული დრაივერი, თუ განსაკუთრებით არ გაწუხებთ სიჩქარე და არ აპირებთ SQL92 სტანდარტის შესაძლებლობებს გასცდეთ. ეს მოგცემთ უკეთეს თავსებადობას. მაგალითად, SQL Server 2008-ისთვის საუკეთესო დრაივერი იქნება SQL Server Native Client 11, მაგრამ მე გირჩევთ აირჩიოთ მხოლოდ SQL Server, წინააღმდეგ შემთხვევაში ეს ძალიან მშობლიური კლიენტი უნდა იყოს დაინსტალირებული სერვერზე ან ყველა კლიენტის აპარატზე (თუ იყენებთ ფაილის ვერსია), და სარგებელი განსაკუთრებულია იმისთვის, რომ ის არ მოგცემთ რაიმე დავალებას.
ე) სტანდარტული სერვერის შერჩევის დიალოგები

ე) გირჩევთ უპასუხოთ „დიახ“ შეკითხვაზე პაროლის შენახვის შესახებ, წინააღმდეგ შემთხვევაში თქვენ ვერ შეძლებთ ამ ბიზნესის წამოწყებას.
ზ) აირჩიეთ ცხრილი და დეტალები... მშვენიერი შესაძლებლობა - შეგიძლიათ დაუყოვნებლივ გადაარქვათ სახელი, როგორც გსურთ (და დეტალებიც) და თვისებებში ნახავთ მონაცემთა წყაროს ველების სახელებს.

ზ) ახლა თქვენ გაუშვით, გახსენით შეკითხვის დიზაინერი - სულელურად შეარჩიეთ ყველა ჩანაწერი ცხრილიდან და OPA - შეცდომა. Რა უნდა ვქნა? თუ თქვენ გაქვთ მართული ინტერფეისი, გადახედეთ სერვისის მენიუს და თუ ჩვეულებრივი...
მე პირადად გამოვიყენე ეს კოდი:
კოდი 1C v 8.x პარამეტრები = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
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(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
ზოგიერთი ნაწილი შეიძლება არ იყოს საჭირო, მაგრამ მუშაობს.
თქვენ უნდა გაუშვათ კოდი ერთხელ. რის შემდეგაც ნორმალური იქნება დაკავშირება... მისტიკა რა თქმა უნდა - რატომ იყო ეს საჭირო, გაუგებარია...

2) მხოლოდ წაკითხული მონაცემთა წყაროები- დიახ, სასწაულები არ ხდება... მაგრამ ხანდახან გინდა...

3) მათი გამოყენება არ შეიძლება მონაცემთა შიდა წყაროებთან ერთად
მე პირადად ამ ფაქტმა ადგილზე მომკლა.

როგორ შეიძლება ეს ასე იყოს... რასაც ველოდით და უკვე წარმოვიდგინეთ და ტუჩები მოვილოკა, თუ როგორ გავაერთიანოთ ჩვენი მონაცემები 1C-თან ერთ მოთხოვნაში, დავშალოთ - დაჯგუფება, ჩასმა ანგარიშში, მაგრამ ეს არ არის საქმე...
მაგრამ რა თქმა უნდა ეს არ აჩერებს გამოცდილ ადამიანებს... რა აზრი მოუვიდა თავში? მართალია - დროებითი ცხრილები:

4) მათი გამოყენება არ შეიძლება დროებით მაგიდებთან ერთად

მაგრამ ეს აღარ ჰგავს ტექნოლოგიურ სირთულეებს, მაგრამ ძალიან ჰგავს იმას, რაც მათ უნდათ, რომ ჩვენ გავაკეთოთ "ისე, რომ ცხოვრება სამოთხედ არ ჩანდეს" :).

5) შეიძლება გამოყენებულ იქნას მხოლოდ ACS კავშირებში
მათთვის, ვინც არ იცის, ეს არის ACS ჩანართზე "მონაცემთა ნაკრების ბმულები". ხშირად იყენებთ მათ? კომფორტული? როგორც ჩანს, უნდათ აიძულონ, უფრო ხშირად გამოვიყენოთ ისინი. მხოლოდ აქ არის სვეტი "კომუნიკაციის მდგომარეობა" და "კომუნიკაციის პარამეტრი". მე ვერ ვიპოვე მათი გამოყენების მაგალითი არცერთ სტანდარტულ კონფიგურაციაში და რატომღაც ყველაფერი არ არის გამჭვირვალე დოკუმენტაციაში და ხრუსტალევას ნამუშევრებშიც. ვინმეს შეუძლია ამიხსნას როგორ მუშაობს "დაკავშირების მდგომარეობა". თუ იქ დაწერთ Source Attributes = Receiver Attributes, არ მუშაობს. რა თქმა უნდა, პირობა შეიძლება ჩაიწეროს "გამოხატვა" ველში - უმეტეს შემთხვევაში ეს საკმარისია ... მაგრამ რატომღაც ეს არ გამოდის ძალიან მარტივად.

საერთო ჯამში, ეს პრობლემა ადრე მოგვარდა სადღაც ასე:
კოდი 1C v 8.x ფუნქცია InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
თუ DataCon > "20100101" მაშინ
DataCon = "20100101";
დაასრულე თუ;

CN = New QualifiersNumbers(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = ახალი მასივი();
ArrayNumber.Add(Type("Number"));

ArrayString = ახალი მასივი();
ArrayString.Add(Type("String"));

ArrayData = ახალი მასივი();
ArrayDate.Add(Type("თარიღი"));

//აღრიცხვის ღირებულებას შევავსებთ ცხრილში
TypeNumber = New DescriptionTypes(ArrayNumber, CN);
TypeString = New TypeDescription(ArrayString, KS);
TypeDate = New TypeDescription(ArrayDate);

//ცხრილი SQL-დან მონაცემების ჩატვირთვისთვის
TZ = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("პერიოდი", DateType);

TK.Indices.Add("პერიოდი");

//SQL-თან დაკავშირება
კავშირის სტრიქონი = "პროვაიდერი=SQLOLEDB.1; მუდმივი უსაფრთხოების ინფორმაცია=True; მომხმარებლის ID=sa;Pwd=;მონაცემთა წყარო=;გამოიყენეთ პროცედურა მოსამზადებლად=1;ავტომატური თარგმნა=True;პაკეტის ზომა=4096;სამუშაო სადგურის ID=;გამოიყენეთ დაშიფვრა Data=False;Tag სვეტების დალაგებით როცა ეს შესაძლებელია=False;Initial Catalog=Reports";
კავშირი = ახალი COMObject ("ADODB.Connection");
Command = New COMObject ("ADODB.Command");
RecordSet = ახალი COMObject ("ADODB.RecordSet");
თარიღი = "";
მცდელობა
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = კავშირი;
Command.CommandText = "S_elect * fr om PH h ere period >= "" + String(Format(DateStart, "DF=yyyyMMdd"))) + "" და წერტილი<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
გამონაკლისი
ტექნიკური მახასიათებლების დაბრუნება;
ბოლო მცდელობა;

ხოლო RecordSet.EOF = False Loop
ხაზი = TK.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
საბოლოო ციკლი;

მოთხოვნა = New Request();
VrTable = New TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter ("დაწყების თარიღი", დაწყების თარიღი);
Request.SetParameter ("DataCon", DateCon);
Query.Text = "SELECT
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|ადგილის მონაცემთა ცხრილი
|საიდან
| &vDataTable AS vrDataTable
|სად
| vrDataTable.Period >= &DateStart
| და vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = განუსაზღვრელი;

მოთხოვნა = ახალი მოთხოვნა;
Query.TemporaryTableManager = VrTable;
Query.Text = "აქ არის შეკითხვა, რომელიც მოიცავს ცვლად ცხრილს";

შედეგი = Query.Run();
დაბრუნების შედეგი;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = new Structure();
DataSet.Insert("SQL Table", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

სინამდვილეში, კოდის ბევრი სტრიქონი არ არის და ისინი საკმაოდ სტანდარტულია... ამ შემთხვევაში შეგიძლიათ გამოიყენოთ შეკითხვის დიზაინერის სრული ფუნქციონირება და მხოლოდ DATA COMPOSITION ფუნქცია მისცეთ ACS-ს.

მაგრამ, რა თქმა უნდა, არც ისე ლამაზად გამოიყურება... და ყოველთვის, როცა დაგჭირდებათ კოდის დაწერა, რომ ატვირთოთ მნიშვნელობები ცხრილში და შეამოწმოთ, დაუშვით თუ არა შეცდომა დეტალების დასახელებაში... და რა მოგვცეს 1C გამოიყურება რაღაცნაირად ნახევრად. ჯერ არ გადამიწყვეტია რომელი უფრო მოსახერხებელია გამოსაყენებლად. თქვენ გადაწყვიტეთ და დაწერეთ თქვენი გადაწყვეტილებების შესახებ და რამ გიბიძგათ მათკენ.

ინფორმაცია აღებულია საიტიდან

მონაცემთა გარე წყაროები 1C - შედარებით ახალი მეტამონაცემების ობიექტი 1C 8.3 და 8.2, რომლითაც შესაძლებელია 1C გარე მონაცემთა წყაროებთან დაკავშირება: SQL ცხრილები, Excel, Access, FoxPro (dbf), სხვა 1C მონაცემთა ბაზა, Oracle, Paradox (db) , - და თუნდაც მარტივი txt/csv ფაილებიდან კითხვა.

ეს იძლევა ბევრ შესაძლებლობას სხვა სისტემებთან. მოდით უფრო ახლოს მივხედოთ.

გარე მონაცემთა წყაროების დაყენება 1C 8-ში

გარე წყაროების დაყენება ინდივიდუალურია თითოეული ტიპის სისტემისთვის. მაგრამ, როგორც წესი, დაყენების ზოგადი ნაწილი იგივეა - ეს არის კავშირის სტრიქონის დაყენება:

მიიღეთ 267 ვიდეო გაკვეთილი 1C-ზე უფასოდ:

თუ კავშირის სტრიქონი სწორად არის მითითებული, სისტემა მოგთხოვთ აირჩიოთ სასურველი ცხრილი მონაცემთა ბაზიდან. შედეგად, ჩვენ მივიღებთ მზა ცხრილს, რომელშიც შეგვიძლია მივუთითოთ საკვანძო ველი (უნიკალური ველი) და პრეზენტაციის ველი (როგორ აისახება ჩანაწერი 1C-ში):

მონაცემთა გარე წყაროების გამოყენება 1C-ში 8.3

მონაცემთა გარე წყაროები 1C-ში შეიძლება გამოყენებულ იქნას მონაცემთა ბაზის სხვა ცხრილების მსგავსად. პლატფორმა ავტომატურად ქმნის მათთვის ფორმას, თუ ის არ არის მითითებული. ასევე შესაძლებელია გარე წყაროებიდან მიღებული მონაცემების გამოყენება შეკითხვებში.


დახურვა