Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: РЕШЕННО загрузка файла Excel в 1С через Microsoft.ACE.OLEDB.

Не работает
Код:
СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.16.0;Data Source=G:\11\Кадорр, Б.Арнаутская 26-30.xlsx;Extended Properties=Excel 16.0;";
    // создание соединения
        Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
       // Возврат

        Сообщить("Ошибка подключения к EXCEL");
        Возврат;
    КонецПопытки;
    сообщить("УСПЕШНО EXCEL");   
кто знает почему?
Excel 2016, 1c 8.3.9.2033
Ответ:
нет, я просто скачала AccessDatabaseEngine_X64 и инсталлировала отдельно, а в
Код:
СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\11\Кадорр, Б.Арнаутская 26-30.xlsx;Extended Properties=Excel 12.0;";
заменила 16 на 12
Вопрос: Active Document Сохранение в Excel

Платформа 8.3.5.1248. Макет Active Document (Excel). При выводе документа excel открывается, показывает документ и сразу закрывается. "Windows(1).Visible" не помогает(. До перехода на 8.3 на платформе 8.2 работало (Word-ий документ остается открытым).
СОМОбъектExcel.Application.Visible = Истина;
СОМОбъектExcel.Windows(1).Visible = Истина;
Может кто-то сталкивался?
Ответ: trew,

Excel 2013. У меня две копии базы - старая и новая. В старой этот кусочек работает, документ открывается и остается открытым. В новой - Excel закрывается.

Ваше предложение - не помогло(
Вопрос: УТ 11.3 Загрузка данных из Excel на стороне сервера

Добрый день!
Хочу с помощью внешней обработки под УТ 11.3 считывать данных из Excel на стороне сервера построчно, и обрабатывать. Но работа с эксель вроде как возможно только на клиенте.
Как решается такая задача? Очень хочу использовать именно xls, а не csv
Ответ:
С экселем вроде разобрался - он читается на сервере. Просто...пришлось перераспределить написанный код по процедурам сильно их переосмыслив....
Вопрос: Перенос данных из Excel в 1С

Прохожу практику, попал на фирму занимающуюся разработкой приложений для 1С.
Мне шеф поставил задачу создать перенос данных из Excel в 1С.
На данном этапе от меня только то и требуется найти способ получения данных их определенной ячейки табличного документа (SpreadSheet). Данные в табличный документ переносятся при помощи копирования из Экселя (такое условие).
1. Пытаюсь выгрузить их в таблицу значений для дальнейшей обработки (Сортировки). Кто подскажет, является ли мой подход для выполнения задачи правильным?
2. Как узнать количество Строк и Столбцов табличного документа включая пустые ячейки (иногда в заголовке, иногда в первом столбце)
Ответ:
Спасибо за ответ, получилость загрузить данные из таблицы EXCEL в таблицу значений, получилось прочитать метаданные из базы данных и загрузить их во вторую таблицу значений.
Создал таблицу настроек, в которой значениям из Excel противопоставляются значения из базы данных. Но вот если программа сама не сделала правильного сопоставления, требуется ручной выбор.
Прикрепляю скриншот для более точного понимания моей проблемки. Мне надо кликнуть на поле и получить возможность выбрать (возможно из выпадающего списка) соответствующее значение из базы даных (оно уже находится в списке значений).
Благодарен за любую идею

Вложения:

  • Размер файла:
    20,9 КБ
    Просмотров:
    9
Вопрос: Загрузка прайс-листа из excel

Всем привет. Ребят, есть ли в УТ 11.3 стандартная возможность загружать прайс-листы excel?

Перечитал все книги, весь инет. Ответ только один

В прайс-листе сделать так

но это только при условии, что прайс предварительно был выгружен в этом же прайсе одноименной командой?
Ответ:
Этот механизм, я так понимаю, создаст номенклатуру поставщиков?
Короче. Есть прайс листы от поставщиков. В формате excel. Структура у всех разная. Причем очень. Нужно грузить это в программу. Потом осуществляют продажу этих номенклатурных позиций уже по розничным ценам.
Вопрос: Вывод из Excel цен

Здравствуйте! Возник такой вопрос: как можно вывести из xls-файла (Excel 97-2003) данные из разных столбцов в табличную часть, при этом чтобы они не перебивались (например, в отчёте одного вида нужно вывести данные из столбца 29 в "Цены для физ.лиц" и "Цены для юр.лиц", а в другой - из 61 и 59 соответственно, но это должно выполняться всё в одном документе):

Код:
Процедура ДействияФормыГрузимЦены(Кнопка)
Если ЗначениеЗаполнено(файл) тогда
сообщить(файл);
док=получитьComобъект(файл);
номстр=1;
ии=0;
нн=0;
Сообщить(сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value));
пока сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value)<>"zzzzzz" цикл//смотрим код!!!
ии=ии+1;
Зкод=сокрлп(""+док.SHeets("Лист").Cells(номстр,1).value);
сообщить(Зкод);//код
Знаим=сокрлп(""+док.SHeets("Лист").Cells(номстр,2).value);//наименование
спр=справочники.Прейскурант.НайтиПоКоду(СокрЛП(Зкод));
Если спр.Ссылка<>справочники.Прейскурант.ПустаяСсылка() Тогда
стро=Работы.Добавить();
стро.ПунктПрейскуранта=спр.Ссылка;
стро.код=Зкод;
стро.ценанас=сокрлп(""+док.SHeets("Лист").Cells(номстр,61).value);
стро.ценаюл=сокрлп(""+док.SHeets("Лист").Cells(номстр,59).value);
Иначе
  сообщить("не найден код="+Зкод);
КонецЕсли; 
номстр=номстр+1;
КонецЦикла;
  Конецесли;
КонецПроцедуры
В общем, должно быть так:
в отчёте "Прейскурант-1" должны выводиться цены из столбца 29 в столбцы табличной части под названиями "Цены для физ.лиц" и "Цены для юр.лиц" (два одинаковых значения из "29"), а в отчёте "Прейскурант-2" - из столбцов 61 для физ.лиц и 59 - для юр.лиц (для них в табличной части предусмотрены столбцы "Цены для физ.лиц" и "Цены для юр.лиц".
Ответ:
Так понимаю, вас не смущает тот факт, что количество строк в листах Excel немного так разное и вы работаете с каким-то одним листом, на котором есть нужные вам значения либо в 29 колонке, либо в 59/61?

вообще без разницы, как будут называться листы в разных книгах, главное - выбирать нужный лист.

Открыть второй файл и работать с ним.
Вопрос: Обработка для выгрузки данных из excel файла в документ 1с.

8.3.УФ. Самописная конфигурация.
Необходимо написать обработку для того, чтобы из файла xlsx выгрузить данные в документ в 1С.
Может, где-то есть инструкция, чтобы пошагово написать. Или хотя бы тезисно. Универсальная обработка от 1с не подходит, так как там выгрузка идет либо в справочник, либо в регистр. А вот документ не реализован.
+ Нет excel, только лишь Open Office.
Прошу помощи. Хочется научиться это делать.
Ответ:
Это все прекрасно и хорошо. Но в нужном мне документе нет табличной части. Поэтому в списке его там нет. Мне нужно заполнить шапку документа , без задействования табличной части.
Вопрос: Выгрузка отчета в Excel

Здравствуйте! Мб кто-то поможет в моей проблеме.
Задача такая: Нужно печатную форму прайса выгрузить в Excel и в определенные ячейки передать формулу, чтобы менеджер , при открытии файла, мог задать количество сам и по переданной формуле она умножилась на цену и просчиталась.
Не могу понять, иногда процедура срабатывает, иногда нет.
В чем причина? Мб кто увидит.
Спасибо
Процедура ОткрытьВЭкселе()Экспорт
мТабДок.Записать(ФайлВыгрузки, ТипФайлаТабличногоДокумента.XLS);
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ФайлВыгрузки);
ExcelЛист = Excel.Sheets(1);

номер=ном +30;
ExcelЛист.Cells(18, 9).FormulaLocal="=СУММ(R[4]C:R["+Строка(НомЕР)+"]C)";
дЛЯ н=22 ПО номер цикл
ExcelЛист.Cells(н, 9).FormulaLocal = "=RC[-1]*RC[-2]";

КонецЦикла;
Исключение
// Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
Excel.WorkBooks.Close();


Возврат;
КонецПопытки;
// ExcelЛист.Activate();

Excel.Visible = 1;
Excel.ActiveWorkBook.Save();
Excel.WorkBooks.Close();
Excel = 0;
КонецПроцедуры //

Прикремила файл, который выгрузил формулу. Количество столбцов не меняется.
Мб есть ограничение на кол строк? Их мб и 10 000 штук

Вложения:

  • Размер файла:
    118,5 КБ
    Просмотров:
    3
Ответ:
Спасибо огромное!!!
--- Объединение сообщений, 15 июн 2017 ---
Получилось!
Вопрос: БП 3.0 Закрыть процесс EXcel

ребят задача стоит у меня такая. допустим я запустил excel выгрузку загрузку через OLE
Excel = Новый COMОбъект("Excel.Application");


но при выполнение взяли и принудительно закрыли 1с допустим
Остался висеть EXCEL процесс

потом я опять запускаю обработку
но как сделать чтобы закрылся вот этот зависший процесс
в обработке написано вот так сейчас, закрывается только текущий процесс

