Имя: Пароль:
1C
 
Использование Записать() в модуле формы документа
0 cathode
 
26.12.07
23:29
Наткнулся на подозрительное поведение. Уж и не знаю, косяк ли это платформы, или у меня лыжи не едут...

В СП в разделе "Документ - Модуль формы - Методы" читаем:

Записать();
Синтаксис:
Записать()
Назначение:
Записать документ в базу данных.
Замечание:
Этот метод применяется в Модуле формы документа непосредственно к документу локального контекста. Данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#Записать".

Делаем вывод о том, что поскольку интерактивное нажатие кнопки с формулой "#Записать" вызывает предопределенную процедуру ПриЗаписи().

Теперь смотрим типовую ТиС, документ ЧекККМ. Обращаем внимание на то, что обработка нажатий кнопок документа использует как раз вызов Записать() в модуле формы. Там же, в модуле формы, есть и процедура ПриЗаписи(), выполняющая стандартные действия по контролю даты документа и т.д. Ставим на нее брекпойнт и запускаем документ под отладчиком. Процедура не вызывается при нажатии ни на одну кнопку документа. Таким образом, документ ЧекККМ может быть записан и проведен (если есть права) задним числом в закрытом для редактирования периоде.

Внимание, вопрос: уважаемые господа, ответьте мне, чего я в жизни не понимаю? Может быть это старый баян, а я не знал?
1 ТелепатБот
 
гуру
26.12.07
23:29
2 cathode
 
26.12.07
23:32
(+0) Корректировка:
"Делаем вывод о том, что поскольку интерактивное нажатие кнопки с формулой "#Записать" вызывает предопределенную процедуру ПриЗаписи()."
надо читать
"Делаем вывод о том, что поскольку интерактивное нажатие кнопки с формулой "#Записать" вызывает предопределенную процедуру ПриЗаписи(), то же самое должно происходить и при вызове Записать() из модуля формы документа."
3 КонецЦикла
 
26.12.07
23:36
>>то же самое должно происходить и при вызове Записать() из модуля формы документа.
Ну дык ставь брейкпоинты и проверяй, чего форум засорять?
4 toys
 
26.12.07
23:36
ты прав, баян старый
5 cathode
 
26.12.07
23:47
(3) Точки останова поставил и проверил, уважаемый. К сожалению, не срабатывают. Мой скромный вопрос, если сформулировать без подробностей, состоит в том, является ли данное поведение косяком платформы, ошибкой в документации или моим ее (документации) неверным толкованием? Просветите, пожалуйста, дилетанта.
6 toys
 
26.12.07
23:55
провести() - запускает обработкупроведения()
ПриОткрытии() срабатывает при одноименном событии
значит и записать() должен...скорее всего "косяк"
7 cathode
 
27.12.07
00:07
(6) Спасибо за мнение. Я тоже думаю, что это ошибка в платформе. Способ ее обхода, если подумать, тоже можно найти: отработать все необходимые действия и установить СтрокаДействийФормы = "#Записать" - тогда ПриЗаписи() сработает. Единственное, что нельзя в этом случае сделать, так это проверить результат срабатывания ПриЗаписи(), потому что вызвана она будет уже после окончания процедуры - обработчика нажатия кнопки.
Самое прикольное, что в этом же документе (ЧекККМ) используются куски типа
Если Записать() = 1 Тогда
...
КонецЕсли;
Так оно всегда 1 возвращает, потому что ПриЗаписи() со всеми проверками не выполняется.
8 cathode
 
27.12.07
00:11
(+6) Где-то сегодня натыкался на мнение, что, дескать, ТиС - самая "вылизанная" конфигурация из всех для 7.7. На самом деле, ошибок в ней было и будет не меньше, чем в остальных.
9 Terv
 
27.12.07
00:12
(8) а на 77 еще работают? с ума сойти
10 cathode
 
27.12.07
00:22
(9) В каком смысле "еще работают"? Если это в свете недавних обсуждений "V7 vs V8", то холивор устраивать не буду. Я работаю с тем, что есть у клиента. Семерка - отлично, восьмерка - замечательно.
11 IUnknown
 
27.12.07
05:32
еще раз очень внематочно читаем когда вызывается процедура ПриЗаписи... после чего перестаем тупить... или нах увольняемся из-за проф непригодности...
12 Chilim
 
27.12.07
05:46
(8) И даже ещё что то пишут.... представьте себе её даже ПОКУПАЮТ!!!!
13 IUnknown
 
27.12.07
05:50
(9)сходи с ума окончательно... еще даже на шестерке работают...


кстати на восмерке еще не работают... а платят деньги 1С за возможность потестить ее новую конфигурацию...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.