![]() |
![]() |
|
v7: Странная запись контрагента в ТиС | ☑ | ||
---|---|---|---|---|
0
ildary
25.03.12
✎
18:10
|
Уважаемые специалисты, посоветуйте пожалуйста, как обходится такой глюк: При записи делается транзакция, в которой записывается сам контрагент и его подчиненные справочники, после чего делается фиксирование транзакции. Если же в запись подчиненного справочника вставить свою проверку, которая вернет 0 - то вроде бы ничего ужасного не произойдет, контрагент все еще не существует, но при повторном нажатии на запись - в процедуре ПриЗаписи() при вызове Записать() - код и наименование контрагента обнуляются со всеми вытекающими для операторов. Можно конечно сделать так, чтобы транзакция всегда завершалась, но это не есть хорошо, вдруг есть более кошерный способ?
|
|||
1
zak555
25.03.12
✎
18:16
|
открыть ТиС и посмотреть не судьба ?
Функция ЗаписьОснДоговора() // Объект для записи основного счета. Объект = СоздатьОбъект("Справочник.Договоры"); Если Объект.НайтиЭлемент(ОсновнойДоговор) = 0 Тогда Объект.Новый(); Объект.Владелец = ТекущийЭлемент(); КонецЕсли; // Заполнение реквизитов слоя "ОсновнойДоговор". Объект.Наименование = НаименованиеОснДоговора; Объект.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов; Объект.ТипЦен = ТипЦен; Объект.Скидка = Скидка; Объект.ГлубинаКредита = ГлубинаКредита; Объект.СуммаКредита = СуммаКредита; Объект.НеКонтролироватьКредит = НеКонтролироватьКредит; Объект.ФиксироватьКурсЗадолжностей = ФиксироватьКурсЗадолжностей; // Проверка необходимости и возможности записи. Если НужноЗаписатьЭлемент(Объект) = 0 Тогда Возврат 1; ИначеЕсли МожноЗаписатьЭлемент(Объект) = 0 Тогда Возврат 0; КонецЕсли; Объект.Записать(); // Установка основного договора. ОсновнойДоговор = Объект.ТекущийЭлемент(); Возврат 1; КонецФункции Процедура ПриЗаписи() //проверки всякие т прочая чушь ... // Запись всех изменений производится в одной транзакции. СтатусВозврата(0); НачатьТранзакцию(); Попытка Записать(); Исключение ОтменитьТранзакцию(); Сообщить("Запись контрагента: " + ОписаниеОшибки(), "!"); КонецПопытки; Попытка Если ЗаписьОснДоговора() = 0 Тогда ОтменитьТранзакцию(); Возврат; КонецЕсли; Исключение ОтменитьТранзакцию(); Сообщить("Запись основного договора: " + ОписаниеОшибки(), "!"); КонецПопытки; КонецПроцедуры |
|||
2
ildary
25.03.12
✎
20:02
|
(1) я в принципе этот код и разбирал. В итоге плюнул и не прерывал транзакцию, тем более, что результат устроил заказчика.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |