|
8.2 Сломал всю голову и убился об стену - создание документа по COM-соединению | ☑ | ||
---|---|---|---|---|
0
Vladal
06.04.12
✎
07:09
|
Обыскался по всем учебникам (они у меня для 8.0 и 8.1) и форуму. У людей и в примерах получается.
У меня - нет. Я дятел. Сообщить(""+ТекущаяДата()+" Подключение к бухгалтерской базе..."); V8 = Новый COMОбъект("V82.COMConnector"); Попытка БазаБУ = V8.Connect("File=""D:\1С\v8\БУ"";Usr=Exchange;Pwd=Exchange;"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; НовыйПКО = БУ.Документы.ПКО.CreateDocument(); НовыйПКО.Записать(); Вот на строке НовыйПКО.Записать(); выходит "Ошибка при вызовеметода контекста (Записать)" и по кнопке подробнее такое: {Форма.Форма.Форма(300)}: Ошибка при вызове метода контекста (Записать) НовыйПКО.Записать(); по причине: Произошла исключительная ситуация: Ошибка при выполнении обработчика - 'ПередЗаписью' Вот этот самый обработчик ПередЗаписью мне не дает покоя. Он находится только в модуле объекта, в модуле менеджера пусто. Добавлял ему проверку на внешнее подключение: Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Экспорт #Если ВнешнееСоединение Тогда // Для внешнего соединения запишем без проверок, дальше заполнит пользватель Возврат; #КонецЕсли Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ... КонецПроцедуры Все равно ошибка. Куда копать (по какому столбу дятлить?) |
|||
1
КМ155
06.04.12
✎
07:13
|
(0) БазаБУ = V8.Connect(...
НовыйПКО = БУ.Документы.ПКО.CreateDocument(); окуеть |
|||
2
BuHu
06.04.12
✎
07:14
|
(0)а если перед записью явно прописать ,что ОбменДанными.Загрузка=Истина ?
|
|||
3
Cube
06.04.12
✎
07:14
|
Подписка на событие...
|
|||
4
Vladal
06.04.12
✎
07:14
|
Пардон, дошифровался - правильно так:
НовыйПКО = БазаБУ.Документы.ПКО.CreateDocument(); ... --- в этом месте в отладчике на "этой стороне" доступны все поля документа НовыйПКО.Записать(); |
|||
5
Vladal
06.04.12
✎
07:14
|
(1) не серчай, я агнался.
|
|||
6
ZanderZ
06.04.12
✎
07:15
|
(0) подписка на событие может...
|
|||
7
Vladal
06.04.12
✎
07:15
|
(2) ВОт так?
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Экспорт #Если ВнешнееСоединение Тогда ОбменДанными.Загрузка = Истина; #КонецЕсли |
|||
8
Defender aka LINN
06.04.12
✎
07:17
|
А код обработчика выложить - не?
|
|||
9
Cube
06.04.12
✎
07:17
|
Про подписку на событие уже говорили?
|
|||
10
BuHu
06.04.12
✎
07:17
|
(7) нет , НовыйПКО .ОбменДанными.Загрузка=Истина;
|
|||
11
Vladal
06.04.12
✎
07:18
|
+(7) Yb[n/
Произошла исключительная ситуация: Ошибка при выполнении обработчика - 'ПередЗаписью' |
|||
12
КМ155
06.04.12
✎
07:18
|
(4) сделай то же самое со стороны бухгалтерской базы
НовыйПКО = Документы.ПКО.СоздатьДокумент(); НовыйПКО.Записать(); и получишь ответ |
|||
13
Vladal
06.04.12
✎
07:18
|
(10) Пробую
|
|||
14
Vladal
06.04.12
✎
07:20
|
(10) Така сама. ТОлько номер строки сдвинулся ;)
{Форма.Форма.Форма(301)}: Ошибка при вызове метода контекста (Записать) НовыйПКО.Записать(); по причине: Произошла исключительная ситуация: Ошибка при выполнении обработчика - 'ПередЗаписью' |
|||
15
Vladal
06.04.12
✎
07:20
|
(12) Делаю.
|
|||
16
Wobland
06.04.12
✎
07:22
|
я сейчас, может быть, ерунду скажу, но вроде при программного создании документа ему надо дату говорить перед записью
|
|||
17
КМ155
06.04.12
✎
07:22
|
(15) ну ты догадался, что документа без даты не бывает ?
|
|||
18
Cube
06.04.12
✎
07:24
|
(15) Кстати, попробуй так:
НовыйПКО = БазаБУ.Документы.ПКО.CreateDocument(); НовыйПКО.УстановитьНовыйНомер(); НовыйПКО.Записать(); |
|||
19
Vladal
06.04.12
✎
07:29
|
(12) Создается, записывается.
(17) Я дату давал ему, просто выкинул вместе со всеми другими заполняемыми реквизитами. |
|||
20
Vladal
06.04.12
✎
07:30
|
НовыйПЛ.Date 05.04.2012 18:31:35 Дата
|
|||
21
ZanderZ
06.04.12
✎
07:31
|
(19) тебе же говорят - смотри подписку на событие
|
|||
22
Vladal
06.04.12
✎
07:32
|
(20) к (17)
----------------- Хотя есть мысль заполниьт документ, как это делается при создании нового. ---------------- (21) в подписках этого документа нет |
|||
23
Vladal
06.04.12
✎
07:36
|
(21)Хотя есть.
Там проверка периода. Но период открыт. Интерактивно от пользователя Exchange создаёт: Процедура КнопкаВыполнитьНажатие(Кнопка) НовыйПКО = Документы.ПКО.СоздатьДокумент(); НовыйПКО.Дата = РабочаяДата; НовыйПКО.Записать(); КонецПроцедуры При подключении - нет. |
|||
24
Vladal
06.04.12
✎
07:41
|
(10) Есть!
Сработало! Похоже, я тогда или не сохранил обработку или в открытой обработке прото нажал Выполнить, во всяком случае алгоритм был старый. Помогло: НовыйПКО = РДС.Документы.ПутевойЛист.CreateDocument(); НовыйПКО.ОбменДанными.Загрузка=Истина; // <========= волшебная строчка НовыйПКО.Date = ВыборкаДетальныезаписи.Ссылка.Дата; ... НовыйПКО.Записать(); Слеующая тема... Что же придумать? А! не заполняютмся реквизиты документа ;)))) |
|||
25
Wobland
06.04.12
✎
07:41
|
(24) тебе поможет волшебный символ "="
|
|||
26
КМ155
06.04.12
✎
07:43
|
(24)[Слеующая тема... Что же придумать? ]
пятничный развод ТС в топку |
|||
27
Vladal
06.04.12
✎
07:56
|
Хотя нет, ссылочные реквизиты и так чудесно заполняются:
МенеджерКонтрагенты = БазаБУ.Справочники.Контрагенты; НовыйПКО.Контрагент = МенеджерКонтрагенты.НайтиПоКоду(ВыборкаДетальныеЗаписи.Ссылка.Контрагент.Код); |
|||
28
Vladal
06.04.12
✎
07:58
|
(25) нетЪ!
(26) Мимо. На самом деле это мой вчерашний дятлизм. Сегодня с утра решил на свежую голову. |
|||
29
basicm
06.04.12
✎
08:19
|
(27) последная строчка ппц)
|
|||
30
vmv
06.04.12
✎
08:38
|
да че там было, чувак не увидел подписчик наваяный хитрым студентом в количесве 100 щтук на док
|
|||
31
hhhh
06.04.12
✎
09:38
|
(30) не, чувак вносил изменения во внешнюю обработку только в конфигураторе
|
|||
32
Vladal
07.04.12
✎
17:51
|
(30) На самом деле дело было не в подписке. Когда я добавил ОбменДанными.Загрузка = Истина, всё встало на свои места.
|
|||
33
демотиватор
07.04.12
✎
20:20
|
(32)скверный вредный метод
позволяет записать методологически неверный мусор в базы |
|||
34
BuHu
07.04.12
✎
20:23
|
(33) иногда он очень спасает , речь ведь не идет о том что бы дать пользователю где то это использовать. иногда надо что бы не отрабатывались некоторые алгоритмы , если я и так знаю что там все правильно , не надо лезти в конфу и коментировать что то
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |