Имя: Пароль:
1C
 
Как из модуля набора записей регистра определить, оперативное или нет проведение?
0 Adept
 
16.09.17
08:54
Сабж.
1 RS2017
 
16.09.17
09:18
Никак, делай в обработке проведения. Можно оттуда через допсвойства что-нибудь в набор передать
2 RS2017
 
16.09.17
09:20
Косвенный признак - время регистратора,но это ненадежно
3 Adept
 
16.09.17
09:30
(1) Доп свойства да, сам думал. Жаль что нет чего то надежнее...
4 RS2017
 
16.09.17
09:36
(3) это надёжно, но делать придется во всех регистраторах. Можно одной подпиской
5 Лефмихалыч
 
16.09.17
14:34
Набор = РегистрыНакопления.ТОварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Ссылка.Установить(СсылкаНаДокумент);
Набор.Записать();



Это какой режим проведения?
6 RS2017
 
16.09.17
15:07
(5) это не проведение). Но это не отменяет ситуацию, что надо знать как именно проводится док из контекста набора записей
7 Лефмихалыч
 
16.09.17
17:29
(6) без ухищрений с коллекцией ДополнительныеСвойства ты в модуле набора записей ни как не узнаешь, откуда его вызвали.

Опять же, городить огород типа сабжа - это зибивать осиновый кол во все обмены.
На режим проведения может опираться код только в модуле документа. Все, что за рамками модуля документа не может и не должно на это опираться, т.к. вызвать это могут откуда угодно.
8 RS2017
 
16.09.17
17:37
(7) я об этом же в (1) написал. Но мне сама эта ситуация не кажется категорически неправильной. Уж в обменах точно не делают оперативное проведение.
9 Лефмихалыч
 
16.09.17
18:09
(8) >Уж в обменах точно не делают
вот именно по этому в модуле набора записей и не должно (must not!) быть ни чего про режим проведения
10 RS2017
 
16.09.17
18:35
(9) Почему категорически нельзя сделать?

Если ТочноИзвестноЧтоОперативноеПроведение Тогда
    ПроверитьЧтоНибудь();
КонецЕсли;

Понятно, что есть минусы и нюансы. Вопрос: почему нельзя?
11 Cyberhawk
 
16.09.17
18:40
(10) С какой целью что-нибудь проверяешь?
12 RS2017
 
16.09.17
19:03
(11) Я ничего не проверяю, я хочу понять почему утверждается, что так делать нельзя.
Чисто гипотетически при проведение проверяют обычно остатки.
13 vicof
 
16.09.17
21:30
Потому что костыль
14 Cyberhawk
 
16.09.17
22:16
(12) Не сходится с (10)
15 Лефмихалыч
 
16.09.17
22:22
(10) потому, что когда-нибудь обмен остановится из-за того, что код, который проверяет режим проведения свалится с рантайм ошибкой по той простой причине, что в этом модуле нет ни какого проведения, не было и не будет. Придется обкладывать костлями. Которые тоже рано или поздно свалятся с ошибкой, которую тоже придется костылять.

При этом, можно написать здесь и сейчас код, который здесь и сейчас будет работать. Но опираться на это - это все равно, что опираясь на то, что бывают случаи, когда запрос в цикле эффективнее, чем без него, говорить, что запросы в цикле - абсолютное добро.

Так делают только зеленые студни за тарелку супу.
16 RS2017
 
16.09.17
22:39
(14) что не сходится? Тема не моя, мой ответ в (1).
(13) согласен, вопрос чем костыль в модуле проведения лучше костыля в модуле набора?
(15) "нет ни какого проведения" - нет проверки. Если ты пишешь код на проверку флага, который падает в рантайм, то какая разница где находится этот код. С остальным согласен.
17 Cyberhawk
 
16.09.17
23:49
(16) Не сходится твое утверждение "Я ничего не проверяю" и твой же кусочек кода "ПроверитьЧтоНибудь()" )
18 RS2017
 
17.09.17
00:06
(17) Это просто пример)). Я надеялся,что имена переменных и методов позволят отвечающему рассматривать это как пример стерильно безопасного кода. Но в ответ всё равно получил мифический "рантайм".
Я так делать не буду, просто потому что на данный не вижу для чего это может понадобится. На вопрос почему так делать нельзя, удовлетворительного (для меня) ответа не получил. Все остались при своих. Расходимся)
19 Cyberhawk
 
17.09.17
00:26
(18) Мой вопрос касательно конкретного кода был не про его стерильную безопасность, а про его назначение.
К тому же разница, например, в обработке проведения и в модуле регистра в том, что в первом месте документ-объект загружен в память и все его свойства доступны, а в модуле регистра - нет.