1c низ за връзка с външен източник на данни. Външни източници на данни

Във версия 8 на програмата 1C разработчиците добавиха към функционалността възможността за свързване на бази данни на трети страни и получаване на информация от тях директно от конфигуратора, без използване на COM връзки и OLE обекти. Тази функция се реализира с помощта на нов обект - „Външни източници на данни“

Външните източници на данни в 1C могат да се използват по същия начин като другите таблици в системата:

  1. При създаване на отчети и изчисления с помощта на система за съставяне на данни (DCS);
  2. За получаване на връзки към информация, съхранявана в източници на трети страни;
  3. За промяна на данни, съхранявани в таблици;
  4. При генериране на заявки.

Важно е да знаете, че този механизъм не е предназначен да работи с други 1C бази данни, тъй като самият операционен модел 1C.Enterprise не предполага намеса в данните на ниво физически таблици.

Създаване на нов източник

Добавянето на нов външен източник към програмата става в режим „Конфигуратор“. Има съответен клон в конфигурационното дърво (фиг. 1)

Ще трябва да работите усилено, когато създавате нов източник, въпреки факта, че формата на новия обект има само четири раздела:

  1. Основен;
  2. Данни;
  3. Функции;
  4. права.

Първият раздел има само един интересен параметър - режимът на управление на заключването. Ако нямате въпроси относно блокирането на данни в транзакции или тънкостите на паралелизиране на информационните потоци, можете да оставите тази опция в режим на автоматично блокиране. Подобен подход обаче може да доведе до прекомерни ограничения (например, когато вместо отделен запис програмата заключи цялата физическа таблица, лишавайки другите потребители от възможността да работят с нея).

Управляваните заключвания, за разлика от автоматичните, използват механизма за транзакции, присъщ на самата програма, а не на СУБД, което позволява прехвърлянето на заснеманията на таблици на много по-ниско ниво.

Като зададем този параметър на „Автоматично и управлявано“, ние предоставяме на системата възможността да определи кой режим да използва чрез директен достъп до подобно свойство за всяка конкретна таблица.

Раздел „Данни“ на формуляра за свойства на външен източник

Формата на раздела „Данни“ е показана на фиг. 2

Ориз. 2

Тук можем да добавим външни изходни таблици и кубове. Има два начина за добавяне на таблица:

  1. Ръчно, тогава пред нас ще се отвори формата за добавяне на таблица (фиг. 3);

Ориз. 3

  1. Или изберете от списъка с физически изходни таблици (фиг. 4), като в този случай пред нас се отваря специален конструктор.

Ориз. 4

Нека разгледаме по-отблизо формата за добавяне на таблица. Свойството „Име“ се използва за уникално идентифициране на обект в конфигурацията.

Сравнението на обекта с метаданни и крайната физическа таблица става чрез свойството „Име в източника на данни“, намиращо се в раздела „Разширени“ (фиг. 5)

Ориз. 5

След това трябва да определим вида на таблицата или по-скоро нейната обективност. Ако данните, съхранявани в дадена структура, могат да бъдат уникално идентифицирани чрез всяко едно поле, таблицата може да бъде обектна. Ако индивидуалността на запис се определя от набор от ключови полета, таблицата трябва да има необектен тип.

Сравнявайки такива таблици с други обекти на метаданни, може да се даде следната аналогия:

  • Обектните таблици са справочници;
  • Необектните са информационните регистри.

Наборът от ключови полета е дефиниран в следващия параметър на формуляра („Ключови полета“). Това поле е задължително; ако го оставите празно, запазването на конфигурацията няма да бъде успешно.

Както се вижда от фиг. 5, някои полета и бутони на формата не могат да се редактират:

  • Изразяване в източник на данни;
  • Тип данни на таблицата;
  • Презентационно поле;
  • Преглед на манипулатори.

Те могат да бъдат използвани само след като попълним полетата на таблицата, дефинираме техния тип и им зададем идентификатори (фиг. 6)

Ориз. 6

Тук трябва да обърнете внимание на параметъра „Allow Null“; ако това квадратче е отметнато, не е препоръчително да използвате такова поле като ключ.

Конструктор на маса

Може би най-важният и интересен момент при работата с външни източници е създаването на низ за връзка. Неговият конструктор се отваря, ако щракнете върху бутона с три точки до параметъра „Свързващ низ“.

На първо място, ще бъдем помолени да вземем решение за драйвера, който ще се използва за връзка (фиг. 7)

Ориз. 7

Неправилната дефиниция на този параметър няма да ви позволи да се свържете с информационна база на трета страна. Трябва също да разберете, че не всички драйвери, посочени в падащия списък, могат да се използват за автоматично генериране на низ за връзка. Ако платформата генерира грешка (фиг. 8), тогава низът за връзка ще трябва да бъде въведен ръчно.

Фиг.8

Ориз. 9

Самата линия е строго регламентирано строителство.

Примерен низ за връзка

Нека разгледаме база данни на трета страна, създадена в Microsoft Access и разположена в корена на устройство D. За да свържем тази база данни, трябва да използваме подходящия драйвер, но избирането му в конструктора на редове води до грешка Фиг. 8.

Ние сами ще настроим параметрите на връзката.

Driver=(Microsoft Access Driver (*.mdb)) – така изглежда първата част от реда. Във фигурни скоби дефинирахме драйвера.

За Excel файлове ще изглежда като (Microsoft Excel Driver (*.xls)), за Excel файлове, създадени в офис, по-стар от 2003 г., линията на драйвера ще изглежда като (Microsoft Excel Driver (*.xls, *.xlsx, *. xlsm, *.xlsb)).

Разделяйки този параметър от следващия със запетая, трябва да въведем адреса на нашето хранилище (в нашия случай DBQ=D:\Database1.mdb).

Добавяйки тези два параметъра, получаваме Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb. Като напишем този параметър, получаваме достъп до вътрешните структури на тази база данни.

За обекта „Външен източник“ не е достатъчно само да го създадете в конфигурацията, той също трябва да бъде свързан в режим „Предприятие“. Това може да стане от менюто “Всички функции”->Външни източници. Когато за първи път влезем в нашата таблица, трябва да въведем същия низ за свързване в режим „Enterprise“.

Във версия на платформата 8.3.5.1068 (и по-нова) стана възможно добавянето, промяната и изтриването на данни във външни източници с помощта на софтуера 1C. Примери за тази функция са представени в тази статия.

За да направи възможно записването към външни източници, компанията 1C добави нови свойства към таблици с данни и полета на външни източници:

  • За цялата маса - имот Само четене. Само за четене = Вярноозначава, че промяната на данните в тази таблица е невъзможна;
  • За отделни таблични полета – свойства Само четене, AllowNullИ Попълнете стойност:
    • Само за четене = Вярноозначава, че промяната на данните в това поле е невъзможна;
    • AllowNull = Вярноозначава, че в това поле може да бъде записана стойност НУЛА;
    • Попълнете стойностсъдържа стойността по подразбиране на това поле (ако съществува).

Вие (когато описвате таблици ръчно) или платформата (когато създавате таблици с помощта на дизайнер) можете да използвате тези свойства, както следва.

  • Само за четене = Вярнонабор, например, за изгледи, таблици, получени въз основа на израз (резултат от функция) и други подобни. Данните в такива таблици не могат да бъдат променяни;
  • Само за четене = Вярнопосочете за полета, които се задават автоматично ( АВТОМАТИЧНО УВЕЛИЧАВАНЕ), изчислени полета и други подобни. Данните в такива полета не могат да бъдат променяни;
  • AllowNull = Вярнозададен за всички полета, с изключение на ключови полета и тези, които са описани във външен източник като НЕ НУЛЕВ;
  • Попълнете стойностполетата трябва да бъдат зададени в случай, че външният източник посочва стандартната стойност на това поле (стойност ПО ПОДРАЗБИРАНЕ).

Можете да добавяте, променяте и изтривате данни във външни източници, като използвате вградения език или интерактивно. Вграденият език използва следните методи за управление на таблици за това:

  • CreateRecordSet()- за необектни маси;
  • Нов метод CreateObject()- за обектни маси.

Съответно обектите ExternalDataSourceTableRecordSetИ ExternalDataSourceTableObjectсе появиха нови методи Напиши()И Изтрий().

Добавяне на данни

Когато добавяте данни към външен източник, създавате обект (или набор от записи), задавате стойности на полета и записвате. Има обаче някои функции, за които е полезно да знаете.

Например, ако се опитате да зададете стойността на поле, което има Само за четене = Вярно, ще бъде изведена грешка. И когато пишете директно в базата данни в израза ВМЪКНЕТЕтакива полета ще бъдат пропуснати. Останалите полета съдържат стойностите, които сте им присвоили. Следователно ценностите Нулаи стойностите по подразбиране трябва да бъдат присвоени изрично на полетата.

  • документ за самоличност(AllowNull = True);
  • име(AllowNull = True);
mFeature = ExternalDataSources.TableIm.shop_feature.CreateObject(); mCharacteristic.id = Код; mCharacteristic.name = Име; mCharacteristic.Write();

Изпълнение на изявление Напиши()ще накара манипулатора на събитието да бъде извикан първо Преди записване, тогава се извършва физически запис във външната таблица източник ( ВМЪКНЕТЕ), тогава ще бъде извикан манипулаторът на събитие Когато се записва.

Можете да направите следното с ключовото поле на таблицата с външен източник. Ако едно ключово поле може да се променя, тогава вие „ръчно“ задавате стойността му преди запис. Ако промяната на полето за ключ е забранена, платформата ще получи независимо ключа ВМЪКНЕТЕили веднага след това. Можете да се намесите в този процес, като използвате метода SetLinkNew()преди физическия запис (в манипулатора на събития Преди записване) или веднага след физическия запис (в манипулатора на събития Когато се записва).

Промяна на данни

Когато данните се променят, стойностите на всички полета на таблицата, които имат Само за четене = невярно.

MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",code); mObject = mCharacteristic.GetObject(); mObject.name = Име; mObject.Write();

Ако трябва да запишете само някои полета, можете да посочите списък с тях директно от вградения език, като използвате методите SetWritableFields()И GetWrittenFields().

Изтриване на данни

Изтриването на данни директно изтрива ред от таблица на база данни. В този случай търсенето на препратки към обекта, който се изтрива, не се извършва. Ако такава функционалност е необходима, можете да я програмирате сами в манипулатора на събития ПредиИзтриване().

MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",Код); mObject = mCharacteristic.GetObject(); mObject.Delete();

Транзакции

Четенето на данни от външни източници, както и преди, се извършва извън транзакция, а при писане платформата отваря имплицитна транзакция. В същото време можете да извършвате както четене, така и писане в изрични транзакции, като използвате обектни методи ExternalDataSourceManager:

  • StartTransaction();
  • CommitTransaction();
  • CancelTransaction().

Брави

  • Автоматичен;
  • Управлявана;
  • Автоматично и контролирано.

както и свойството на външната таблица източник Ниво на изолация на транзакция:

Освен това можете независимо да зададете нивото на заключване в метода StartTransaction().

Добавих примери към стандартната статия) Ако имам повече време, ще добавя още примери.

Версия 8.2.14.533 най-накрая е повече или по-малко стабилна версия на 14-то издание на платформата. Най-накрая се появи възможността да изпробвате една чудесна възможност - „външни източници на данни“.

Защо тази възможност е от такъв интерес? Всеки човек, който е програмирал в 1C и е добре запознат с SQL и поне като цяло е запознат с архитектурата и принципите на разработка на други технологични платформи за бизнес приложения, ще ви каже с твърда увереност какво му харесва най-много в 1C. Разбира се, конструкторът на заявки е най-удобният и обмислен механизъм за писане на заявки за извличане на данни от релационни структури, който лично съм срещал. И сега 1C ни даде такава прекрасна възможност да го използваме не само с 1C, но и с всякакви други таблици. Просто тази „бъчва с мед“ има много „мухи в мехлема“. Първо най-важното:

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 = True;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=база данни";
Parameters.DBMS = "MSSQLServer";

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

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";
endIf;

CN = Нови квалификационни числа (15,2);
KS = NewStringQualifiers(255);

ArrayNumber = Нов масив();
ArrayNumber.Add(Type("Number"));

ArrayString = Нов масив();
ArrayString.Add(Type("String"));

ArrayData = Нов масив();
ArrayDate.Add(Тип("Дата"));

//Ще попълним счетоводния разход в таблицата
TypeNumber = Нови типове описания (ArrayNumber, CN);
TypeString = New TypeDescription(ArrayString, KS);
TypeDate = Ново описание на типа(ArrayDate);

//таблица за зареждане на данни от SQL
TZ = Нова таблица със стойности();
TK.Columns.Add("Номенклатурен код", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Период", DateType);

TK.Indices.Add("Период");

//Свързване към SQL
Низ за връзка = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Use Шифроване за данни=False;Етикет със сортиране на колони, когато е възможно=False;Първоначален каталог=Отчети";
Връзка = Нов 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;

Докато 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();
EndCycle;

Заявка = Нова заявка();
VrTable = Нов TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Начална дата", начална дата);
Request.SetParameter("DataCon", DateCon);
Query.Text = "ИЗБЕРЕТЕ
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Поставяне на таблица с данни
| ОТ
| &vDataTable КАТО vrDataTable
|КЪДЕ
| vrDataTable.Period >= &DateStart
| И vrDataTable.Period Query.Execute();
TZ = Недефиниран;

Заявка = Нова заявка;
Query.TemporaryTableManager = VrTable;
Query.Text = "Тук е заявка, включваща таблица с променливи";

Резултат = Query.Run();
Връщане на резултат;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = нова структура();
DataSet.Insert("SQL таблица", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

Всъщност няма много редове код и те са доста стандартни... в този случай можете да използвате пълната функционалност на дизайнера на заявки и да дадете само функцията DATA COMPOSICION на ACS

Но със сигурност не изглежда толкова хубаво... и всеки път, когато трябва да напишете код, за да качите стойности в таблица и да проверите дали сте направили грешка в името на детайлите... и това, което ни беше дадено 1C изглежда някак половинчато. Още не съм решил кое е по-удобно за използване. Вие решавате и пишете за вашите решения и какво ви е подтикнало към тях.

[трябва да се регистрирате, за да видите връзката]

Работете с тях в списъци в режим 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 посочете една от колоните, които ще предоставят уникална идентификация на реда; ако няколко реда осигуряват уникалност, тогава този метод не работи (аналогично на полето Код)
      • В свойството Поле за представяне посочете една от колоните, които ще предоставят кратко представяне на реда (аналогично на полето Име)
      • В свойството Тип данни на таблицата укажете Данни за обекта.

      2. Изглед

      Връзката с отдалечената база не се осъществява автоматично. За да се свържете, трябва да изберете стандартно меню.

      В стандартния клон има специална команда Управление на външни източници на данни, която ви позволява да зададете параметри на връзката (специфични за режим 1C Enterprise) и да осъществите връзка.

      Първо трябва да посочите параметрите за свързване към базата данни.

      Когато направихте настройките в конфигуратора, той ви показа низа за връзка като резултат. Можете да го видите отново, като щракнете отново върху Добавяне на таблица в конфигуратора.

      Копирайте низа за връзка и го посочете в режим 1C Enterprise.

      След това трябва да направите действителната връзка.

      След осъществяване на връзката е възможна работа със списъци.

      3. Използвайте на езика 1C

      Връзката може да се осъществи и от програмен код на езика 1С.

      Параметрите на връзката са посочени, както следва:
      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(Параметри);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Можете да правите заявки за данни от база данни, като използвате обикновен . Пример за текст на заявка за външен източник OurExternalSource и таблици ExternalSource Table:

      ИЗБИРАМ
      ExternalSourceTable.FieldName
      ОТ
      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;
        Трябва да посочите собственото си име и път до файла.

Външни източници на данни 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 могат да се използват като други таблици на бази данни. Платформата автоматично генерира формуляр за тях, ако такъв не е зададен. Също така е възможно да се използват данни от външни източници в заявки.

Публикации по темата