Имя: Пароль:
1C
 
Может ли НачатьТранзакцию-ЗавершитьТранзакцию в УФ быть не в одном серв. вызове
,
0 Гений 1С
 
гуру
15.09.15
17:51
У меня есть код на клиенте, который в УФ генерирует последовательно документы. Нужно чтобы если один в цепочке не создался, остальные тоже отменились. Логично использовать транзакции.

Вообще блок НачатьТранзакцию-ЗавершитьТранзакцию может в УФ быть в нескольких вызовах сервера, или должен быть только в одном вызове сервера?
1 SUA
 
15.09.15
17:55
нахер
сожрать все на клиенте - закинуть на сервер - генерить там хоть последовательно хоть через 1 - и в одной транзакции
2 Casey1984
 
15.09.15
17:55
Способов идентификации транзакций нет - ответ очевиден.
3 Гений 1С
 
гуру
15.09.15
18:15
(2) угу
4 Ненавижу 1С
 
гуру
16.09.15
08:47
если он переменные объекта уничтожают после окончания вызова сервера, какие уж транзакции
5 Фокусник
 
16.09.15
08:51
(0) Зачем возвращаться внутри "цепочки" на клиент, пользователю процент выполнения показать?
6 Гёдза
 
16.09.15
09:58
транзакция с выходом на клиента?
Слава богу что такое не возможно )))
7 Матиус
 
16.09.15
10:21
(0) Спросил в транзакции пользователя о чем-то, а пользователь ушел поссать, будет через 3 часа. Вся организация ждет завершения транзакции.
8 scanduta
 
16.09.15
10:26
Ты же Гений 1с ....сам все должен знать
9 Остап Сулейманович
 
16.09.15
10:26
(7) Транзакция абсолютно не означает блокировки на время выполнения. Блокировка (в случае оптимистической блокировки) накладывается только в момент записи данных.

ЗЫ Это никак не означает, что в 1С можно не теряя контекста нырять с клиента на сервер и обратно.
10 Гений 1С
 
гуру
16.09.15
10:32
(9) (8) ок. я убедился в своих худших опасениях, ну да ладно. ;-) не буду переписывать. удалять лишние документы ручками.
11 Ненавижу 1С
 
гуру
16.09.15
10:35
(10) даже в обычном приложении нельзя начать транзакцию по нажатию первой кнопки, а закончить по нажатию второй
12 Остап Сулейманович
 
16.09.15
10:37
(10) Что значит "убедился в своих худших опасениях"? Поведение системы при передаче управления с клиента на сервер и обратно вполне подробно задокументировано. Что там убеждаться? Нужно просто иногда читать документацию.
13 Остап Сулейманович
 
16.09.15
10:38
(11) Зато внутри транзакции можно понажимать 100500 разных кнопок. И откатить или завершить транзакцию можно по ИНТЕРАКТИВНОМУ событию.
14 Ненавижу 1С
 
гуру
16.09.15
10:47
(13) если не модальные вызовы, то, имхо, нет - как только закончится выполняться интерактивное событие - то все, транзакция откатывается
15 Гёдза
 
16.09.15
10:49
Если не закрыть одну транзакцию внутри 1 процедуры, то она откатится автоматом (по крайней мере в 1с именно так)
16 Остап Сулейманович
 
16.09.15
10:49
(14) Ясен перетц, что внутри транзакции только модальные.
17 Ненавижу 1С
 
гуру
16.09.15
10:51
(16) ну так в 1С это только, можно в дельфях (да и неважно где) такое запросто сделать
18 Матиус
 
16.09.15
10:56
(9) Не надо быть семи пядей во лбу, чтобы догадаться что в транзакции будут что-то писать.
19 Ненавижу 1С
 
гуру
16.09.15
10:57
(18) бывают транзакции на чтение и они гораздо долгие чем на запись обычно
20 Матиус
 
16.09.15
10:59
(19) Только чтение без последующей записи? Зачем? Можно примеры?
21 ДенисЧ
 
