Имя: Пароль:
1C
1С v8
Обход и проверка заполнения табличной части
0 prilforreal
 
02.07.18
12:46
Доброго дня! Подскажите, волшебники! Что то после вчерашнего футбола тяжко работает голова.
Делаю проверку заполнения ТЧ, но цикл не срабатывает, что не так делаю?

    ТДП=ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Партия;
    Для Каждого СтрТЧ из ТабличнаяЧасть1 Цикл
    Если НЕ ЗначениеЗаполнено(ТДП) Тогда
    Предупреждение ("Запоните партию!");
    Отказ=Истина;
    Возврат;
    КонецЕсли;
    КонецЦикла;
1 mehfk
 
02.07.18
12:49
Все.
2 prilforreal
 
02.07.18
12:49
(1) А как вы мне предложите проверку делать?
3 PR
 
02.07.18
12:51
Эээммм, ты это, забей сегодня
Ну или вообще забей
Давно такого треша не видел
4 VladZ
 
02.07.18
12:52
(0) Не твое это. Займись чем-нибудь другим...
5 mehfk
 
02.07.18
12:53
6 Greeen
 
02.07.18
12:55
Вот так может взлетит, но это не точно


    Для Каждого СтрТЧ из ТабличнаяЧасть1 Цикл
      Если НЕ ЗначениеЗаполнено(СтрТЧ.Партия) Тогда
        Предупреждение ("Запоните партию!");
        Отказ=Истина;
        Возврат;
      КонецЕсли;
    КонецЦикла;
7 Numerus Mikhail
 
02.07.18
12:56
Буду подобрее и спрошу, почему в цикле проверяется то, что получено до цикла?
Возможно правильно будет так:
    Если НЕ ЗначениеЗаполнено(Стч.Партия) Тогда
        Предупреждение ("Запоните партию!");
        Отказ=Истина;
        Возврат;
     КонецЕсли;
8 prilforreal
 
02.07.18
12:57
(7) Проверка работает, не работает цикл
9 prilforreal
 
02.07.18
12:58
Если стою на строке с пустой партией все четко, текущие данные проверяются, идет возврат, если на другой, условие не срабатывает
10 Greeen
 
02.07.18
12:59
(8) Уберите тогда цикл (тогда от него толку нет) и дело в шляпе =)
11 prilforreal
 
02.07.18
13:03
(10) Без цикла то же самое, текущие данные это данные выделенной строки, без цикла не уверен что вообще можно проверить все значения, запросом не хочу, все проще должно быть
12 PR
 
02.07.18
13:05
(8) Почему не работает? Работает
Сколько строк в ТЧ, столько раз проверяется заполненность партии в текущей строке
Все, как ты и хотел :))
13 Малыш Джон
 
02.07.18
13:07
Почему проверка на текущую строку, но она делается в цикле по всем строкам ТЧ? Что в итоге-то проверить нужно?
14 PR
 
02.07.18
13:11
(13) Неужели непонятно?
Если у тебя в текущей строке не заполнена партия, а ты уже аж 10 строк в ТЧ забил, то надо 10 раз сказать пользователю, чтобы у него не появилось желания 11-ю забить, прежде чем заполнить партию в незаполненных строках
Представляешь ужас, если ты занес сначала 200 строк, а в одной из них партию не заполнил и случайно на ней запустил проверку?
А вот потому что нефиг так делать
15 Малыш Джон
 
02.07.18
13:11
И зачем в цикле проверять? Зачем вообще велосипеды изобретать? Почему нелзя использовать подходящий уже готовый метод?

Если ТабличнаяЧасть1.Найти(Справочники.Партии.ПустаяСсылка(), "Партия")<> Неопределено Тогда

     Предупреждение ("Заполните партию!");
     Отказ=Истина;
КонецЕсли
16 Малыш Джон
 
02.07.18
13:11
(14) ну если только пользователя наказать)
17 prilforreal
 
02.07.18
13:24
(13) Нужно проверить все строки табличной части на заполненность поля партия, в табличной части может быть от одной до 20 строк, но это редкость, обычно их не больше пяти.
18 prilforreal
 
02.07.18
13:25
(14) Проверка в процедуре ОКНажатие
19 Numerus Mikhail
 
02.07.18
13:52
(18) ну так и проверяй партию в строке цикла, а не в текущей строке
20 prilforreal
 
02.07.18
14:04
(19) Не пойму как это..
21 Lexey_
 
02.07.18
14:17
(20) это (6), (7)
22 prilforreal
 
02.07.18
14:40
(21) Насколько я понимаю СтрТЧ в (6) это ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока?
23 Lexey_
 
02.07.18
14:44
(22) нет
24 Малыш Джон
 
02.07.18
14:48
хреново, когда не знаешь точно, чего надо в итоге...
25 dezss
 
02.07.18
14:50
(0) мда...
хорошо отметил победу наших?)))
(22) ты в цикле перебираешь строки...все строки...тебе же нужна не только текущую выделенную проверить, но все же?
вот и поступи, как тебе в (6) написали)
26 Малыш Джон
 
02.07.18
14:51
(25) :))
а потом прочитать (14), осознать и проникнуться)
27 dezss
 
02.07.18
14:55
(26) ну по-хорошему вообще можно было бы ПроверитьЗаполнение() и все....но это же не наш метод...нам же надо что-то писать.
28 Wirtuozzz_II
 
02.07.18
15:00
(0) прав был Жданов, что все клетки мозга в туалет с утра стряхнул )))