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

   листопад

02.05.14 — 23:52

При попытке сформировать внешнюю печ.фому в Word, выдает сообщение об ошибке и не формирует печ.форму:

{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(352)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)

Вот код:

Функция Печать() Экспорт

Выборка = СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();

Если Выборка.Следующий() Тогда

    
    Запрос = Новый Запрос;

    Запрос.Текст =        

    «ВЫБРАТЬ

    |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,

    |    ЛицевыеСчетаРаботниковОрганизации.Банк,

    |    ЛицевыеСчетаРаботниковОрганизации.Банк.ОсновнойБанковскийСчет.НомерСчета КАК ФЛБанкКСчет,

    |    ЛицевыеСчетаРаботниковОрганизации.Банк.ОсновнойБанковскийСчет.Банк.Код КАК ФЛБанкБИК

    |ИЗ

    |    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации

    |ГДЕ

    |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо.Ссылка = &Ссылка»;

    
    Запрос.УстановитьПараметр(«Ссылка», СсылкаНаОбъект.Физлицо);

    
    Результат = Запрос.Выполнить().Выбрать();

    
    Если Результат.Следующий() Тогда

        Если Результат.НомерЛицевогоСчета <> Неопределено Тогда

            ФЛНомерЛС = Результат.НомерЛицевогоСчета;

            ФЛБанк = Результат.Банк;

            ФЛКСчет = Результат.ФЛБанкКСчет;

            ФЛБИК = Результат.ФЛБанкБИК;

        КонецЕсли;

    КонецЕсли;

    
    ш_ФЛНомерЛС = ФЛНомерЛС;

    ш_ФЛБанк = ФЛБанк;

    ш_ФЛКСчет = ФЛКСчет;

    ш_ФЛБИК = ФЛБИК;

КонецЕсли;

Макет = ПолучитьМакет(«МакетWord»);

MSWord = Макет.Получить();

Замена = Документ.Content.Find;

Замена.Wrap = 1;   //чтобы не писать каждый раз  Find

Замена.Execute(«ш_ФЛНомерЛС», , , , , , , , ,ш_ФЛНомерЛС,2);

Замена.Execute(«ш_ФЛБанк», , , , , , , , ,ш_ФЛБанк,2);

Замена.Execute(«ш_ФЛКСчет», , , , , , , , ,ш_ФЛКСчет,2);

Замена.Execute(«ш_ФЛБИК», , , , , , , , ,ш_ФЛБИК,2);

MSWord.Application.Visible=Истина;

MsWord.Activate();

Исключение

Сообщить(ОписаниеОшибки());

MSWord.Application.Quit();

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

КонецФункции

   Torquader

1 — 02.05.14 — 23:55

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

Просто, если не установлено, то 1С передаёт UNDEFINED, а Word этого понять не может.

   Torquader

2 — 02.05.14 — 23:55

И вообще — проще делать через поля — есть такие объекты, которые можно заполнять значениями, почти как в 1С.

   листопад

3 — 02.05.14 — 23:57

(1) Не поняла: какие поля еще надо передавать? У меня до вставки этого запроса по лицевым счетам все формировалось в Ворд.

   Torquader

4 — 02.05.14 — 23:58

(3) Ну, например, Банк — это ссылка — его сначала нужно преобразовать в строку, так как переданное значение банка Word точно не поймёт, и ошибка будет звучать «плохой тип переменной».

   листопад

5 — 03.05.14 — 00:00

Спотыкается на этой строчке:

Замена.Execute(«ш_ФЛБанк», , , , , , , , ,ш_ФЛБанк,2);

Может из-за того, что в РС»ЛицевыеСчетаРаботниковОрганизации», измерение «Банк» — это СправочникСсылка.Контрагенты?

   листопад

6 — 03.05.14 — 00:01

(4) Опять 25, как эту ссылку преобразовать в строку???

   Torquader

7 — 03.05.14 — 00:01

(5) Читаем (4) я тебе уже там сказал, где спотыкается, и что говорит.

Вместо

ФЛБанк = Результат.Банк;

Напиши

ФЛБанк = Строка(Результат.Банк);

Чудо случиться, только вот результат будет не такой, как ожидалось.

   ДенисЧ

8 — 03.05.14 — 00:01

У меня возникает подозрение, что листочек наш — далеко не из России… Причём настолько далеко, что у них рабочий день начинается, когда у нас заканчивается…

Прикинув МПХ к глобусу — ба… Да это ж Америка…

   Torquader

9 — 03.05.14 — 00:02

(8) Американский WoodSpeaker ?

   листопад

10 — 03.05.14 — 00:03

(8) С нерезиновой я, просто в другое время времени совсем нет, вот и работаю по ночам…

   ДенисЧ

11 — 03.05.14 — 00:04

(9) WoodSpeaker ? Говорящий с деревом? О_о

(10) И почему я не верю….

   листопад

12 — 03.05.14 — 00:06

(7) УРА! Чудо произошло!!! Все сформировалось как надо!!!

Torquader :*) !!!

   Torquader

13 — 03.05.14 — 00:07

(11) Другими словами «тук-тук по дереву» ^_^

   ДенисЧ

14 — 03.05.14 — 00:07

(13) бл….

Woody Woodpecker…

GN негодуе!

   Torquader

15 — 03.05.14 — 00:11

(14) Да я это уже понял — просто не очень я знаю их «заграничных».

   Torquader

16 — 03.05.14 — 00:13

Вообще, наверное, как только Листопад решает очередную задачу, обращаясь за помощью — с дерева падает один листок, и как только листики закончатся, то помощь — тоже.

   листопад

17 — 03.05.14 — 00:14

(13) Почему Вы ко мне так предвзято относитесь? У меня ведь ошибки не глобальные, а что-то в мелочах неправильно пишу. Я думаю, что с опытом это придет. А Вы меня постоянно с дятлом сравниваете. Меня, как девушку, это очень обижает…

  

Torquader

18 — 03.05.14 — 00:21

(17) Это сравнение — для вас — стимул — быть лучше и способнее — так что не переживайте, а учитесь быть лучше и умнее.

galimovmaks
19.08.2013 11:51 Прочитано: 6737

пытаюсь создать печатную форму документа Word выдеат ошибку
Ошибка при вызове метода контекста (Execute)
Заменить.Execute(«пКонтрагент», Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Контрагент);
по причине:
Произошла исключительная ситуация (0x80020005)

подскажите в чем дело?

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

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

E_Migachev
19.08.2013 14:54 Ответ № 1

(0) galimovmaks, код покажи, и какой windows и какой Office?

ivan232
19.08.2013 20:43 Ответ № 2

Попробуй:
Заменить.Execute(«пКонтрагент», Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Контрагент.Наименование);
Должно сработать — у меня так же было)

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

romedal

55 / 55 / 9

Регистрация: 18.03.2010

Сообщений: 345

Записей в блоге: 1

1

15.08.2012, 18:33. Показов 8604. Ответов 6

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Доброго времени суток. Пишу подключение к базе MySQL

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Процедура Кнопка1Нажатие(Элемент)
           Соединение = Новый COMОбъект("ADODB.Connection");
 
Соединение.ConnectionString ="DRIVER={MySQL ODBC 5.1 Driver};OPTION=3;DATABASE=БД;PWD=пароль;PORT=3306;SERVER=хостt;UID=логин;";
 
НаборЗаписей = Новый COMОбъект("ADODB.Recordset");
Команда = Новый COMОбъект("ADODB.Command");
Попытка
Соединение.Open();
Сообщить("Все гут");
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;
    ТекстЗапроса = "SELECT * FROM USERS";
        Команда.CommandText = ТекстЗапроса;
        НаборЗаписей = Команда.Execute();
        Сообщить("Все гут");
        
 
 
        
КонецПроцедуры

Вылетает ошибка

1C
1
2
3
4
Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Execute)
        НаборЗаписей = Команда.Execute();
по причине:
Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.



0



Dethmontt

Модератор

Эксперт 1С

3722 / 2917 / 574

Регистрация: 10.03.2011

Сообщений: 11,489

Записей в блоге: 1

16.08.2012, 02:25

2

1C
1
2
3
Команда = Новый COMОбъект("ADODB.Command");
Соединение.Open();
Команда.ActiveConnection = Соединение;



1



romedal

55 / 55 / 9

Регистрация: 18.03.2010

Сообщений: 345

Записей в блоге: 1

16.08.2012, 12:24

 [ТС]

3

Впринцыпе написал таким макаром:

1C
1
2
3
4
5
Connection = Новый COMОбъект("ADODB.Connection"); 
Connection.Open(ПараметрыСоединенияССайтомМИКО.СтрокаСоединения);
RS = Новый COMОбъект("ADODB.Recordset"); 
RS.CursorType=3;
RS.ActiveConnection=Connection;



1



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

16.08.2012, 12:44

4

Спасибо за инфу.

Не по теме:

Надо писать «в прынципе»



1



55 / 55 / 9

Регистрация: 18.03.2010

Сообщений: 345

Записей в блоге: 1

16.08.2012, 15:51

 [ТС]

5

А чем можно проверить пустой результат запроса или нет, а в идеале конечно же почитать API по этому делу (возможно, кто-то знает ссылку на документацию)…



0



148 / 148 / 3

Регистрация: 05.05.2010

Сообщений: 569

17.08.2012, 06:44

6

ADO Tutorial
Если в запросе к БД используется SELECT, то в результате Команда.Execute() получаем новый Recordset у которого соответственно можно проверить количество записей через RecordCount. Как то так ИМХО.



0



romedal

55 / 55 / 9

Регистрация: 18.03.2010

Сообщений: 345

Записей в блоге: 1

21.08.2012, 17:15

 [ТС]

7

Почему не срабатывает запрос

1C
1
RS.Open("select users.sname, users.fname, users.skidka, users.email, orders.id as dd from users join orders on users.id = orders.user_id where users.telefon LIKE "+"%"+CollarId_rom+" limit 1");

Пишет:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Драйвер ODBC не поддерживает требуемые свойства.
Если убрать LIKE, то все работает…

Добавлено через 18 минут

Цитата
Сообщение от romedal
Посмотреть сообщение

Если убрать LIKE, то все работает…

ТОчнее, если убрать знак «%»
Вопрос решен, нужно было брать знак % в одинарные кавычки…



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.08.2012, 17:15

Помогаю со студенческими работами здесь

Подключение к mysql
пишу вот такой код подключения

import java.sql.*;
import java.lang.ClassNotFoundException;…

Подключение к MySQL
Уже давно пользуюсь MySQL, так что вроде не полный ламер, но на днях приключилась непонятная…

Подключение MySQL БД
Первый раз решил попробовать подключить БД к Билдеру. Скачал и установил mysql connector odbc….

Подключение к MySQL
Осваиваю создание сайтов. Столкнулся с проблемой joomla. Испробовал в работе ver. 1.5.7; 2.5.7;…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

7

Трудовой договор

Для большенства организаций стандартная печатная форма трудового договора в программе 1С:Зарплата и управление персоналом не подходит. Фирма 1С, в восьмой версии своей программы, любезно предусмотрела возможность добавлять дополнительные печатные формы для документов и других объектов. Воспользуемся данной возможностью и создадим трудовой договор, который будет открываться в Microsoft Word.

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

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

Технические требования к внешней печатной форме

Внешняя обработка должна содержать:

  • Реквизит «СсылкаНаОбъект», куда при вызове будет передана ссылка на объект, для которого необходимо выполнить печать;
  • Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры;
  • Функция Печать() — без параметров,  возвращающая табличный документ;
  • Также внешняя печатная обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из двух колонок: «Полное имя метаданного» и «Имя табличной части».

Создание внешней обработки

Запустим 1С:Предприятие в режиме «Конфигуратор» и через меню «Файл» — «Новый» создадим внешнюю обработку.

Создание внешней обработки

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

Свойства реквизита

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

 Функция Печать()

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

Макет трудового договора в формате Microsoft Word

Существует, по меньшей мере, три способа создания шаблона.

Первый. В тексте документа содаются метки особого формата, например, «м_НомерДоговора», затем, в модуле обработки производится поиск и замена значений.

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

Способ три. В шаблон добавляются служебные поля, например, «DocVariable» или «Author». Используя DocVariable можно обращаться к переменной по имени, например, «ДокументВорд.Variables.Add(ИмяПеременной, ЗначениеПеременной);», но ее не видно в шаблоне. Поле «Author» отображается в шаблоне, но обращаться к нему придется в цикле по индексу: «ДокументВорд.Fields.item(Индекс).Result.Text = Значение;».

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

Откроем программу Microsoft Office. Для примера добавим лишь одну строку: «Трудовой договор № [НомерДоговора]».

Сохраним шаблон.

Добавим получившийся шаблон в нашу обаботку. Для этого выбираем «Макеты» и нажимаем кнопку «Добавить» или клавишу «Insert».

Выбор макета трудового договора

Откроется конструктор запроса, в котором выберем тип «Active Document» и файл шаблона.

Конструктор макета Active Document

Функция Печать()

Вернемся к функции, которую мы создали ранее. Настало время написать ее тело.

// Предопределенная функция для внешних печатных форм
//
Функция Печать() Экспорт// Получим объект Microsoft Word из макета
   
ОбъектВорд = ПолучитьМакет(«ТрудовойДоговор»).Получить();// Получим документ из объекта и активируем его
   
Документ = ОбъектВорд.Application.Documents(1);
   
Документ.Activate();// Поиск и замена маркеров
   
Замена = Документ.Content.Find;
   
Замена.Execute(«[НомерДоговора]», , , , , , , , , «007», 2);// Вывод документа
   
ОбъектВорд.Application.Visible = Истина;
   
ОбъектВорд.Activate();

КонецФункции

// Печать()

Из кода видно, что в файле шаблона производится поиск строки «[НомерДоговора]» и ее замена на строку «007».

Параметры авторегистрации

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

Параметры авторегистрации

Сохраним получившуюся внешнюю обработку.

Подключение дополнительных внешних печатных форм

Запустим 1С Предприятие. Откроем справочник «Дополнительные внешние печатные формы» через меню «Сервис» — «Дополнительные отчеты и обработки».

Нажмем кнопку «Добавить», затем зарегистрируем новую печатную форму, нажав «Заменить файл внешней обработки». Автоматически заполнится принадлежность печатной формы справочнику «Сотрудники». Выберем «Трудовой договор» в колонке «Заменяемая печатная форма» чтобы стандартная печатная форма более не использовалась.

Регистрация внешней печатной формы

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

Дополнительные внешние печатные формы

Проверка результата

Откроем любого работающего сотрудника и нажмем кнопку «Печать» — «Трудовой договор». Откроется документ Microsoft Word с трудовым договором под номером «007».

Трудовой договор в MS Word

Дальнейшее описывать не имет смысла. Думаю, не составит большого труда доработать функцию Печать() и макет договора.

Поступила задачка— снимать кое-какие данные с 1С и писать напрямую  в табличку в скуль.Я тут для упрощения сначала просто попробовал в табличку имена пользователей забросить. Все зашибись присоединяется, считывается, но когда дело доходит до Command.Execute; вываливается в исключение с ошибкой : «Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.» В инете такой вопрос встречается, но вот ответов на него нет. Может кто-нить подсказать чем надо накормить эту зверушку, чтобы забегала как надо?

лю-ю-ю-ю-ди-и…Неужели никто не в курсе?:( Вот блин засада….

с С1 версии 8.х запросы на изменения не прокатят, толко на чтение.

Блин!Вот то-то я смотрю из 77 та же фигня работает влет…:( А есть какие-нибудь обходные пути кроме того чтобы по оле цепляться к 77 и через нее все это вертеть?..Шибко уж не хочется,не кашерно как-то…

Зачем изгалаться? Из 7.7 в 8.1 довольно быстро и надёжно по Com всё работает.

Меня вообщето тоже сомнения гложут…Работаем же с методами внешнего объекта..Какая ему разница откуда я к нему зацепился…

Мне надо из 81 напрямую в скульную базу аксеса

В СКуль табличку можно писать через ADO

Понятно. Странно, команду апдейт пока никто не отменял…

Так я и так через него вроде..

+ У В книжке у Гончарова Габеца есть пример работы с ADO, команду Select поменяй на Update с параметрами и попробуем ещё разок…

Не понял прикола! В попытке присваивается значение переменной? Где Соединение.Open?

прав это через апдейт делается.

+ Пример из Простые примеры разработки Гончаров Габец: стрПодключения = «Driver={SQL Server};»

Всем спасибо,народ! Пойду пробовать.

Тэги:

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

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

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

  • Яндекс еда ошибка привязки карты
  • Ошибка при вызове метода контекста converttoshape
  • Ошибка при вызове метода контекста connectagent
  • Ошибка при вызове метода контекста connect неизвестная ошибка
  • Ошибка при вызове метода контекста cells

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

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