|
Ошибка блокировки объекта | ☑ | ||
---|---|---|---|---|
0
altfin
06.05.18
✎
10:53
|
Полдня бьюсь, помогите пжл.
Из формы одного документа создаю другой (созданный док открывается, провожу. закрываю), в итоге оба получаются заблокированными. Закрытие документов и повторное открытие вопрос не решает, только перезапуск базы. &НаКлиенте Процедура СоздатьРеализацияТоваровУслуг(Команда) СтруктураПараметров = Новый Структура; ЗначенияЗаполнения = Новый Структура; ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Товары"); ЗначенияЗаполнения.Вставить("ВидОперации", ВидОперации); ЗначенияЗаполнения.Вставить("Организация", Объект.Организация); ЗначенияЗаполнения.Вставить("Контрагент", Объект.Контрагент); ЗначенияЗаполнения.Вставить("ДоговорКонтрагента", Объект.Договор); СтруктураПараметров.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения); Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары",СтруктураПараметров,ЭтаФорма); ДанныеФормы = Форма.Объект; СоздатьРеализацияТоваровУслугНаСервере(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); Форма.Открыть(); КонецПроцедуры &НаСервере Процедура СоздатьРеализацияТоваровУслугНаСервере(ДанныеФормы) ДокРТиУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); ДокРТиУ.Дата = Объект.Дата; ДокРТиУ.Организация = Объект.Организация; ДокРТиУ.БанковскийСчетОрганизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "ОсновнойБанковскийСчет"); ДокРТиУ.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями; ДокРТиУ.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; ДокРТиУ.Контрагент = Объект.Контрагент; ДокРТиУ.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить(); ДокРТиУ.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Товары; ДокРТиУ.Ответственный = ПараметрыСеанса.ТекущийПользователь; ДокРТиУ.ДоговорКонтрагента = Объект.Договор; ДокРТиУ.Склад = Объект.Склад; ДокРТиУ.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически; ДокРТиУ.СуммаВключаетНДС = Истина; ДокРТиУ.Комментарий = "#Создан на основании " + Объект.Ссылка; ДокРТиУ.Товары.Очистить(); //ТЧ НС = ДокРТиУ.Товары.Добавить(); НС.СчетУчета = Объект.СчетУчета; НС.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаСельХоз; НС.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(Объект.Сырье.Наименование); НС.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажСельХоз; НС.СчетУчетаНДСПоРеализации = ПланыСчетов.Хозрасчетный.Продажи_НДССельХоз; НС.Номенклатура = Объект.Сырье; НС.Количество = Объект.Нетто; НС.ЕдиницаИзмерения = НС.Номенклатура.ЕдиницаИзмерения; НС.СтавкаНДС = Перечисления.СтавкиНДС.НДС10; НС.Цена = ПолучитьЦенуПродажи(Объект.Сырье); НС.Сумма = Окр(НС.Цена*НС.Количество,2); НС.СуммаНДС = ?(ДокРТиУ.СуммаВключаетНДС,НС.Сумма/110*10,НС.Сумма*10/100); ЗначениеВДанныеФормы(ДокРТиУ, ДанныеФормы); ДокРТиУ = ""; КонецПроцедуры |
|||
1
rphosts
06.05.18
✎
10:58
|
1.сохрани исходный документ
2.только после этого создавай-записывай-проводи другой. оберни всё это в попытку-исключение, перед попыткой начинай транзакцию и если случилось исключение - откат, если нет - коммит |
|||
2
altfin
06.05.18
✎
11:14
|
(1) попробовал, но видимо проблема в другом:
Проблема возникает когда добавляю строчки: ОписаниеОповещ = Новый ОписаниеОповещения("ЗакрытиеФормы", ЭтаФорма, Форма); Форма.ОписаниеОповещенияОЗакрытии = ОписаниеОповещ; Кусок кода: СтруктураПараметров = Новый Структура; ЗначенияЗаполнения = Новый Структура; ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Товары"); ЗначенияЗаполнения.Вставить("ВидОперации", ВидОперации); ЗначенияЗаполнения.Вставить("Организация", Объект.Организация); ЗначенияЗаполнения.Вставить("Контрагент", Объект.Контрагент); ЗначенияЗаполнения.Вставить("ДоговорКонтрагента", Объект.Договор); СтруктураПараметров.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения); Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары",СтруктураПараметров,ЭтаФорма); ОписаниеОповещ = Новый ОписаниеОповещения("ЗакрытиеФормы", ЭтаФорма, Форма); Форма.ОписаниеОповещенияОЗакрытии = ОписаниеОповещ; ДанныеФормы = Форма.Объект; СоздатьРеализацияТоваровУслугНаСервере(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); Форма.Открыть(); И потом: &НаКлиенте Процедура ЗакрытиеФормы(Рез, ДопПараметры) Экспорт Объект.РеализацияТовУслуг = ДопПараметры.Объект.Ссылка; Записать(); КонецПроцедуры |
|||
3
cons74
07.05.18
✎
07:22
|
Общение форм спасет отца русской демократии: в подчиненной вызов Оповестить(), или тупо Владелец.РТУ=Объект.Ссылка. Без всяких ОписаниеОповещения().
P.s. А зачем создавать объект через форму? Почему не обычное Объект = Документы.РТУ.Создать и потом ОткрытьФорму(,,...Объект). Ну как-то так. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |