Ошибка при вызове метода контекста worksheets 1c

   JaZDik

10.01.14 — 08:57

{Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Worksheets)

    Док = ТабЕксель.Worksheets(«на.уд.киль»);

по причине:

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

   Wobland

1 — 10.01.14 — 08:58

спасибо, не знал

   Рэйв

2 — 10.01.14 — 09:00

(0)Цифру попробуй, а не текст.

   JaZDik

3 — 10.01.14 — 09:00

В чем может быть проблема

   JaZDik

4 — 10.01.14 — 09:01

(2) попробывать например Док = ТабЕксель.Worksheets(«1»); ?

   Мыш

5 — 10.01.14 — 09:04

Док = ТабЕксель.Worksheets(1);

   JaZDik

6 — 10.01.14 — 09:07

(5) (2) теперь

{Форма.Форма.Форма(74)}: Значение не является значением объектного типа (Товары)

НоваяСтрока=НовДок.Товары.Добавить();

   Wobland

7 — 10.01.14 — 09:08

(6) думаешь, оно таки объектного?

   Мыш

8 — 10.01.14 — 09:08

(6) Что сделать то хочешь?

   Рэйв

9 — 10.01.14 — 09:08

(6)Посмотри ТипЗнч(НовДок) в табло. Скорее всего удивишься

   Мыш

10 — 10.01.14 — 09:10

   JaZDik

11 — 10.01.14 — 09:11

(8) Выгрузить 1с Excel в 1с

   Мыш

12 — 10.01.14 — 09:12

(11) Может быть прочитать данные из Экселя и записать их в 1С? Я угадал? )

   JaZDik

13 — 10.01.14 — 09:12

(9) Где это поглядеть. Просто первй раз с этим столкнулся.

   Мыш

14 — 10.01.14 — 09:13

(13) Ctrl+Alt+W

   Wobland

15 — 10.01.14 — 09:14

(9) (14) научите его ещё Сообщать вместо шифт+ф9, ага

   Мыш

16 — 10.01.14 — 09:17

(15) Да ладно. От задачи зависит же. Когда табло удобнее, когда расчет выражения.

   JaZDik

17 — 10.01.14 — 09:19

(14) Пусто=)

   Wobland

18 — 10.01.14 — 09:20

(17) внезапно, правда?

   НаборДанных

19 — 10.01.14 — 09:20

   Рэйв

20 — 10.01.14 — 09:21

(17)Ну тогда у тебя нарисовалась задача минимум — сделать чтобы оно было типа «ДокументОбъект»:-)

   НаборДанных

21 — 10.01.14 — 09:22

+Код своей загрузки вывали сюда, подскажут быстрее в 146 раз.

   Рэйв

22 — 10.01.14 — 09:23

*задумчиво

пора что-то придумывать спрашивать вместо фотки у мужиков. А то нарушаем гармонию Вселенной.

   JaZDik

23 — 10.01.14 — 09:23

(21) Минуту Щас выгружу… Просто в чем дело то. В старой базе обработка работала. Теперь, когда начали год создали новую бази и там обработка не пашет.

   Wobland

24 — 10.01.14 — 09:26

(20) стишок или песенку?

   Wobland

25 — 10.01.14 — 09:27

(24) -> (22)

   НаборДанных

26 — 10.01.14 — 09:28

(22)Спрашивать у мужиков надо фотки жен или подруг)

   JaZDik

27 — 10.01.14 — 09:29

   JaZDik

28 — 10.01.14 — 09:29

Вот обработка

   Рэйв

29 — 10.01.14 — 09:32

(24)Ага. Видео топикстартера декламирующего стишок, стоя на табуретке:-) Это идея!

   Рэйв

30 — 10.01.14 — 09:33

(26)Начнут ныть что они бедные , несчастные и насквозь холостые и неоподруженые:-)

   НаборДанных

31 — 10.01.14 — 09:33

Если  Док.Cells(Row, 1).Value= «К /с 30101810500000000609 пгт. Кильмезь, ул. Свободы, 12 а»  Тогда

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

   НаборДанных

32 — 10.01.14 — 09:34

И, с трудом верится, что это «работало, работало и перестало с нового года!».

   JaZDik

33 — 10.01.14 — 09:41

(32) В старой базе работало. Она там камазом переханная и не обновленная. Щас стоит БПпроф послденяя… и на ней не пашет

   Wobland

34 — 10.01.14 — 10:10

(33) а новую базу ты камазом, конечно, переехать забыл

   andr_andrey

35 — 10.01.14 — 11:02

(32) Думаю, он закрыл всплывшее окно Excel-я. :)

   Black Friday

36 — 10.01.14 — 11:21

(31) сравнивать значение определенной ячейки с константой? готично…

(33) а если изменятся реквизиты поставщика/покупателя — другую обработку писать?

  

stix2010

37 — 10.01.14 — 15:01

(0) Сейчас писать загрузки через COM немодно, используйте ADO

или загрузку файлов xlsx,

недавно пришлось переписывать загрузки из-за лицензий ms office

  

JaZDik

10.01.14 — 08:57

{Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Worksheets)

    Док = ТабЕксель.Worksheets(«на.уд.киль»);

по причине:

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

  

Wobland

1 — 10.01.14 — 08:58

спасибо, не знал

  

Рэйв

2 — 10.01.14 — 09:00

(0)Цифру попробуй, а не текст.

  

JaZDik

3 — 10.01.14 — 09:00

В чем может быть проблема

  

JaZDik

4 — 10.01.14 — 09:01

(2) попробывать например Док = ТабЕксель.Worksheets(«1»); ?

  

Мыш

5 — 10.01.14 — 09:04

Док = ТабЕксель.Worksheets(1);

  

JaZDik

6 — 10.01.14 — 09:07

(5) (2) теперь

{Форма.Форма.Форма(74)}: Значение не является значением объектного типа (Товары)

НоваяСтрока=НовДок.Товары.Добавить();

  

Wobland

7 — 10.01.14 — 09:08

(6) думаешь, оно таки объектного?

  

Мыш

8 — 10.01.14 — 09:08

(6) Что сделать то хочешь?

  

Рэйв

9 — 10.01.14 — 09:08

(6)Посмотри ТипЗнч(НовДок) в табло. Скорее всего удивишься

  

Мыш

10 — 10.01.14 — 09:10

  

JaZDik

11 — 10.01.14 — 09:11

(8) Выгрузить 1с Excel в 1с

  

Мыш

12 — 10.01.14 — 09:12

(11) Может быть прочитать данные из Экселя и записать их в 1С? Я угадал? )

  

JaZDik

13 — 10.01.14 — 09:12

(9) Где это поглядеть. Просто первй раз с этим столкнулся.

  

Мыш

14 — 10.01.14 — 09:13

(13) Ctrl+Alt+W

  

Wobland

15 — 10.01.14 — 09:14

(9) (14) научите его ещё Сообщать вместо шифт+ф9, ага

  

Мыш

16 — 10.01.14 — 09:17

(15) Да ладно. От задачи зависит же. Когда табло удобнее, когда расчет выражения.

  

JaZDik

17 — 10.01.14 — 09:19

(14) Пусто=)

  

Wobland

18 — 10.01.14 — 09:20

(17) внезапно, правда?

  

НаборДанных

19 — 10.01.14 — 09:20

  

Рэйв

20 — 10.01.14 — 09:21

(17)Ну тогда у тебя нарисовалась задача минимум — сделать чтобы оно было типа «ДокументОбъект»:-)

  

НаборДанных

21 — 10.01.14 — 09:22

+Код своей загрузки вывали сюда, подскажут быстрее в 146 раз.

  

Рэйв

22 — 10.01.14 — 09:23

*задумчиво

пора что-то придумывать спрашивать вместо фотки у мужиков. А то нарушаем гармонию Вселенной.

  

JaZDik

23 — 10.01.14 — 09:23

(21) Минуту Щас выгружу… Просто в чем дело то. В старой базе обработка работала. Теперь, когда начали год создали новую бази и там обработка не пашет.

  

Wobland

24 — 10.01.14 — 09:26

(20) стишок или песенку?

  

Wobland

25 — 10.01.14 — 09:27

(24) -> (22)

  

НаборДанных

26 — 10.01.14 — 09:28

(22)Спрашивать у мужиков надо фотки жен или подруг)

  

JaZDik

27 — 10.01.14 — 09:29

  

JaZDik

28 — 10.01.14 — 09:29

Вот обработка

  

Рэйв

29 — 10.01.14 — 09:32

(24)Ага. Видео топикстартера декламирующего стишок, стоя на табуретке:-) Это идея!

  

Рэйв

30 — 10.01.14 — 09:33

(26)Начнут ныть что они бедные , несчастные и насквозь холостые и неоподруженые:-)

  

НаборДанных

31 — 10.01.14 — 09:33

Если  Док.Cells(Row, 1).Value= «К /с 30101810500000000609 пгт. Кильмезь, ул. Свободы, 12 а»  Тогда

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

  

НаборДанных

32 — 10.01.14 — 09:34

И, с трудом верится, что это «работало, работало и перестало с нового года!».

  

JaZDik

33 — 10.01.14 — 09:41

(32) В старой базе работало. Она там камазом переханная и не обновленная. Щас стоит БПпроф послденяя… и на ней не пашет

  

Wobland

34 — 10.01.14 — 10:10

(33) а новую базу ты камазом, конечно, переехать забыл

  

andr_andrey

35 — 10.01.14 — 11:02

(32) Думаю, он закрыл всплывшее окно Excel-я. :)

  

Black Friday

36 — 10.01.14 — 11:21

(31) сравнивать значение определенной ячейки с константой? готично…

(33) а если изменятся реквизиты поставщика/покупателя — другую обработку писать?

  

stix2010

37 — 10.01.14 — 15:01

(0) Сейчас писать загрузки через COM немодно, используйте ADO

или загрузку файлов xlsx,

недавно пришлось переписывать загрузки из-за лицензий ms office

I have the following code to open a workbook and keep just one sheet:

//Get a new workbook.
oWB = app.Workbooks.Add(Missing.Value);

int len = oWB.Sheets.Count;

for (int i = 1; i < len; i++)
{
    ((Worksheet)oWB.Sheets[i]).Delete();
}

oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet;

This code has worked for many years in many client configurations.

For some reason, I have a customer with excel 2013 (in Hebrew), and on his machine I get the following exception:

System.Runtime.InteropServices.COMException (0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
   at Microsoft.Office.Interop.Excel.Sheets.get__Default(Object Index)
   at IOSIGHT.Win.ActiveReports.ExcelHelper.StartExcel()

If I understand the situation, it seems that for some reason the workbook was left with no sheets,
so then call to oWb.ActiveSheet throws an exception.
Any idea what caused this?

And yes I saw other posts on the same exception, but my code does not match their scenarios.

************** Текст исключения **************

System.Runtime.InteropServices.COMException (0x8002000B): Неверный индекс. (Исключение из HRESULT: 0x8002000B (DISP_E_BADINDEX))

в Microsoft.VisualBasic.CompilerServices.LateBinding .LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)

в Microsoft.VisualBasic.CompilerServices.NewLateBind ing.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

в WindowsApplication1.Form_Main_Window.Form_Main_Win dow_Load(Object sender, EventArgs e)

в System.EventHandler.Invoke(Object sender, EventArgs e)

в System.Windows.Forms.Form.OnLoad(EventArgs e)

в System.Windows.Forms.Form.OnCreateControl()

в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

в System.Windows.Forms.Control.CreateControl()

в System.Windows.Forms.Control.WmShowWindow(Message& m)

в System.Windows.Forms.Control.WndProc(Message& m)

в System.Windows.Forms.Form.WmShowWindow(Message& m)

в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************

mscorlib

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll

—————————————-

Бриз_ПП

Версия сборки: 1.7.0.1

Версия Win32: 1.7.0.1

CodeBase: file:///C:/Breez_PP/%D0%91%D1%80%D0%B8%D0%B7_%D0%9F%D0%9F_x64.exe

—————————————-

Microsoft.VisualBasic

Версия сборки: 10.0.0.0

Версия Win32: 14.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

—————————————-

System

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

—————————————-

System.Core

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

—————————————-

System.Windows.Forms

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

—————————————-

System.Drawing

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

—————————————-

System.Configuration

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

—————————————-

System.Xml

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2612.0 built by: NET471REL1LAST_B

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

—————————————-

System.Runtime.Remoting

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

—————————————-

System.Data

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

—————————————-

System.Data.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Data.resources.dll

—————————————-

