#0
by Humandra
Господа, а кто мне скажет, как работают неявные транзакции в 1с 8.2 вообще и в Библиотеке стандартных подсистемь в частности? Согласно документации, вложенных транзакций 1С не поддерживает. Но как тогда можно объяснить такое: 1) Создаем элемент справочника (штатный "Пользователь" БСП) 2) В событии ПередЗаписьюНаСервере там одновременно создается ПользовательИБ (штатно, согласно коду БСП) 3) В событии ПриЗаписиНаСервере добавляю код записи некоей связанной с пользователем информации в свой регистр. 4) В коде записи в регистр на ПриЗаписи при определенных условиях присваиваю Отказ = Истина, т.е. вызывается исключение, и записи в регистр не происходит. Ожидаю, что также откатится запись пользователя и - внимание - запись пользователя ИБ. Что имеем в форме справочника? Ошибка записи в регистр, форма Пользователя не закрывается - и это правильно. Но после этого мы исправляем причину ошибки, и снова жмем Записать. И - получаем ошибку снова, только уже из-за того, что в базе уже есть пользователь ИБ. В результате пользователя в справочник мы записать уже не сможем. Но пользователь ИБ - уже есть! Как так? Я что-то в недоумении - а где же неявная транзакция тогда начинается и заканчивается?
#1
by Armando
Читаем СП: Синтаксис: ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>) Описание: Вызывается перед записью объекта на сервере. Можно отменить запись. ВЫПОЛНЯЕТСЯ ВНЕ ТРАНЗАКЦИИ.
#3
by Humandra
Сейчас будет интрига :))) Тут накладывается моя 5-летняя привычка работы с Oracle. Мое понимание транзакции пришло оттуда, и может быть не совсем соответствует 1С-кому, и в этом моя проблема? Вот мое понимание: 1) транзакция - это понятие работы с данными, и базами данных 2) она есть всегда, но может в частном случае быть равна одному единственному действию с базой данных. Т.е. - "update одну запись" = одна транзакция, "update другую запись" - другая транзакция. Или же - транзакцию начинают явно, указывая какие операторы входят в транзакцию. Что же тогда есть - выполняется вне транзакции, при условии, что: 1) вложенных транзакций в 1с не бывает 2) &НаКлиенте написано - Процедура-обработчик вызывается после начала транзакции записи, но до начала записи элемента справочника. Т.е. на момент клиентской ПередЗаписью - транзакция стартует! 3) ПередЗаписьюНаСервере идет после клиентского события (не ошибаюсь? по логике вроде так, но доки под рукой нет) 4) В ПередЗаписьюНаСервере уже нет транзакции (точнее, получается, что каждое действие - отдельная транзация) Получается, что ли, что транзакция в ПередЗаписью начинаяется, и сразу же заканчивается? Бред какой-то...
#4
by Humandra
Или подождите, может и не бред. Но так ли это? ПриЗаписи - отдельная транзация, заканчивается при окончании события?
#6
by Humandra
Я почему-то думала, что ВСЯ цепочка событий записи = одна транзация... Кажется доходит, что это не так... В задумчивости.
#7
by Feanor
"написано - Процедура-обработчик вызывается после начала транзакции записи" не знаю, где это написано, но у меня написано другое: "Описание: Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью объекта. "
#8
by Humandra
А! Все верно, вы правы. У меня СП подменили :)))) А если серьезно - не туда посмотрела, спутала с событием объекта. Все, тогда срастается.
#10
by Humandra
Ну, конечно серверных событий только. Это я сгоряча туда клиентские события записала :)
#13
by Armando
Запись - это одна транзакция. И все серверные транзакционные события возникают в рамках этой одной транзакции.
#14
by Humandra
Ага, поняла. Просто получается, что первое серверное событие - еще не транзакционное, вот тут и собака порылась с проблемой из . Я теперь только одного не понимаю. Какого черта разработчики БСП создают пользователя ИБ вне транзакции? Это как-то объяснимо, или просто косяк?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Не работает функия вопрос() в 8-ке/в SQL не работает в файл серверной работает
- Функция СводныйОстаток не работает на сервере, а на локальной базе работает
- В данной транзакции уже происходили ошибки
- Как запретить отключать отбор в списках документов да и вообще!
- СКД: Запрос отлично работает в консоли и вообще не работает в СКД
- Как в коде программы посмотреть состав плана обмена?
- Запись документа в транзакции и отмена транзакции
- БСП кто как осваивает? Навеяно другими ветками про полезность БСП.
- Неявные серверные вызовы
- Как обновить чиста БСП на свежую БСП?
В этой группе 1С
- v7: Тормоза базы при проведении
- Где в конфигураторе УТ 11 можно редактировать рабочий стол ?(управ-е приложение)
- Удалить из регистра сведений "ненужные" записи
- Как писать напрямую в таблицы 1С
- Не дает ввести счет-фактуру на основании документа "корректировка долга"
- Виртуальные таблицы в запросе
- v7: Неверно задана периодичность запроса!
- УФ. Как открыть форму существующего документа?
- Неверный остаток на начало дня в кассовой книге.
- ЗУП Кадровае планирование. Использование вакансий.
- Вывести доп. колонку в СКД
- УПП+CRM: Создать внешнюю печатную форму трудового договора
- Как в УФ при добавлении новой строки задать значение по умолчанию?
- Запуск ragent с ключами?
- Проблемы с доступом в 1С:Документооборот
- v8: ЗиУП. НДФЛ с минусом. ЧЯДНТ?
- The name "AladinHaspV01.2:30" could not be registered on the Interface with IP
- Глобальная переменная на клиенте в управляемом приложении
- Группировки построителя отчета при источнике данных - таблица
- v7: Ошибка в ОСВ