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

Показывать по
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
сообщений

Читают тему:

   mixqn

17.11.08 — 16:09

Добрый день!

Предыстория: необходимо было сделать так, чтобы из 1С формировался отчет Excel на нескольких листах с сохранением форматирования (главным образом, группировок) табличного документа. Стандартный метод Записать табличного документа создает файл с 1 листом. Поэтому было сделано так: сначала командой Записать создавался файл Excel с необходимым листом, потом лист переносился в нужную книгу:

ПостроительОтчета.Вывести(ТабДок);

ТабДок.Записать(ИмяВременныхФайлов, ТипФайлаТабличногоДокумента.XLS97);

Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));

И это дело прекрасно работает до тех пор пока не появляется еще один процесс Excel: либо запущенный интерактивно, либо в случае одновременного формирования из 2-х сеансов 1С на одном компьютере отчетов в Excel.

Собственно проблема: при наличии 2-ух одновременно запущенных экселей стока

Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));

не выполняется, выводится ошибка:

Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)

Подскажите, что можно сделать

   ТелепатБот

1 — 17.11.08 — 16:09

   mixqn

2 — 17.11.08 — 16:15

Есть правда другой вариант сохранения данных вместе с форматированием (группировками) — выделить все и скопировать. Но данный вариант реализовать не удалось — бала другая ошибка «Ошибка при вызове метода контекста (Select): Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно» (подробнее могу описать при необходимости). Поэтому был применен метод копирования листа целиком.

А собственно суть задачи сводится к следующему: необходимо иметь возможность выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.

   v_rtex

3 — 17.11.08 — 16:17

а зачем в эксель? если уже есть в 1с..

   mixqn

4 — 17.11.08 — 16:19

Для рассылки удаленным пользователям, не имеющим 1С.

Хотя это не имеет никакого значения для решения проблемы.

   v_rtex

5 — 17.11.08 — 16:19

отсылайте удаленным пользователям файлы 1С..

пусть смотрят в 1С..

   mixqn

6 — 17.11.08 — 16:20

Нет. Это урезание функционала. Данный вариант руководством не рассматривается. Нужны многостраничные отчеты с сводными таблицами и прочими прелестями экселя. К тому же эксель есть у всех, а для просмотра mxl надо еще и программку поставить.

   DancingShadow

7 — 17.11.08 — 16:21

   mixqn

8 — 17.11.08 — 16:21

Задачу необходимо реализовать именно в том виде, как она стоит: выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.

   dk

9 — 17.11.08 — 16:22

Как объект Ексель создается?

Поди через ПолучитьCOMОбъект? :)

   v_rtex

10 — 17.11.08 — 16:22

в v8 тоже есть сводные таблицы -)

   mixqn

11 — 17.11.08 — 16:24

v_rtex, огромная просьба, не предлагать обходные пути. Они все давно рассмотрены. Я повторяю, мне нужно решить задачу именно в том виде, как она стоит. Если Вы не знаете, как это сделать, прошу вас не писать ничего. Это только отвлекает

   vde69

12 — 17.11.08 — 16:24

могу предложить только формировать по 1 ячейки

для затравки http://www.infostart.ru/blogs/718/

   mixqn

13 — 17.11.08 — 16:25

(9)
Ексель=Новый ComОбъект(«Excel.Application»);

   mixqn

14 — 17.11.08 — 16:26

(12) по одной ячейке не пойдет. Слишком долго. Уж лучше отаказаться от параллельности и формировать отчеты последовательно.

   v_rtex

15 — 17.11.08 — 16:26

формировать отчеты не параллельно.. а последовательно -)

   mixqn

16 — 17.11.08 — 16:29

(15) Именно. Последовательное формирование реализовано и работает. И до определенного момента это было нормально. Но количество отчетов увеличилось, поэтому необходимо более оперативно их формировать и рассылать

   v_rtex

17 — 17.11.08 — 16:30

закрывать Эксель (процесс) перед формированием следующего отчета..

   mixqn

18 — 17.11.08 — 16:33

(7) Спасибо, посмотрел, но того что мне нужно там нет. Нужен не сам факт копирования листа (это рабоатет!!! (16)), нужно сделать так, чтобы не было ошибки: «Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)», которая возникает при 2-ух одновременно открытых экселях (при формировании 2-ух отчетов параллельно).

   mixqn

19 — 17.11.08 — 16:36

(17) тут сразу 2 проблемы: 1) как поймать этот момент? запускаются сразу 2 сеанса 1С, 2 процесса 1Cv8 и 2 Excel, 2 разных переменных «Ексель=Новый ComОбъект(«Excel.Application»);» . Как их связать друг с другом?
и проблема 2) в этом случае первый отчет не сформируется до конца и мы вообще не получим ни одного отчета (при последовательном формировании все получается, но хочется быстрее)

   mixqn

20 — 17.11.08 — 16:52

Ну так что, господа программисты, никто не сталкивался что ли с такой ошибкой???

   vde69

21 — 17.11.08 — 16:52

(19) если ты не будешь использовать «COPY» то количество екселей в памяти тебе будет пофигу, как вариант создавай новые листы из шаблонов

   mixqn

22 — 17.11.08 — 16:56

(21) извините, не понял. Можно поподробнее?

   vde69

23 — 17.11.08 — 17:01

(22) v8: Как из 1С работать с шаблоном Excel

или ваще класная идея:

сделать очередь и обрабатывать ее регламентной обработкой на сервере (будет однопоточная единая очередь, типа как принтер)

   mixqn

24 — 17.11.08 — 17:25

Мне не нужда однопоточная единая очередь, как же вы понять не можете. Фактически, она и реализована. И функционирует. Мне нужно, повторяю в 3-ий раз:

выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов. Из 2-ух и более одновременно запущенных приложений (1Cv8).

   mixqn

25 — 17.11.08 — 17:28

В формулировке задачи главные слова — ПАРАЛЛЕЛЬНО, из ОДНОВРЕМЕННО ЗАПУЩЕННЫХ приложений 1С

   vde69

26 — 17.11.08 — 17:32

(24) тебе не это нужно, а нужно запаралелить обработку 1с, а вывод в excel занимает максимум 1 минуту (если клиент старый).

Вероятно что-то у тебя не правильно! Скорее всего ты не отключаешься от екселя!!!

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

можно на одном обьекте екселя открывать несколько книг

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

ExcelФайл1 = BaseOLE.WorkBooks.Open (ИмяФайла);

ExcelФайл2 = BaseOLE.WorkBooks.Open (ИмяФайла);

да идей как это сделать куча, только я пока не понимаю твоих заморочек

   vde69

27 — 17.11.08 — 17:33

(25) работай через ADO там вообще в памяти ексель не нужен

   Torquader

28 — 17.11.08 — 19:46

Если пользователь интерактивно работает с Excel, то все процессы Excel работают в единой очереди сообщений, и пока ячейка Excel находится в стадии редактирования выполнить какие-то действия в другом файле Excel нельзя в принципе!

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

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

   mixqn

30 — 18.11.08 — 18:03

(28) Не удалось воспроизвести данную ситуацию: интерактивно открыл 2 экселя, вошел в редактирование ячейки (оставил там курсор), при этом без проблем можно войти и редактировать в ячейку другого экселя — это раз и два: 2 экселя без проблем работают и из 1С — те же самые отчеты, которые я описывал выше (та же система), но только вывод без группировок, в плоские таблицы через буфер (текст модуля написан через если — если с оформлением, копируем листы, если без оформления — копируем только данные)

   mixqn

31 — 18.11.08 — 18:04

В общем тема пока открыта, решение не найдено, так что жду еще советов и рекомендаций

   mixqn

32 — 18.11.08 — 18:09

(2) Кстати, о втором способе — выделять все. Никто не пробовал в созданном 1С эксельном файле программно выделить все? У меня именно этот момент не получился в свое время, почему и пришлось прибегнуть к копированию листов. Может кто-то подскажет, как сделать Ctrl+A программно???

ЗЫ: пробовал вот так:

Ексель.Workbooks(ИмяКнигиБуфера).ActiveSheet.Cells.Select();
Ексель.Selection.Copy();

Текст ошибки не помню, но ругался уже на первую строку до «Selection.Copy» не доходил.

   mixqn

33 — 18.11.08 — 18:14

А, вспомнил примерный текст ошибки: что-то типа «Метод Select класса Range завершен неверно»…

   vde69

34 — 18.11.08 — 18:15

что то вроде

Ексель.Workbooks(ИмяКнигиБуфера).ActiveSheet.Cells(«T»)

  

vde69

35 — 18.11.08 — 18:17

(34) короче полный диапазон называеться «T»

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

Я

  

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

  • 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:51

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

    Reply

  • COMPER 19.03.2009 at 11:53

  • Pim 19.03.2009 at 19:10

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

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

    Reply

  • 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

  • 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 23.03.2009 at 10:39

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

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

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

    Reply

  • olee 25.03.2009 at 00:44

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

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

    Плюс.

    Reply

  • dev_gen 31.03.2009 at 13:35

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

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

    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

  • VikFx 28.04.2009 at 11:00

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

    Reply

  • 4emodan 06.05.2009 at 01:22

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

    Reply

  • 4emodan 06.05.2009 at 01:39

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

    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

  • 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:20

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

    Reply

  • qwertylion@rambler.ru 26.06.2009 at 22:22

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

    Reply

  • Dimka74 21.07.2009 at 04:29

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

    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

  • 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 26.11.2009 at 03:38

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

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

    Reply

  • labuh 27.11.2009 at 23:51

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

    Reply

  • meser 06.12.2009 at 22:22

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

    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

  • 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

  • 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

  • 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

  • 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

  • w22u 21.11.2011 at 14:54

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

    Reply

  • Belka063 30.11.2011 at 09:30

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

    Reply

  • AruslanM 07.12.2011 at 10:41

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

    Reply

  • AruslanM 07.12.2011 at 10:41

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

    Reply

  • Ibrogim 19.12.2011 at 10:51

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

    Reply

  • ASoft 18.01.2012 at 22:14

  • ASoft 18.01.2012 at 22:14

  • maratsat 21.01.2012 at 17:44

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

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

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

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

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

    Reply

  • wwizard 21.01.2012 at 23:25

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

    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

  • 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

  • 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

  • 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);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      

    mixqn

    17.11.08 — 16:09

    Добрый день!

    Предыстория: необходимо было сделать так, чтобы из 1С формировался отчет Excel на нескольких листах с сохранением форматирования (главным образом, группировок) табличного документа. Стандартный метод Записать табличного документа создает файл с 1 листом. Поэтому было сделано так: сначала командой Записать создавался файл Excel с необходимым листом, потом лист переносился в нужную книгу:

    ПостроительОтчета.Вывести(ТабДок);

    ТабДок.Записать(ИмяВременныхФайлов, ТипФайлаТабличногоДокумента.XLS97);

    Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));

    И это дело прекрасно работает до тех пор пока не появляется еще один процесс Excel: либо запущенный интерактивно, либо в случае одновременного формирования из 2-х сеансов 1С на одном компьютере отчетов в Excel.

    Собственно проблема: при наличии 2-ух одновременно запущенных экселей стока

    Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));

    не выполняется, выводится ошибка:

    Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)

    Подскажите, что можно сделать

      

    ТелепатБот

    1 — 17.11.08 — 16:09

      

    mixqn

    2 — 17.11.08 — 16:15

    Есть правда другой вариант сохранения данных вместе с форматированием (группировками) — выделить все и скопировать. Но данный вариант реализовать не удалось — бала другая ошибка «Ошибка при вызове метода контекста (Select): Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно» (подробнее могу описать при необходимости). Поэтому был применен метод копирования листа целиком.

    А собственно суть задачи сводится к следующему: необходимо иметь возможность выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.

      

    v_rtex

    3 — 17.11.08 — 16:17

    а зачем в эксель? если уже есть в 1с..

      

    mixqn

    4 — 17.11.08 — 16:19

    Для рассылки удаленным пользователям, не имеющим 1С.

    Хотя это не имеет никакого значения для решения проблемы.

      

    v_rtex

    5 — 17.11.08 — 16:19

    отсылайте удаленным пользователям файлы 1С..

    пусть смотрят в 1С..

      

    mixqn

    6 — 17.11.08 — 16:20

    Нет. Это урезание функционала. Данный вариант руководством не рассматривается. Нужны многостраничные отчеты с сводными таблицами и прочими прелестями экселя. К тому же эксель есть у всех, а для просмотра mxl надо еще и программку поставить.

      

    DancingShadow

    7 — 17.11.08 — 16:21

      

    mixqn

    8 — 17.11.08 — 16:21

    Задачу необходимо реализовать именно в том виде, как она стоит: выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.

      

    dk

    9 — 17.11.08 — 16:22

    Как объект Ексель создается?

    Поди через ПолучитьCOMОбъект? :)

      

    v_rtex

    10 — 17.11.08 — 16:22

    в v8 тоже есть сводные таблицы -)

      

    mixqn

    11 — 17.11.08 — 16:24

    v_rtex, огромная просьба, не предлагать обходные пути. Они все давно рассмотрены. Я повторяю, мне нужно решить задачу именно в том виде, как она стоит. Если Вы не знаете, как это сделать, прошу вас не писать ничего. Это только отвлекает

      

    vde69

    12 — 17.11.08 — 16:24

    могу предложить только формировать по 1 ячейки

    для затравки http://www.infostart.ru/blogs/718/

      

    mixqn

    13 — 17.11.08 — 16:25

    (9)
    Ексель=Новый ComОбъект(«Excel.Application»);

      

    mixqn

    14 — 17.11.08 — 16:26

    (12) по одной ячейке не пойдет. Слишком долго. Уж лучше отаказаться от параллельности и формировать отчеты последовательно.

      

    v_rtex

    15 — 17.11.08 — 16:26

    формировать отчеты не параллельно.. а последовательно -)

      

    mixqn

    16 — 17.11.08 — 16:29

    (15) Именно. Последовательное формирование реализовано и работает. И до определенного момента это было нормально. Но количество отчетов увеличилось, поэтому необходимо более оперативно их формировать и рассылать

      

    v_rtex

    17 — 17.11.08 — 16:30

    закрывать Эксель (процесс) перед формированием следующего отчета..

      

    mixqn

    18 — 17.11.08 — 16:33

    (7) Спасибо, посмотрел, но того что мне нужно там нет. Нужен не сам факт копирования листа (это рабоатет!!! (16)), нужно сделать так, чтобы не было ошибки: «Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)», которая возникает при 2-ух одновременно открытых экселях (при формировании 2-ух отчетов параллельно).

      

    mixqn

    19 — 17.11.08 — 16:36

    (17) тут сразу 2 проблемы: 1) как поймать этот момент? запускаются сразу 2 сеанса 1С, 2 процесса 1Cv8 и 2 Excel, 2 разных переменных «Ексель=Новый ComОбъект(«Excel.Application»);» . Как их связать друг с другом?
    и проблема 2) в этом случае первый отчет не сформируется до конца и мы вообще не получим ни одного отчета (при последовательном формировании все получается, но хочется быстрее)

      

    mixqn

    20 — 17.11.08 — 16:52

    Ну так что, господа программисты, никто не сталкивался что ли с такой ошибкой???

      

    vde69

    21 — 17.11.08 — 16:52

    (19) если ты не будешь использовать «COPY» то количество екселей в памяти тебе будет пофигу, как вариант создавай новые листы из шаблонов

      

    mixqn

    22 — 17.11.08 — 16:56

    (21) извините, не понял. Можно поподробнее?

      

    vde69

    23 — 17.11.08 — 17:01

    (22) v8: Как из 1С работать с шаблоном Excel

    или ваще класная идея:

    сделать очередь и обрабатывать ее регламентной обработкой на сервере (будет однопоточная единая очередь, типа как принтер)

      

    mixqn

    24 — 17.11.08 — 17:25

    Мне не нужда однопоточная единая очередь, как же вы понять не можете. Фактически, она и реализована. И функционирует. Мне нужно, повторяю в 3-ий раз:

    выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов. Из 2-ух и более одновременно запущенных приложений (1Cv8).

      

    mixqn

    25 — 17.11.08 — 17:28

    В формулировке задачи главные слова — ПАРАЛЛЕЛЬНО, из ОДНОВРЕМЕННО ЗАПУЩЕННЫХ приложений 1С

      

    vde69

    26 — 17.11.08 — 17:32

    (24) тебе не это нужно, а нужно запаралелить обработку 1с, а вывод в excel занимает максимум 1 минуту (если клиент старый).

    Вероятно что-то у тебя не правильно! Скорее всего ты не отключаешься от екселя!!!

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

    можно на одном обьекте екселя открывать несколько книг

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

    ExcelФайл1 = BaseOLE.WorkBooks.Open (ИмяФайла);

    ExcelФайл2 = BaseOLE.WorkBooks.Open (ИмяФайла);

    да идей как это сделать куча, только я пока не понимаю твоих заморочек

      

    vde69

    27 — 17.11.08 — 17:33

    (25) работай через ADO там вообще в памяти ексель не нужен

      

    Torquader

    28 — 17.11.08 — 19:46

    Если пользователь интерактивно работает с Excel, то все процессы Excel работают в единой очереди сообщений, и пока ячейка Excel находится в стадии редактирования выполнить какие-то действия в другом файле Excel нельзя в принципе!

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

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

      

    mixqn

    30 — 18.11.08 — 18:03

    (28) Не удалось воспроизвести данную ситуацию: интерактивно открыл 2 экселя, вошел в редактирование ячейки (оставил там курсор), при этом без проблем можно войти и редактировать в ячейку другого экселя — это раз и два: 2 экселя без проблем работают и из 1С — те же самые отчеты, которые я описывал выше (та же система), но только вывод без группировок, в плоские таблицы через буфер (текст модуля написан через если — если с оформлением, копируем листы, если без оформления — копируем только данные)

      

    mixqn

    31 — 18.11.08 — 18:04

    В общем тема пока открыта, решение не найдено, так что жду еще советов и рекомендаций

      

    mixqn

    32 — 18.11.08 — 18:09

    (2) Кстати, о втором способе — выделять все. Никто не пробовал в созданном 1С эксельном файле программно выделить все? У меня именно этот момент не получился в свое время, почему и пришлось прибегнуть к копированию листов. Может кто-то подскажет, как сделать Ctrl+A программно???

    ЗЫ: пробовал вот так:

    Ексель.Workbooks(ИмяКнигиБуфера).ActiveSheet.Cells.Select();
    Ексель.Selection.Copy();

    Текст ошибки не помню, но ругался уже на первую строку до «Selection.Copy» не доходил.

      

    mixqn

    33 — 18.11.08 — 18:14

    А, вспомнил примерный текст ошибки: что-то типа «Метод Select класса Range завершен неверно»…

      

    vde69

    34 — 18.11.08 — 18:15

    что то вроде

    Ексель.Workbooks(ИмяКнигиБуфера).ActiveSheet.Cells(«T»)

      

    vde69

    35 — 18.11.08 — 18:17

    (34) короче полный диапазон называеться «T»

    В платформе 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С.

    Содержание

    1. Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
    2. [MXL to XLS]
    3. Почему не получается использовать ТабличныйДокумент для работы с Excel?
    4. Проблема при сохранении табличного документа в файл xlsx
    5. Проблема при загрузке табличного документа из файла xlsx
    6. Ньюансы (различия) чтения методом OLE и ТабДок
    7. Проблема при выводе из 1С в Excel
    8. Почему не получается использовать ТабличныйДокумент для работы с Excel?
    9. Проблема при сохранении табличного документа в файл xlsx
    10. Проблема при загрузке табличного документа из файла xlsx
    11. Ньюансы (различия) чтения методом OLE и ТабДок

    Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

    [MXL to XLS]

    Решаем две существующие проблемы 1С:Предприятия:

    * медленное сохранение табличных документов в формате Microsoft Excel.
    * некачественное сохранение табличных документов в формате Microsoft Excel.

    Проблема 1: Медленное сохранение.
    =================================
    Суть состоит в том, что время, которое нужно 1С для сохранения, резко возрастает при увеличении объема сохраняемого документа. Если небольшие документы объемом до 1-2 тыс. строк 1С сохраняет еще за приемлемое время, то документы объемом выше 10 тыс. строк могут сохраняться несколько часов (или даже суток).

    Проблема 2: Некачественное сохранение.
    ======================================
    Штатный конвертер 1С не отличается высоким качеством. Например, конвертер не поддерживает текст в ячейках длиной более 255 символов: при сохранении более длинный текст будет усекаться. Также не поддерживаются ячейки с поворотом текста, часто ячейки с многострочным текстом имеют высоту в одну строку, часто не переносятся многострочные объединения ячеек и другое. Подробнее можно посмотреть на этой странице: http://yoksel.net.ru/ProblemyStandartnogoMxl2Xls

    Данная обработка решает эти проблемы.

    Скоростные характеристики.
    ==========================
    Отчет «Анализ продаж», 18 тыс. строк: 4,46 сек.
    Отчет «Анализ продаж», 78 тыс. строк: 17,23 сек.
    Отчет «Анализ продаж», 184 тыс. строк: 24,44 сек.

    (Для таблиц объемом больше 65536 строк сохраняется только 65536 строк — поэтому разница между временем 78 тыс. и 184 тыс. строк невелика)

    Тестовая таблица 10 тыс. строк x 256 столбцов (2,5 млн. ячеек): 57,32 сек.

    Для ускорения сохранения часто используется решение, известное под названием «патч Ромикса». Решение связано с модификацией кода 1С (патчем).
    Отсюда вытекают основные проблемы решения:
    — Проблемы при смене релиза 1С — при изменении релиза патч может перестать работать или вообще приведет к нестабильной работе 1С (аварийные завершения и возможность потери данных).

    — Потенциальная ненадежность: т.к. исходных кодов 1С в открытом доступе нет, то и нет стопроцентной уверенности в корректности произведенной модификации.

    Используемая в данной обработке внешняя компонента Йоксель не производит каких-либо модификаций исполняемого кода 1С, поэтому в ней отсутствуют указанные выше проблемы.

    Другая проблема патча — «все равно медленно». В случае использования табличных документов со сложным форматирование сохранение все равно производится достаточно медленно. Компонента Йоксель сохраняет таблицы со сложным форматирование быстро.

    Для решения проблем некачественного сохранения табличных документов в Excel часто применяют различные обработки, которые работает с Excel по технологии OLE-Automation и либо выполняют конвертирование документов полностью самостоятельно, либо сначала конвертируют документ стандартным конвертером, а потом исправляют допущенные конвертером ошибки.

    Основной недостаток подобного решения: медленно. Обработки написаны на встроенном языке 1С:Предприятия и, значит, работают медленно, т.к. программный код интерпретируется. Далее, тормоза вносит использование OLE-Automation — данная технология никогда не предназначалась для обмена большими объемами данных.

    Другой недостаток: необходимость наличия Excel. В связи с ужесточением ситуации с нелицензионным ПО, предприятия часто отказываются от использования Microsoft Office и переходят на свободное программное обеспечение (OpenOffice). Поэтому Excel может и отсутствовать. Также бывают ситуации, когда наличие Excel на компьютере нежелательно — например, в случае терминального сервера.

    Компонента Йоксель не требует наличия Excel, поэтому может использоваться там, где Excel отсутствует. Также Йоксель написан на компилируемом языке — поэтому работает быстро.

    Установка
    =========
    Для установки нужно следующее:

    1) Если у вас еще не установлена FormEx или 1С++ версии 2.0, скопируйте компоненту FormEx (файл FormEx.dll) в каталог с программными файлами 1С (например, в каталог C:/Program Files/1Cv77/BIN).

    2) Если у вас еще не установлена компонента Йоксель, скопируйте файл «SpreadSheet.dll» в каталог с программными файлами 1С (например, в каталог C:/Program Files/1Cv77/BIN).

    (если нет возможности разместить внешние компоненты в каталоге программных файлов, то можно поместить компоненты в каталог информационной базы)

    3) Скопируйте файл «Быстрое сохранение mxl в xls.ert» в подкаталог «ExtForms» каталога информационной базы.

    4) В «Конфигураторе» добавьте на какую-нибудь панель инструментов кнопку следующего вида:
    — Объект: «Задача».
    — Команда: «Задача.Выполнить».
    — Подсказка и короткая подсказка: «Сохранение таблицы в Excel»
    — Параметры — Формула: «ОткрытьФорму («Отчет»,,КаталогИБ () + «ExtForms/Быстрое сохранение mxl в xls.ert»)»

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

    Источник

    Почему не получается использовать ТабличныйДокумент для работы с Excel?

    Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
    На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
    Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
    Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
    Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта «ТабличныйДокумент»:
    Для метода «Прочитать» объекта «ТабличныйДокумент» реализован параметр «СпособЧтенияЗначений» (Новое системное перечисление «СпособЧтенияЗначенийТабличногоДокумента»). (с) Загрузка из EXCEL

    Тип: СпособЧтенияЗначенийТабличногоДокумента.
    Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
    При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
    Значение по умолчанию: Текст.

    Так вот. И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений в табличный документ выводит только представление…

    Проблема при сохранении табличного документа в файл xlsx

    Если в ячейке будет код номенклатуры с лидирующими нулями — при экспорте в эксель значение ячейки их обрежет,
    например было «00246100» стало «246100»:

    При этом в представлении всё верно…

    И да, если переименовать xlsx в zip и открыть архиватором sheet1.xml — то там будет именно «246100».

    Конечно, есть ещё вариант ручной установки значения ячейки таб. документа, и он работает.
    На клиенте…

    Но #НаСервере установка свойства СодержитЗначение приводит к очистке. И в справке про это ничего нет…

    Для регламентных не годится.

    Проблема при загрузке табличного документа из файла xlsx

    При загрузке файла экселя, сформированного в других языках программирования, содержимое может вообще не прочитаться (если верить гуглу при поиске заголовков этого файла выдаёт Open XML SDK 2.5),
    например:

    В режиме предприятия (меню Файл — Открыть) это пустой таб. документ
    с 1026 столбца…

    Хотя в экселе файл открывается прекрасно:

    Ньюансы (различия) чтения методом OLE и ТабДок

    Часть кода для сравнения этих методов:

    Я конечно буду рад ошибаться, но, по-моему, нативные средства платформы по работе с Excel совсем далекоооооо не всегда применимы на практике.

    Источник

    Проблема при выводе из 1С в Excel

    Добрый день!
    Предыстория: необходимо было сделать так, чтобы из 1С формировался отчет Excel на нескольких листах с сохранением форматирования (главным образом, группировок) табличного документа. Стандартный метод Записать табличного документа создает файл с 1 листом. Поэтому было сделано так: сначала командой Записать создавался файл Excel с необходимым листом, потом лист переносился в нужную книгу:

    ПостроительОтчета.Вывести(ТабДок);
    ТабДок.Записать(ИмяВременныхФайлов, ТипФайлаТабличногоДокумента.XLS97);
    Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));

    И это дело прекрасно работает до тех пор пока не появляется еще один процесс Excel: либо запущенный интерактивно, либо в случае одновременного формирования из 2-х сеансов 1С на одном компьютере отчетов в Excel.

    Собственно проблема: при наличии 2-ух одновременно запущенных экселей стока

    не выполняется, выводится ошибка:

    Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)

    Подскажите, что можно сделать

    Есть правда другой вариант сохранения данных вместе с форматированием (группировками) — выделить все и скопировать. Но данный вариант реализовать не удалось — бала другая ошибка «Ошибка при вызове метода контекста (Select): Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно» (подробнее могу описать при необходимости). Поэтому был применен метод копирования листа целиком.

    А собственно суть задачи сводится к следующему: необходимо иметь возможность выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.

    Источник

    Почему не получается использовать ТабличныйДокумент для работы с Excel?

    Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
    На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
    Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
    Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
    Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта «ТабличныйДокумент»:
    Для метода «Прочитать» объекта «ТабличныйДокумент» реализован параметр «СпособЧтенияЗначений» (Новое системное перечисление «СпособЧтенияЗначенийТабличногоДокумента»). (с) Загрузка из EXCEL

    Тип: СпособЧтенияЗначенийТабличногоДокумента.
    Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
    При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
    Значение по умолчанию: Текст.

    Так вот. И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений в табличный документ выводит только представление.

    Проблема при сохранении табличного документа в файл xlsx

    Если в ячейке будет код номенклатуры с лидирующими нулями — при экспорте в эксель значение ячейки их обрежет,
    например было «00246100» стало «246100»:

    При этом в представлении всё верно.

    И да, если переименовать xlsx в zip и открыть архиватором sheet1.xml — то там будет именно «246100».

    Конечно, есть ещё вариант ручной установки значения ячейки таб. документа, и он работает.
    На клиенте.

    Но #НаСервере установка свойства СодержитЗначение приводит к очистке. И в справке про это ничего нет.

    Для регламентных не годится.

    Проблема при загрузке табличного документа из файла xlsx

    При загрузке файла экселя, сформированного в других языках программирования, содержимое может вообще не прочитаться (если верить гуглу при поиске заголовков этого файла выдаёт Open XML SDK 2.5),
    например:

    В режиме предприятия (меню Файл — Открыть) это пустой таб. документ
    с 1026 столбца.

    Хотя в экселе файл открывается прекрасно:

    Ньюансы (различия) чтения методом OLE и ТабДок

    Часть кода для сравнения этих методов:

    Я конечно буду рад ошибаться, но, по-моему, нативные средства платформы по работе с Excel совсем далекоооооо не всегда применимы на практике.

    Источник

    Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста saveas произошла исключительная ситуация
  • Ошибка при вызове метода контекста save
  • Ошибка при вызове метода контекста run 0x80070002
  • Ошибка при вызове метода контекста rows
  • Ошибка при вызове метода контекста range