1с 7 получить путь к файлу
Фирма «1С» в первую очередь рекомендует использовать методику автоматического переноса данных непосредственно из исходной информационной базы (см. главу 2 «Перенос данных»), так как она обеспечивает корректный перенос учетных данных и сокращает время перехода на новую программу. Однако бывают ситуации, когда применить эту методику не представляется возможным, например, в случае существенного изменения исходной конфигурации. В таких случаях предлагается использовать другие способы переноса, которые рассматриваются в данной главе.
7.1. Перенос данных с выгрузкой и загрузкой файла xml
7.1.1. Выгрузка данных в файл
Выгрузку в файл рекомендуем применять только в случае, если перенос данных непосредственно из информационной базы невозможен.
Если необходимо выгрузить только часть данных исходной информационной базы, то воспользуйтесь последовательностью действий, описанной в следующем параграфе.
Перед выгрузкой необходимо проверить корректность данных исходной информационной базы. Порядок проверки описан в главе 1 «Проверка данных до переноса».
Рассмотрим выгрузку данных в файл на примере переноса данных из информационной базы 1С:Бухгалтерии 7.7. Порядок действий при других вариантах переноса не меняется.
Перенос данных выполняется поэтапно. Перед началом переноса убедитесь, что исходная информационная база закрыта и в ней не работают пользователи.
Этап 1. Резервное копирование
Выполним резервное копирование информационной базы конфигурации Бухгалтерский учет редакции 4.5.
Этап 2. Выгрузка данных
Запустим 1С:Бухгалтерию 7.7.
Перенос данных осуществляется с помощью файлов, которые находятся в подкаталоге ExtForms (1SBDB\ExtForms):
- V77Exp.ert – обработка выгрузки данных из конфигурации Бухгалтерский учет, редакция 4.5;
- Acc77_80.xml – правила конвертации данных, используемые обработкой V77Exp.ert.
Правила переноса исходной информационной базы должны быть актуальными на момент переноса. Актуальные правила всегда следует получать из 1С:Бухгалтерии 8. Для этого выполним следующие действия:
- Выберем конфигурацию исходной информационной базы.
- Нажмем кнопку Записать файлы конвертации на диск. Откроется дерево каталогов.
- В открывшемся дереве каталогов выберем подкаталог ExtForms (1SBDB\ExtForms) и в нем файл правил переноса Acc77_80. xml исходной информационной базы.
- Нажмем кнопку Open – файл правил переноса исходной информационной базы будет заменен на актуальный файл.
После обновления правил переноса можно приступать к выгрузке данных. Для этого необходимо воспользоваться помощником перехода. Нажмем кнопку Переход на 1С:Бухгалтерию 8 панели инструментов программы
Шаг 1. Начало работы с помощником
Нажмем кнопку О преимуществах 1С:Бухгалтерии 8, чтобы ознакомиться с преимуществами перехода.
Шаг 2. Проверка обновлений
Для проверки наличия обновлений нажмем кнопку Проверить наличие обновлений.
При наличии диска ИТС можно сразу обновить конфигурацию. Далее программу необходимо будет закрыть, при повторном запуске в режиме 1С:Предприятие работа с помощником продолжается с момента остановки.
Шаг 3. Настройка периода выгрузки
Выберем период выгрузки.
Для этого установим переключатель на одном из следующих значений:
- Остатки на начало года – если остатки переносятся на начало года;
- Остатки на начало года и обороты за период – если остатки переносятся в середине года.
В поле Период укажем период переноса. Например, если выгрузка формируется на 01.01.2009, то установим переключатель Остатки на начало года, в поле Период выберем – 2009 г.
Шаг 4. Адрес файла выгрузки
В поле Выгружаемые данные будут записаны в файл отображается расположение файла выгрузки.
Шаг 5. Выгрузка данных
Нажмем Выгрузить для выполнения выгрузки данных. В результате выгрузки будет создан файл в формате XML.
Рекомендуется установить флажок Сформировать оборотно-сальдовую ведомость. В этом случае после окончания выгрузки программа автоматически сформирует отчет Оборотно-сальдовая ведомость. Используйте отчет для проверки загруженных данных.
7.1.2. Неполная (частичная) выгрузка данных в файл
Под неполной (частичной) выгрузкой понимается перенос только ряда объектов информационной базы. Для этого нужно воспользоваться универсальной выгрузкой данных.
В открывшемся окне выберем пункт Выгрузка данных для 1С:Бухгалтерии 8.
Далее необходимо заполнить параметры универсальной выгрузки данных.
Укажем параметры выгрузки:
- Имя файла правил – выберем файл правил конвертации данных;
- Имя файла данных – укажем файл, в который будут выгружены данные в формате .xml;
- Дата начала, Дата окончания – укажем период выгрузки. Если перенос осуществляется на начало года, то в поле Дата начала и Дата окончания необходимо указать одинаковую дату. Например, если перенос осуществляется на начало 2009 года, то нужно указать дату начала и дату окончания – 01.01.2009;
- Правила выгрузки данных – нажмем кнопку Загрузить правила обмена для заполнения табличной части Правила выгрузки данных. По тем разделам, по которым выгрузка не производится, снимем флажки. Например, если необходимо перенести только данные справочника Банковские счета и Банки, то установим флажки Банки и Банковские счета в табличной части Правила выгрузки данных.
Нажмем Выгрузить для выполнения выгрузки данных.
7.1.3. Загрузка данных из файла
Запустим 1С:Бухгалтерию 8.
Дополнительные настройки в информационной базе 1С:Бухгалтерии 8 не требуются. Настройки параметров учета для корректного переноса данных будут установлены в информационной базе по умолчанию.
Необходимо воспользоваться помощником перехода (меню Сервис – Перенос данных из информационных баз 1С:Предприятия 7.7).
Шаг 1. Выбор варианта загрузки данных
Выберем пункт Загрузить данные из файла.
Шаг 2. Выбор файла загрузки
Выберем в поле Путь к файлу данных файл загрузки.
После выбора файла в разделе Описание загружаемых данных отображается информация о конфигурации, номере релиза, организации, периоде и дате выгрузки данных из исходной информационной базы.
Нажмем кнопку Далее для выполнения загрузки.
Шаг 3. Загрузка
Загрузка данных и их проверка осуществляются автоматически.
- загрузка данных,
- проведение загруженных документов,
- проверка загруженных документов.
В поле Выполнение отображается индикатор выполнения загрузки в процентах. Ниже приводится наименование исходной информационной базы.
Внимание!
Если загрузка осуществляется в программный продукт базовой версии, то ИНН и КПП организации в 1С:Бухгалтерии 8 будут заменены на ИНН/КПП организации исходной информационной базы.
Шаг 4. Результат переноса
Если перенос данных прошел успешно, выводится строка: «Перенос прошел успешно!».
Если используется версия ПРОФ, можно сразу приступить к переносу информационной базы или данных из файла, нажав кнопку Продолжить.
Кнопка Завершить используется для закрытия формы.
Если используется базовая версия, перенос данных окончен, следует нажать кнопку Завершить для закрытия формы.
7.2. Перенос данных из нетиповых конфигураций
В данном параграфе приводятся общие рекомендации для всех конфигураций.
Если в конфигурацию исходной информационной базы вносились изменения, то для корректного переноса данных следует воспользоваться следующей последовательностью действий:
1. Открыть конфигурацию Конвертация данных, которая размещена на диске ИТС.
2. В конфигурацию Конвертация данных загрузить типовые правила переноса данных исходной информационной базы.
3. Обновить описания конфигурации исходной информационной базы.
4. Вручную скорректировать данные конфигурации Конвертация данных в соответствии с изменениями, которые вносились в типовую конфигурацию.
Ознакомиться с подробной инструкцией о порядке работы с конфигурацией Конвертация данных можно на диске ИТС.
Если в план счетов исходной информационной базы 1С:Бухгалтерии 7.7, 1С:УСН 7.7 добавлены счета, субсчета, то данные по счетам и субсчетам автоматически не перенесутся. Для переноса данных по таким счетам добавим счета в План счетов 1С:Бухгалтерии 8. В этом случае остатки на начало года введем документом Ввод начальных остатков, обороты – документом Операция (бухгалтерский и налоговый учет).
7.3. Перенос из нескольких информационных баз
В 1С:Бухгалтерии 8 версии ПРОФ поддерживается возможность ведения учета нескольких организаций в одной информационной базе. При этом можно использовать общие справочники для всех организаций.
При переносе данных из нескольких информационных баз необходима синхронизация данных (элементы справочников не должны дублироваться).
Общие правила синхронизации:
- Структура (иерархия) справочников исходных информационных баз должна совпадать, т. е. количество уровней справочника и наименование папок каждого из уровней исходных информационных баз должны быть одинаковы.
- Перед выгрузкой данных обязательно нужно проверить реквизит Наименование справочников. Реквизит Наименование используется в качестве основного реквизита синхронизации для большинства справочников.
- В 1С:Бухгалтерии 8 у справочников есть реквизиты, которые в конфигурации на платформе 1С:Предприятия 7.7 отсутствуют. Однако эти данные необходимы для корректной синхронизации объектов. Для этого при переносе реквизиты заполняются некими предопределенными значениями (сведениями об информационной базе, источнике и типе выгружаемых данных) в зависимости от контекста выгружаемых данных. Например, при переносе элементов справочника Основные средства в поле Комментарий формируется ключевая строка, содержащая ИНН организации и инвентарный номер объекта.
При загрузке данных производится синхронизация справочников: проверяется, был ли ранее загружен элемент или необходимо добавить новый элемент. Проверка осуществляется путем сравнения реквизитов загружаемого элемента с реквизитами уже загруженного элемента. Реквизиты проверки (синхронизации) для справочников могут различаться. Реквизиты синхронизации для справочников при переносе из различных программ приведены в таблицах.
Доступ к файловой системе из кода конфигурации
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. При обращении из кода конфигурации к файлам и каталогам файловой системы следует иметь в виду, что доступ к ним ограничен правами пользователя операционной системы, от имени которого запущено приложение.
1.1. Если доступ к файловой системе осуществляется из кода, выполняемого на клиенте, то он выполняется под правами пользователя, от имени которого запущено приложение (тонкий, толстый или веб-клиент). Как правило, это текущий пользователь операционной системы.
1.2. Если доступ к файловой системе осуществляется из кода, выполняемого на сервере, то:
- при использовании клиент-серверной информационной базы, доступ ограничен правами пользователя, от имени которого запущен сервер 1С:Предприятия (*);
- при использовании файловой базы, опубликованной на веб-сервере, доступ ограничен правами пользователя, от имени которого запущен веб-сервер.
* Рабочие процессы могут быть также запущены от имени другого пользователя, отличного от того, под которым запускается агент сервера. Подробнее см. руководство администратора клиент-серверного варианта, описание служебного файла swpuser.ini
Область применения (уточнение): управляемое приложение, обычное приложение.
2. Запрещается выполнять запись каких-либо файлов в каталог исполняемых файлов 1С:Предприятия, получаемого с помощью метода КаталогПрограммы . Использование метода КаталогПрограммы допустимо только для чтения или запуска файлов. Например, при работе в ОС Windows, для запуска копии тонкого клиента 1С:Предприятия текущей версии, допустимо использовать:
3. Даже если не планируется локализация конфигурации на другие языки, следует обеспечивать переносимость файлов, сформированных из кода конфигурации, между различными операционными системами с различными кодировками. Для этого необходимо:
3.1. В именах файлов, автоматически формируемых из кода конфигурации, указывать только английские буквы, а также цифры, а в качестве кодировки текстовых файлов использовать только UTF-8 (именно этот формат предпочтителен, т.к. только с ним корректно работает операционная система macOS).
3.2. В тех случаях, когда имя файла не генерируется системой, а его явно вводит пользователь, разрешить ввод русскоязычных имен, но при этом дать возможность транслитерировать его в англоязычное имя. По умолчанию, если это технически возможно и не снижает удобство работы, рекомендуется предлагать англоязычное имя файла, а для текстовых файлов – сохранение в кодировке UTF-8.
Также эти рекомендации по выбору имени и кодировки файла следует разместить в справке к тем местам программы, где пользователь имеет возможность сохранять файлы и выбирать кодировку.
В конфигурациях на базе Библиотеки стандартных подсистем для транслитерации имен файлов рекомендуется использовать функцию СтроковыеФункцииКлиентСервер.СтрокаЛатиницей .
Работа с временными файлами и каталогами
При необходимости использования временных файлов и каталогов необходимо соблюдать следующие требования:
1. Для получения имени временного файла следует использовать метод ПолучитьИмяВременногоФайла (исключение составляет веб-клиент, см. ниже п. 3). В противном случае возможна некорректная работа конфигурации в многопользовательском режиме, с включенными профилями безопасностями, возникновение проблем с правами доступа к файлам операционной системы, а также неконтролируемое увеличение количества ненужных временных файлов, которые не будут своевременно удалены.
ИмяПромежуточногоФайла = "C:\Временные файлы 1С\TempFile.xml";
Данные.Записать(ИмяПромежуточногоФайла);
У текущего пользователя может не быть прав на запись в указанный каталог. Кроме того, при одновременном выполнении этого кода из двух разных сеансов возникнет ошибка.
При использовании этой функции будет получено уникальное имя, гарантирован доступ к файлу.
Кроме того, при использовании метода ПолучитьИмяВременногоФайла платформа 1С:Предприятие сохраняет контроль над такими файлами и автоматически удаляет их
- при перезапуске рабочего процесса (если файл был создан на стороне сервера) или клиентского приложения (если файл был создан на стороне клиента);
- через 20 минут после серверного вызова или сеанса, в котором создан временный файл (при работе в клиент-серверном варианте на платформе 8.3.17 и больше).
Если же имя временного файла было сформировано каким-то другим способом, и прикладной код не удалил (либо по какой-то причине не смог удалить) ранее созданный временный файл, то платформа такой файл не контролирует, и он остается в файловой системе на неопределенное время. Накапливание «потерянных» временных файлов может представлять серьезную проблему, особенно для информационных баз с большим количеством активно работающих пользователей (например, при работе в режиме сервиса).
Таким образом, неправильно :
Каталог = КаталогВременныхФайлов();
ИмяФайла = Строка(Новый УникальныйИдентификатор) + ".xml";
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);
Если по каким-то причинам прикладной код не удалит созданный файл (например, между блоками создания и удаления временного файла возникнет штатное или нештатное исключение), этот файл так и останется в каталоге временных файлов.
При использовании метода ПолучитьИмяВременногоФайла будет получено уникальное имя, гарантирован доступ к файлу, а также временный файл будет автоматически удален платформой 1С:Предприятие после завершения рабочего процесса сервера или клиентского приложения.
2. Для создания временного каталога рекомендуется также использовать имя, полученное при помощи метода ПолучитьИмяВременногоФайла (исключение составляет веб-клиент, см. ниже п. 3). Это гарантирует уникальность имени создаваемого каталога при работе в многопользовательском режиме и гарантирует, что после перезапуска рабочего процесса или клиентского приложения временный каталог будет автоматически удален платформой 1С:Предприятие. После этого, внутри созданного каталога можно создавать другие каталоги и файлы без ограничений.
3.1. При выполнении кода веб-клиентом метод ПолучитьИмяВременногоФайла недоступен. Поэтому для формирования имен временных файлов и каталогов необходимо использовать функцию КаталогВременныхФайлов и объект УникальныйИдентификатор .
Каталог = КаталогВременныхФайлов();
ИмяФайла = "TempDataFile.xml";
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);
Каталог = КаталогВременныхФайлов();
ИмяФайла = Строка(Новый УникальныйИдентификатор) + ".xml";
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);
3.2. Если в конфигурацию встроена Библиотека стандартных подсистем , для создания временных каталогов на стороне клиента необходимо использовать процедуру ФайловаяСистемаКлиент.СоздатьВременныйКаталог .
4. После окончания работы с временным файлом или каталогом, его необходимо удалить самостоятельно. Нельзя рассчитывать на автоматическое удаление файлов и каталогов при следующем запуске платформы, это может привести к исчерпанию свободного места в каталоге временных файлов.
// Работа с файлом
.
// Удаляем временный файл
Попытка
УдалитьФайлы(ИмяПромежуточногоФайла);
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
5. При использовании временных файлов и каталогов на сервере, необходимо полностью завершать работу с ними в рамках одного серверного вызова. При работе конфигурации с использованием кластера серверов, при следующем вызове эти файлы могут стать недоступны, так как код начнет исполняться на другом компьютере. При необходимости сохранить данные между серверными вызовами в пределах одного сеанса следует использовать временное хранилище платформы (методы ПоместитьВоВременноеХранилище , ПолучитьИзВременногоХранилища ).
5.1. В редких случаях может возникнуть необходимость передачи данных во временных файлах между сеансами, например, при подготовке данных для фонового задания, при организации длительного процесса, обслуживающего несколько последовательных вызовов web-сервиса. Необходимо самостоятельно обеспечивать гарантировано общее место хранения, права для доступа к файлам из разных мест их обработки, удаление файлов по истечению сроков их обработки или аварийного завершения процесса обработки. Рекомендуется использовать следующий подход:
- Для обеспечения доступа со всех возможных мест обработки заводится константа для хранения общего пути к файлам, доступного для доступа со всех серверов кластера;
- При создании временных файлов их имена заносятся во вспомогательный регистр сведений с сохранением времени создания файла;
- При штатном прохождении процесса, последняя операция, которой были нужны файлы, перед своим завершением удаляет как сам файл, так и записи о них во вспомогательном регистре;
- Вспомогательное регламентное задание периодически проверяет наличие записей во вспомогательном регистре, время существования которых заведомо превышает время штатного завершения процесса. При обнаружении таких записей, задание удаляет временные файлы и записи о них.
Передача файлов между клиентом и сервером
1. При одновременной работе с файлом на клиенте и на сервере необходимо использовать передачу файла через временное хранилище (методы ПоместитьФайлы , ПолучитьФайл , ПолучитьФайлы , НачатьПомещениеФайла , ПоместитьВоВременноеХранилище , ПолучитьИзВременногоХранилища ). В общем случае клиент и серверы кластера - это разные компьютеры с разной файловой системой, причем доступ к файлам может происходить под разными пользователями ОС с различными правами.
&НаКлиенте
Процедура ОбработатьФайл()
.
ИмяФайла = "C:\Файлы для обработки\Загрузка.xml";
Результат = ПроизвестиОбработкуНаСервере(ИмяФайла);
.
Чтение = Новый ЧтениеТекста(ИмяФайла);
.
Результат = Чтение.Прочитать();
Возврат Результат;
ИмяФайлаДляОбработки = "C:\Файлы для обработки\Загрузка.xml";
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбработатьФайлЗавершение", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения,,
ИмяФайлаДляОбработки, Ложь,
УникальныйИдентификатор);
&НаКлиенте
Процедура ОбработатьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
Данные = ПолучитьИзВременногоХранилища(Адрес);
ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("txt");
Данные.Записать(ИмяПромежуточногоФайла);
Чтение = Новый ЧтениеТекста(ИмяПромежуточногоФайла);
.
Результат = Чтение.Прочитать();
.
2. Для сохранения данных во временном хранилище между несколькими серверными вызовами, при помещении его в хранилище необходимо использовать параметр УникальныйИдентификаторФормы метода ПоместитьФайл , передав в него идентификатор текущей формы. Такие значения будут удалены из временного хранилища только при закрытии указанной формы. При этом, при повторном помещении того же файла во временное хранилище, предыдущее значение необходимо удалять вручную. Например:
.
// Первый серверный вызов
ИмяФайлаДляОбработки = "C:\Файлы для обработки\Загрузка.xml";
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбработатьФайлЗавершение", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения,,
ИмяФайлаДляОбработки, Ложь,
УникальныйИдентификатор);
&НаКлиенте
Процедура ОбработатьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
.
Результат = ПроизвестиНачальнуюОбработкуНаСервере(Адрес);
ПродолжитьОбработкуФайла();
.
.
// Второй серверный вызов с той же версией файла
Результат = ПроизвестиПромежуточнуюОбработкуНаСервере(Адрес);
.
// Третий серверный вызов с новой версией файла
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПродолжитьОбработкуФайлаЗавершение", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения,,
ИмяФайлаДляОбработки, Ложь,
УникальныйИдентификатор);
Процедура ПродолжитьОбработкуФайлаЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
При этом во временном хранилище формы останется две копии файлов. Адрес второй копии будет находиться в переменной Адрес , а адрес первой копии будет утерян. Это приводит к затрате дополнительных ресурсов приложения, замедлению работы.
.
// Первый серверный вызов
ИмяФайлаДляОбработки = "C:\Файлы для обработки\Загрузка.xml";
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбработатьФайлЗавершение", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения,,
ИмяФайлаДляОбработки, Ложь,
УникальныйИдентификатор);
.
&НаКлиенте
Процедура ОбработатьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
.
Результат = ПроизвестиНачальнуюОбработкуНаСервере(Адрес);
ПродолжитьОбработкуФайла();
.
.
// Второй серверный вызов с той же версией файла
Результат = ПроизвестиПромежуточнуюОбработкуНаСервере(Адрес);
.
// Третий серверный вызов с новой версией файла
УдалитьИзВременногоХранилища(Адрес);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПродолжитьОбработкуФайлаЗавершение", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения,,
ИмяФайлаДляОбработки, Ложь,
УникальныйИдентификатор);
&НаКлиенте
Процедура ПродолжитьОбработкуФайлаЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
3. Если в конфигурацию встроена Библиотека стандартных подсистем для помещения файлов во временное хранилище необходимо использовать процедуры ЗагрузитьФайл и ЗагрузитьФайлы общего модуля ФайловаяСистемаКлиент . Для сохранения данных файла между несколькими серверными вызовами необходимо использовать свойство ИдентификаторФормы параметра ПараметрыЗагрузки :
&НаКлиенте
Процедура ОбработатьФайл()
.
ИмяФайлаДляОбработки = "C:\Файлы для обработки\Загрузка.xml";
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьФайлЗавершение", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Интерактивно = Ложь;
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения,
ПараметрыЗагрузки, ИмяФайлаДляОбработки);
&НаКлиенте
Процедура ОбработатьФайлЗавершение(ПомещенныйФайл, ДополнительныеПараметры)
Читайте также: