Имя: Пароль:
1C
1С v8
Как сделать запись регистра из проведения документа, когда проведение отменено?
0 DomovoiVShoke
 
14.12.12
15:56
Есть документ. Есть регистр сведений не независимый. При попытки проведения документа надо чтобы происходила запись в регитр. Если проведение выпонлняетя вопросов нет. Если проведение отменяется, то запись из регистра стирается, как сделать чтоб она оставалась?
1 Kashemir
 
14.12.12
15:57
За такое по рукам линейкой надо бить. Делай независимый и играйся себе.
2 DrunkAnimal
 
14.12.12
15:57
автоматическое удаление
3 shuhard
 
14.12.12
15:58
(0)) что-то мешает двигать регистр при Записи ?
4 НЕА123
 
14.12.12
15:58
(1)(2)
>Есть регистр сведений не независимый
5 Kashemir
 
14.12.12
15:58
(4) Ну и ?
6 DrunkAnimal
 
14.12.12
15:59
(4) и что?
7 zladenuw
 
14.12.12
15:59
(0) так может же при отмене проведения. ты стираешь эти записи
8 DomovoiVShoke
 
14.12.12
16:00
(1)Я опечатался. регистр независимый
9 НЕА123
 
14.12.12
16:00
(5)(6)
похоже что это (7)
10 DomovoiVShoke
 
14.12.12
16:01
(7)Нет не стираю
11 НЕА123
 
14.12.12
16:01
(5)(6)
ай!
ну я и телепат!
12 Kashemir
 
14.12.12
16:02
(8) В этом случае записи не могут пропадать, если ты их явно не удаляешь походу отмены проведения.
13 Kashemir
 
14.12.12
16:02
(11) А что хотел сказать то нам ?
14 НЕА123
 
14.12.12
16:03
(13)
да просто прочитал как в (8).
15 zladenuw
 
14.12.12
16:05
(10) ну так просто они не пропадут. может событие есть.
16 DomovoiVShoke
 
14.12.12
16:05
(2)я вроде все там перепробовал все рано не записываются.
17 DomovoiVShoke
 
14.12.12
16:06
(3)Что значит двигать?
18 DomovoiVShoke
 
14.12.12
16:06
(7)Нет обработки отмены проведения
19 BigShmax
 
14.12.12
16:07
пишешь в транзакции, транзакция откатывается и  пиндык
20 hhhh
 
14.12.12
16:08
(18) транзакция проведения откатывается, записи регистра удаляются тоже. Это же элементарно, Ватсон. Миллион раз уже обсуждали.
21 Kashemir
 
14.12.12
16:08
(18) Уверен ? Включи замер производительности ... отмени проведения ... посмотри что выполнялось. Профит.
22 BigShmax
 
14.12.12
16:08
ой  РС независимый, тогда если не удаляешь значит он у тя не записывается
23 DomovoiVShoke
 
14.12.12
16:08
(20)Я тоже так думаю, но как сделать чтоб не откатывались?
24 Kashemir
 
14.12.12
16:08
+(21) А хотя (20) прав. Недочитал суть проблемы. Конечно тогда вопрос транзакции.
25 Kashemir
 
14.12.12
16:09
(23) Запиши явно.
26 DomovoiVShoke
 
14.12.12
16:09
(25)Как это?
27 BigShmax
 
14.12.12
16:10
(26)  Записывать = Истина   - запись в транзакции

Записать()  - записать явно  оно не откатится
28 DomovoiVShoke
 
14.12.12
16:14
Короче. Допустим вот такой код у меня в обработке проведения в документе. Что и куда мне нужно дописать?

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|Сообщения.Документ
|ИЗ
|РегистрСведений.Сообщения КАК Сообщения";

КолвоЗаписей = Запрос.Выполнить().Выгрузить().Количество();
   
НаборЗаписей = РегистрыСведений.Сообщения.СоздатьНаборЗаписей();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Документ = Строка(КолвоЗаписей)+" - "+Строка(Ссылка);
НоваяЗапись.Сообщение = ("абра-кадабра");
НаборЗаписей.Записать(Ложь);
       
Если НЕ ЗначениеЗаполнено(Адрес) Тогда
   Отказ = Истина;
КонецЕсли;
29 ptiz
 
14.12.12
16:14
Никак. Точка.
30 ptiz
 
14.12.12
16:15
Хотя есть способ - писать в журнал регистрации. А обработкой периодически тащить оттуда в РС последние записи.
31 Defender aka LINN
 
14.12.12
16:16
+(29) И незачем
32 DomovoiVShoke
 
14.12.12
16:16
Ну тогда мона внешний файлик выгружать, а потом регламетным заданием подтягивать его.
33 DomovoiVShoke
 
14.12.12
16:24
Все? Других идей нету?
34 KnightAlone
 
14.12.12
16:29
(33) с 500 метров в люк мех. вода бей! однозначно
35 ptiz
 
14.12.12
16:30
(32) Внешний файл при проведении - это плохо, потому что при проблемах в сети поиск файла может "подвиснуть" (а это всё - внутри транзакции). Либо писать (в случае серверной базы) локально на сервере в серверном модуле.
36 CaptanG
 
14.12.12
16:32
В исключения движение регистра записать.
37 DomovoiVShoke
 
14.12.12
16:34
(36)Это что за покемон?
38 Irek-kazan
 
14.12.12
16:36
39 DomovoiVShoke
 
14.12.12
16:43
(38)Это перехват отмены, у меня до этого вроде как и не доходит.
40 Irek-kazan
 
14.12.12
16:48
(39) а как тогда отменяется, если не доходит?
41 DomovoiVShoke
 
14.12.12
16:50
(40)В обработке провдения отказ = истина ставим. Может я некорректно написал.
42 CaptanG
 
14.12.12
16:55
(41) ты по вызовам посмотри.
43 Steel_Wheel
 
14.12.12
16:56
А что у тебя в процедуре ОтменаПроведения()?

ПыСы. В независимый регистр можно писать движения в ПриЗаписи(). Если вид проведения -- проведение, то добавлять; если вид проведения -- отмена проведения, то ничего не делаешь
44 DomovoiVShoke
 
14.12.12
17:03
(42)Специально добавил ее. Не заскакивает туда.
(43)У меня нет такой процедуры.
Мне надо именно из обработки проведения.
45 eklmn
 
гуру
14.12.12
17:11
(44) то что ты хочешь, делается в других местах, но только не в процедуре ОбработкеПроведения
46 eklmn
 
гуру
14.12.12
17:11
+ибо транзакция штука капризная и ее никак не уговорить )
47 DomovoiVShoke
 
14.12.12
17:16
В общем как я понял нормального предусмотренного для таких случаев способа нет. Надо изобретать велосипед.
48 Steel_Wheel
 
14.12.12
17:36
(47) Есть. Убираешь галочку "Очищать движения при...".
Создаешь процедуру ОтменаПроведения() (или как там она, называется), туда выносишь логику отмены проведения (в твоем случае, ничего). В процедуру ПроведениеДокумента() вносишь логику проведения (в твоем случае, запись движений в регистр)

Кажется, все
49 DomovoiVShoke
 
14.12.12
17:40
(48)Убираешь галочку "Очищать движения при...".
А где такая галочка?
50 Steel_Wheel
 
14.12.12
17:58
(49) Дважды кликни по документу в конфигураторе ЛКМ, на закладке с движениями должна быть.
51 Steel_Wheel
 
14.12.12
17:59
Или на "Общих"
52 Steel_Wheel
 
14.12.12
17:59
Я уже плохо помню: больше года не открывал конфигуратор
53 DomovoiVShoke
 
14.12.12
18:03
Удаление движений : не удалять автоматически
Это?
Я пробовал не прокатывает.
54 Steel_Wheel
 
14.12.12
18:10
Сделай подписку тогда на свой документ на событие проведение.
Когда проводишь -- делай запись в регистр сведений. Ссылка есть, объект есть. К проведению не привязано
55 DomovoiVShoke
 
14.12.12
18:31
(54)До пидписки не дойдет, т.к отказ=истина ставится.
56 eklmn
 
гуру
14.12.12
18:31
(54) транзакция при откате все равно удалит, пофиг ему как подписка ии что было
57 Нуф-Нуф
 
14.12.12
18:33
писать движения в подписке при записи. и пох на проведение
58 eklmn
 
гуру
14.12.12
18:34
(57) он же хочет ТОЛЬКО в обработке проведения ))
59 SUA
 
14.12.12
18:34
основной вопрос - нафига?
60 eklmn
 
гуру
14.12.12
18:35
(59) личные принципы :)
61 Нуф-Нуф
 
14.12.12
18:36
писать движения в процедуре общего модуля. Вызывать при проведении и отмене проведения. и пох на проведение
62 SUA
 
14.12.12
18:37
(61)если бы все так просто =)
по (28) задача сформулирована иначе
63 DomovoiVShoke
 
14.12.12
18:38
(59)Я думал уже все вкурсе что мне такие вопросы не задаются:)
Мало ли возникнет ситуация необходимости, надо знать о возможностях языка.
64 SUA
 
14.12.12
18:38
можно конечно поизвращаться
заменив кнопку проведения на форме
и по ней выполнять запись этого левого регистра, и потом проведение
65 DomovoiVShoke
 
14.12.12
18:40
Ну извращения возможны, но хотелось бы какой-нибудь человеческий способ узнать:)
66 SUA
 
14.12.12
18:40
ну и не забыть для объекта (вне формы) юзать для документа всегда не типовую Провести() а ПровестиСИзвращениями()
67 SUA
 
14.12.12
18:40
транзакции для того и придуманы чтобы обеспечить целостность данных (все пишем или все не пишем)
68 Нуф-Нуф
 
14.12.12
18:41
а че в (61) не устраивает?
69 DirecTwiX
 
14.12.12
18:43
Главное потом при проведение не забыть очистить движения)
70 DomovoiVShoke
 
14.12.12
18:46
(68)А для чего мы тут 60 постов настрочили?:)
71 SUA
 
14.12.12
18:58
(70)ну это как раз понятно, тяпницо, вечер... не работать же
72 Нуф-Нуф
 
14.12.12
18:59
(70) тахерегознает
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой