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();
КонецПопытки;
КонецФункции
1 — 02.05.14 — 23:55
Надо все поля функции передавать — там значения по умолчанию.
Просто, если не установлено, то 1С передаёт UNDEFINED, а Word этого понять не может.
2 — 02.05.14 — 23:55
И вообще — проще делать через поля — есть такие объекты, которые можно заполнять значениями, почти как в 1С.
3 — 02.05.14 — 23:57
(1) Не поняла: какие поля еще надо передавать? У меня до вставки этого запроса по лицевым счетам все формировалось в Ворд.
4 — 02.05.14 — 23:58
(3) Ну, например, Банк — это ссылка — его сначала нужно преобразовать в строку, так как переданное значение банка Word точно не поймёт, и ошибка будет звучать «плохой тип переменной».
5 — 03.05.14 — 00:00
Спотыкается на этой строчке:
Замена.Execute(«ш_ФЛБанк», , , , , , , , ,ш_ФЛБанк,2);
Может из-за того, что в РС»ЛицевыеСчетаРаботниковОрганизации», измерение «Банк» — это СправочникСсылка.Контрагенты?
6 — 03.05.14 — 00:01
(4) Опять 25, как эту ссылку преобразовать в строку???
7 — 03.05.14 — 00:01
(5) Читаем (4) я тебе уже там сказал, где спотыкается, и что говорит.
Вместо
ФЛБанк = Результат.Банк;
Напиши
ФЛБанк = Строка(Результат.Банк);
Чудо случиться, только вот результат будет не такой, как ожидалось.
8 — 03.05.14 — 00:01
У меня возникает подозрение, что листочек наш — далеко не из России… Причём настолько далеко, что у них рабочий день начинается, когда у нас заканчивается…
Прикинув МПХ к глобусу — ба… Да это ж Америка…
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 :*) !!!
13 — 03.05.14 — 00:07
(11) Другими словами «тук-тук по дереву» ^_^
14 — 03.05.14 — 00:07
(13) бл….
Woody Woodpecker…
GN негодуе!
15 — 03.05.14 — 00:11
(14) Да я это уже понял — просто не очень я знаю их «заграничных».
16 — 03.05.14 — 00:13
Вообще, наверное, как только Листопад решает очередную задачу, обращаясь за помощью — с дерева падает один листок, и как только листики закончатся, то помощь — тоже.
17 — 03.05.14 — 00:14
(13) Почему Вы ко мне так предвзято относитесь? У меня ведь ошибки не глобальные, а что-то в мелочах неправильно пишу. Я думаю, что с опытом это придет. А Вы меня постоянно с дятлом сравниваете. Меня, как девушку, это очень обижает…
Torquader
18 — 03.05.14 — 00:21
(17) Это сравнение — для вас — стимул — быть лучше и способнее — так что не переживайте, а учитесь быть лучше и умнее.
galimovmaks |
|
||
---|---|---|---|
|
пытаюсь создать печатную форму документа Word выдеат ошибку
Ошибка при вызове метода контекста (Execute) Заменить.Execute(«пКонтрагент», Ложь, Истина, Ложь, , , Истина, , Ложь, Выборка.Контрагент); по причине: Произошла исключительная ситуация (0x80020005) подскажите в чем дело? |
Yandex |
|
||
---|---|---|---|
|
E_Migachev |
|
||
---|---|---|---|
|
(0) galimovmaks, код покажи, и какой windows и какой Office? |
ivan232 |
|
||
---|---|---|---|
|
Попробуй: |
Подсказка: Для быстрого поиска ответов — используйте ‘Поиск’ |
romedal 55 / 55 / 9 Регистрация: 18.03.2010 Сообщений: 345 Записей в блоге: 1 |
||||||||
1 |
||||||||
15.08.2012, 18:33. Показов 8604. Ответов 6 Метки нет (Все метки)
Доброго времени суток. Пишу подключение к базе MySQL
Вылетает ошибка
0 |
Dethmontt Модератор 3722 / 2917 / 574 Регистрация: 10.03.2011 Сообщений: 11,489 Записей в блоге: 1 |
||||
16.08.2012, 02:25 |
2 |
|||
1 |
romedal 55 / 55 / 9 Регистрация: 18.03.2010 Сообщений: 345 Записей в блоге: 1 |
||||
16.08.2012, 12:24 [ТС] |
3 |
|||
Впринцыпе написал таким макаром:
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
0 |
romedal 55 / 55 / 9 Регистрация: 18.03.2010 Сообщений: 345 Записей в блоге: 1 |
||||
21.08.2012, 17:15 [ТС] |
7 |
|||
Почему не срабатывает запрос
Пишет: Добавлено через 18 минут
Если убрать LIKE, то все работает… ТОчнее, если убрать знак «%»
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
21.08.2012, 17:15 |
Помогаю со студенческими работами здесь Подключение к mysql import java.sql.*; Подключение к MySQL Подключение MySQL БД Подключение к MySQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 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» и файл шаблона.
Функция Печать()
Вернемся к функции, которую мы создали ранее. Настало время написать ее тело.
// Предопределенная функция для внешних печатных форм
//
Функция Печать() Экспорт// Получим объект Microsoft Word из макета
ОбъектВорд = ПолучитьМакет(«ТрудовойДоговор»).Получить();// Получим документ из объекта и активируем его
Документ = ОбъектВорд.Application.Documents(1);
Документ.Activate();// Поиск и замена маркеров
Замена = Документ.Content.Find;
Замена.Execute(«[НомерДоговора]», , , , , , , , , «007», 2);// Вывод документа
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
КонецФункции
// Печать()
Из кода видно, что в файле шаблона производится поиск строки «[НомерДоговора]» и ее замена на строку «007».
Параметры авторегистрации
Для автоматического заполнения принадлежности печатной формы к объектам конфигурации, добавим еще один макет «Параметры_Авторегистрации». Это будет табличный документ, содержащий одну колонку с именами объектов метаданных, к которым будет принадлежать печатная форма. В нашем случае таблица будет выглядить следующим образом.
Сохраним получившуюся внешнюю обработку.
Подключение дополнительных внешних печатных форм
Запустим 1С Предприятие. Откроем справочник «Дополнительные внешние печатные формы» через меню «Сервис» — «Дополнительные отчеты и обработки».
Нажмем кнопку «Добавить», затем зарегистрируем новую печатную форму, нажав «Заменить файл внешней обработки». Автоматически заполнится принадлежность печатной формы справочнику «Сотрудники». Выберем «Трудовой договор» в колонке «Заменяемая печатная форма» чтобы стандартная печатная форма более не использовалась.
В итоге справочник будет выглядить следующим образом.
Проверка результата
Откроем любого работающего сотрудника и нажмем кнопку «Печать» — «Трудовой договор». Откроется документ Microsoft Word с трудовым договором под номером «007».
Дальнейшее описывать не имет смысла. Думаю, не составит большого труда доработать функцию Печать() и макет договора.
Поступила задачка— снимать кое-какие данные с 1С и писать напрямую в табличку в скуль.Я тут для упрощения сначала просто попробовал в табличку имена пользователей забросить. Все зашибись присоединяется, считывается, но когда дело доходит до Command.Execute; вываливается в исключение с ошибкой : «Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте.» В инете такой вопрос встречается, но вот ответов на него нет. Может кто-нить подсказать чем надо накормить эту зверушку, чтобы забегала как надо?
лю-ю-ю-ю-ди-и…Неужели никто не в курсе?:( Вот блин засада….
с С1 версии 8.х запросы на изменения не прокатят, толко на чтение.
Блин!Вот то-то я смотрю из 77 та же фигня работает влет…:( А есть какие-нибудь обходные пути кроме того чтобы по оле цепляться к 77 и через нее все это вертеть?..Шибко уж не хочется,не кашерно как-то…
Зачем изгалаться? Из 7.7 в 8.1 довольно быстро и надёжно по Com всё работает.
Меня вообщето тоже сомнения гложут…Работаем же с методами внешнего объекта..Какая ему разница откуда я к нему зацепился…
Мне надо из 81 напрямую в скульную базу аксеса
В СКуль табличку можно писать через ADO
Понятно. Странно, команду апдейт пока никто не отменял…
Так я и так через него вроде..
+ У В книжке у Гончарова Габеца есть пример работы с ADO, команду Select поменяй на Update с параметрами и попробуем ещё разок…
Не понял прикола! В попытке присваивается значение переменной? Где Соединение.Open?
прав это через апдейт делается.
+ Пример из Простые примеры разработки Гончаров Габец: стрПодключения = «Driver={SQL Server};»
Всем спасибо,народ! Пойду пробовать.
Тэги:
Комментарии доступны только авторизированным пользователям