листопад
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
02.05.14
✎
23:55
Надо все поля функции передавать — там значения по умолчанию.
Просто, если не установлено, то 1С передаёт UNDEFINED, а Word этого понять не может.
Torquader
02.05.14
✎
23:55
И вообще — проще делать через поля — есть такие объекты, которые можно заполнять значениями, почти как в 1С.
листопад
02.05.14
✎
23:57
(1) Не поняла: какие поля еще надо передавать? У меня до вставки этого запроса по лицевым счетам все формировалось в Ворд.
Torquader
02.05.14
✎
23:58
(3) Ну, например, Банк — это ссылка — его сначала нужно преобразовать в строку, так как переданное значение банка Word точно не поймёт, и ошибка будет звучать «плохой тип переменной».
листопад
03.05.14
✎
00:00
Спотыкается на этой строчке:
Замена.Execute(«ш_ФЛБанк», , , , , , , , ,ш_ФЛБанк,2);
Может из-за того, что в РС»ЛицевыеСчетаРаботниковОрганизации», измерение «Банк» — это СправочникСсылка.Контрагенты?
листопад
03.05.14
✎
00:01
(4) Опять 25, как эту ссылку преобразовать в строку???
Torquader
03.05.14
✎
00:01
(5) Читаем (4) я тебе уже там сказал, где спотыкается, и что говорит.
Вместо
ФЛБанк = Результат.Банк;
Напиши
ФЛБанк = Строка(Результат.Банк);
Чудо случиться, только вот результат будет не такой, как ожидалось.
ДенисЧ
03.05.14
✎
00:01
У меня возникает подозрение, что листочек наш — далеко не из России… Причём настолько далеко, что у них рабочий день начинается, когда у нас заканчивается…
Прикинув МПХ к глобусу — ба… Да это ж Америка…
Torquader
03.05.14
✎
00:02
(8) Американский WoodSpeaker ?
листопад
03.05.14
✎
00:03
(8) С нерезиновой я, просто в другое время времени совсем нет, вот и работаю по ночам…
ДенисЧ
03.05.14
✎
00:04
(9) WoodSpeaker ? Говорящий с деревом? О_о
(10) И почему я не верю….
листопад
03.05.14
✎
00:06
(7) УРА! Чудо произошло!!! Все сформировалось как надо!!!
Torquader :*) !!!
Torquader
03.05.14
✎
00:07
(11) Другими словами «тук-тук по дереву» ^_^
ДенисЧ
03.05.14
✎
00:07
(13) бл….
Woody Woodpecker…
GN негодуе!
Torquader
03.05.14
✎
00:11
(14) Да я это уже понял — просто не очень я знаю их «заграничных».
Torquader
03.05.14
✎
00:13
Вообще, наверное, как только Листопад решает очередную задачу, обращаясь за помощью — с дерева падает один листок, и как только листики закончатся, то помощь — тоже.
листопад
03.05.14
✎
00:14
(13) Почему Вы ко мне так предвзято относитесь? У меня ведь ошибки не глобальные, а что-то в мелочах неправильно пишу. Я думаю, что с опытом это придет. А Вы меня постоянно с дятлом сравниваете. Меня, как девушку, это очень обижает…
Torquader
03.05.14
✎
00:21
(17) Это сравнение — для вас — стимул — быть лучше и способнее — так что не переживайте, а учитесь быть лучше и умнее.
galimovmaks |
|
||
---|---|---|---|
пытаюсь создать печатную форму документа Word выдеат ошибку
Ошибка при вызове метода контекста (Execute) Заменить.Execute(«пКонтрагент», Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Контрагент); по причине: Произошла исключительная ситуация (0x80020005) подскажите в чем дело? |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) galimovmaks, код покажи, и какой windows и какой Office? |
ivan232 |
|
||
---|---|---|---|
Попробуй: |
Подсказка: Для выделения Кода используйте (в редакторе). |
Для большенства организаций стандартная печатная форма трудового договора в программе 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» и файл шаблона.
Функция Печать()
Вернемся к функции, которую мы создали ранее. Настало время написать ее тело.
// Предопределенная функция для внешних печатных форм
//
Функция Печать() Экспорт// Получим объект Microsoft Word из макета
ОбъектВорд = ПолучитьМакет(«ТрудовойДоговор»).Получить();// Получим документ из объекта и активируем его
Документ = ОбъектВорд.Application.Documents(1);
Документ.Activate();// Поиск и замена маркеров
Замена = Документ.Content.Find;
Замена.Execute(«[НомерДоговора]», , , , , , , , , «007», 2);// Вывод документа
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
КонецФункции
// Печать()
Из кода видно, что в файле шаблона производится поиск строки «[НомерДоговора]» и ее замена на строку «007».
Параметры авторегистрации
Для автоматического заполнения принадлежности печатной формы к объектам конфигурации, добавим еще один макет «Параметры_Авторегистрации». Это будет табличный документ, содержащий одну колонку с именами объектов метаданных, к которым будет принадлежать печатная форма. В нашем случае таблица будет выглядить следующим образом.
Сохраним получившуюся внешнюю обработку.
Подключение дополнительных внешних печатных форм
Запустим 1С Предприятие. Откроем справочник «Дополнительные внешние печатные формы» через меню «Сервис» — «Дополнительные отчеты и обработки».
Нажмем кнопку «Добавить», затем зарегистрируем новую печатную форму, нажав «Заменить файл внешней обработки». Автоматически заполнится принадлежность печатной формы справочнику «Сотрудники». Выберем «Трудовой договор» в колонке «Заменяемая печатная форма» чтобы стандартная печатная форма более не использовалась.
В итоге справочник будет выглядить следующим образом.
Проверка результата
Откроем любого работающего сотрудника и нажмем кнопку «Печать» — «Трудовой договор». Откроется документ Microsoft Word с трудовым договором под номером «007».
Дальнейшее описывать не имет смысла. Думаю, не составит большого труда доработать функцию Печать() и макет договора.
На тестовой базе успешно проведен тестовый обмен ЭД, но все то же самое на рабочей базе не удается, даже тест настроек соглашения не проходит.
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Закрыть открытую в Excel или другой программе книгу, проверить права на файл возможность открытия в его в Excel, косвенный признак его наличия. Ошибка при вызове метода контекста (send): Отказано в доступе Обращайтесь в форму связи
Ошибка -2147221005(0x800401F3): Недопустимая строка с указанием класса
Как правило, ошибка возникает при фоновом обмене данными между базами 1С или запуске синхронизации вручную. Что делать при появлении этой ошибки и куда смотреть.
Текст: «Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса».
Причины связаны с незарегистрированными в системе компонентами — comcntr.dll, ошибками доступа (недостаточно прав).
Решение — в регистрации библиотеки comcntr.dll из каталога программы для корректного вызова COMConnector.
Подготовительные действия
- отключите службу Агента сервера 1С:Предприятия и программы, возможно использующие регистрируемую DLL;
- если ранее использовалась библиотека устаревшей версии, удалите регистрацию comcntr.dll, запустив команду вызова regsvr32 с ключом /u.
В командной строке с правами Администратора выполните команду:
При удачном выполнении вы увидите сообщение: «Успешное выполнение DllRegisterServer в comcntr.dll».
2. Переустановка платформы с внесением исправлений
Переустановите технологическую платформу 1С в режиме «Исправить» и отметьте COM-соединение.
- запускаем консоль «Службы компонентов»;
- добавляем новый элемент, переходим «Компьютеры» — «Мой компьютер» — из списка выбираем «Приложения COM+»;
- выбираем «Создать» — «Приложение»;
- в Мастере установки выбираем второй вариант «Создать новое приложение», в поле «Введите имя нового приложения:» вводим «V83COMConnector», «Способ активации» устанавливаем «Серверное приложение», нажимаем «Далее»;
- выбираем учетную запись под которой запускается приложение, по умолчанию — «Текущий (вошедший в систему) пользователь»;
- на этапах «Добавление ролей приложения» и «Добавление пользователей для ролей» нажимаем «Далее», а затем «Готово».
В ветке только что созданного приложения переходим в подветку «Компоненты» и создаем компонент:
- в контекстном меню выбираем «Создать» — «Компонент»;
- кликаем по первому варианту «Установка новых компонентов»;
- в открывшемся диалоге выбираем необходимый файл comcntr.dll и нажимаем «Открыть»;
- нажимаем «Далее» и «Готово».
Обратите внимание: после установки измените свойства объекта. Для этого переходим к ветке V83COMConnector:
Промокоды на Займер на скидки
Займы для физических лиц под низкий процент
- 💲Сумма: от 2 000 до 30 000 рублей
- 🕑Срок: от 7 до 30 дней
- 👍Первый заём для новых клиентов — 0%, повторный — скидка 500 руб
- открываем свойства созданного компонента, переходим в ветку V83COMConnector — «Свойства»;
- на вкладке «Безопасность», в «Авторизация» снимаем флаг «Принудительная проверка доступа для приложений»;
- в «Политика программных ограничений» устанавливаем флаг «Применить политику программных ограничений» и выбираем «Уровень ограничений:» — «Неограниченный»;
- нажимаем «Применить» — «ОК».
Класс V83COMConnector зарегистрирован и доступен для подключения к информационным базам. Обмен данными между базами восстановлен, и фоновый процесс завершается без ошибок.
Если не получается и требуется дополнительная поддержка — наши специалисты готовы вам помочь → +7-911-500-10-11
И более никакой информации, никаких подробностей; в интернете искать можно долго и безрезультатно; исследовать можно тоже долго и безрезультатно.
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Как правило, ошибка при выполнении операции с информационной базой в файловом режиме работы означает, что произошло повреждение файла базы данных. Ошибка При Вызове Метода Контекста Execute в 1C Что Это Обращайтесь в форму связи
Причины появления ошибки в 1С
Разберем основные моменты, связанные с частым появлением сбоев при работе с базой данных. Они возникают в разных ситуациях, и определить их истинную причину не всегда возможно.
Одна из самых частых причин нарушение работы связанна с компьютером, на который установлена база данных 1С. Рабочая область может автоматически закрываться из-за нехватки оперативной памяти на сервере. Все возникающие неисправности должны быстро устраняться. В противном случае есть вероятность потери данных.
Ошибка -2147221005(0x800401F3): Недопустимая строка с указанием класса — Настройка 1С
- несовместимая версия файла базы данных;
- файл базы данных поврежден;
- ошибка соединения с сервером 1С: Предприятия 8.3;
- переустановка баз на сервере;
- проблема с портами на сервере
- и т.д.
В чем плюсы такой методики чтения
- Всё производится встроенными средствами;
- достаточно быстро;
- код в 2 строки
- данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
- возможно считывать значения ячеек как текст (без авто-преобразования),
- доступно на сервере, где excel вообще нельзя установить (linux, OSx).
Внутренняя обработка 1С Тестирование и исправление проверяет и исправляет структуру конфигурации и информационных данных.
Пошаговая инструкция Тестирования и исправления базы.
Шаг 1. Запустите 1С в режиме Конфигуратор .
Шаг 2. В конфигурации выберите пункт меню Администрирование — Тестирование и исправление .
Перед открытием формы тестирования программа напомнит о необходимости сделать копию базы перед проверкой. Если копия сделана — нажимаете на кнопку Продолжить .
Форма тестирования предлагает несколько вариантов проверок и режимов, не зависящих друг от друга. Выполнить нужно все проверки в полном объеме, поэтому установите флажки напротив тех вариантов, где они не поставлены по умолчанию.
Форма тестирования и исправления информационной базы должна иметь следующий вид.
Рассмотрим основные группы переключателей проверки.
Группа переключателей Проверки и режимы
Позволяет сделать выбор между режимом, производящим только проверку информационной базы и режимом, производящим коррекцию обнаруженных ошибок.
Группа переключателей Тестирования
Переключатель Тестирование и исправление выставлен по умолчанию, т. е. программа 1С будет не только искать ошибки, но и пытаться их исправить по заложенному разработчиками алгоритму.
При установке переключателя в положение Только тестирование будет произведен поиск ошибок без исправления. Просмотрев характер ошибок, пользователь сам примет решение: будет ли передавать ситуацию на автоматическое программное исправление или нет.
Группа При наличии ссылок на несуществующие объекты
Эта группа определяет, должна ли программа при обнаружении ссылок на несуществующие объекты:
По умолчанию установлен самый безопасный вариант Не изменять. При использовании первых двух вариантов в сложных случаях возможны искажения информации в базах 1С.
Группа переключателей При частичной потере данных объектов
Эта группа задает поведение программы, если было обнаружено, что данные объектов были частично потеряны, но оставшихся данных достаточно для того, чтобы восстановить потерянные. Пользователь самостоятельно выбирает вариант:
По умолчанию установлен самый безопасный вариант Не изменять. При использовании первых двух вариантов в сложных случаях возможны искажения информации в базах 1С.
Кнопка Выполнить
Перед нажатие на кнопку Выполнить , убедитесь, что 1С закрыта у всех пользователей. Проверка выполняется в монопольном режиме. Сохранение копии базы — обязательное условие перед проверкой.
Сертификат, указанный в Соглашении, по которому проходит авторизация, не зарегистрирован в сервисе 1С-Такском , или не соблюдаются настройки криптографии для клиент-серверного варианта работы информационной базы.
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
При выполнении криптооперации возникают ошибки вида указан неправильный пароль доступа к закрытому ключу, сертификат не связан с закрытым ключом и др. 1С-Такском — Группа компаний «РМ Софт» Обращайтесь в форму связи
Дополнительный способ
Ничего не помогло — воспользуйтесь следующими методами:
Путь к имени файла должен быть допустимым в каталоге отчетов: щелкните вкладку «Вывод». Перейдите на вкладку «Параметры вывода». В поле Имя файла убедитесь, что путь действителен.
Сколько дискового пространства доступно для файла: Откройте Windows Explorer. Выберите Локальный диск (буква диска:), на котором хранится отчет. Щелкните правой кнопкой мыши на локальном диске (буква диска:) и нажмите Свойства. Откроется окно свойств. Проверьте доступное свободное пространство на этом локальном диске.
Убедитесь, что у пользователя есть разрешения на доступ к папке IO_Data: Откройте проводник Windows. Щелкните правой кнопкой мыши основную папку выберите «Свойства».
Перейдите на вкладку «Безопасность». Убедитесь, что у пользователя есть полные права на эту папку и все подпапки. Если вы не можете проверить права доступа, обратитесь к администратору.
НаСервере НаКлиенте, директивы компиляции и инструкции препроцессору в 1С 8. x
Ошибка при совместном доступе в 1C
Взгляните на права пользователя под которым вы зашли в систему виндоус. У вас должны быть права и на чтение файлов и на запись.
Когда данные к которым нужно получить доступ (база) находится на удаленном (локальном) персональном компьютере — смотрим закладку «Безопасность». В безопасности вы должны убедиться что у пользователя нет запрета на запись.
Предупреждения о проблемах вылазят когда возмущается брандмауэр. Это касается сетевых объектов. Антивирусные программы препятствуют нормальной работе.
Открываем брандмауэр и антивирус и ищем в списке блокируемых программ 1С. Удаляем из списка.
Большой шанс появления ошибки, когда два синонимичных приложения запускаются вместе. К примеру, ЗУП и Бухгалтерия. Если запустить по очереди, проблема исчезнет
💥Принимайте участие в опросе и получайте бесплатную консультацию
Поступила задачка— снимать кое-какие данные с 1С и писать напрямую в табличку в скуль.Я тут для упрощения сначала просто попробовал в табличку имена пользователей забросить. Все зашибись присоединяется, считывается, но когда дело доходит до Command.Execute; вываливается в исключение с ошибкой : «Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте.» В инете такой вопрос встречается, но вот ответов на него нет. Может кто-нить подсказать чем надо накормить эту зверушку, чтобы забегала как надо?
лю-ю-ю-ю-ди-и…Неужели никто не в курсе?:( Вот блин засада….
с С1 версии 8.х запросы на изменения не прокатят, толко на чтение.
Блин!Вот то-то я смотрю из 77 та же фигня работает влет…:( А есть какие-нибудь обходные пути кроме того чтобы по оле цепляться к 77 и через нее все это вертеть?..Шибко уж не хочется,не кашерно как-то…
Зачем изгалаться? Из 7.7 в 8.1 довольно быстро и надёжно по Com всё работает.
Меня вообщето тоже сомнения гложут…Работаем же с методами внешнего объекта..Какая ему разница откуда я к нему зацепился…
Мне надо из 81 напрямую в скульную базу аксеса
В СКуль табличку можно писать через ADO
Понятно. Странно, команду апдейт пока никто не отменял…
Так я и так через него вроде..
+ У В книжке у Гончарова Габеца есть пример работы с ADO, команду Select поменяй на Update с параметрами и попробуем ещё разок…
Не понял прикола! В попытке присваивается значение переменной? Где Соединение.Open?
прав это через апдейт делается.
+ Пример из Простые примеры разработки Гончаров Габец: стрПодключения = «Driver={SQL Server};»
Всем спасибо,народ! Пойду пробовать.
Тэги:
Комментарии доступны только авторизированным пользователям