Процедура ОтключатьсяОтExcel(Соответстие)
Попытка
Соответстие["Соединение"].DisplayAlerts = 0;
Соответстие["ExcelФайл"].Close();
Соответстие["Соединение"].DisplayAlerts = 1;
Соответстие["Соединение"].Quit();
Соответстие["Соединение"] = Неопределено;
Исключение
Сообщить("Не удалось отключиться от Excel - "+ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры


Наверное только так?
КомандаСистемы("taskkill /F /IM excel.exe");
Ответ:
Добрый день.
На самом деле основной вопрос данной темы, зачем я буду искать процессы зависшие из-за "насильного" закрытия приложений?
Вопрос: выгрузка ТЧ обработки В Excel

Здравствуйте. В собственной конфигурации 1С 8.3 есть обработка, у которой есть реквизит формы: ПереченьРабот - Таблица Значений. Заполняю ТЧ так:
Код:
&НаСервере
Процедура ПолучитьПереченьРабот()
   
    Структура = Новый Структура();
   
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОтработаноЧасовОбороты.Сотрудник.ФИОПолное КАК ФИО,
                   |    ОтработаноЧасовОбороты.Сотрудник.Должность.Наименование КАК Должность,
                   |    ОтработаноЧасовОбороты.Сотрудник.Подразделение.Наименование КАК Подразделение,
                   |    ОтработаноЧасовОбороты.ПроектныйДокумент.НаименованиеРаздела КАК НаименованиеРаздела,
                   |    ОтработаноЧасовОбороты.ПроектныйДокумент.НазваниеДокумента КАК НаименованиеДокумента,
                   |    ОтработаноЧасовОбороты.КоличествоЧасовРасход КАК ЧасыФакт,
                   |    ОтработаноЧасовОбороты.Сотрудник.Код КАК ТабНомер,
                   |    ОтработаноЧасовОбороты.ПроектныйДокумент.Наименование КАК ШифрДокумента,
                   |    ОтработаноЧасовОбороты.Назначение.КолЧасовПлан КАК ЧасыПлан,
                   |    ОтработаноЧасовОбороты.ПроектныйДокумент.Примечание КАК Примечание,
                   |    ОтработаноЧасовОбороты.Назначение.ДатаНачала КАК ДатаНачалаПлан,
                   |    ОтработаноЧасовОбороты.Назначение.ДатаОкончанияПлан КАК ДатаОкончанияПлан,
                   |    ОтработаноЧасовОбороты.Назначение.ДатаОкончанияФакт КАК ДатаОкончанияФакт
                   |ИЗ
                   |    РегистрНакопления.ОтработаноЧасов.Обороты(
                   |            ,
                   |            ,
                   |            ,
                   |            Объект = &Объект
                   |                И Назначение.ДатаОкончанияФакт <> ДАТАВРЕМЯ(1, 1, 1)) КАК ОтработаноЧасовОбороты";
    Запрос.УстановитьПараметр("Объект",Объект_);   
    ПереченьРабот.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Затем на клиенте выгружаю полученную ТЗ в файл Excel:
Код:
НаКлиенте
Процедура СформироватьОтчет(Команда)
    ПутьФайлШаблона = Объект.ИмяФайлаШаблона;
   
    ПутьФайлТаблицыГрафиков = Объект.ИмяФайлаГрафиков;
    Excel = Новый COMОбъект("Excel.Application");
    Книга = Excel.WorkBooks.Add();
..........................................................................................................
Лист = Книга.WorkSheets("Перечень документов");
    ПолучитьПереченьРабот();
        сообщить(ПереченьРабот.Количество());
    НомерСтроки = 1;
    Для Каждого Строка Из ПереченьРабот Цикл
        Лист.Range("A"+Строка(НомерСтроки+8)).Value = НомерСтроки;
        Лист.Range("B"+Строка(НомерСтроки+8)).Value = Строка.ТабНомер;
        Лист.Range("C"+Строка(НомерСтроки+8)).Value = Строка.ФИО;
        Лист.Range("D"+Строка(НомерСтроки+8)).Value = Строка.Должность;
        Лист.Range("E"+Строка(НомерСтроки+8)).Value = Строка.Подразделение;
        Лист.Range("F"+Строка(НомерСтроки+8)).Value = Строка.НаименованиеРаздела;
        Лист.Range("G"+Строка(НомерСтроки+8)).Value = Строка.НаименованиеДокумента;
        Лист.Range("H"+Строка(НомерСтроки+8)).Value = Строка.ШифрДокумента;
        Лист.Range("I"+Строка(НомерСтроки+8)).Value = Строка.Примечание;
        Лист.Range("J"+Строка(НомерСтроки+8)).Value = Строка.ЧасыПлан;
        Лист.Range("K"+Строка(НомерСтроки+8)).Value = Строка.ДатаНачалаПлан;
        Лист.Range("L"+Строка(НомерСтроки+8)).Value = Строка.ДатаОкончанияПлан;
        Лист.Range("M"+Строка(НомерСтроки+8)).Value = Строка.ЧасыФакт;
        Лист.Range("N"+Строка(НомерСтроки+8)).Value = Строка.ДатаОкончанияФакт;
        НомерСтроки = НомерСтроки + 1;
    КонецЦикла;
при работе цикла вылетает ошибка:
{Обработка.КвартальныйОтчетПоУправлениюПроектом.Форма.Форма.Форма(52)}: Ошибка при вызове метода контекста (Range)
Лист.Range("A"+Строка(НомерСтроки+8)).Value = НомерСтроки;
по причине:
Произошла исключительная ситуация (0x800a03ec)

такая ошибка вылетает при большом количестве строк в ТЗ - например для значения &Объект , на котором выскочила ошибка, количество строк в ТЗ - 2212. ТЗ размером 310,410,500 строк выгружались при этом нормально. Что не так? как решить проблему? помогите пожалуйста.
Ответ:
спасибо большое все работает