Как загрузить в документ 1с данные из файла
В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.
Рассмотрим каждый по отдельности.
Объект Файл служит для управления параметрами файлов.
Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.
Например, прочитаем параметры некоторого файла, находящегося на диске C:
В результате мы получим следующую информацию (если файл найден):
Параметры файла:
Полное имя файла: C:\Работа с файлами\статья.txt
Имя: статья.txt
Имя без расширения: статья
Расширение: .txt
Путь без имени: C:\Работа с файлами\
Размер: 899
Это файл: Да
Изменен: 18.05.2015 16:21:28
Только чтение: Нет
Невидимость: Нет
Запись в файл
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:
Чтение файла в 1С
Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.
Запись текста из 1С в файл
Заметим, что при записи текстового файла можно установить кодировку.
Копирование файла
Здесь все очень просто
Перемещение
Удаление
Диалог выбора файла
В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.
Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.
Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение
Здравствуйте. Эта публикация является частью учебного процесса, так что не судите строго.
Задача - создать обработку для загрузки данных в учебную конфигурацию из файла с расширением CSV.
Учебная конфигурация - это простая база ведения домашней бухгалтерии.
Данные - это файл выгрузки из аналогичной андроид программы.
Итак приступим к решению.
Шаг 1. Прочитать файл с данными
Создаем обработку. В форме обработки создаем:
- реквизит - строку "Имя Файла"
- и команду "Прочитать".
Для команды "Прочитать" сразу сделаем процедуры ПрочитатьНаКлиенте и ПрочитатьНаСервере и пока отложим их.
Нам необходимо, чтобы строка "Имя Файла" позволяла выбрать файл. Для этого создадим дополнительную процедуру
Как видно, начало процедуры вполне стандартное, однако в процессе работы над основной процедурой "Прочитать" я столкнулся с небольшой проблемой - файл был в не той кодировке и не хотел восприниматься алгоритмом, поэтому я добавил сюда строки:
А также пришлось добавить на форму соответствующую функцию
Теперь вернемся к процедуре "Прочитать", а именно к процедуре "ПрочитатьНаСервере" которую мы создали выше. Код процедуры состоит из таких частей:
Здесь мы читаем данные с файла и добавляем их в таблицу значений. Хочу сразу предупредить, что таблица значений не предусматривает одинаковое название колонок. У меня как раз были такие, поэтому я не стал долго мучатся с этим и просто переименовал их. Однако подозреваю, что если чуть подумать и поднапрячься, то можно доработать код и решить эту проблему.
Захотелось немного покуражиться и программно добавить таблицу значений на форму. Хотя у этого была и рациональная причина - в дальнейшем не нужно будет каждый раз переделывать код, если файл с данными будет с другим количеством и названием колонок.
Итак, мы прочитали данные, переходим к следующему шагу.
Шаг 2. Загрузить данные в непосредственно в базу
Создаем на форме реквизит "ЧленСемьи", тип "СправочникСсылка.Семья" - если не забыли, у меня учебная база ведения домашней бухгалтерии.
А также команду "ЗагрузитьВБазу" и к ней соответствующие процедуры "ЗагрузитьВБазуНаКлиенте" и "ЗагрузитьВБазуНаСервере".
Рассмотрим код процедуры "ЗагрузитьВБазуНаСервере()".
Он также состоит из нескольких частей. Первая часть кода:
Здесь мы делаем запрос на чтение прочитанных данных на форме. Так как мы уже прочитали данные, то можем присвоить колонкам названия, используемые нами в базе.
Вторая часть кода
Здесь мы уже непосредственно загружаем прочитанные данные в базу (конечно, второй запрос можно было не делать, но мне так показалось удобнее).
Рассмотрим некоторые строки кода детальнее.
Так как, по сути, мы читали текстовый файл, то строки с суммами пришлось обработать - убрать лишние пробелы и заменить "." на ","
Данные, которые мы загружаем, имеют простую структуру: суммы + доходы суммы - расходы. Поэтому простое условие >0 позволило нам разделить данные для прихода и расхода.
Программно создаем документ, куда будем заносить данные
Здесь пришлось повозиться - до меня не сразу дошло, что если программно создаешь документ, то и дату туда надо заносить в формате "год.месяц.день час:мин:сек" пришлось добавить функцию для даты
Сразу скажу - спешил, поэтому функцию нашел здесь же на форуме. Сейчас пишу и думаю, что можно было сделать то же самое, используя "СтрРазделить", но код был бы длиннее.
База, по сути, - пустая, и мне не хотелось вручную наполнять справочники, поэтому добавил функцию:
Так как справочников много, сделал два параметра "СправочникСтатья" и "СтатьяНаименование".
Есть форма внешней обработки с ТабличнымДокументом. В него и загружаем данные из файла выполнив команду ЗагрузитьИзФайла и далее используем, как хотим.
В данном примере показана загрузка из любого файла Excel. Но можно использовать другие форматы файлов.
Используем из БСП процедуру ЗагрузкаДанныхИзФайлаКлиент.ДиалогЗагрузкиФайла(). Все!
Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.12.1616), конфигурация
"Библиотека стандартных подсистем", редакция 2.4 (2.4.4.116).
Должно работать во всех конфигурациях, где подключена подсистема БСП с версией не ниже 2.3.
Загрузка из файла в табличный документ в 5 строк с использованием БСП. Управляемые формы.:Специальные предложения
При чем тут Excel и Табличный документ?
Разве что, просветить нас, что 1С запилила чтение из XLS на уровне платформы (наконец-то).
Просмотры 6434
Загрузки 8
Рейтинг 5
Создание 26.02.19 14:30
Обновление 26.02.19 14:30
№ Публикации 1010907
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
"Словом можно убить, словом можно спасти, словом можно полки за собой повести" Онлайн-тренажер "Боевая риторика. Ложь и давление в переговорах" с 29 ноября по 27 декабря.См. также
Конвертация любых адресов, написанных в свободной форме, к ФИАС Промо
Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.
2 стартмани
30.06.2020 7675 68 XilDen 15
Управление платформенными обработками (расширение для типовых)
Расширение использует недокументированную возможность для управления платформенными обработками. Например, чтобы подменить "Активные пользователи" или доработать "Конструктор запросов".
1 стартмани
07.10.2021 3374 5 SeiOkami 23
Работа с картами в 1С на примере бесплатной библиотеки Leaflet
Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.
1 стартмани
31.03.2021 10474 31 Parsec1C 11
Универсальная обработка переноса данных из основной конфигурации в расширение
Обработка предназначена для разработчиков, для тех случаев, когда ранее дописанный функционал, перенесен в расширение и появляется необходимость перенести данные из объектов основной конфигурации в объекты расширения. Перенос осуществляется настройкой соответствия объектов основной конфигурации объектам расширения.
5 стартмани
05.10.2020 10387 65 biz-intel 71
Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо
Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю.
1 стартмани
01.09.2012 66868 1378 AnryMc 46
Улучшенная обработка универсального обмена данными в формате XML (УФ)
Улучшенная обработка "Универсальный обмен данными" с полноценными возможностями СКД для выборки данных (не только для отборов).
1 стартмани
23.06.2020 12956 135 Lem0n 1
Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.
1 стартмани
01.05.2020 15296 112 sapervodichka 1
Markdown-editor в 1С (с сохранением в HTML)
В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.
1 стартмани
04.07.2019 12846 18 riposte 6
Групповая обработка справочников и документов (Управляемая форма) v 3.6 (+English version) Промо
Старая добрая обработина "Групповая обработка справочников и документов", теперь на Управляемом приложении. Работает на платформе версии не ниже 8.2.16! Работает в интерфейсе "Такси"
3 стартмани
01.06.2013 132239 4969 kser87 352
Работа с файлами (обычная и управляемая форма)
Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!
1 стартмани
10.06.2019 41602 222 Xershi 77
Электронная таблица средствами 1С (Версия 2.0)
Функционал электронной таблицы для программ на платформе 1С реализован на основе табличных документов. Функционал реализован в виде обработки. Большую часть формы обработки занимают листы (закладки) с табличными документами, которые выполняет роль электронной таблицы. Листы могут быть добавлены, удалены или переименованы. Ограничение по количеству листов определяется возможностью платформы. В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы расположенные в том числе и на других листах. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл.
1 стартмани
23.04.2019 23797 78 user706545_kseg1971 40
Удобная консоль регламентных и фоновых заданий
1 стартмани
06.02.2019 22192 211 Alxby 20
Групповая корректировка записей регистров (Управляемое приложение) v 2.1 Промо
Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.
3 стартмани
06.09.2013 68805 321 kser87 59
Редактор объектов информационной базы 8.3
Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.57 от 09.10.2021
2 стартмани
23.01.2019 43304 486 ROL32 50
Сравнение pdf-файлов актов сверки
Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.
При написании публикации использовалась версия платформы 8.3.6 .1760.
Модифицирована на версии платформы 8.3.10 .2168.
Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта "ТабличныйДокумент":
Для метода "Прочитать" объекта "ТабличныйДокумент" реализован параметр "СпособЧтенияЗначений" (Новое системное перечисление "СпособЧтенияЗначенийТабличногоДокумента").
В данной публикации приводится пример реализации функционала импорта из файлов EXCEL (xlsx, xls, ods) в таблицу значений в режиме 1С:Предприятие на платформе 8.3.6.
О файле EXCEL:
В общем случае файл EXCEL содержит несколько листов с данными.
Метод табличного документа "Прочитать" читает все листы в 1 (один) табличный документ на платформах 8.3.6-8.3.9, а на платформе 8.3.10 можно считать отдельные листы файла EXCEL.
Поэтому для использования данного функционала на версиях платформы 8.3.6-8.3.9 необходимо использовать файлы EXCEL, содержащие 1 (один) лист с данными, для платформы 8.3.10, такого ограничения нет.
О листе файла EXCEL:
Содержимое на листе должно быть разнесено по соответствующим колонкам по назначению.
В качестве примера содержимого листа может служить обычный прайс.
Рекомендутся ячейки таблицы на листе файла оформлять рамкой "Все границы" .
Колонки результирующей таблицы значений формируются по количеству, определяемому свойством "ШиринаТаблицы" табличного документа.
В последствии для удобства пустые колонки удаляются из результирующей таблицы значений.
О типах значений файла EXCEL:
Числа - как "число", даты - как "дата", Стоки - как "строка", Булево - как "строка" вида "ИСТИНА" ("TRUE") или "ЛОЖЬ" ("FALSE") .
В результирующую таблицу значений записываются типизованные значения.
О картинках файла EXCEL:
В исходном файле EXCEL это могут быть как ссылки на файлы, разделенные между собой символом "Перевод строки" в пределах одной ячейки, так и собственно картинки .
Картинки должны находиться в пределах ячейки. В одной ячейке может быть несколько картинок.
В результирующую таблицу значений записываются ссылки на файлы картинок.
Каждая ячейка колонки может, в общем случае, содержать несколько ссылок на файлы, разделенные между собой символом "Перевод строки".
Не редко возникает необходимость загрузить в справочники или документы 1С данные из текстового файла. Приведенный пример внешней обработки позволит преобразовать текстовый файл с известным разделителем данных в поле табличного документа для последующей обработки уже внутри 1С:Предприятия. Обработка содержит функцию разбора строки на массив данных, настраиваемый разделитель строки текста на "столбцы", процедуру чтения данных из текстового файла.
Разбор строки в массив с использованием функций из конфигурации 1С
Для разложения строки в массив в конфигурация 1С:Бухгалтерия, 1С:Торговля и 1С:УПП имеется замечательная функция - Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт. Функция "расщепляет" строку на подстроки, используя заданный разделитель. Разделитель может иметь любую длину. Если в качестве разделителя задан пробел, рядом стоящие пробелы считаются одним разделителем, а ведущие и хвостовые пробелы параметра "Стр" игнорируются. Подробнее можно прочесть внутри конфигурации - "Общие модули" -> "Общего назначения". Функция возвращает массив значений, элементы которого - подстроки.
Чтение текстового файла (txt) в 1С
Операцию импорта - экспорта текстовых файлов (формат тхт или csv, а также htm, html) очень удобно реализовать при помощи конструкции следующего вида:
1. Функция ПолучитьПотокЧтенияСтрок(Файл) - Назначение: Проверить наличие файла (функция Файл()), Создать текстовый документ (Новый ТекстовыйДокумент()), вызвать метод "Прочитать" для открытия потока чтения файла. Возвращает поток, готовый для чтения.
2. Процедура ЧтениеТХТФайла(Элемент) - Назначение: В цикле произвести последовательное чтение строк файла текстового документа, разбирая на массив колонок данных и добавляя значения массива в табличное поле;
Исходный код 1С функции создания текстового потока чтения файла ТХТ:
Код 1C v 8.х
В данном примере была произведена загрузка из текстового файла в следующем формате:
Код
Читайте также: