Фильтр 1с как в excel управляемая форма
1.Создадим внешнюю обработку для импорта/экспорта из 1С в EXCEL.
2.Добавим в обработку табличную часть с именем = «ТЧ_ЗагрузкаВыгрузкаExcel» и
реквизитами табличной части = «Фамилия», « Имя», « Отчество», «ТабельныйНомер».
3.Добавим Форму с именем = «Форма».
4.На закладке Формы «Команды»àКоманды формыàДобавим команды: «ЗагрузитьИзExcel»,«ВыгрузитьВExcel» -à Перетащим эти команды мышкой на форму и увидим соответствующие кнопки с именем «ЗагрузитьИзExcel»,«ВыгрузитьВExcel»
5. Откроем с помощью значка «Лупа» Действие Команды «ЗагрузитьИзExcel»
и создадим на клиенте процедуру = Процедура ЗагрузитьИзExcel (Команда).
Результат работы программы:
Программный код для команды ЗагрузитьИзExcel:
//Загрузить данные из Excel-Файла в табличную часть обработки(Команда)
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Заголовок = "Выберите Excel-файл для загрузки .";
Если ДиалогОткрытияФайла.Выбрать() Тогда
Excel = Новый COMОбъект("Excel.Application");
ExcelЛист = Excel.Sheets(1); // Встать на первый лист Excel-файла
Сообщить("Не установлено приложение MS Excel. ");
Объект.ТЧ_ЗагрузкаВыгрузкаExcel.Очистить(); //Очистить табличную часть перед загрузкой.
ТекущаяСтрока = 2; //Чтобы встать сразу на вторую строку Eccel-файла, т.к. в первой строке обычно заголовок.
ТекущееЗначение = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
Пока ЗначениеЗаполнено(ТекущееЗначение) Цикл
Состояние("Загрузка данных. строка " + Строка(ТекущаяСтрока-1));
Элементы.ТЧ_ЗагрузкаВыгрузкаExcel.ТекущиеДанные.Фамилия = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
Элементы.ТЧ_ЗагрузкаВыгрузкаExcel.ТекущиеДанные.Имя = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 3).Value);
Элементы.ТЧ_ЗагрузкаВыгрузкаExcel.ТекущиеДанные.Отчество = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 4).Value);
Элементы.ТЧ_ЗагрузкаВыгрузкаExcel.ТекущиеДанные.ТабельныйНомер = Формат(Число(СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 5).Value)),"ЧГ=0");
ТекущаяСтрока = ТекущаяСтрока + 1;
ТекущееЗначение = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
Сообщить("Программа выполнена: "+ТекущаяДата());
_____________________________________________________________________________________
Шаблон для быстрой загрузки из Excel (форматы *.xls, *.xlsx) средствами платформы 8.3 с помощью табличного документа. Не нужно работать с MSExcel.Application, ADO. В платформе 8.3 у табличного документа развили метод Прочитать(), и сейчас можно загружать данные не только из файлов *.mxl, но и *.xls и *.xlsx. Подробнее в описании.
Шаблон для быстрой загрузки различных файлов Excel.
В новых версиях платформы, у табличного документа можно воспользоваться методом Прочитать(ИмяФайла, СпособЧтенияЗначений) для загрузки данных из файлов *.xls, *.xlsx, причем необязательно указывать формат загружаемого файла (второй необязательный параметр).
СпособЧтенияЗначений - Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
Принцип работы обработки
1) Загрузка данных из файла Excel в новый табличный документ:
2) Загружаем в построитель отчета как источник данных
3) Выгружаем результат построителя в ТЗ
При этом имена колонок формируются по первой строке таблице (заголовки), преобразуя текст в ячейке по правилам именования (пример: "Дата рождения" преобразуется "ДатаРождения".
Важно: метод Прочитать() не работает на клиенте, поэтому при работе на управляемых формах в клиент-серверной базе, необходимо будет передать сам файл с клиента через временное хранилище на сервер.
В дальнейшем можно работать непосредственно с таблицей значений.
В Обработке - пример реализации шаблона, для обычных и управляемых форм (одна обработка с двумя формами), при этом:
1) диалог выбора файла Excel,
2) для управляемых форм - передача через временное хранилище файла с клиента на сервер,
3) автоматическое создание колонок, реквизитов и вывод на форму вновь загруженной таблицы значений.
Тестировалось на платформе 8.3.12.1567, на конфигурациях УТ 10.3 и ЗУП 3.1.
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 14
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Экспорт и Импорт данных 1С - Microsoft Excel 12
Экспорт Процедура ОсновныеДействияФормыЭкспорт(Кнопка) - выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel с указанным именем, используя преобразование данных к типу число и типу строка; Процедура Основ Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Работа с MS Word через OLE 10
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и опис Посмотреть все в категории Работа с Microsoft Office и OpenOffice
После манипуляции с файлом необходимо его закрыть. В противном случае он останется захваченным в системе, и мы не сможем его использовать в других приложениях.
Клиент-Серверный вариант в управляемых формах.
1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.
2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.
Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.
В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.
На выходе получаем двумерный массив, который содержит все данные указанного листа Excel
Полезные функции при работе с Excel:
Устанавливает видимость Excel при работе |
Добавление новой книги в файл Excel |
Сохранение книги Excel |
Добавление нового листа к книге |
Переименование листа |
Изменение маштаба листа |
Изменение ориентации листа |
Отступы листа |
Обращение к ячейки чтение/запись |
Обращение к области ячеек |
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой. |
Объединение ячеек |
Работа с именованными ячейками в Excel |
Удаление ячейки |
Удаление области ячеек |
Обращение к строке |
Изменение ширины колонки |
Обращение к колонке |
Удаление Строки |
Фон ячейки / области / Строки / |
Функция переводит цвет из формата RGB в формат Excel |
Управление шрифтом в ячейки/строке/области |
Р азрешает переносить по словам в ячейке |
Управление рамкой ячейки |
Устанавливаем формат ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Функция для получения ширины колонки Excel Спасибо пользователю goodwill |
Разрешить перенос слов в ячейке Спасибо пользователю roofless |
Группировки данных на листе Спасибо пользователю dr-wit, ignor |
При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.
2. Работа с Excel через ТабличныйДокумент 1С
С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.
Итак, приступим: загрузка из Excel:
1. Загружаем файл Excel в табличный документ
2. Производим манипуляции уже с ТабличнымДокументом
Давайте теперь разберем сохранение в Excel с помощью данного метода:
Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
2. Работа с Excel ADODB
Выражаю особую благодарность коллеги Fragster за хороший комментарий
Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:
- Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
- Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.
Подключение к ADO
Отключение от ADO
Выполнение запроса
Пример запроса:
Запись в Excel тоже производится в виде запроса:
Хочу отметить что наименование полей производится по первой строке в таблице
ADODB предоставляет ряд объектов, с которыми мы работаем
ADODB.Recordset
В файле продемонстрированны оба варианта работы с запросами.
На этом пока все. По возможности буду дополнять статью :)
В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.
Excel — это сторонняя программа, ее можно запускать из 1С в невидимом и видимом режиме и пользоваться всеми возможностями. Excel должен быть установлен на компьютере. Для примера приведено чтение таблицы в из файла Excel на клиенте, передача на сервер и создание на сервере таблицы значений с данными из файла. Такую задачку любят давать на собеседованиях на должность программиста 1С.
&НаКлиенте
Процедура НажатиеКноки ()
// обращаемся к Excel
Попытка
Эксель = новый COMОбъект ( «Excel.Application» );
Исключение
Сообщить ( ОписаниеОшибки ());
Возврат;
КонецПопытки;
ПутьКФайлу = «C:\Некоторый файл.xlsx» ;
// открываем ексель файл
Книга = Эксель . WorkBooks . Open ( ПутьКФайлу );
// переходим на первую страницу
Лист = Книга . WorkSheets ( 1 );
// для количества колонок и строк в экселе есть специальные ячейки
ВсегоКолонок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Column ;
ВсегоСтрок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Row ;
// сохраняем файл в массив строк, где строка это так же массив (на клиенте
// нельзя создавать таблицу значений
НаборСтрокФайла = новый массив ;
для Строка = 1 по ВсегоСтрок цикл
МассивСтрока = новый массив ;
для Колонка = 1 по ВсегоКолонок цикл
// получаем значение из ячейки excel
Значение = СокрЛП ( Лист . Cells ( Строка , Колонка ). Value );
МассивСтрока . Добавить ( Значение );
КонецЦикла;
НаборСтрокФайла . Добавить ( МассивСтрока );
КонецЦикла;
// запишем файл с другим именем
Эксель . SaveAs ( «C:\ФайлСДругимИменем.xlsx» );
// закрываем ексель, иначе он останется висеть в памяти
Эксель . Application . Quit ();
&НаСервере
Процедура СоздатьИОбработатьТаблицуЗначений ( НаборСтрокФайла , ВсегоКолонок )
ТЗ = новый ТаблицаЗначений ;
// создаем колонки таблицы значений (столько сколько в файле ексель)
для й = 1 по ВсегоКолонок цикл
ТЗ . Колонки . Добавить ( «кол» + Формат(й, «ЧЦ=4; ЧГ=» ));
КонецЦикла;
// переносим строки из массива в таблицу значений
для каждого МассивСтрока из НаборСтрокФайлацикл
НовСтрока = ТЗ . Добавить ();
для Колонка = 1 по ВсегоКолонок цикл
// переносим значение из массива в таблицу
НовСтрока [ Колонка — 1 ] = МассивСтрока [ Колонка — 1 ];
КонецЦикла;
КонецЦикла;
Далее приводятся наиболее частые ситуации, возникающие на
Поиск и замена текста в ячейках файла Excel
//Выбираем область поиска — весь лист
ОбластьПоиска = Лист . Cells ;
// Начинаем поиск с левого верхнего угла
НачалоЛиста = Лист . Cells ( 1 , 1 );
// Ищем ячейку с текстом «привет»
ОбластьПараметр = ОбластьПоиска . Find ( «привет» , НачалоЛиста );
// Если нашли вывсодим найденую строку
Если ОбластьПараметр <> неопределено Тогда
Сообщить ( ОбластьПараметр . Value ) ;
КонецЕсли ;
Работа со строками в Excel
//Выбираем первую строку
НачальнаяСтрока = Лист . Cells ( 1 , 1 );
// Выделяем всю строку
НачальнаяСтрока . EntireRow . Select ();
// Копируем выделенное
НачальнаяСтрока . EntireRow . Copy ();
// Вставляем (новая строка будет вставлена тут же)
НачальнаяСтрока . EntireRow . Insert ();
// Удалим строку
НачальнаяСтрока . EntireRow . Delete ();
Прочие полезные методы Excel
Работа с Excel в 1С 8.3: 2 комментария
Считываются все Листы Excel. Не понятно как считать только один Лист? Наконец 1С родила долгожданный функционал!
Читайте также: