|
как понять ошибку записи объекта через COM | ☑ | ||
---|---|---|---|---|
0
lim9
18.10.13
✎
11:35
|
Обновляю справ. ДоговорыКонтрагентов (УТ 10.3)через COM(для БП), вылетает ошибка. По отладчику смотрю - основные реквизиты заполнены. А записать не дает! пишет:
Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.2.18.96): Не удалось записать "Договор" |
|||
1
George Wheels
18.10.13
✎
11:38
|
Основные реквизиты это какие?
|
|||
2
George Wheels
18.10.13
✎
11:39
|
(1) +Код в студию
|
|||
3
lim9
18.10.13
✎
11:41
|
для бп это: орг, вид дог, валюта, владелец, номер, наименование.
|
|||
4
Галахад
гуру
18.10.13
✎
11:42
|
А код?
|
|||
5
lim9
18.10.13
✎
11:43
|
друзья я спрашиваю не про код, а о том, что как то мона посмотреть из-за чего происходит отбой записи???
|
|||
6
George Wheels
18.10.13
✎
11:43
|
Где создаёшь элемент? Где записываешь?
|
|||
7
1Cv8_accepted
18.10.13
✎
11:43
|
(0) А без COM сработает?
ЗЫ: И вообще, что это за мода пошла через COM фигнёй всякой заниматься? Сделал модуль, в модуле разместил ОДНУ функцию, которая возвращает код успешности операции, вызвал её ОДИН РАЗ, а весь разбор полётов, если много сложных действий, проводить в базе. >:-/ Вот так вот. ЗЫ: Вот не поверите - что ни день на этой неделе - то с COM как раз с такими вопросами сталкиваюсь! Живьём по работе, в основном. |
|||
8
wowik
18.10.13
✎
11:43
|
(0) открою истину, COM тоже можно отладить: из подключенной базы подключаешься к соединению и отлаживаешь....
|
|||
9
Галахад
гуру
18.10.13
✎
11:43
|
(5) Я не про листинг, а про реквизит.
|
|||
10
George Wheels
18.10.13
✎
11:44
|
Попытка
... Исключение ОписаниеОшибки() |
|||
11
Холодильник
18.10.13
✎
11:46
|
делай через аппликейшн с видимостью, не закрывай соединение
|
|||
12
lim9
18.10.13
✎
11:46
|
если так надо код, вот:
Попытка дог=?(обн и Ссылка<>Неопределено,Ссылка.ПолучитьОбъект(),кк.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент()); //дог.Код=дг.Код; дог.Наименование=дг.Наименование; дог.Владелец=кн.Ссылка; орг=НайтиСоздатьОрганизацию(дг.Организация,"УТ"); дог.Организация=орг.Ссылка; дог.ВалютаВзаиморасчетов=кк.Справочники.Валюты.НайтиПоКоду("643").Ссылка; дог.ПроцентКомиссионногоВознаграждения=дг.ПроцентКомиссионногоВознаграждения; //число Если дг.СпособРасчетаКомиссионногоВознаграждения=Перечисления.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается Тогда дог.СпособРасчетаКомиссионногоВознаграждения=кк.Перечисления.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается; КонецЕсли; Если дг.СпособРасчетаКомиссионногоВознаграждения=Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроцентОтПрибыли Тогда дог.СпособРасчетаКомиссионногоВознаграждения=кк.Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроцентОтРазностиСуммПродажиИПоступления; КонецЕсли; Если дг.СпособРасчетаКомиссионногоВознаграждения=Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроцентОтСуммыПродажи Тогда дог.СпособРасчетаКомиссионногоВознаграждения=кк.Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроцентОтСуммыПродажи; КонецЕсли; Если ЗначениеЗаполнено(дг.ТипЦен) Тогда дог.ТипЦен=НайтиСоздатьТипЦен(дг.ТипЦен,Ложь); КонецЕсли; Если дг.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.Прочее Тогда дог.ВидДоговора=кк.Перечисления.ВидыДоговоровКонтрагентов.Прочее; КонецЕсли; Если дг.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда дог.ВидДоговора=кк.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером; КонецЕсли; Если дг.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СПокупателем Тогда дог.ВидДоговора=кк.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; КонецЕсли; Если дг.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда дог.ВидДоговора=кк.Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком; КонецЕсли; дог.УчетАгентскогоНДС=дг.УчетАгентскогоНДС; //истина/ложь Если дг.ВидАгентскогоДоговора=Перечисления.ВидыАгентскихДоговоров.Аренда Тогда дог.ВидАгентскогоДоговора=кк.Перечисления.ВидыАгентскихДоговоров.Аренда Иначе дог.ВидАгентскогоДоговора=кк.Перечисления.ВидыАгентскихДоговоров.Нерезидент КонецЕсли; дог.РасчетыВУсловныхЕдиницах=дг.РасчетыВУсловныхЕдиницах; //булево дог.РеализацияНаЭкспорт=дг.РеализацияНаЭкспорт; //булево дог.ВидВзаиморасчетов=кк.Справочники.ВидыВзаиморасчетов.НайтиПоКоду(дг.ВидВзаиморасчетов.Код).Ссылка; дог.Дата=дг.Дата; дог.Номер=дг.Номер; дог.СрокДействия=дг.СрокДействия; Если ЗначениеЗаполнено(дг.НаименованиеДляСчетаФактурыНаАванс) Тогда дог.НаименованиеДляСчетаФактурыНаАванс=НайтиСоздатьНоменклатуру(дг.НаименованиеДляСчетаФактурыНаАванс,Ложь).Ссылка; КонецЕсли; Если дг.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеМесяца Тогда дог.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=кк.Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеМесяца; КонецЕсли; Если дг.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеНалоговогоПериода Тогда дог.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=кк.Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеНалоговогоПериода; КонецЕсли; Если дг.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеПятиДней Тогда дог.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=кк.Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеПятиДней; КонецЕсли; Если дг.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.НаВсеАвансы Тогда дог.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=кк.Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.НаВсеАвансы; КонецЕсли; Если дг.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.НеРегистрироватьСчетаФактурыНаАвансы Тогда дог.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору=кк.Перечисления.ПорядокРегистрацииСчетовФактурНаАванс.НеРегистрироватьСчетаФактурыНаАвансы; КонецЕсли; дог.Записать(); Исключение Сообщить("Ошибка "+?(обн,"обновления","создания")+" договора: "+Строка(дг)+" // "+ОписаниеОшибки()); Сообщить("Код: "+Строка(дг.Код)); фС=Ложь; КонецПопытки; |
|||
13
lim9
18.10.13
✎
11:47
|
дело в том что создание договора происходит на ОК, а вот обновление иногда вылетает ошибка.
|
|||
14
lim9
18.10.13
✎
11:49
|
(8) это как??
|
|||
15
Timon1405
18.10.13
✎
11:50
|
Может попробовать
дог.ОбменДанными.Загрузка = истина а потом перезаписать в приемнике вручную и посмотреть на что ругается. |
|||
16
George Wheels
18.10.13
✎
11:51
|
А при обновлении договора вот здесь: дог.Номер=дг.Номер; не устанавливается другой уже существующий номер?
|
|||
17
lim9
18.10.13
✎
11:52
|
(16) - посмотрел, номер не меняется.
|
|||
18
lim9
18.10.13
✎
11:52
|
(15) мысль, счас попробую
|
|||
19
George Wheels
18.10.13
✎
11:53
|
(16) + И что может содержать переменная Ссылка? К какой базе она имеет отношение?
|
|||
20
wowik
18.10.13
✎
11:55
|
(14) Отладка/Подключение. + v8: Флажок "Устанавливать режим разрешения отладки" не сохраняется
|
|||
21
lim9
18.10.13
✎
11:56
|
(19) с Ссылкой все четко, это Ссылка в БП, если элемент там уже есть, если элемента нет то она=непопределено.
|
|||
22
lim9
18.10.13
✎
11:57
|
(15) Помогло!
|
|||
23
Timon1405
18.10.13
✎
12:01
|
(22) Осталось раскрыть всем интригу, что же там было не так)
|
|||
24
lim9
18.10.13
✎
12:03
|
(23) - а как понять то??? )))
|
|||
25
George Wheels
18.10.13
✎
12:04
|
(23) В договоре в событии ПередЗаписью() вызывается ПроверитьПередЗаписью(...) и если по этому договору уже были проводки, то Отказ = Истина.
|
|||
26
George Wheels
18.10.13
✎
12:05
|
(25) + Это когда Загрузка = Ложь
|
|||
27
Timon1405
18.10.13
✎
12:28
|
(23) написать обработку, которая получает объект, меняет это свойство на ложь и делает попытку записи. Скорее всего (25) прав и вы обновляете договор на который уже есть ссылки, что есть не очень хорошо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |