Технологичната платформа 1C:Enterprise 8 ви позволява да запазвате произволни файлове в информационната база, да ги извличате оттам и да ги използвате по различни начини. Нека разгледаме тези операции с примери.

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

За да съхранявате файлове, атрибут (или регистър на ресурс) с типа StorageValues.

Качване на произволен файл в информационната база 1C

Всеки файл може да бъде представен като двоични данни и зареден в него Съхранение на стойност.

При преобразуване на двоични данни в обект StorageValuesизползва се конструкция newStorageValue(данни,компресия)с два варианта:

  1. Данни- двоични данни, които да се съхраняват
  2. Компресия— степен на компресия на алгоритъма за дефлация. Цяло число в диапазона -1…9. -1 е нивото на компресия по подразбиране. 0 - без компресия, 9 - максимално съотношение на компресия. Стойност по подразбиране: -1. Параметърът не е задължителен, ако не е посочен, компресията не се използва.

//Конвертиране на файла в двоични данни
Файл = Нови двоични данни (Път) ;

//Създаване на нов обект ValueStorage

DataStorage = NewValueStorage(Файл, NewDataCompression(9 ) ) ;

Запазване на произволен файл от информационната база 1C на диск

За да запазите файл от базата данни 1C на диск, трябва да определите пътя и името на файла. За да направите това, има диалогов прозорец за запис на файлове, работата с който е описана в .

//Вземете двоични данни от хранилището
//DataStorage - атрибут на обекта с тип ValueStorage

//Запис на получените данни на диска
//Променливата Path съдържа пълния адрес на файла на диска
Данни. Write(Path) ;

Преглед на файл, намиращ се в информационната база 1C

За да видите файл, записан в базата данни, трябва да имате инсталирано приложение на вашия компютър, което отваря този файл.

//Вземете името на временния файл с необходимото разширение
//В променливата Разширение трябва да поставите разширението на файла, например "pdf"
Path= GetTemporaryFileName(Extension) ;

// Вземете данни от хранилището
//DataStorage - атрибут на обекта с тип ValueStorage
Данни = Datastore. Get() ;

//Запис на данни във временен файл
Данни. Write(Path) ;

//Опитайте се да отворите файла в предназначеното за него приложение
//Ако приложението не бъде намерено, ще се появи системният диалогов прозорец "Отвори с...".
StartApplication(Path);

Печат (Ctrl+P)

IN този разделописва най-често срещаните опции за използване на механизма за работа с временно съхранение и файлове.

Запазване на данни от файл във временно хранилище

Поставяне на един файл

Методът PlaceFile() поставя файл от локалната файлова система във временно хранилище. Методът може да приеме адрес във временно хранилище, където трябва да бъде записан файлът. Ако адресът не е дефиниран или е празен низ, тогава ще бъде създаден нов адрес и методът ще го върне чрез специален параметър.
Забележка. Количеството данни, преместено между клиента и сървъра при едно извикване на метода PlaceFile().
Ако параметърът, който определя интерактивния режим на работа, е True, тогава методът ще покаже стандартен диалогов прозорец за избор на файл, в който можете да изберете файл за съхранение в хранилището. В този случай методът ще върне и адреса на избрания файл.
В резултат на това методът връща False, ако потребителят интерактивно откаже да извърши операцията в диалоговия прозорец за избор на файл.

Поставяне на набор от файлове

Метод PlaceFiles()поставя множество файлове във временно хранилище в едно повикване. Има няколко различни начиниизползвайки този метод:
● предварително формиране на списък с файлове за добавяне, например при предварителен избор на файловете за поставяне в информационната база;
● подайте маска за търсене на файл към метода, например, когато се изисква да поставите всички файлове от определен тип в информационната база, например всички снимки;
● предаване на предварително подготвен обект към метода Диалогов прозорец за избор на файлв режим на отваряне на файл.
Когато приключи, методът може да върне списък с действително добавени файлове.

// FileList е атрибут на формуляр от типа ValueList,
// съдържащ списък с файлове за добавяне
FileArray = Нов масив;
За всеки ItemList от FileList цикъл
Масив от файлове.Add(Ново описание на прехвърления файл(ListItem,));
EndCycle;
PlacedFiles= Нов масив;
Резултат = PutFiles(FileArray, PutFiles, False, UniqueIdentifier);

Забележка 1. За да използвате метода PlaceFiles()в уеб клиента трябва да свържете разширението за работа с файлове.
Бележка 2: Количеството данни, преместено между клиент и сървър на извикване на метод PlaceFiles(), не трябва да надвишава 4 Gb (в сериализирана форма).

Поставяне на данни във временно хранилище

Методът е подобен на метода PutFile(), с изключение на това, че данните за запис във временно хранилище
не са представени като път към файлова система, но като стойност. По същия начин, ако във временното хранилище не е указан съществуващ адрес, се създава нов адрес. Адресът се връща като резултат от функцията. Както при файловете, публикуваните данни трябва да принадлежат към формуляр и се изтриват автоматично, когато бъдат изтрити.
Забележка.Количеството данни, преместени между клиент и сървър за извикване на метод PlaceInTempStorage(), не трябва да надвишава 4 Gb (в сериализирана форма).
внимание!Когато се постави във временно съхранение, стойността всъщност не се сериализира. Поставя се връзка към стойността и се съхранява в кеша за 20 минути. След този период стойността се сериализира, записва се на диск (съхранение на сесии) и се премахва от кеша.

Извличане на данни от временно хранилище

Когато пишете обект в информационна база, може да се наложи да извлечете данни от временно хранилище и да ги поставите, например, в атрибут на обект на информационна база. За това има специален метод - GetFromTemporalStorage(). Този метод извлича данни от временно хранилище и ги връща в резултат на изпълнение. За да получите данни, трябва да посочите адреса във временния
съхранение. Този адрес се връща от методите за поставяне на данни във временно хранилище, ако успеят (вижте предишните раздели).
внимание!Когато извличате стойност от временно хранилище на сървъра, имайте предвид, че тя се получава чрез препратка. Всъщност тази връзка сочи към стойност, която се съхранява в кеша. В рамките на 20 минути, от момента, в който е била поставена в хранилището или от момента, в който е имало последен достъп, стойността ще бъде съхранена в кеша, след което ще бъде записана на диска и премахната от кеша. Следващият път, когато бъде достъпен, стойността се зарежда от диска и се поставя обратно в кеша.
След десериализация и възстановяване на стойността от временното хранилище препратките не се възстановяват. Стойността в кеша се възстановява от диска. Но след сериализация / десериализация е невъзможно да се възстановят препратки към други обекти в стойността.

Изтриване на данни от временно хранилище

След като данните бъдат записани в атрибута на обекта на информационната база, данните във временното хранилище могат да бъдат изтрити. Има метод за това
DeleteFromTempStorage(),който извършва изтриването. Методът приема като параметър адрес във временно хранилище.

Проверка дали даден адрес принадлежи към временно хранилище

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

Получаване на адреса на реквизита

След като данните се поставят в атрибута на обекта на информационната база, може да се наложи достъп до тях чрез файлови методи.
Но преди да получите данни, например от даден атрибут, трябва да получите адреса на този атрибут. Има метод за това getnavlink().

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

Получаване на файл от информационната база

Получаване на един файл

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

Получаване на набор от файлове

Методът GetFiles() ви позволява да получите и запазите няколко файла, съхранени в информационната база в локалната файлова система на потребителя. Списъкът с качени файлове се предава като параметър.

// FileList - списък със стойности, съдържащи препратки към елементи
// директория, където се намират качените файлове
// Представянето на списъка със стойности е името на качения файл
FileArray = Нов масив;
За всеки ItemList от FileList цикъл
Файл = Нов File(String(ListItem.Value));
GetFile = Ново Описание на прехвърления файл;
GetFile.Name = ListItem.View;
GetFile.Storage= П getNavigationLink(ListItem.Value, “Данни”);
FileArray.Add(GetFile);
EndCycle;
Получени файлове= Нов масив;
Резултат = GetFiles(FileArray, GetFiles, UploadFilesPath, False);
Ако НЕ Резултат Тогава
Съобщение = Ново Съобщение до потребителя;
Съобщение.Текст = „Грешка при получаване на файлове!“;
Message.Notify();
EndIf ;

