Имя: Пароль:
1C
1С v8
Философский вопрос по методу Записать
0 Лалалалилалалала
 
09.08.12
09:44
Даже не знаю, как обозначить проблему. Но вот практика.

Переменные, хранящие значения, имеющие валидность после записи объекта.
Яркий пример - реквизит Проведен у документа. Он записывается УЖЕ после записи документа.
Ещё один яркий пример - результаты запросов. Можно хранить в документе реквизит типа "Отгружен до конца" вместо выполнения лишнего соединения в динамическом списке.

Вопрос № 1. Где их хранить. В доках или регах сведений? Но, опять же, реквизит проведен хранится в доке.

Вопрос №2. Где выполнять процедуру записи. В общем модуле, чтобы сторонняя процедура мутузила документ как хочет вместо организации условий записи в модуле документа.

Вопрос №3. Не считаете ли вы, что метод Записать() следует сделать не методом документа или расширения формы документа, а какой-то иной сущности. Типа, слышь, чувак, запиши ту хрень.
1 shuhard
 
09.08.12
09:46
(0) хорошая трава
2 Нуф-Нуф
 
09.08.12
09:46
(1) +1
3 wade25
 
09.08.12
09:46
Записать вообще то метод класса ДокументОбъект если уж на то пошло ;)
Не нада ничего менять)
4 Asmody
 
09.08.12
09:47
ник говорящий очень
5 Нуф-Нуф
 
09.08.12
09:47
нифига не понял, но единственное что могу сказать - реквизит отгружен до конца потеряет валидность при изменении связанных документов.
6 Лалалалилалалала
 
09.08.12
09:47
(4) о чём он тебе говорит?
7 х86
 
09.08.12
09:49
(0)в структуре доп. параметров
8 Asmody
 
09.08.12
09:50
начнём с того, что Проведён — это не совсем реквизит
9 Dmitrii
 
гуру
09.08.12
09:53
(0) "Проведен" - это свойство (реквизит) самого документа. Изменяется исключительно в контексте документа.
"Отгружен до конца" - свойство, которое зависит от состояния других объектов (документов, регистров и т.д.) - т.е. может изменяться в ходе выполнения алгоритмов в контексте других объектов.
10 Сергей Д
 
09.08.12
09:53
Все логично. Документу (справочнику, ...) говорят: запиши себя в базу.
11 Лалалалилалалала
 
09.08.12
09:54
посоны, щас пример будет, умрёте
12 Бледно Золотистый
 
09.08.12
09:54
(0)--Яркий пример - реквизит Проведен у документа. Он записывается УЖЕ после записи документа.--
Почему вдруг?
13 Dmitrii
 
гуру
09.08.12
09:54
(8) >> Проведён — это не совсем реквизит

Интересная мысль. А что же это? Особенно если учесть что состояние этого флага не гарантирует наличия или отсутствия движений у документа.
14 Ненавижу 1С
 
гуру
09.08.12
09:56
(11) нет, не надо, пожалуйста!
15 pumbaEO
 
09.08.12
09:56
(13) наличие или отсутствие движений у документа не гарантирует состояние флага Проведен.
На  >> Проведён — это не совсем реквизит   - спорный вопрос.
16 Dmitrii
 
гуру
09.08.12
09:57
(15) Не понял... :)
17 Лалалалилалалала
 
09.08.12
09:58
(14) надо, Ненавижу 1С, надо
18 Lex_Liven
 
09.08.12
09:58
(8) Проведен - это "Стандартный реквизит". Наряду с "Номер", "Дата", "Пометка удаления" и "Ссылка".
19 wade25
 
09.08.12
09:58
(15) Да, если писали студенты)
20 Asmody
 
09.08.12
09:58
(15) можно непосредственно изменить значение "реквизита" Проведен?
21 Лалалалилалалала
 
09.08.12
09:59
(20) да
22 Zero on a dice
 
09.08.12
09:59
1 ОтгруженДоКонца можно писать напрямую в базу, если на то пошло (без участия механизмов записи одинэса)
2 подписки - в общем модуле - все в порядке
3 метод Записать() реализован абсолютно правильно, иная его реализация - не будет корректной. возникали мысли о том, что для общих реквизитов можно было сделать отдельный метод, не вызывавший событий Перед/при записи, но это от лукавого

(20) посредством прямой записи в базу)
23 Godofsin
 
09.08.12
10:00
(20) можно
24 Ненавижу 1С
 
гуру
09.08.12
10:00
(20) таки да
25 Лалалалилалалала
 
09.08.12
10:02
у меня есть реквизит в документе
я в событии формы ПередЗаписьюНаСервере записываю его
форма сама обновляет данные элемента управления
это правильно?
26 Ненавижу 1С
 
гуру
09.08.12
10:03
>>я в событии формы ПередЗаписьюНаСервере записываю его
(25) разверни глубокую мысль
27 ДемонМаксвелла
 
09.08.12
10:04
(1) +100
каннабис паранойя
28 Dmitrii
 
гуру
09.08.12
10:12
(20) >> можно непосредственно изменить значение "реквизита" Проведен?

Соглашусь. Но это единственная "особенность" этого реквизита.
29 Ненавижу 1С
 
гуру
09.08.12
10:16
(28) я не соглашусь, можно непосредственно, без проведения или отмены проведения
30 Лалалалилалалала
 
09.08.12
10:18
разорвите шаблон, измените значение реквизита Проведен непосредственно
31 Лалалалилалалала
 
09.08.12
10:20
я к тому, что метод Записать рекурсивен
32 Лалалалилалалала
 
09.08.12
10:21
вот я типа записываю и там перед записью фигась ещё одна запись самого себя для проведения и условие
33 Лалалалилалалала
 
09.08.12
10:21
ну сплошняком такие примеры
34 Ненавижу 1С
 
гуру
09.08.12
10:21
(31) че за бред? не надо менять реквизиты ПриЗаписи и в ОбработкаПроведения - меняйте в ПередЗаписью
35 Лалалалилалалала
 
09.08.12
10:22
в Перед Записью объект записывается
приходится условие фигачить
36 hhhh
 
09.08.12
10:23
(33) вообще-то Реквизит "проведен" записывается задолго до проведения. Тут вы попали пальцем в небо.
37 Лалалалилалалала
 
09.08.12
10:23
хотя... с одной стороны правильно. пусть имеют свои личные методы
надо их просто правильно использовать
38 Лалалалилалалала
 
09.08.12
10:24
(36) эт т я знаю, я не про то
39 Ненавижу 1С
 
гуру
09.08.12
10:24
(35) что значит "записывается"?

порядок такой у объекта:

1. событие ПередЗаписью
2. собственно запись
3. событие ПриЗаписи
...
40 ssh2006
 
09.08.12
10:27
(30) Пример интерактивного изменения - можно разместить реквизит "Проведен" на форме документа, отключить у формы "ПриЗаписиПерепроводить" и тогда этот реквизит можно спокойно изменять как и любой другой и записывать документ.