- от автора admin
Содержание
- Как поместить, загрузить таблицу значений в табличное поле
- Как выгрузить данные из таблицы значений?
- Работа с файлами Excel
- Обмен через табличный документ
- Обмен через OLE
- Использование COMSafeArray
- Обмен через ADO
- Выгрузка без программирования
- С помощью объекта ПакетОтображаемыхДокументов
- С помощью COM-объекта Excel.Application
- ЛИСТ
Как поместить, загрузить таблицу значений в табличное поле
Как заполнить табличную часть формы программно? 6
Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 34
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. Cодержимое указанного ниже веб-сайта в этом приложении блокируется… Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Excel файл как Внешний источник данных 10
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» . https://helpf.pro/uploads/img Посмотреть все результаты поиска похожих
Как выгрузить данные из таблицы значений?
Для этого можно использовать метод Скопировать() объекта ТаблицаЗначений.
Первым параметром в этот метод передается массив строк для копирования, если он не указан — копируются все строки таблицы значений. Этот параметр также может содержать отбор по значению колонок.
Вторым параметром передается список колонок для копирования в формате «Колонка1, Колонка2…». Если параметр не указан, копируются все колонки таблицы.
Допустим, есть таблица значений ТЗ с колонками Код, Номенклатура и Цена.
С помощью следующего кода мы выгрузим из этой таблицы в новую таблицу значений ТЗ1 все значения, содержащиеся в колонках Номенклатура и Цена:
ТЗ1 = Новый ТаблицаЗначений; ТЗ1 = ТЗ.Скопировать(«Номенклатура,Цена»); В следующем примере мы выгрузим все строки исходной таблицы, в которых значение поля Цена = 15000. ТЗ1 = Новый ТаблицаЗначений; ПараметрыОтбора = Новый Структура(«Цена»,15000); ТЗ1 = ТЗ.Скопировать(ПараметрыОтбора);
Подробнее об использовании метода Скопировать() можно прочитать в синтакс-помощнике: Универсальные коллекции значений — Таблица значений -ТаблицаЗначений — Методы:
Работа с файлами Excel
MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.
Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.
Обмен через табличный документ
Обмен через OLE
Использование COMSafeArray
Обмен через ADO
Выгрузка без программирования
Обмен через табличный документ
Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:
Внимание!
Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.
Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:
- XLS95 — формат Excel 95;
- XLS97 — формат Excel 97;
- XLSX — формат Excel 2007.
Загрузка из файла осуществляется также достаточно просто:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:
- Значение;
- Текст.
Обмен через OLE
Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:
- На компьютере конечного пользователя, если обмен происходит на стороне клиента;
- На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.
Пример выгрузки:
// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;
// Сохранение файла
Книга.SaveAs(ИмяФайла);
// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;
Примеры чтения:
// —— ВАРИАНТ 1 ——
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
// Закрытие книги
Книга.Close(0);
// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;
// —— ВАРИАНТ 2 ——
// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
// Закрытие книги
Книга.Application.Quit();
Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:
// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1;
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:
ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();
В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:
Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.
Использование COMSafeArray
При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.
Обмен через ADO
Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.
Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.
Пример выгрузки:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);
// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;
// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;
Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:
// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;
// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;
В приведенном примере в методе
Таблица.Columns.Append(«Колонка1», 202);
во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:
- 5 — adDouble;
- 6 — adCurrency;
- 7 — adDate;
- 11 — adBoolean;
- 202 — adVarWChar;
- 203 — adLongVarWChar.
Пример чтения:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);
// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);
Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;
В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:
- YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
- NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.
В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:
- Connection;
- Command;
- Recordset;
- Record;
- Fields;
- Stream;
- Errors;
- Parameters;
- Properties.
Выгрузка без программирования
Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.
Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.
В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.
Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:
- Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
- Сохранить табличный документ в требуемый формат.
В последнее время мне очень часто приходится работать с таблицами Excel из 1С. Это первая статья, посвященная работе с Excel из 1С и в ней я покажу как сохранять несколько табличный документов в одном, многостраничном файле Excel.
С помощью объекта ПакетОтображаемыхДокументов
Начиная с версии 8.3.3 платформы 1С реализован объект ПакетОтображаемыхДокументов, через который и реализована печать во всех современных типовых конфигурациях. С помощью этого объекта очень легко сформировать многостраничную книгу Excel, т.е. каждый табличный документ выводится на своем листе.
ИмяФайла — имя файла в который будет сохранена книга. Можно перед вызовом функции предлагать пользователю указать каталог, куда будет сохраняться файл, и в параметр передать полный путь до файла, например «D:\Файлы\МойФайлЭксель.xlsx».
МассивДанных — массив соответствий с данными для формирования книги. Массив собираю на сервере. Соответствие представляет из себя коллекцию значений в связки с ключем. Ключи — Имя (имя листа в книге) и АдресВХранилище (адрес табличного документа во временном хранилище).
В отличие от второго варианта файл сохраняется значительно быстрее.
С помощью COM-объекта Excel.Application
Этот вариант подойдет тем, кому приходится работать со старыми версиями платформы. 1С позволяет сохранять табличный документ в эксель:
1 2 3 | ТабличныйДокумента.Записать(<ИмяФайла>, <ТипФайлаТаблицы>); |
Указав в качестве типа файла таблицы ТипФайлаТабличногоДокумента.XLSX в итоге получим файл Эксель, но в нем мы не увидим привычных листов, соответственно и сохранить несколько табличных документов в одну книгу не получится.
В результате изучения проблемы и поисков в интернете, родился следующий алгоритм, который был реализован в качестве процедуры:
- Открываем Эксель;
- Создаем новую книгу с 1 листом (переменная Книга);
- В цикле каждое табличный документ сохраняем в файл с типом xlsx;
- Открываем файл с выгруженным табличным документом, и копируем лист в нашу рабочую книгу, вставляя последним листом;
- Закрываем временный файл, удаляем из временного хранилища и переходим к следующему табличному документу;
- Последним шагом — сохраняем книгу, закрываем эксель.
ЛИСТ
ООО «Фирма ЛИСТ» — официальный партнер фирмы «1С» г.Москва — успешно работает на рынке информационных технологий с 1999 года.
Основная специализация: комплексная автоматизация всех видов учета на базе программных продуктов экономического назначения, созданных на технологической платформе «1С:Предприятие».
ООО «Фирма ЛИСТ» имеет все соответствующие сертификаты, которые позволяют ей обеспечивать:
- Помощь в выборе оптимальных для Заказчика программных продуктов «1С:Предприятие», а также аппаратного обеспечения, поставку и установку программных продуктов на компьютерах и серверах Заказчика.
- Настройку программного обеспечения «1С: Предприятие» под конкретного пользователя.
- Внедрение программного обеспечения «1С: Предприятие» , в т.ч. по проектной технологии (от обследования предприятий до промышленной эксплуатации программных продуктов).
- Сопровождение пользователей программ «1С: Предприятие» (обновление релизов программ и конфигураций, информационно-технологическое сопровождение, разработка отчетных форм, доработка конфигураций, консультирование пользователей).
- Консалтинговые услуги по бухгалтерскому и налоговому учету.
- Сертифицированное обучение работе с программными продуктами «1С:Предприятие» на базе оборудованного учебного центра «Фирма ЛИСТ».
- Подготовка специалистов «1С» из студентов и выпускников ВУЗов по индивидуальным заказам предприятий.
- В рамках этого направления при Учебном Центре ООО «Фирма ЛИСТ» с 2007 года существует Студенческий Образовательный клуб (СОК) «1С».
Интересные материалы:
- 1С FTP удалить
Описание ошибки: При обмене через ftp-соединение возникает ошибка и обмен не выполняется: Ошибка при копировании…
- 1С разблокировать документ
Учетные записи. Защита базы или как поставить пароль на 1С.Зачем нужны учетные записи 1СДействительно, многие…
- 1С вылетает через 10 минут
На днях пришлось решать еще одну проблему с вылетанием 1С. Вылетала Бухгалтерия, при этом платформа…
- Значок 1С 8
Поле Дата отгрузки не заполнено 1С УПП убрать проверку #802424 Получение остатка по конкретному товару…
- Конфликт блокировок 1С
В многопользовательских системах важную роль играет правильная организация структуры и настройка блокировок. Если ее нет,…