Имя: Пароль:
1C
1С v8
Проверка заполнения реквизита таб. части
0 Сергей333
 
15.08.17
16:10
Как правильно сделать проверку? Есть таб. часть "ТехнологическиеОперации", в ней реквизиты "ВремяНачала" и "Получил".  
Нужно что бы когда заполнено "ВремяНачала" делалась проверка на заполнение "Получил" и без его заполнения не проводился документ.
Пробовал
Процедура ПроверитьЗаполнениеТабличнойЧастиТехнологическиеОперации(ТаблицаПоТехнологическимОперациям, СтруктураШапкиДокумента, Отказ, Заголовок)

    ИмяТабличнойЧасти = "ТехнологическиеОперации";
    Если ЗначениеЗаполнено("ВремяНачала") Тогда
        СтруктураОбязательныхПолей = Новый Структура("Получил");
    КонецЕсли
    // Теперь вызовем общую процедуру проверки.
    ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, "ТехнологическиеОперации", СтруктураОбязательныхПолей, Отказ, Заголовок);
                        
КонецПроцедуры
1 h-sp
 
15.08.17
16:55
Если ЗначениеЗаполнено("ВремяНачала") Тогда

это что за бред

почитайте справку про функцию ЗначениеЗаполнено
2 Михаил Козлов
 
15.08.17
16:58
Общая процедура проверки заполнения проверяет для ВСЕХ строк таб. части.
Вам же нужно проверять по каждой строке в зависимости от значения реквизита "ВремяНачала".
Пишите проверку в цикле.
3 Dmitrii
 
гуру
15.08.17
17:09
(1) И что там такого в справке по этой функции?...
4 Сергей333
 
15.08.17
17:13
(2) Я пробовал еще так
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Для Каждого ТекСтрокаТехнологическиеОперации Из ТехнологическиеОперации Цикл
        Если ТекСтрокаТехнологическиеОперации.ВремяНачала = Истина Тогда
            Если Не ЗначениеЗаполнено("Получил") Тогда
                Предупреждение("Не заполнен реквизит Получил");
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры
5 h-sp
 
15.08.17
17:13
(3) что передавать в качестве параметра. Пусть выучит.
6 Ахмадинежад
 
15.08.17
17:14
(0)
та ёшкин кот)
ЗначениеЗаполнено("Получил") - всегда Истина
7 h-sp
 
15.08.17
17:14
(4) "Получил" это не реквизит у вас, а строка текста.
8 mehfk
 
15.08.17
17:15
(0) На чем еще, кроме 1с программируете?
9 Ахмадинежад
 
15.08.17
17:15
"ТекСтрокаТехнологическиеОперации.ВремяНачала = Истина "
А это всегда ложь, если ВремяНачала не типа Булево
10 Serg_1960
 
15.08.17
17:16
(4)

Для Каждого ТекСтрока Из ТехнологическиеОперации Цикл
   Если ЗначениеЗаполнено(ТекСтрока.ВремяНачала) И Не ЗначениеЗаполнено(ТекСтрока.Получил) Тогда
      Предупреждение("Не заполнен реквизит Получил");
11 oslokot
 
15.08.17
17:17
Для УФ достаточно использовать ПроверитьЗаполнение()
12 Serg_1960
 
15.08.17
17:20
(11) Технологические операции, ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти() - это УПП скорее всего (обычные формы)
13 Serg_1960
 
15.08.17
17:23
А документ - ОтчетПроизводстваЗаСмену, скорее всего
14 h-sp
 
15.08.17
17:25
интересная фишка

ЗначениеЗаполнено(Ложь) = Истина
15 Ахмадинежад
 
15.08.17
17:48
(14)век живи, век учись )
16 Сергей333
 
15.08.17
19:09
(10) Спасибо огромное), (15) Это точно)