Ошибка при вызове метода контекста cells произошла исключительная ситуация 0x800a03ec

   vechiy

16.03.11 — 18:34

Загружаем данные из некой обработки, при чтении значения ячейки получаем следующее:

{Форма.Форма(118)}: Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)

       сФИО    = фЭксель.Sheets(нСтраница).Cells(нСтрока-1,КолонкаФИО).Value;      

по причине:

Произошла исключительная ситуация (0x800a03ec)

Обработка то работает, то нет. Может зависеть от версии офиса?

Кто сталкивался с подобной ошибкой?

I am getting «HRESULT: 0x800A03EC» error when running Excel add-in with following code:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"s+", "");
rng.set_Value(cleanV);

When error happens X and Y are set to 1, thus Excel range is not violated.
I searched extensively and tried a number of ways of setting the cell value (eg. Cells[x,y], range.set_Value()) but am at loss why this error happens and how to avoid it.

Any help is greatly appreciated.

Below are exception details:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationRibbon1.cs:line 55
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
  InnerException: 

Здравствуйте! Подскажите, пожалуйста! Загружаю из Excel данные, хочу обратиться к именованной области, выдает следующую ошибку: «Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)
ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
по причине:
Произошла исключительная ситуация (0x800a03ec)»

Процедура ОсновныеДействияФормыЗагрузить(Кнопка)

НомерКолонкиАртикул = ЭлементыФормы.ТабличныйДокумент.Область(«R2C1»;
НомерКолонкиНаименованияТовара = ЭлементыФормы.ТабличныйДокумент.Область(«R2C2»;
НомерКолонкиЕдиницаИзмерения = ЭлементыФормы.ТабличныйДокумент.Область(«R2C3»;
НомерКолонкиСтрана = ЭлементыФормы.ТабличныйДокумент.Область(«R2C4»;

//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Excel = новый COMОбъект(«Excel.Application»;

Версия = Лев(Excel.Version,Найти(Excel.Version,».»-1);
Если Версия = «8» тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
ФайлКолонок = Excel.Cells(2,1).SpecialCells(21).Column;
Конецесли;

// Выбираем данные из файла
Для а = Excel.Cells(2,1).SpecialCells(21).Row по ФайлСтрок Цикл

//Полуим данные из соответсвующих ячеек
Артикул = СокрЛП(Excel.Cells(а,Артикул).Value);
НаименованиеТовара = СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
ЕдиницаИзмерения = СокрЛП(Excel.Cells(а,НомерКолонкиЕдиницаИзмерения).Value);

Товар = Справочники.Номенклатура.ПустаяСсылка();

// Ищем товар в справочнике по коду
Товар = Справочники.Номенклатура.НайтиПоКоду.Артикул;

// Если не нашли по коду, то ищем по наименованию
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.НайтиПоНаименованию.Наименование;
Конецесли;

//Если не нашли создаем новый
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.СоздатьЭлемент();
Товар.Наименование = НаименованиеТовара;
Товар.Артикул = Артикул;
Товар.БазоваяЕдиницаИзмерения = ЕдиницаИзмерения;
Товар.СтранаПроисхождения = НомерКолонкиСтрана;
Товар.Записать();
Конецесли;
КонецЦикла;

КонецПроцедуры

I found a possible solution here: http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15

Edit:

If you automate Microsoft Excel with Microsoft Visual Basic .NET, Microsoft Visual C# .NET, or Microsoft Visual C++, you may receive the following errors when calling certain methods because the machine has the locale set to something other than US English (locale ID or LCID 1033):

Exception from HRESULT: 0x800A03EC

and/or

Old format or invalid type library

SOLUTION 1:


To get around this error you can set CurrentCulture to en-US when executing code related to Excel and reset back to your originale by using these 2 functions.

//declare a variable to hold the CurrentCulture
System.Globalization.CultureInfo oldCI;
//get the old CurrenCulture and set the new, en-US
void SetNewCurrentCulture()
{
  oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
//reset Current Culture back to the originale
void ResetCurrentCulture()
{
  System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
}

SOLUTION 2:


Another solution that could work, create a 1033 directory under Microsoft OfficeOffice11 (or your corresponding office-version), copy excel.exe to the 1033 directory, and rename it to xllex.dll.

Although you might solve the problem using one off these solutions, when you call the Excel object model in locales other than US English, the Excel object model can act differently and your code can fail in ways you may not have thought of. For example, you might have code that sets the value of a range to a date:

yourRange.Value2 = «10/10/09»

Depending on the locale this code can act differently resulting in Excel putting into the range any of the following values:

October 10, 2009
September 10, 2009
October 9, 2010

I found a possible solution here: http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15

Edit:

If you automate Microsoft Excel with Microsoft Visual Basic .NET, Microsoft Visual C# .NET, or Microsoft Visual C++, you may receive the following errors when calling certain methods because the machine has the locale set to something other than US English (locale ID or LCID 1033):

Exception from HRESULT: 0x800A03EC

and/or

Old format or invalid type library

SOLUTION 1:


To get around this error you can set CurrentCulture to en-US when executing code related to Excel and reset back to your originale by using these 2 functions.

//declare a variable to hold the CurrentCulture
System.Globalization.CultureInfo oldCI;
//get the old CurrenCulture and set the new, en-US
void SetNewCurrentCulture()
{
  oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
//reset Current Culture back to the originale
void ResetCurrentCulture()
{
  System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
}

SOLUTION 2:


Another solution that could work, create a 1033 directory under Microsoft OfficeOffice11 (or your corresponding office-version), copy excel.exe to the 1033 directory, and rename it to xllex.dll.

Although you might solve the problem using one off these solutions, when you call the Excel object model in locales other than US English, the Excel object model can act differently and your code can fail in ways you may not have thought of. For example, you might have code that sets the value of a range to a date:

yourRange.Value2 = «10/10/09»

Depending on the locale this code can act differently resulting in Excel putting into the range any of the following values:

October 10, 2009
September 10, 2009
October 9, 2010

Форум 1С : Все вопросы » Загрузка данных в 1С Загрузка данных в 1С

ЮлияЮ
25.05.2018 08:27 Прочитано: 3882

При загрузке данных из Eхcel выдаёт ошибку «Произошла исключительная ошибка (0х800а03ес)», что сделать? Я новичок, ещё не очень разбираюсь в программе.

Yandex
Возможно, вас также заинтересует

Реклама на портале

all4cf
28.05.2018 10:57 Ответ № 1

Ошибка говорит о том что не может прочитать данные с ячейки файла, проверьте все ли строки и колонки в файле заполнены

Подсказка: Для быстрого поиска ответов — используйте ‘Поиск’

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.

[ Главная | FAQ: Все | 7.х | 8.х | 8.2 УП | 8.3 | Видео | Files | Forum | Freelance | Поиск | Реклама на HelpF.pro | Обратная связь ]
HelpF.pro [old Help1C.com] 2009-2023 Все материалы, размещенные на сайте, добавлены посетителями сайта или взяты из свободных источников. Подробнее…

Icon Ex Номер ошибки: Ошибка 0x800A03EC
Название ошибки: Excel ? Error Object Returned Error Code 0X800A03Ec
Описание ошибки: Ошибка 0x800A03EC: Возникла ошибка в приложении Microsoft Excel. Приложение будет закрыто. Приносим извинения за неудобства.
Разработчик: Microsoft Corporation
Программное обеспечение: Microsoft Excel
Относится к: Windows XP, Vista, 7, 8, 10, 11

Проверка «Excel ? Error Object Returned Error Code 0X800A03Ec»

Обычно люди ссылаются на «Excel ? Error Object Returned Error Code 0X800A03Ec» как на ошибку времени выполнения (ошибку). Разработчики, такие как Microsoft Corporation, обычно проходят через несколько контрольных точек перед запуском программного обеспечения, такого как Microsoft Excel. К сожалению, такие проблемы, как ошибка 0x800A03EC, могут быть пропущены, и программное обеспечение будет содержать эти проблемы при выпуске.

Некоторые пользователи могут столкнуться с сообщением «Excel ? Error Object Returned Error Code 0X800A03Ec» при использовании Microsoft Excel. Когда это происходит, конечные пользователи могут сообщить Microsoft Corporation о наличии ошибок «Excel ? Error Object Returned Error Code 0X800A03Ec». Разработчик сможет исправить свой исходный код и выпустить обновление на рынке. Эта ситуация происходит из-за обновления программного обеспечения Microsoft Excel является одним из решений ошибок 0x800A03EC ошибок и других проблем.

Как триггеры Runtime Error 0x800A03EC и что это такое?

Сбой устройства или Microsoft Excel обычно может проявляться с «Excel ? Error Object Returned Error Code 0X800A03Ec» в качестве проблемы во время выполнения. Следующие три наиболее значимые причины ошибок выполнения ошибки 0x800A03EC включают в себя:

Ошибка 0x800A03EC Crash — Ошибка 0x800A03EC является хорошо известной, которая происходит, когда неправильная строка кода компилируется в исходный код программы. Это возникает, когда Microsoft Excel не реагирует на ввод должным образом или не знает, какой вывод требуется взамен.

Утечка памяти «Excel ? Error Object Returned Error Code 0X800A03Ec» — если есть утечка памяти в Microsoft Excel, это может привести к тому, что ОС будет выглядеть вялой. Есть некоторые потенциальные проблемы, которые могут быть причиной получения проблем во время выполнения, с неправильным кодированием, приводящим к бесконечным циклам.

Ошибка 0x800A03EC Logic Error — Логическая ошибка вызывает неправильный вывод, даже если пользователь дал действительные входные данные. Это видно, когда исходный код Microsoft Corporation содержит недостаток в обработке данных.

Такие проблемы Excel ? Error Object Returned Error Code 0X800A03Ec обычно вызваны повреждением файла, связанного с Microsoft Excel, или, в некоторых случаях, его случайным или намеренным удалением. Основной способ решить эти проблемы вручную — заменить файл Microsoft Corporation новой копией. Более того, поддержание чистоты реестра и его оптимизация позволит предотвратить указание неверного пути к файлу (например Excel ? Error Object Returned Error Code 0X800A03Ec) и ссылок на расширения файлов. По этой причине мы рекомендуем регулярно выполнять очистку сканирования реестра.

Типичные ошибки Excel ? Error Object Returned Error Code 0X800A03Ec

Частичный список ошибок Excel ? Error Object Returned Error Code 0X800A03Ec Microsoft Excel:

  • «Ошибка Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Недопустимая программа Win32: Excel ? Error Object Returned Error Code 0X800A03Ec»
  • «Извините, Excel ? Error Object Returned Error Code 0X800A03Ec столкнулся с проблемой. «
  • «К сожалению, мы не можем найти Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Отсутствует файл Excel ? Error Object Returned Error Code 0X800A03Ec.»
  • «Проблема при запуске приложения: Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Не удается запустить Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Отказ Excel ? Error Object Returned Error Code 0X800A03Ec.»
  • «Ошибка пути программного обеспечения: Excel ? Error Object Returned Error Code 0X800A03Ec. «

Эти сообщения об ошибках Microsoft Corporation могут появляться во время установки программы, в то время как программа, связанная с Excel ? Error Object Returned Error Code 0X800A03Ec (например, Microsoft Excel) работает, во время запуска или завершения работы Windows, или даже во время установки операционной системы Windows. При появлении ошибки Excel ? Error Object Returned Error Code 0X800A03Ec запишите вхождения для устранения неполадок Microsoft Excel и чтобы HelpMicrosoft Corporation найти причину.

Корень проблем Excel ? Error Object Returned Error Code 0X800A03Ec

Заражение вредоносными программами, недопустимые записи реестра Microsoft Excel или отсутствующие или поврежденные файлы Excel ? Error Object Returned Error Code 0X800A03Ec могут создать эти ошибки Excel ? Error Object Returned Error Code 0X800A03Ec.

Точнее, ошибки Excel ? Error Object Returned Error Code 0X800A03Ec, созданные из:

  • Недопустимая или поврежденная запись Excel ? Error Object Returned Error Code 0X800A03Ec.
  • Файл Excel ? Error Object Returned Error Code 0X800A03Ec поврежден от вирусной инфекции.
  • Excel ? Error Object Returned Error Code 0X800A03Ec ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Microsoft Excel.
  • Другое приложение, конфликтующее с Excel ? Error Object Returned Error Code 0X800A03Ec или другими общими ссылками.
  • Microsoft Excel (Excel ? Error Object Returned Error Code 0X800A03Ec) поврежден во время загрузки или установки.

Продукт Solvusoft

Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

Автор Sweety Bell, 24 ноя 2015, 12:44

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте! Мне надо загрузить данные из excel в 8.2 обычное приложение. В цикле вывода возникает ошибка в методе Добавить. Первые 2 итерации пропускает нормально, потом выдает ошибку:
НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов,ИмяКолонки);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)

Процедура ОкрытьФайлНажатие(Элемент)
   ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   ДиалогВыбора.Заголовок ="Выберите файл";
   
Если ДиалогВыбора.Выбрать()Тогда
   ИмяФайла=ДиалогВыбора.ПолноеИмяФайла;
  КонецЕсли ;

   Таблица.Очистить();
Таблица.Колонки.Очистить();

Попытка
Excel=Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Excel");
ExcelЛист=Excel.Sheets(1);
Исключение
Сообщить("шибка при открытии файла");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;


Версия =Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия="8" Тогда
ФайлСтрок =Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок =Макс(Excel.Cells.CurrentRegion.Columns.Count,13);
Иначе
ФайлСтрок =Excel.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок =Excel.Cells(1,1).SpecialCells(11).Column;
КонецЕсли;

Счетчик=1;
Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл
ИмяКолонки=Excel.Cells(1,Счетчик).Text;
ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ","");
//Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
Таблица.Колонки.Добавить(ИмяКолонки);
НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов,ИмяКолонки);
НоваяКолонка.Данные=ИмяБезПробелов;
Счетчик=Счетчик+1;
КонецЦикла;

Для нс=2 по Файлстрок Цикл
НоваяСтрока=Таблица.Добавить();
Для НомерКолонки=1 По Таблица.Колонки.Количество()Цикл
ТекущееЗначение=Excel.Cells(нс.НомерКолонки).Text;
  ИмяКолонки=Таблица.Колонких[НомерКолонки-1].Имя;
  НоваяСтрока[ИмяКолонки]=ТекущееЗначение;



  КонецЦикла;
   КонецЦикла;

КонецПроцедуры


Смело запускайте отладчик. Он вам покажет название колонки.


показал колонку Наименование.
После этого на форме появляются 3 пустые колонки.
Помогите, пожалуйста, вывести на экран. Начальство убивает:fdbsdfbsd:


Вы слово «отладчик» сознательно не видите?


Вижу. Он показывает на эту строку
НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяКолонки);


Цитата: Sweety Bell от 24 ноя 2015, 13:12
Вижу. Он показывает на эту строку
НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяКолонки);

В приведенном вами коде нет такой строки. Есть такая:

НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов,ИмяКолонки);


Скажите, а что такое отладчик вы вообще знаете? Вывод строки с ошибкой и отладчик — это знаете ли, очень разные вещи.


Цитата: vitasw от 24 ноя 2015, 13:25
Скажите, а что такое отладчик вы вообще знаете? Вывод строки с ошибкой и отладчик — это знаете ли, очень разные вещи.

инструмент для пошаговой отладки. Я им и пользуюсь. Значение смотрю на табло

Добавлено: 24 ноя 2015, 13:47


Оно зависает на этом месте кода

ИмяКолонки=Excel.Cells(1,Счетчик).Text;


ИмяКолонки=СокрЛП(Excel.Cells(1,Счетчик).Value);


исправила. Теперь другая ошибка: Ошибка при вызове метода контекста (Cells)
      Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Value)Цикл
по причине:
Произошла исключительная ситуация (0x800a03ec)


  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • загрузка данных из excel в 8.2

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

  1. Платформа 8,2 УПП. Задача загрузить из Excel файла данные в Справочники.бюджет. При загрузке файла такое ощущения что он зацикливается. и выкидывает ошибку {Форма.Форма.Форма(29)}: Ошибка при вызове метода контекста (Cells)
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    по причине:
    Произошла исключительная ситуация (0x800a03ec)
    Подскажите что не так я выполняю. сам код

    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    СтруктураДанных = Новый Структура("Комментарий");
    
    НС = 1;
    Пока Истина Цикл 
    СтруктураДанных.Комментарий = СокрЛП(Ex.Cells(НС,2).Value); 
    Если СтруктураДанных.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    БюдОбъект.Комментарий= СтруктураДанных.Комментарий;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    БюдОбъект.Записать();
    НС = НС + 1;
    КонецЦикла;
    
    
    Ex.Quit();
    
  2. Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    1. вы в один и тот же элемент комментарии сыплете и перезаписываете в коде.
    2. скорее всего зацикливает

  3. Народ подскажите почему он сохраняет и заносит последнию строку из цикла а не весь список

    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    НС = 1;
    Пока Истина Цикл
    
    ПодСтрока=СокрЛП(Ex.Cells(НС,2).Value);
    ПодСтрока1=Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    БюдОбъект.Наименование=Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное ="Ебись оно все конем по цене="+ СокрЛП(Ex.Cells(НС,4).Value);
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    БюдОбъект.Записать();
    
    Если БюдОбъект.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    
    НС = НС + 1;
    
    КонецЦикла;
    
    
    Ex.Quit();
    
    КонецПроцедуры
    
  4. Потому, что получение объекта, у вас вне цикла, где вы его заполняете. По коду получается, что вы многократно перезаполняете и записываете один и тот-же объект

    И еще

    Пока Выборка.Следующий() Цикл 
  5. Процедура ИмяПроцедуры(Файл)
    //Вначале проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |  Бюджеты.Ссылка			 КАК Ссылка,
    |  Бюджеты.Наименование	   КАК Наименование,
    |  Бюджеты.НаименованиеПолное КАК НаимПолное,
    |  Бюджеты.Комментарий	    КАК Комментарий
    |ИЗ
    |  Справочник.Бюджеты КАК Бюджеты
    |");
    Выборка = Запрос.Выполнить().Выбрать();
    // Чтение файла
    Exel = ПолучитьТаблицуExcel(Файл);
    Индекс = 1;
    Пока Выборка.Следующий() Цикл
    ПодСтрока  = СокрЛП(Exel.Cells(Индекс,2).Value);
    ПодСтрока1 = Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    Если СокрЛП(Exel.Cells(Индекс,2).Value) = "" Тогда Продолжить; КонецЕсли; // Если комментарий не получен, переходим к следующему элементу
    БюдОбъект = Выборка.Ссылка.ПолучитьОбъект(); // Получим объект для заполнения
    // заполняем объект
    БюдОбъект.Наименование	   = Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное = "<Ненормативная лексика> по цене=" + СокрЛП(Exel.Cells(Индекс,4).Value);
    БюдОбъект.Комментарий	    = СокрЛП(Exel.Cells(Индекс,2).Value);
    // Запись заполненного объекта
    Попытка
    БюдОбъект.Записать();
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + Индекс);
    #КонецЕсли
    Исключение
    #Если Клиент Тогда
    Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
    #КонецЕсли
    КонецПопытки;
    // увеличиваем индекс на 1
    Индекс = Индекс + 1;
    
    КонецЦикла;
    // Закрытие файла
    Exel.Quit();
    КонецПроцедуры
  6. Спасибо за корректировку кода

  7. Народ подскажите пожалуйста как создать группу в справочнике 1с когда мы экспортируем из excel. Я хочу что бы те строки которые выделены жирным стали группами в справочнике 1с

I am getting «HRESULT: 0x800A03EC» error when running Excel add-in with following code:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"s+", "");
rng.set_Value(cleanV);

When error happens X and Y are set to 1, thus Excel range is not violated.
I searched extensively and tried a number of ways of setting the cell value (eg. Cells[x,y], range.set_Value()) but am at loss why this error happens and how to avoid it.

Any help is greatly appreciated.

Below are exception details:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationRibbon1.cs:line 55
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
  InnerException: 
  1. Платформа 8,2 УПП. Задача загрузить из Excel файла данные в Справочники.бюджет. При загрузке файла такое ощущения что он зацикливается. и выкидывает ошибку {Форма.Форма.Форма(29)}: Ошибка при вызове метода контекста (Cells)
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    по причине:
    Произошла исключительная ситуация (0x800a03ec)
    Подскажите что не так я выполняю. сам код

    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    СтруктураДанных = Новый Структура("Комментарий");
    
    НС = 1;
    Пока Истина Цикл 
    СтруктураДанных.Комментарий = СокрЛП(Ex.Cells(НС,2).Value); 
    Если СтруктураДанных.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    БюдОбъект.Комментарий= СтруктураДанных.Комментарий;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    БюдОбъект.Записать();
    НС = НС + 1;
    КонецЦикла;
    
    
    Ex.Quit();
    

  2. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    1. вы в один и тот же элемент комментарии сыплете и перезаписываете в коде.
    2. скорее всего зацикливает

  3. Народ подскажите почему он сохраняет и заносит последнию строку из цикла а не весь список

    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    НС = 1;
    Пока Истина Цикл
    
    ПодСтрока=СокрЛП(Ex.Cells(НС,2).Value);
    ПодСтрока1=Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    БюдОбъект.Наименование=Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное ="Ебись оно все конем по цене="+ СокрЛП(Ex.Cells(НС,4).Value);
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    БюдОбъект.Записать();
    
    Если БюдОбъект.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    
    НС = НС + 1;
    
    КонецЦикла;
    
    
    Ex.Quit();
    
    КонецПроцедуры
    
  4. Потому, что получение объекта, у вас вне цикла, где вы его заполняете. По коду получается, что вы многократно перезаполняете и записываете один и тот-же объект

    И еще

    Пока Выборка.Следующий() Цикл 
  5. Процедура ИмяПроцедуры(Файл)
    //Вначале проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |  Бюджеты.Ссылка			 КАК Ссылка,
    |  Бюджеты.Наименование	   КАК Наименование,
    |  Бюджеты.НаименованиеПолное КАК НаимПолное,
    |  Бюджеты.Комментарий	    КАК Комментарий
    |ИЗ
    |  Справочник.Бюджеты КАК Бюджеты
    |");
    Выборка = Запрос.Выполнить().Выбрать();
    // Чтение файла
    Exel = ПолучитьТаблицуExcel(Файл);
    Индекс = 1;
    Пока Выборка.Следующий() Цикл
    ПодСтрока  = СокрЛП(Exel.Cells(Индекс,2).Value);
    ПодСтрока1 = Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    Если СокрЛП(Exel.Cells(Индекс,2).Value) = "" Тогда Продолжить; КонецЕсли; // Если комментарий не получен, переходим к следующему элементу
    БюдОбъект = Выборка.Ссылка.ПолучитьОбъект(); // Получим объект для заполнения
    // заполняем объект
    БюдОбъект.Наименование	   = Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное = "<Ненормативная лексика> по цене=" + СокрЛП(Exel.Cells(Индекс,4).Value);
    БюдОбъект.Комментарий	    = СокрЛП(Exel.Cells(Индекс,2).Value);
    // Запись заполненного объекта
    Попытка
    БюдОбъект.Записать();
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + Индекс);
    #КонецЕсли
    Исключение
    #Если Клиент Тогда
    Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
    #КонецЕсли
    КонецПопытки;
    // увеличиваем индекс на 1
    Индекс = Индекс + 1;
    
    КонецЦикла;
    // Закрытие файла
    Exel.Quit();
    КонецПроцедуры
  6. Спасибо за корректировку кода

  7. Народ подскажите пожалуйста как создать группу в справочнике 1с когда мы экспортируем из excel. Я хочу что бы те строки которые выделены жирным стали группами в справочнике 1с


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Ошибка при выборе листа эксель

Я

  

falselight

21.03.19 — 10:34

Использую обработку для загрузки данных с эксель листов.

На форме появилось дерево, файла эксель и его листов. Выбираю лист.

Жму прочитать, в тз появляются данные.

Но если выбрать другой лист и нажать прочитать, то, выходит ошибка

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

То есть как её исключить? Что бы перечитывался другой выбранный лист?

  

falselight

1 — 21.03.19 — 10:39

Вижу ошибку, Excel — не определена в этом случае. Наверное в этом дело.

  

falselight

2 — 21.03.19 — 10:44

Все же ошибка идет, не подскажете почему?

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(329)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

  

Дмитрий

3 — 21.03.19 — 10:44

ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы чему равно?

  

falselight

4 — 21.03.19 — 10:51

Почему вот это бывает пустое?????

При первой загрузке там COMОбъект

(3) Названию выбранного листа.

  

falselight

5 — 21.03.19 — 10:51

(4+) Excel.Sheets

  

falselight

6 — 21.03.19 — 10:57

Точку останова ставлю, вроде как обновляются данные

без точки останова ошибка, как будто COMОбъект не успевает считаться, как тут быть?

  

falselight

7 — 21.03.19 — 10:58

как с этим быть? Что то не понятно!!!!

  

falselight

8 — 21.03.19 — 11:06

Почему не видна функция в 1с ТекущееВремя() ?

  

falselight

9 — 21.03.19 — 11:08

Хотел вот такую функцию использовать, паузу. но она не работает.

Процедура Пауза(Время)

чЧас=0; чМин=0; чСек=0;

ТекущееВремя(чЧас,чМин,чСек);

чТекВремя = чЧас*3600+чМин*60+чСек;

чВремяЗавершения = чТекВремя+Время;

Пока чТекВремя<чВремяЗавершения Цикл

ТекущееВремя(чЧас,чМин,чСек);

чТекВремя = чЧас*3600+чМин*60+чСек;

КонецЦикла;

КонецПроцедуры;

  

falselight

10 — 21.03.19 — 12:17

Ставлю точку останова на этой строке.

// ЧТЕНИЕ ЛИСТА

Процедура КоманднаяПанель1ПрочитатьДанныеСЛиста(Кнопка)

    Если ОбрЗавершена = 1 Тогда

        Сообщить(«Данный файл уже был обработан. Перезапустите обработку и выберите новый файл для загрузки!»);

        Возврат;

    КонецЕсли;

    //

    // Необходимый лист

    Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), «xls») > 0 Тогда

        Предупреждение(«Выберите конкретный лист для загрузки, а не сам файл!»);

        Возврат;

    КонецЕсли;

    //

    Если Excel = неопределено Тогда

        Попытка

            Excel = новый COMОбъект(«Excel.Application»);

        Исключение

            Сообщить(«Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.»);

            Возврат;

        КонецПопытки;    

        //НашФайл = Excel.Workbooks.Open(ИмяФайла);

        Excel.Workbooks.Open(ИмяФайла);

    КонецЕсли;

    //

    //ПаузаПустымЦиклом(5);

    //

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

Читаю листы, у загруженного файла в дерево. Читается как и один так и другой.

Останавливаясь на точке останова. Как только я убираю точку останова, при этих же действиях вываливается ошибка.

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(333)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

Что нужно поправить? Подскажите пожалуйста!

  

falselight

11 — 21.03.19 — 12:21

Решил вопрос.

Нужно было сделать так, —

    Excel = Неопределено;

    //

КонецПроцедуры

Ошибка при выборе листа эксель

Я

falselight

21.03.19 — 10:34

Использую обработку для загрузки данных с эксель листов.

На форме появилось дерево, файла эксель и его листов. Выбираю лист.

Жму прочитать, в тз появляются данные.

Но если выбрать другой лист и нажать прочитать, то, выходит ошибка

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Sheets)

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  

по причине:

Произошла исключительная ситуация (0x800a03ec)

То есть как её исключить? Что бы перечитывался другой выбранный лист?

falselight

1 — 21.03.19 — 10:39

Вижу ошибку, Excel — не определена в этом случае. Наверное в этом дело.

falselight

2 — 21.03.19 — 10:44

Все же ошибка идет, не подскажете почему?

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(329)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   

по причине:

Произошла исключительная ситуация (0x800a03ec)

Дмитрий

3 — 21.03.19 — 10:44

ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы чему равно?

falselight

4 — 21.03.19 — 10:51

Почему вот это бывает пустое?????

При первой загрузке там COMОбъект

(3) Названию выбранного листа.

falselight

5 — 21.03.19 — 10:51

(4+) Excel.Sheets

falselight

6 — 21.03.19 — 10:57

Точку останова ставлю, вроде как обновляются данные

без точки останова ошибка, как будто COMОбъект не успевает считаться, как тут быть?

falselight

7 — 21.03.19 — 10:58

как с этим быть? Что то не понятно!!!!

falselight

8 — 21.03.19 — 11:06

Почему не видна функция в 1с ТекущееВремя() ?

falselight

9 — 21.03.19 — 11:08

Хотел вот такую функцию использовать, паузу. но она не работает.

Процедура Пауза(Время) 
чЧас=0; чМин=0; чСек=0; 
ТекущееВремя(чЧас,чМин,чСек); 
чТекВремя = чЧас*3600+чМин*60+чСек; 
чВремяЗавершения = чТекВремя+Время; 
Пока чТекВремя<чВремяЗавершения Цикл 
ТекущееВремя(чЧас,чМин,чСек); 
чТекВремя = чЧас*3600+чМин*60+чСек; 
КонецЦикла; 
КонецПроцедуры;

falselight

10 — 21.03.19 — 12:17

Ставлю точку останова на этой строке.

// ЧТЕНИЕ ЛИСТА

Процедура КоманднаяПанель1ПрочитатьДанныеСЛиста(Кнопка)
    Если ОбрЗавершена = 1 Тогда 
        Сообщить("Данный файл уже был обработан. Перезапустите обработку и выберите новый файл для загрузки!");
        Возврат;
    КонецЕсли;
    //

    // Необходимый лист

    Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), "xls") > 0 Тогда
        Предупреждение("Выберите конкретный лист для загрузки, а не сам файл!");
        Возврат;
    КонецЕсли;
    //

    Если Excel = неопределено Тогда 
        Попытка
            Excel = новый COMОбъект("Excel.Application");
        Исключение
            Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
            Возврат;
        КонецПопытки;     
        //НашФайл = Excel.Workbooks.Open(ИмяФайла);

        Excel.Workbooks.Open(ИмяФайла);
    КонецЕсли;
    //

    //ПаузаПустымЦиклом(5);

    //

    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   


Читаю листы, у загруженного файла в дерево. Читается как и один так и другой.

Останавливаясь на точке останова. Как только я убираю точку останова, при этих же действиях вываливается ошибка.

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(333)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();   
по причине:
Произошла исключительная ситуация (0x800a03ec)


Что нужно поправить? Подскажите пожалуйста!

  

falselight

11 — 21.03.19 — 12:21

Решил вопрос.

Нужно было сделать так, -

    Excel = Неопределено;
    //

КонецПроцедуры

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  • shtucer-igor 04.03.2009 at 12:54

    однозначно плюс !

    а можно тоже самое но чтобы грузило в установку цен номенклатуры контрагента ?

    Reply

  • softbear 11.03.2009 at 00:25

    однозначно плюс !

    Reply

  • COMPER 19.03.2009 at 11:51

    не работает. Но красиво

    Reply

  • COMPER 19.03.2009 at 11:53

  • Pim 19.03.2009 at 19:10

    не работает :-(. Самый главный минус всех подобных обработок в том, что они грузят только одну цену в УТ. По крайней мере, я других не видел. Эта обработка похоже тоже грузит только одну цену, да ещё и запоролена…

    А что делать, если мне надо загружать сразу четыре разных типов цен в один документ. (Не надо предлагать загружать по-одному — заказчик не хочет).

    Reply

  • egorover 20.03.2009 at 16:26

    внимательней, там загрузка идёт по всем типам цен в строку

    Reply

  • olee 23.03.2009 at 00:40

    У меня пишет:

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • egorover 23.03.2009 at 08:03

    всё времени нет, укажите имя листа excel Лист1

    Reply

  • olee 23.03.2009 at 10:39

    Создался пустой документ с комментарием из какого файла загружен.

    Пытаюсь снова загрузить цены — пишет в регистре есть такая строка.

    Захожу в регистр сведений — нет такой записи:(

    Reply

  • olee 25.03.2009 at 00:44

    Разобрался, все работает!

    Очень нужная обработка.

    Плюс.

    Reply

  • dev_gen 31.03.2009 at 13:35

    Ищу по всему инету такую разработку уже неделю.

    Огромное спасибище

    Reply

  • kozakm 11.04.2009 at 08:26

  • VikFx 28.04.2009 at 11:00

    то, что нужно, спасибо

    Reply

  • 4emodan 06.05.2009 at 01:22

    Большое спасибо! Давно искал.

    Reply

  • 4emodan 06.05.2009 at 01:39

    А можно сделать, чтоб находило товары не по артикулу, а по коду?

    Reply

  • petrash 06.06.2009 at 11:50

    Выручил! Спасибо большое!

    Reply

  • qwertylion@rambler.ru 07.06.2009 at 19:01

    Обработка хорошее но вот только документ пустой создается, не подскажите как быть?

    Reply

  • steelrat1976 20.06.2009 at 15:19

    нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:20

    при записи в ценообразование пустой лист

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:22

    все нормально разобрался нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял СПАСИБО steelrat1976

    Reply

  • Dimka74 21.07.2009 at 04:29

    Пожалуй повторюсь: «А можно сделать, чтоб находило товары не по артикулу, а по коду?»

    Reply

  • sly99 07.10.2009 at 21:25

    можно поподробнее, что где писать?

    выдает ошибку

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • cooldanie 06.11.2009 at 15:51

    Автор зачет! а можно по наименованию товара а не по артикулу? или сделайте универсально — по коду, по наименованию, по артикулу — и цены не будет вашей обработке. А если 2 колонки цены? опт и розница — 2я и 3я?

    Reply

  • helloworld 09.11.2009 at 14:31

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Это наверное когда страница Екселя названа не Лист1. Автор, выбрал бы просто первую страницу — Excel.Sheets(1).select();

    Reply

  • labuh 26.11.2009 at 03:38

    Автору респект и уважуха.

    А как быть с одинаковыми ценами номенклатуры? Обработка не читает одинаковые цены из экселя, — пишет «не нашли артикул ……..»

    Reply

  • labuh 27.11.2009 at 23:51

    Здесь что, больше никто не живет???

    Reply

  • meser 06.12.2009 at 22:22

    Спасибо, действительно обработка нужная, я бы добавил еще поиск не только по артиклу, но и по коду, наименованию.

    Reply

  • nikser 11.01.2010 at 18:40

    Ничего не понимаю . у кого она работает??? документ изменения цен то создался , но пустой .

    Reply

  • Epishko 14.02.2010 at 22:04

    Потратил массу времени — вбил артикулы, а в результате создает пустой документ. Жаль убитого воскресенья! Все-таки несмотря на обильные ссылки по поиску — эту задачку так пока никто и не решил качественно.

    Reply

  • Родная 14.04.2010 at 10:56

    изначально все получается, но при загрузке, выбранных цен в 1С выдается ошибка

    {ВнешняяОбработка.ЗагрузкаЦен(120)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : Закупочная : ******* (Регистр сведений: Цены номенклатуры; Номер строки: 43)

    по причине:

    Запись с такими ключевыми полями существует! : Закупочная :**********(Регистр сведений: Цены номенклатуры; Номер строки: 43)

    при том что справочник «Установка цен номенклатуры» пуст.

    Что я не так делаю?

    Reply

  • provnick 24.01.2011 at 21:39

    Да уж, было б описание, то немного времени потратить на заполнение формы, оказывается нужно файлик подготовить Excelский, страница Екселя названа должна Лист1 и артикул форматнуть в текстовой, а цены в числовой и заполняется таблица для передачи в документ. Но вопрос вот в чем: как две цены закинуть, поле то одно для выбора цены, у кого получилось? egorover пишет (6) «внимательней, там загрузка идёт по всем типам цен в строку» , но выходит только одна цена, что и как? Да еще пароль, понятно, а то…, что ж мышает второе поле для второй цены сделать, а? хоть бы приходную да расходную. В целом гуд и +, ще б поправить.

    Reply

  • Glenas 28.01.2011 at 14:46

    Здравсвуйте. Помогайте, очень надо. Версия 8,2, УТ 11. При открытии выдавал ошибку, поменял ТипыЦенНоменклатуры на ВидыЦен. Обработка открывается, загружает файл xls, корректно находит цены. При попытке загрузки выдаёт {ВнешняяОбработка.ЗагрузкаЦен.МодульОбъекта(90)}: Поле объекта не обнаружено (НеПроводитьНулевыеЗначения) А код модуля запаролен! Что делать, автор? Спасибо

    Reply

  • egorover 29.07.2011 at 10:03

  • lenka-nes@mail.ru 13.10.2011 at 10:19

    спасибо!пригодилось

    Reply

  • wwizard 01.11.2011 at 17:05

    Пишет Ошибка при вызове метода контекста (Sheets)

    Что делать?

    Reply

  • tgnike 08.11.2011 at 12:30

    Она со всеми екселями работате?

    Reply

  • w22u 21.11.2011 at 14:54

    Спасибо, протестируем Вашу обработку.

    Reply

  • Belka063 30.11.2011 at 09:30

    Работает.Спасибо.Помогло

    Reply

  • AruslanM 07.12.2011 at 10:41

    Спасибо за идею, пригодилось.

    Reply

  • Ibrogim 19.12.2011 at 10:51

    Спасибо за обработку, помогла как пример

    Reply

  • ASoft 18.01.2012 at 22:14

  • maratsat 21.01.2012 at 17:44

    Во-первых, хорошая обработка. Спасибо. Значительно сокращает время ввода документа.

    Во-вторых, предложения по улучшению

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

    Или как вариант сделать возможным добавлять разные типы цен к одному документу.

    А иначе получается, что розничные, оптовые и крупнооптовые цены в разных документах, что не удобно.

    Reply

  • wwizard 21.01.2012 at 23:25

    (35) так что делать то

    Reply

  • egorover 23.01.2012 at 21:18

    (42) так для этого и создавалось, колонки в таблице excel и есть различные типы цен

    Reply

  • egorover 23.01.2012 at 21:19

    (43) имя листа в книге excel

    Reply

  • FE_D_OR83 31.01.2012 at 15:11

    Спасибо за обработку,сэкономила время. Радует что каждый может доработать под себя.

    Кстати неплохо бы в неё добавить возможность указывать цены для номенклатуры с характеристиками.

    Reply

  • fonomo0 31.01.2012 at 15:24

    Автор С какими версиями Excel работает ваша отработка?

    Reply

  • AlexxxMksv 29.04.2012 at 12:17

    Скажите ваша обработка может проверять соответствие единицы измерения из файла не с базовой единицей, не с единицей хранения остатков, не с единицей для отчетов, не с единицей мест, а с единицами по классификатору?

    Reply

  • TitanLuchs 17.06.2012 at 13:20

    Замечательная штука, спасибо автору, помог сэкономить время на написание своего подобного «велосипеда»!

    Reply

  • MyPuK_OLD 19.11.2013 at 15:46

    Есть какое-то описание или инструкция по использованию данной обработки? Подойдет ли она для работы с Комплексной автоматизацией редакция 1.1?

    Reply

  • egorover 19.11.2013 at 21:23

    Пробуйте, не пробовал, код открыт

    Reply

  • Здравствуйте! Подскажите, пожалуйста! Загружаю из Excel данные, хочу обратиться к именованной области, выдает следующую ошибку: «Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)
    ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
    по причине:
    Произошла исключительная ситуация (0x800a03ec)»

    Процедура ОсновныеДействияФормыЗагрузить(Кнопка)

    НомерКолонкиАртикул = ЭлементыФормы.ТабличныйДокумент.Область(«R2C1»;
    НомерКолонкиНаименованияТовара = ЭлементыФормы.ТабличныйДокумент.Область(«R2C2»;
    НомерКолонкиЕдиницаИзмерения = ЭлементыФормы.ТабличныйДокумент.Область(«R2C3»;
    НомерКолонкиСтрана = ЭлементыФормы.ТабличныйДокумент.Область(«R2C4»;

    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Excel = новый COMОбъект(«Excel.Application»;

    Версия = Лев(Excel.Version,Найти(Excel.Version,».»-1);
    Если Версия = «8» тогда
    ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
    ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
    ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
    ФайлКолонок = Excel.Cells(2,1).SpecialCells(21).Column;
    Конецесли;

    // Выбираем данные из файла
    Для а = Excel.Cells(2,1).SpecialCells(21).Row по ФайлСтрок Цикл

    //Полуим данные из соответсвующих ячеек
    Артикул = СокрЛП(Excel.Cells(а,Артикул).Value);
    НаименованиеТовара = СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
    ЕдиницаИзмерения = СокрЛП(Excel.Cells(а,НомерКолонкиЕдиницаИзмерения).Value);

    Товар = Справочники.Номенклатура.ПустаяСсылка();

    // Ищем товар в справочнике по коду
    Товар = Справочники.Номенклатура.НайтиПоКоду.Артикул;

    // Если не нашли по коду, то ищем по наименованию
    Если Товар.Пустая() Тогда
    Товар = Справочники.Номенклатура.НайтиПоНаименованию.Наименование;
    Конецесли;

    //Если не нашли создаем новый
    Если Товар.Пустая() Тогда
    Товар = Справочники.Номенклатура.СоздатьЭлемент();
    Товар.Наименование = НаименованиеТовара;
    Товар.Артикул = Артикул;
    Товар.БазоваяЕдиницаИзмерения = ЕдиницаИзмерения;
    Товар.СтранаПроисхождения = НомерКолонкиСтрана;
    Товар.Записать();
    Конецесли;
    КонецЦикла;

    КонецПроцедуры

    Народ, помогите, не могу понять почему на одном и том компе под разными пользователями работает и не работает, вываливает ошибку «Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)»? гуглом пользоваться умею, но ответа так и не нашел.

    поправка, ексель 2010, работаем на терминалах по РДП, есть домен.

    Sheets — лист книги. может обращается к несущствующему?

    коллекция листов вообще-то

    от этого сильно смысл последнего предложения поменялся? код покажи-то. и где именно валится

    в смысле, от того что ты неправильное определение свойству дала? кстати, автор, Sheets — это не метод

    самое интересное, что под одним пользователем работает нормально, а под другим пользователем вываливает ошибку

    Тэги: 1С 8

    Комментарии доступны только авторизированным пользователям

  • shtucer-igor 04.03.2009 at 12:54

    однозначно плюс !

    а можно тоже самое но чтобы грузило в установку цен номенклатуры контрагента ?

    Reply

  • softbear 11.03.2009 at 00:25

    однозначно плюс !

    Reply

  • COMPER 19.03.2009 at 11:51

    не работает. Но красиво

    Reply

  • COMPER 19.03.2009 at 11:53

  • Pim 19.03.2009 at 19:10

    не работает :-(. Самый главный минус всех подобных обработок в том, что они грузят только одну цену в УТ. По крайней мере, я других не видел. Эта обработка похоже тоже грузит только одну цену, да ещё и запоролена…

    А что делать, если мне надо загружать сразу четыре разных типов цен в один документ. (Не надо предлагать загружать по-одному — заказчик не хочет).

    Reply

  • egorover 20.03.2009 at 16:26

    внимательней, там загрузка идёт по всем типам цен в строку

    Reply

  • olee 23.03.2009 at 00:40

    У меня пишет:

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • egorover 23.03.2009 at 08:03

    всё времени нет, укажите имя листа excel Лист1

    Reply

  • olee 23.03.2009 at 10:39

    Создался пустой документ с комментарием из какого файла загружен.

    Пытаюсь снова загрузить цены — пишет в регистре есть такая строка.

    Захожу в регистр сведений — нет такой записи:(

    Reply

  • olee 25.03.2009 at 00:44

    Разобрался, все работает!

    Очень нужная обработка.

    Плюс.

    Reply

  • dev_gen 31.03.2009 at 13:35

    Ищу по всему инету такую разработку уже неделю.

    Огромное спасибище

    Reply

  • kozakm 11.04.2009 at 08:26

  • VikFx 28.04.2009 at 11:00

    то, что нужно, спасибо

    Reply

  • 4emodan 06.05.2009 at 01:22

    Большое спасибо! Давно искал.

    Reply

  • 4emodan 06.05.2009 at 01:39

    А можно сделать, чтоб находило товары не по артикулу, а по коду?

    Reply

  • petrash 06.06.2009 at 11:50

    Выручил! Спасибо большое!

    Reply

  • qwertylion@rambler.ru 07.06.2009 at 19:01

    Обработка хорошее но вот только документ пустой создается, не подскажите как быть?

    Reply

  • steelrat1976 20.06.2009 at 15:19

    нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:20

    при записи в ценообразование пустой лист

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:22

    все нормально разобрался нужно обязательно вводить коэффициент, если цена равна базовой, то коэффициент = 1 и тогда поля не пустые. Хотя можно было бы сказать сразу, а то сам часа два мучался пока не понял СПАСИБО steelrat1976

    Reply

  • Dimka74 21.07.2009 at 04:29

    Пожалуй повторюсь: «А можно сделать, чтоб находило товары не по артикулу, а по коду?»

    Reply

  • sly99 07.10.2009 at 21:25

    можно поподробнее, что где писать?

    выдает ошибку

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Reply

  • cooldanie 06.11.2009 at 15:51

    Автор зачет! а можно по наименованию товара а не по артикулу? или сделайте универсально — по коду, по наименованию, по артикулу — и цены не будет вашей обработке. А если 2 колонки цены? опт и розница — 2я и 3я?

    Reply

  • helloworld 09.11.2009 at 14:31

    {ВнешняяОбработка.ЗагрузкаЦен(7)}: Ошибка при вызове метода контекста (Sheets): Произошла исключительная ситуация (0x8002000b)

    по причине:

    Произошла исключительная ситуация (0x8002000b)

    Это наверное когда страница Екселя названа не Лист1. Автор, выбрал бы просто первую страницу — Excel.Sheets(1).select();

    Reply

  • labuh 26.11.2009 at 03:38

    Автору респект и уважуха.

    А как быть с одинаковыми ценами номенклатуры? Обработка не читает одинаковые цены из экселя, — пишет «не нашли артикул ……..»

    Reply

  • labuh 27.11.2009 at 23:51

    Здесь что, больше никто не живет???

    Reply

  • meser 06.12.2009 at 22:22

    Спасибо, действительно обработка нужная, я бы добавил еще поиск не только по артиклу, но и по коду, наименованию.

    Reply

  • nikser 11.01.2010 at 18:40

    Ничего не понимаю . у кого она работает??? документ изменения цен то создался , но пустой .

    Reply

  • Epishko 14.02.2010 at 22:04

    Потратил массу времени — вбил артикулы, а в результате создает пустой документ. Жаль убитого воскресенья! Все-таки несмотря на обильные ссылки по поиску — эту задачку так пока никто и не решил качественно.

    Reply

  • Родная 14.04.2010 at 10:56

    изначально все получается, но при загрузке, выбранных цен в 1С выдается ошибка

    {ВнешняяОбработка.ЗагрузкаЦен(120)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : Закупочная : ******* (Регистр сведений: Цены номенклатуры; Номер строки: 43)

    по причине:

    Запись с такими ключевыми полями существует! : Закупочная :**********(Регистр сведений: Цены номенклатуры; Номер строки: 43)

    при том что справочник «Установка цен номенклатуры» пуст.

    Что я не так делаю?

    Reply

  • provnick 24.01.2011 at 21:39

    Да уж, было б описание, то немного времени потратить на заполнение формы, оказывается нужно файлик подготовить Excelский, страница Екселя названа должна Лист1 и артикул форматнуть в текстовой, а цены в числовой и заполняется таблица для передачи в документ. Но вопрос вот в чем: как две цены закинуть, поле то одно для выбора цены, у кого получилось? egorover пишет (6) «внимательней, там загрузка идёт по всем типам цен в строку» , но выходит только одна цена, что и как? Да еще пароль, понятно, а то…, что ж мышает второе поле для второй цены сделать, а? хоть бы приходную да расходную. В целом гуд и +, ще б поправить.

    Reply

  • Glenas 28.01.2011 at 14:46

    Здравсвуйте. Помогайте, очень надо. Версия 8,2, УТ 11. При открытии выдавал ошибку, поменял ТипыЦенНоменклатуры на ВидыЦен. Обработка открывается, загружает файл xls, корректно находит цены. При попытке загрузки выдаёт {ВнешняяОбработка.ЗагрузкаЦен.МодульОбъекта(90)}: Поле объекта не обнаружено (НеПроводитьНулевыеЗначения) А код модуля запаролен! Что делать, автор? Спасибо

    Reply

  • egorover 29.07.2011 at 10:03

  • lenka-nes@mail.ru 13.10.2011 at 10:19

    спасибо!пригодилось

    Reply

  • wwizard 01.11.2011 at 17:05

    Пишет Ошибка при вызове метода контекста (Sheets)

    Что делать?

    Reply

  • tgnike 08.11.2011 at 12:30

    Она со всеми екселями работате?

    Reply

  • w22u 21.11.2011 at 14:54

    Спасибо, протестируем Вашу обработку.

    Reply

  • Belka063 30.11.2011 at 09:30

    Работает.Спасибо.Помогло

    Reply

  • AruslanM 07.12.2011 at 10:41

    Спасибо за идею, пригодилось.

    Reply

  • Ibrogim 19.12.2011 at 10:51

    Спасибо за обработку, помогла как пример

    Reply

  • ASoft 18.01.2012 at 22:14

  • maratsat 21.01.2012 at 17:44

    Во-первых, хорошая обработка. Спасибо. Значительно сокращает время ввода документа.

    Во-вторых, предложения по улучшению

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

    Или как вариант сделать возможным добавлять разные типы цен к одному документу.

    А иначе получается, что розничные, оптовые и крупнооптовые цены в разных документах, что не удобно.

    Reply

  • wwizard 21.01.2012 at 23:25

    (35) так что делать то

    Reply

  • egorover 23.01.2012 at 21:18

    (42) так для этого и создавалось, колонки в таблице excel и есть различные типы цен

    Reply

  • egorover 23.01.2012 at 21:19

    (43) имя листа в книге excel

    Reply

  • FE_D_OR83 31.01.2012 at 15:11

    Спасибо за обработку,сэкономила время. Радует что каждый может доработать под себя.

    Кстати неплохо бы в неё добавить возможность указывать цены для номенклатуры с характеристиками.

    Reply

  • fonomo0 31.01.2012 at 15:24

    Автор С какими версиями Excel работает ваша отработка?

    Reply

  • AlexxxMksv 29.04.2012 at 12:17

    Скажите ваша обработка может проверять соответствие единицы измерения из файла не с базовой единицей, не с единицей хранения остатков, не с единицей для отчетов, не с единицей мест, а с единицами по классификатору?

    Reply

  • TitanLuchs 17.06.2012 at 13:20

    Замечательная штука, спасибо автору, помог сэкономить время на написание своего подобного «велосипеда»!

    Reply

  • MyPuK_OLD 19.11.2013 at 15:46

    Есть какое-то описание или инструкция по использованию данной обработки? Подойдет ли она для работы с Комплексной автоматизацией редакция 1.1?

    Reply

  • egorover 19.11.2013 at 21:23

    Пробуйте, не пробовал, код открыт

    Reply

  • Автор beztrud, 19 июн 2014, 23:26

    0 Пользователей и 1 гость просматривают эту тему.

    Цитировать
    1. Создаем реквизит формы Таблица
    2. Заполняем ее на клиенте (отключаемся от ADO)

    А если без реквизита Таблица — то я так понимаю можно использовать таблицу значений, а затем в табличную часть грузить из нее?


    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    Цитировать
    Все что надо это:
    1. Начальная строка
    2. Количество колонок
    3. Признак когда остановиться

    Можете привести код с пояснениями, пожалуйста.



    Попытка
    ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);
    Исключение
    ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке());
    Отказ = Истина;
    Возврат;
    КонецПопытки;

    СписокИмпорта.Очистить();

    счСтроки = НачальнаяСтрока;
    НомСтр = 0;

    Пока ИСТИНА Цикл 

    НомСтр = НомСтр + 1;

    ОбработкаПрерыванияПользователя();

    ПроверочнаяЯчейка = СокрЛП(ФайлЭксель.Sheets(1).Cells(СчСтроки,1).Value);

    Если ПроверочнаяЯчейка = "#" Тогда

    Прервать;

    КонецЕсли;

    Если ПроверочнаяЯчейка = "" Тогда

    Прервать;

    КонецЕсли;

    Состояние("Загрузка: строка №"+счСтроки);

    НоваяСтрока = СписокИмпорта.Добавить();

    НоваяСтрока.НомерСтроки = НомСтр;

    Для Ш=1 По СписокИмпорта.Колонки.Количество()-1 Цикл

    мКолонка = СписокИмпорта.Колонки.Получить(Ш);

    ЗначениеЯчейки = ФайлЭксель.Sheets(1).Cells(СчСтроки,Ш).Value;

    ЗаполнитьЗначениеПоТипуКолонки(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], мКолонка);

    ОтформатироватьЗначениеПоля(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], Ш); //очистим от ненужных символов и пр.

    КонецЦикла;

    счСтроки = счСтроки + 1;

    КонецЦикла;

    ФайлЭксель.Application.Quit();

    Получил помощь — скажи СПАСИБО.
    Разобрался сам — расскажи другим.


    ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);

    Если выбираем xls, то всё нормально, ну а если xlsx — то
    {Обработка.ВычислениеПластика.Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
          ФайлЭксель = ПолучитьCOMОбъект(ИмяФайла);
    по причине:
    Ошибка получения объекта COM: -2147467259(0x80004005): Неопознанная ошибка

    Добавлено: 20 июн 2014, 21:31


    Кстати эта ошибка появляется при повторном выборе файла. При первом выборе ошибки нет, хоть и подгружает дольше, чем xls. Может быть проблема в

    ФайлЭксель.Application.Quit();

    Добавлено: 20 июн 2014, 21:59


    После многократных попыток выяснилось, что ошибка не имеет последовательности. Т.е. может вылезти а может и нет.


    Да такое поведение нормальное для конструкции

    ПолучитьCOMОбъект(ИмяФайла); если открыть файл закрыть и тут же снова открыть, на медленных компах процесс не успевает завершиться и ПолучитьCOMОбъект() подключается к существующему процессу снова, ну а процесс то уже не рабочий…

    СП
    Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода:
    Таб = ПолучитьCOMОбъект(«C:DATADATA.XLS»);
    создает объект Excel.Application и открывает с его помощью файл документа «C:DATADATA.XLS». Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
    Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.

    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    cska-fanat-kz

    ПроверочнаяЯчейка = СокрЛП(ФайлЭксель.Sheets(1).Cells(СчСтроки,1).Value);
    Выдает
    {Обработка.ВычислениеПластика.Форма.Форма.Форма(72)}: Ошибка при вызове метода контекста (Cells)
          ПроверочнаяЯчейка = Эксель.Sheets(1).Cells(СчСтроки,2).Value;   
    по причине:
    Произошла исключительная ситуация (0x800a03ec)

    Dethmontt

    ЦитироватьДля файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.

    Это как?


    Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


    cska-fanat-kz

    ЗаполнитьЗначениеПоТипуКолонки(ЗначениеЯчейки, НоваяСтрока[мКолонка.Имя], мКолонка);

    А это что за функция?

    Добавлено: 21 июн 2014, 08:43


    Вернемся все-таки к ADO. Уважаемый Dethmontt просьба помочь. У меня на форме есть ТабличнаяЧасть.Вычисления. Реквизиты этой табличной части — ЧастьИзделия, ВысотаФасада, ШиринаФасада, КоличествоФасадов. Есть файл эксель без наименования столбцов в первой строке, т.е в первой строке уже находятся данные. Структура файла эксель всегда одинакова во второй колонке файла эксель всегда содержится ЧастьИзделия, в четвертой колонке всегда ВысотаФасада, в пятой — ШиринаФасада и в шестой — КоличествоФасадов. Вы писали — 1. Создаем реквизит формы Таблица — т.е нужно создать на форме ТабличныйДокумент с именем Таблица и грузить в него? Или как?
    Все что пришло мне в голову это выбрать файл на клиенте а на сервере считать с него данные и передать на клиент. Но вот моя функция с переменной СтрокаТабличнойЧасти ругается, хоть и грузит данные. У меня к Вам просьба, если не сложно, выложите пожалуйста клиентскую и серверную процедуры для загрузки файла, применимо к моим реквизитам.


    Получил помощь — скажи СПАСИБО.
    Разобрался сам — расскажи другим.


  • Ошибка при вызове конструктора структура недопустимое значение параметра параметр номер 1
  • Ошибка при вызове метода контекста cells неизвестная ошибка
  • Ошибка при вызове конструктора сомобъект unknown error 0x80131700
  • Ошибка при вызове метода контекста bookmarks
  • Ошибка при вызове конструктора сомобъект 2147467262 0x80004002 интерфейс не поддерживается