Имя: Пароль:
1C
1С v8
8.2 не понятно с попыткой записи документа..
0 RomaH
 
naïve
18.10.11
15:35
Есть документ - из него создаем подчиненный документ по команде

перед сосзданием подчиненного надо записать текущий (родителя)

в Родителе есть обязательные к заполнению поля

соответсвенно:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
   
   Если Не ЗначениеЗаполнено(ЭтаФорма.Элементы.НомерИсторииБолезни.ТекстРедактирования) Тогда
       Предупреждение("Укажите номер истории болезни!");
       Отказ = истина;
   КонецЕсли;

КонецПроцедуры

команда:
&НаКлиенте
Процедура ОткрытьМедКартуПациента(Команда)
   Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда
       Попытка
           Записать();
       Исключение
           Возврат;
       КонецПопытки;
   КонецЕсли;
       
в исключение не попадает
почему все так плохо и как быть?
1 RomaH
 
naïve
18.10.11
15:36
в тему:
как проверить необходимость записи объекта?
Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда //правильно ли делать так?
2 unregistered
 
18.10.11
15:37
>> в исключение не попадает

А должно? Есть предпосылки?
3 Error pro
 
18.10.11
15:37
Попытка  
      Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда
         Записать();
      КонецЕсли;
       Исключение
           Возврат;
       КонецПопытки;

а так?
4 unregistered
 
18.10.11
15:39
(3) Что это?...
5 RomaH
 
naïve
18.10.11
15:39
(2) а разве Отказ в ПередЗаписью в 8.1. не попадал в исключение? ... или я все забыл за отпуск
6 RomaH
 
naïve
18.10.11
15:41
получается что после
Записать()
надо еще и проверить записалось ли?

....

Записать();
Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда
Не записалось
Иначе
Записалось
КонецЕсли
7 RomaH
 
naïve
18.10.11
15:43
типа так:

&НаКлиенте
Процедура ОткрытьМедКартуПациента(Команда)
   
   Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда
       Записать();
   КонецЕсли;
   Если Не ЗначениеЗаполнено(Объект.Ссылка) ИЛИ Модифицированность Тогда
       Возврат;
   КонецЕсли;
8 Mort
 
18.10.11
15:54
Если закрыть глаза на остальной ужас то нужно юзать ЗаписатьВФорме()
9 Mort
 
18.10.11
15:56
А если делать по-человечески, сделайте параметризованную команду "Ввести мед карту". Она и запишет все сама и проверит (если в реквизитах прописана проверка заполнения) и из списка будет работать.
10 RomaH
 
naïve
18.10.11
16:08
(8) ... это только на толстом клиенте
(9) пока не настолько знаю хорошо 8.2, но за наводку спасибо

я понимаю что есть более оптимальные способы решения задачи, но вопрос сейчас не "КАК?", а "ПОЧЕМУ?"

почему Отказ при записи не выдает иключение
11 Mort
 
18.10.11
16:18
Не выдает и хорошо.
Зато возвращает булево

Если Записать() Тогда //УРА!
12 RomaH
 
naïve
18.10.11
16:27
о, а то я перепутал метод объекта и метод формы