16.09.15
11:01
(20)
выбрать Ссылка
Из справочник.Номенклатура
где условие
ДЛЯ ИЗМЕНЕНИЯ

Как пример...
22 Остап Сулейманович
 
16.09.15
11:02
(18) Это таки да. Но блокировать вначале транзакции бывает не всегда нужно. Чаще всего блокировки накладываются при записи. Именно так работают автоматические блокировки 1С.
23 Ненавижу 1С
 
гуру
16.09.15
11:03
(20) чтобы много читать согласованные данные
24 Матиус
 
16.09.15
11:08
(21) ДЛЯ ИЗМЕНЕНИЯ подразумевает последующую запись
25 Матиус
 
16.09.15
11:10
(23) читать одним запросом?
26 Гёдза
 
16.09.15
11:10
(19) в 8.3 транзакции на чтение ничего не блокируют
27 Гёдза
 
16.09.15
11:11
(26) упр блокировки, без совместимости
28 Остап Сулейманович
 
16.09.15
11:13
(24) Птля...
Вот пример из серии "для больших и маленьких" :
Проведение расходной накладной.
Читаем остатки. Количественные и суммовые. Рассчитываем себестоимость списания и проверяем достаточно ли количественных.
Если недостаточно - оппа. Откатываем транзакцию даже не пытаясь что-либо записать.
29 Матиус
 
16.09.15
11:16
(28) ... а если достаточно пишем. не пример

а существуют примеры на чтение которые гораздо долгие?
30 Остап Сулейманович
 
16.09.15
11:16
(29) Йес.
31 Матиус
 
16.09.15
11:17
(30) где примеры?
32 ДенисЧ
 
16.09.15
11:18
(31)
выбрать р1.*, р2.*
Из регистрНакопления.УчетЗатрат как р1,регистрНакопления.УчетЗатрат как р2
33 Остап Сулейманович
 
16.09.15
11:18
(31) в ЗУПе их миллионы.
34 Матиус
 
16.09.15
11:19
(33) на чтение без записи? Модуль + строка
35 Fedor-1971
 
16.09.15
11:21
(29) практически любой сложный отчёт. Например, оборотно-сальдовая ведомость за 2 года или аналитические построения по товарам, расчётные листки или ведомость за большой период
36 Матиус
 
16.09.15
11:26
(35) Где в оборотке включается транзакция? Где в расчетках транзакции? Напишите конфигурацию+модуль+строку

Пока бух формирует отчет, все ждут?
37 Остап Сулейманович
 
16.09.15
11:35
(36) Еще раз для непонятливых.
НачатьТранзакцию и Заблокировать данные это не одно и тоже. Именно потому пока бух формирует отчет остальные могут работать и на формирование отчета это никак не отразится.
38 Остап Сулейманович
 
16.09.15
11:38
39 Остап Сулейманович
 
16.09.15
11:38
40 Остап Сулейманович
 
16.09.15
11:39
+ (39) И еще 6 экранов. Их тоже показывать? Или у себя включишь такой же поиск и посмотришь сам?
41 Матиус
 
16.09.15
11:40
(37) В чем смысл транзакции без блокирования данных?
42 Остап Сулейманович
 
16.09.15
11:43
(41) Получить связанные данные. Если выборка сложная. При выборке из одной плоской таблицы этого скорее всего не нужно.
Для сложных выборок :
Пока читаем данные из первой таблички, данные в 23-ей может кто-то изменить. И получим кашу. А так в транзакции прочитали и последующие корректировки никак не влияют на текущую выборку.
43 SeraFim
 
16.09.15
11:48
Вот блин... А я надеялся некоторым юзверям поставить:
ПриНачалеРаботыСистемы - НачатьТранзакцию();
ПриЗавершенииРаботыСистемы - ОтменитьТранзакцию();
44 Остап Сулейманович
 
16.09.15
11:54
(43) Было бы смешно...