Имя: Пароль:
1C
 
нет значения в поле в процедуре ПередЗаписью ☑
0 falselight
 
15.01.17
✎
08:04
В процедуре перед записью, нужно проверять заполнено ли поле в
табличной части документа. Но если делать выборку запросом
то в выборке оно не заполнено.

а если смотреть ЭтотОбъект.Услуги[0].Услуга

то оно заполнено. Как тут быть? Получается если делать выборку запросом то там пусто.
1 falselight
 
15.01.17
✎
08:05
думаю перебирать ЭтотОбъект.Услуги и там и смотреть
2 vi0
 
15.01.17
✎
08:13
Смотри как сделано в типовых
3 Cool_Profi
 
15.01.17
✎
08:25
Так объект-то ещё не записан...
Откуда в запросе данные-то возьмутся?
4 falselight
 
15.01.17
✎
08:36
(3) ну то есть правильно как в (1) ?


//НомерСтроки  = 1;
//Запрос    = Новый Запрос;
//Запрос.Текст = "
// |ВЫБРАТЬ
// | Док.Услуга,
// | Док.КоличествоПройдено
// |ИЗ
// | Документ.Док.Услуги КАК Док
// |ГДЕ
// | Док.Ссылка = &Ссылка";
//Запрос.УстановитьПараметр("Ссылка", Ссылка);
//Рез = Запрос.Выполнить();
//Если Не Рез.Пустой() Тогда
// Выборка = Рез.Выбрать();
// Пока Выборка.Следующий() Цикл
//  Если Не ЗначениеЗаполнено(Выборка.Услуга) и Выборка.КоличествоПройдено <> 0 Тогда
//   Сообщить("В строке " + СТРОКА(НомерСтроки) + " не заполнено название процедуры");
//   Отказ = Истина;
//  КонецЕсли;
// КонецЦикла;
// НомерСтроки = НомерСтроки + 1;
//КонецЕсли;
//
Для каждого Стр Из ЭтотОбъект.Услуги Цикл
  Если Не ЗначениеЗаполнено(Стр.Услуга) и Стр.КоличествоПройдено <> 0 Тогда
   Сообщить("В строке " + СТРОКА(Стр.НомерСтроки) + " не заполнено название процедуры");
   Отказ = Истина;
  КонецЕсли;
КонецЦикла;
5 Cool_Profi
 
15.01.17
✎
08:45
(4) Да. Лучше так.
6 DrZombi
 
гуру
15.01.17
✎
09:08
(0) Делай выборку в цикле :)
7 Мимохожий Однако
 
15.01.17
✎
09:40
(0) Используй ПроверитьЗаполнение() для объекта. В СП есть подробная справка. У обязательных элементов включи признак сообщить об ошибке.