Когато приключи, методът може да върне списък с действително качени файлове, като посочи пълното име на всеки записан файл.
ЗАБЕЛЕЖКА. За да използвате метода GetFiles() в уеб клиента, трябва да свържете файловото разширение. Ако свойството име на обект Описание на прехвърлянето на файловесъдържа абсолютен път към файла, файлът ще бъде записан на този път, като параметърът се игнорира LocationFiles.
Параметърът FileLocation може да бъде или път в локалната файлова система, или FileSelect Dialog обект в режим на избор на директория или запис на файлове. Ако като стойност на параметър LocationFilesпосочен обект Изберете диалогов прозорец за файловев режим
запишете файлове, след което:

● диалоговият прозорец ще бъде извикан за всеки файл, който се прехвърля, с изключение на онези файлове, за които свойството Име на обект Описание на прехвърляния файл съдържа абсолютен път;
● като първоначално име на файл в диалоговия прозорец ще се използва стойността на свойството Име на обекта Файл, който се прехвърля Описание;
● ако не е избрано записване за който и да е файл, тогава името на свойството на обекта SubmittedFileDescription ще съдържа празен низ;
● методът GetFiles() ще върне True, ако поне един файл е получен успешно;
● имайте предвид, че действителното получаване на файлове се извършва след като потребителят отговори на въпросите за посочване на име и път
всички получени файлове;
● ако потребителят, от чието име се изпълнява методът GetFiles(), няма право на преглед за поне един атрибут на обекта на информационната база, от който се получават файловете, цялата операция ще бъде неуспешна.
Пример:

TransferredFiles = Нов масив;
Описание = Ново Описание на прехвърлянето на файлове(„Описание“, адрес на файл);
TransferredFiles.Add(Описание);
FileSelection = Нов FileSelectDialog(FileSelectDialogMode.Save);
Изберете File.Header= “Запазване на архив”;
Изберете File.Extension= "цип";
Изберете Файл. Филтър= “Архив(*.zip)|*.zip|Всички файлове|*.*”;
FileSelection.FilterIndex = 0;
GetFiles(TransmittedFiles, FileSelect, False);

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

Пример за използване на файлови методи

// Вземете файла интерактивно от диска
// и поставянето му във временно хранилище.
&При клиент
Процедура SelectFileCDDiskAndWrite()
Променлива SelectedName;
Rem Адрес за временно съхранение;
NewObject = Object.Reference.Empty();
Ако PutFile(TempStorageAddress, “”, SelectedName, True)Тогава
Object.FileName = SelectedName;
PlaceObjectFile(AddressTemporaryStorage);
EndIf;
EndProcedure
// Копиране на файл от временно хранилище в подпори
// директория, писане на обект, изтриване на файл от временна
// съхранение.
&На сървъра
Процедура PlaceObjectFile(TempStorageAddress)
Елемент на директория = FormAttributeToValue("Обект");
Двоични данни = GetFromTemporaryStorage(AddressTemporaryStorage);
Каталог Element.FileData= Ново StoreValues(BinaryData, New DataCompression());
Файл = Нов File(DirectoryItem.FileName);
Catalog Element.FileName = File.Name;
ElementDirectory.Write();
модифициран = невярно;
DeleteFromTemporaryStorage(AddressTemporaryStorage);
ValueVFormAttribute(DirectoryItem, “Object”);
EndProcedure
// Прочетете файла от props и го запазете
// На местен дискинтерактивно.
&При клиент
Процедура ReadFileAndSaveToDisk()
Адрес = GetNavigationLink(Object.Link,”FileData”);
GetFile(Address, Object.FileName, True);
EndProcedure

Разрешение за извършване на група файлови операции

Когато извършвате някои операции в уеб клиента, може да се наложи да получите разрешение за няколко файлови операции.
Например, трябва да извлечете документ от информационна база и след това да отворите записания документ, като използвате свързаното приложение.
За да извършите тази операция, ще трябва да отговорите на въпроса за запазване на документа и на въпроса за необходимостта от стартиране. Ако има повече операции, ще има и повече въпроси за потребителя.
За да намалите броя на въпросите, можете да използвате метода. При използване на този метод
на потребителя се показва списък с всички операции, които са планирани да бъдат изпълнени, и се подканва да разреши изпълнението на група от операции. Ако потребителят е разрешил изпълнението, тогава заявените операции ще бъдат изпълнени без допълнителни заявкипотребител. Ако не бъде дадено разрешение, операциите ще се извършват в нормален режим: една заявка за операция.
ЗАБЕЛЕЖКА. За да използвате метода RequestUserPermission()в уеб клиента трябва да свържете разширението за работа с файлове.
Помислете за пример за използване на метода:

Ако ConnectFileWorkingExtension()Тогава
Link = GetNavigationLink(Object.Link, “FileData”);
// Формиране на описанието на прехвърлените файлове (в този случай има само един файл)
Прехвърлени файлове= Нов масив;
Описание = Ново описание на TransferredFile(Object.FileName, Link);
TransferredFiles.Add(Description);
// Подгответе обект за получаване на информация за получените файлове
Прехвърлени файлове= Нов масив;

// Дефиниране на други параметри на метода
CatalogConservation= "c:\temp";
интерактивен = невярно;
TransferredFileName = SaveDir + “\” + Object.FileName;
// Подгответе описание на методите за получаване на разрешения
Методи = Нов масив;

Methods.Add("GetFiles");
Methods.Add(UploadedFiles);
Methods.Add(SubmittedFiles);
Methods.Add(SaveDirectory);
Methods.Add(Interactive);
Methods.Add(Нов масив);
Methods.Add("StartApplication");
Methods.Add(UploadedFileName);
Ако не RequestUserPermission(Методи)Тогава
alert("Потребителят отказа разрешение.");
Връщане;
EndIf;
GetFiles(UploadedFiles, UploadedFiles, SaveDir, Interactive);
StartApplication(Име на PassedFile);
В противен случай
Предупреждение ("Изпълнението не се поддържа. Файловото разширение не е инсталирано.");
EndIf;

Трябва да се отбележат няколко характеристики на метода. RequestUserPermission().

1. Иска се разрешение само за следните методи:

GetFiles()/StartGetFiles(),
● PlaceFiles()/StartPuttingFiles(),
● FindFiles()/StartSearchFiles(),
● CopyFile()/StartCopyFile(),
● MoveFile()/StartMoveFile(),
● DeleteFiles()/StartDeleteFiles(),
● CreateCatalog()/StartCreatingCatalog(),
● StartApplication()/StartStartApplication().

2. Иска се разрешение за конкретен набор от параметри на метода. Ако по време на реалното изпълнение на метода за работа с файлове стойностите на параметрите се различават от тези, за които е получено разрешението, това разрешение няма да бъде валидно и потребителят ще получи отделна заявка за потвърждение на операцията.

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

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

Предоставените разрешения се запазват или до извършване на позволеното повикване, или до края на изпълнението на първия език.
ЗАБЕЛЕЖКА. в дебели и тънки клиенти RequestUserPermission()методът винаги връща True, без взаимодействие с потребителя.

Работа с временно хранилище във фоново задание

В механизма за работа с временно съхранение е възможно да се прехвърлят данни от фоново задание към сесията, която е инициирала фоновото задание.
За такова прехвърляне, в родителската сесия, празна стойност трябва да бъде поставена във временно хранилище (използвайки метода PutIntoTempStorage()), посочвайки някакъв идентификатор на създаденото временно хранилище (параметър Address). След това предайте получения адрес на фоновото задание чрез параметрите на фоновото задание. Освен това, ако този адрес се използва като стойност на параметъра Адрес на метода във фоновото задание PutIntoTempStorage(), резултатът ще бъде копиран в сесията, от която е стартирано фоновото задание.
Данните, поставени във временно хранилище във фоново задание, няма да бъдат достъпни от родителската сесия, докато фоновото задание не завърши.

Поддръжка на адреси в полето за картина

Поле за изглед на елемент на формуляр Полето за изображение поддържа показване на изображение, указано от адреса на стойност (която може да бъде изображение или двоични данни) във временно хранилище или в база данни.
За да направите това, в свойството Data на елемента на формуляра трябва да посочите атрибут тип низ. Стойността на този атрибут ще се интерпретира като адрес на изображението.

// Пример 1
// Свързване на полето за изображение с адреса на изображението във временен
// съхранение. ImageAddress – атрибут на формата от тип низ
PutFile(ImageAddress, OriginalName, SelectedName, True, UniqueIdentifier);
// Пример 2
// Получаване на адреса на изображението от атрибута на обекта
// информационна база
ImageFile = Object.ImageFile;
Ако не ImageFile.Empty() Тогава
ImageAddress = GetNavigationLink(ImageFile, “FileData”);
В противен случай
ImageAddress = "";
край ако;

Достъп до стандартни директории

При използване на системата е необходимо малко място във файловата система, където можете да съхранявате различни файлови данни, които от една страна са временни, а от друга трябва да се съхраняват достатъчно дълго време. Тези файлове включват чернови за системи за управление на документи, външни компоненти, работещи отстрани клиентски компютъри т.н.
Тези файлове се съхраняват в специална директория, която е свързана с конкретен потребител на конкретна информационна база.
Един и същи потребител работи с двама информационни бази, ще има достъп до две различни директории за съхранение на потребителски данни. Местоположението на тази директория се определя с помощта на метода WorkingUserDataDirectory(). Ако директорията не съществува, тя се създава при първия достъп до нея. Ако директорията не може да бъде създадена, системата предизвиква изключение.
ЗАБЕЛЕЖКА. Методът UserDataWorkerDir() не е наличен от страната на сървъра.
IN операционна системаима специална директория, предназначена за постоянно съхранение на потребителски данни. Може да са някои
отчети, печатни форми на документи и др. В тази директория се поставят данни, които по-късно могат да бъдат изпратени на външни
потребители. Методът DocumentDirectory() се използва за достъп до тази директория. Физическото местоположение на директорията зависи от операционната система.
система, където се изпълнява приложението и е дадена в асистента за синтаксис.

.MXL файлът е документ с електронна таблицасъздаден от 1C:Enterprise. Първоначално 1C:Enterprise е предназначен за автоматизиране на счетоводството. В нашата статия ще ви кажем как да отворите файл с разширение .MXL.

За да отворите такъв файл, стартирайте 1C Enterprise и изберете менюто File -> Open. Ако желаете, можете да запишете този файл в формат на ексел. За да направите това, всички в едно и също меню "Файл" изберете елемента "Запазване като .." и след това задайте типа на файла " Excel таблица". Ако 1C Enterprise не е инсталиран на вашия компютър, можете да изтеглите и инсталирате безплатно приложение"1C Enterprise - Работа с файлове" от официалния уебсайт на компанията. Тази програма ще ви помогне да отваряте, разглеждате, отпечатвате и конвертирате файлове.

Изтеглете безплатно "1C Enterprise - Работа с файлове".

Изтеглете програмата от официалния сайт. Работата с файлове е подобна на работата с файлове в режим 1C:Enterprise.
На разположение Руска версияпрограми. Когато инсталирате програмата, трябва да изберете пълната дистрибуция.
След като инсталирате 1C Enterprise - Работа с файлове, можете не само да видите файла с разширение .mxl, но и да го конвертирате в exel.

Програмата "1C:Enterprise - Работа с файлове" е отделна софтуеркойто се разпространява безплатно. Предназначен е за преглед и редактиране на файлове на 1C:Enterprise на компютри, на които не е инсталиран 1C:Enterprise.

Поддържат се следните файлови формати:

  • (*.текст);
  • (*.mxl);
  • (*.htm, *.html);
  • (*.grs);
  • (*.geo);

По време на инсталационния процес програмата регистрира разширенията mxl, grs и geo, в резултат на което за преглед и редактиране на тези файлове е достатъчно да щракнете върху тях с мишката:

Поддържа стартиране на програмата от командна линия. В този случай е възможно да посочите файла за обработка. Например, за да обработите файла "Remains.mxl", е достатъчно да изпълните командата:

"D:\Program Files\1cv82fv\bin\1cv8fv.exe" D:\FileWorkshop\Remains.mxl

"1C:Enterprise - Работа с файлове" поддържа, подобно на режима, внедрен в системата 1C:Enterprise. Така например потребителят може визуално да сравни два балансови отчета:

Опции за доставка

Има две опции за доставка за 1C:Enterprise - Работа с файлове:

  • рускоговорящ;
  • международни.

Разликата между международната доставка и рускоезичната е, че тя включва същите, които използва системата 1C:Enterprise.

Също така, за международна доставка, превключвателят на командния ред /L може да се използва за указване на използвания интерфейсен език. Например, за да обработите файла "Remains.mxl" в програма с английски езикинтерфейс (en), просто изпълнете командата:

"D:\Program Files\1cv82fv\bin\1cv8fv.exe" /Len D:\FileWorkshop\Remains.mxl