System.Transactions

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll

—————————————-

System.EnterpriseServices

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll

—————————————-

Microsoft.Office.Interop.Excel

Версия сборки: 15.0.0.0

Версия Win32: 15.0.4569.1506

CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Office.Interop.Excel/15.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Excel.dll

—————————————-

office

Версия сборки: 15.0.0.0

Версия Win32: 15.0.4613.1000

CodeBase: file:///C:/Windows/assembly/GAC_MSIL/office/15.0.0.0__71e9bce111e9429c/office.dll

—————————————-

mscorlib.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll

—————————————-

System.Windows.Forms.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll

—————————————-

  • Remove From My Forums
  • Question

  • Hello All,

    I’ve recently come across a problem with creating excel files on a particular computer. The computer in question is XP SP3 with Excel 2007. Whenever I try to create an Excel file, add sheets and change the sheet names I come across this error:

    Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    What confuses me is that the same piece of code in an earlier version of the program worked perfectly fine on the computer. Not only that, but the current code that throws this error on the aforementioned system works perfectly on a machine with XP SP3 and
    Excel 2003, and another with Windows 7 and Excel 2010.

            Dim objExcel As New Excel.Application

            objExcel.Workbooks.Add()
            objExcel.Worksheets.Add()

    Code works fine up until here:

        objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    My gut is telling me this is more an issue with the system than it is with the code as I’ve tried this before and on different machines and had it working perfectly. I’ve looked at the other 0x8002000B error posts and they weren’t entirely applicable to
    my specific issue.  I’m completely lost though, and would appreciate any comments or advice anyone has on this.

Answers

  • The error does not necessarily come from the index of the worksheet. It can also mean that, inernally, a value <> 0 has been passed to IDispatch::GetTypeInfo.

    Based on the line of your first post,

       objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    try splitting it:  (Also add the right types with each declaration or As Object if you have option strict off.)

      Dim wb = objExcel.ActiveWorkbook
      Dim sheets = wb.Worksheets
      Dim count = sheets.count ‘if it exists
      Msgbox (count)
      Dim sheet = sheets(0)

    Does the last line throw the exception?


    Armin

    • Marked as answer by

      Wednesday, July 11, 2012 7:02 PM

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Планшет

Приглашаем на
бесплатный вебинар!

06 июня в 11:00 мск

1 час

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник
Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Нашел на сайте ветку , почитал, вроде все ок, все понятно, сделал по аналогии и есть вопросы… … Что имеем в итоге… В файле куда нужно скопировать создается новый лист «TDSheet» с необходимыми данными, а не копируется в определенный куда мне нужно… Что я не так делаю? Фирма.ЛистEcxel точно передает название существующего листа…

Тебе нужно копировать данные листа, а не сам лист. Делал когда то, сейчас уже не помню точно команды, но так же как интерактивно, т.е. выделить лист, скопировать в буфер обмена, перейти на нужный лист, вставить из буфера обмена данные.

О даже код нашел ИсходныйЛист.Cells.Copy; ЛистРезультата.Paste;

Не совсем получилось,я где-то я делаю не то… в данном случае Книга1.WorkSheets.Cells.Copy; ну или равноценно как я понимаю Лист1=Книга1.WorkSheets; выдает ошибку… {Обработка.ЗагрузкаВыгрузкаСоответствия.Форма.Форма.Форма}: Ошибка при вызове метода контекста (Paste)     Книга.WorkSheets(Фирма.ЛистExel).Paste; по причине: Произошла исключительная ситуация (Microsoft Excel): Чтобы вставить все ячейки листа Excel на текущий лист, необходимо выполнить вставку в первую ячейку (A1 или R1C1).

вставь Лист.Selection(A1) — или как то так

короче не проходит, ошибки то одни, то другие. нашел у себя кусок лет 10 назад делал на VBA, но в 1С не понимаю почему не катит… вот такое работало в экселе раньше… Cells.Select Selection.Copy Sheets(«Price»).Select Cells.Select ActiveSheet.Paste

вопрос актуален. пробовал данный код интерпретировать, пробовал подсказки… до конца не получилось.

Тэги: 1С 8

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

Добрый день,

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

Есть ряд отчетов, выгружающих данные в нежно любимый пользователем эксель. Работают они давно и успешно. На неделе внесли в один из них ряд изменений, что выдало сразу замечательную трассировку:

COM Объект не имеет метода ‘worksheets’

(C) ClassesCOMworksheets
(C) ClassesComExcelDocument_RUgetWorkSheet — line 13
(C) ClassesComExcelDocument_RUfindRange — line 12
(C) ClassesComExcelDocument_RUinsertValue — line 9
(C) ClassesRWExcelReport_WorkShopinsertOLAPHeaderText — line 3
(C) ClassesRWExcelReport_WorkShoprun — line 7
(C) ClassesRWExcelReportmain — line 14

insertOLAPHeaderText — необязательно этот метод. Любой, кто делает банальное excelDocument.insertValue(…) на какой либо лист — таких в классе штук пять.

Все меняли, все переставляли. Убирали изменение. Добавляли иные. Вообще оставили одну строку с excelDocument.insertValue(..). Компилировали все используемые классы. Компилировали инкрементно. Компилировали АОТ. Взяли с трех проектов ComExcelDocument_RU — посравнивали. Убили usr слой с ComExcelDocument_RU с невнятными старыми измененями. Ну что еще? — всего за два дня не упомнишь. Всякие мелочи типа удаление данных пользователя, рестарт КОМ-сервиса на локальной мешине — понятно дело, делали. Шаблон заново создавали. Переносили на иные диски. Итог был регулярно один и тот же…

Что характерно — иногда отчет строился. Мы радостно откладывали бубен в сторону и начинали приводить его в итоговый вид из полуразобранного, но на второе-третье построение получали тот же отлуп.

В какой то из моментов доходило до того, что этот отчет, со всеми параметрами, которые в принципе можно сделать равными, подряд:
— строился,
— строился,
— строился,
— НЕ строился,
— строился,
— НЕ строился,
— НЕ строился,
— строился…

Понятно в принипе, что в какой то момент при запуске отчета и инициализации классов КОМа объект m_comDocument то считает себя документом экселя, то нет. Но причина непонятна.

Шаблон сделан как .xlt.

Axapta 3.0 CIS SP2
RWExcelReport RunOn: Called from
ComExcelDocument_RU RunOn: Client

Есть идеи?

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

«Здравствуйте!<br><br>Никак не могу понять в чем причина. ругается вот на эту строчку:<br>Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br><br>ошибка:<br><br><br>{Форма.Форма.Форма(212)}: Ошибка при вызове метода контекста (Select)<br> Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br>по причине:<br>Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно<br><br>В чем проблема, подскажите, плиз?<br><br> <br>тот же самый код на платформе 8.1 работает корректно не ругается….»

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

Лист1.Activate перед этим

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

хм….действительно помогло спасибо! интересно почему на 8.1 без активации все с рабатвлово….

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

«Понятия не имею, вы как Лист1 связывали с листом книги Excel?<br>Вот проверил по быстрому, все работает без проблем:<br>Попытка<br> ExcelServer = СоздатьОбъект(«Excel.Application»);<br> РабочаяКнига=ExcelServer.WorkBooks.Add();<br> РабочийЛист=РабочаяКнига.Sheets(«Лист1″);<br> РабочийЛист.Rows(10).Select();<br> ExcelServer.Visible=-1;<br> ExcelServer=0;<br>Исключение<br> ExcelServer=0;<br> Сообщить(ОписаниеОшибки());<br>КонецПопытки;<br><br>P.S. У вас еще в коде ошибка, скорее всего. Полагаю, что ТекСтрочка у вас наверняка число и когда вы делаете:<br>ТекСтрочка+»:»+ТекСтрочка получается непонятно что. Это неявное преобразование типов, так делать нельзя, надо так:<br>»»»»+ТекСтрочка+»:»+ТекСтрочка<br>или как я привык:<br>Строка(ТекСтрочка)+»:»+Строка(ТекСтрочка)<br>а вообще, в Rows(…) можно одно число подавать, как в моем примере тут»

Показывать по
10
20
40
сообщений

Читают тему:

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка при вызове метода контекста закончитьчтение
  • Ошибка при вызове метода контекста sheets
  • Ошибка при вызове метода контекста загрузитьвнешнююкомпоненту
  • Ошибка при вызове метода контекста send

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии