|
Не записывается документ по оле-соединению | ☑ | ||
---|---|---|---|---|
0
lega0000
02.12.12
✎
01:24
|
Помогите плиз записать документ через оле.
С оле сталкиваюсь только второй раз. Пишу: Попытка БазаОле = Новый COMОбъект("V82.Application"); Результат = БазаОле.Connect("File="""+ПутьКБазеОле+""";Usr="""+ПользовательОле+""";Pwd="""+ПарольОле+""""); Сообщить("Выполнено подключение к базе Оле"); Результат = Истина; Исключение Результат = ложь; Сообщить("Не выполнено подключение к базе. Ошибка в параметрах подключения"); КонецПопытки; ДокВБазеОле = БазаОле.Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); ДокВБазеОле.Дата = Док.Дата; //Далее установка всех необходимых реквизитов ДокВБазеОле.Записать(); // Здесь выдает ошибку: {Форма.Форма.Форма(1313)}: Ошибка при вызове метода контекста (Записать) ДокВБазеОле.Записать(); по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.15.294): Конфликт блокировок при выполнении транзакции: ЗЫ: Код не полный, если нужно выложу полностью. |
|||
1
vicof
02.12.12
✎
14:08
|
Выкладывай. А в базе еще кто-нибудь сидит?
|
|||
2
Wobland
02.12.12
✎
14:11
|
Конфликт блокировок при выполнении транзакции. чем помочь?
|
|||
3
lega0000
02.12.12
✎
22:00
|
Функция ПодключитьсяКБазеОле()
Попытка БазаОле = Новый COMОбъект("V82.Application"); Результат = БазаОле.Connect("File="""+ПутьКБазеОле+""";Usr="""+ПользовательОле+""";Pwd="""+ПарольОле+""""); Сообщить("Выполнено подключение к базе Альфа-авто"); Результат = Истина; Исключение Результат = ложь; Сообщить("Не выполнено подключение к базе. Ошибка в параметрах подключения"); КонецПопытки; возврат Результат; КонецФункции Процедура ВыполнитьОбменНажатие(Элемент) ОбновитьИндикатор(); Если Не ПодключитьсяКБазеОле() Тогда Возврат КонецЕсли; Попытка НачатьТранзакцию(); БазаОле.НачатьТранзакцию(); ОбработкаПрерыванияПользователя(); ПодключеноОле = Истина; Исключение КонецПопытки; Если ПодключеноОле Тогда Если ПриходныйКассовыйОрдер Тогда ВыгрузитьПриходныйКассовыйОрдер(); КонецЕсли; БазаОле.ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию(); БазаОле.ЗавершитьРаботуСистемы(Ложь); ЭлементыФормы.ОбработкаДокумента.Заголовок = "Обмен данными завершен"; Сообщить("Обработка базы Альфа-авто завершена"); КонецЕсли; КонецПроцедуры Процедура ВыгрузитьПриходныйКассовыйОрдер() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходныйКассовыйОрдер.Дата, | ПриходныйКассовыйОрдер.ВалютаДокумента, | ПриходныйКассовыйОрдер.ВидОперации, | ПриходныйКассовыйОрдер.ДоговорКонтрагента, | ПриходныйКассовыйОрдер.Касса, | ПриходныйКассовыйОрдер.Контрагент, | ПриходныйКассовыйОрдер.СуммаДокумента, | ПриходныйКассовыйОрдер.СчетКасса, | ПриходныйКассовыйОрдер.СчетОрганизации, | ПриходныйКассовыйОрдер.Организация, | ПриходныйКассовыйОрдер.Автор |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер |ГДЕ | НЕ ПриходныйКассовыйОрдер.ПометкаУдаления | И ПриходныйКассовыйОрдер.Проведен | И ПриходныйКассовыйОрдер.ВидОперации = &ВидОперации | И ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания"; Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); Запрос.УстановитьПараметр("ВидОперации", Перечисления.ВидыОперацийПКО.ОплатаПокупателя); Рез = Запрос.Выполнить().Выгрузить(); ИндикаторФормы.МинимальноеЗначение = 0; ИндикаторФормы.МаксимальноеЗначение = Рез.Количество() * 15; ЭлементыФормы.ОбработкаДокумента.Заголовок = "Выполняется обмен данными"; Для каждого Док Из Рез Цикл ДокВБазеОле = БазаОле.Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); ДокВБазеОле.Дата = Док.Дата; ДокВБазеОле.Организация = БазаОле.Справочники.Организации.НайтиПоНаименованию(Док.Организация.Наименование); ДокВБазеОле.ПодразделениеКомпании = БазаОле.ПараметрыСеанса.ПодразделениеКомпании; ДокВБазеОле.Автор = БазаОле.Справочники.Пользователи.НайтиПоНаименованию(Док.Автор.Наименование); ДокВБазеОле.ВалютаДокумента = БазаОле.Справочники.Валюты.НайтиПоНаименованию(Док.ВалютаДокумента.Наименование); ДокВБазеОле.КурсДокумента = 1;РегистрыСведений.КурсыВалют.СрезПоследних(, Новый Структура("Валюта", Док.ВалютаДокумента)); ДокВБазеОле.ХозОперация = БазаОле.Справочники.ХозОперации.ПриходныйКассовыйОрдер; ДокВБазеОле.СуммаДокумента = Док.СуммаДокумента; ДокВБазеОле.СтатьяДДС = БазаОле.Справочники.СтатьиДДС.ОплатаОтПокупателя; ДокВБазеОле.КассаКомпании = БазаОле.Справочники.КассыКомпании.НайтиПоНаименованию("Касса KZT");//Док.Касса.Наименование); ДокВБазеОле.Контрагент = БазаОле.Справочники.Контрагенты.НайтиПоНаименованию(Док.Контрагент.Наименование); ДокВБазеОле.ДоговорВзаиморасчетов = БазаОле.Справочники.ДоговорыВзаиморасчетов.НайтиПоНаименованию("Прочее в KZT от 02.12.12");//Док.ДоговорКонтрагента.Наименование); ДокВБазеОле.Записать(); КонецЦикла; КонецПроцедуры Реквизитам все значения присваиваются(проверено), а записвыаться документ нехочет. Эту же процедуру провожу в базе оле, только без оле соединения, документ записывается, а через оле нехочет. |
|||
4
lega0000
02.12.12
✎
22:09
|
(1) Нет в базе никого нет. Работаю в ней пока только я один.
|
|||
5
hhhh
02.12.12
✎
22:33
|
(4) ну вот это ведь бред?
НачатьТранзакцию(); выкиньте немедленно. |
|||
6
lega0000
02.12.12
✎
23:13
|
(5) Выкинул.
Еще нехватало одного реквизита без которого не записывался документ, помимо курса документа, еще нужно было назначить "курс валюты взаиморасчетов". Хотя поле реквизита не подчеркнуто красным. Всем спасибо, документ записывается. Три дня провозился с этим документом, а оказалась такая мелочь :-) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |