1С 8.2, обход табличной части формы в цикле

Тема в разделе "1C и всё что с ней связано", создана пользователем SaschaL, 1 мар 2011.

  1. SaschaL

    SaschaL Гость

    Добрый день!
    Подскажите как обойти табличную часть формы обработки в цикле.
    Объясняю подробно, есть форма обработки, на данной форме имеется табличная часть ТабСотр, я пытаюсь обойти данную табличную часть в цикле

    Код ( (Unknown Language)):
    Для Каждого Стр из ТабСотр цикл
    ТекСтр = ЭлементыФормы.ТабСотр.ТекущиеДанные;
    Сообщить(ТекСтр.Сотрудник);
    КонецЦикла;
    ТекСтр.Сотрудник - это поле таблично части ТабСотр
    При этом выводиться сотрудник на котором стоит курсов в этой табличной части, но количество сообщений соответствует количеству строк в табличной части.
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну во первых - отладчик в помощь! посмотреть надо меняется ли значение ТекСтр.Сотрудник, да и вообще не одинаков ли он во всей Таблице? очень похоже что программа отрабатывает правильно
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    ЭлементыФормы.ТабСотр.ТекущиеДанные - всегда будет тебе возвращать текущую строчку. Подсказка - а зачем ты цикл делал и что такое переменная стр?
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    puh14, СТР - это по идее итератор. цикл - видимо автор хочет получить некое значение каждой строки. получается ошибка в ТекСтр = ЭлементыФормы.ТабСотр.ТекущиеДанные;
    т.е. программа отрабатывает правильно, что и требовалось доказать :(
     
  5. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    неа - можешь в отладчике проверить.
    Собственно на этом вопрос и закончится.
     
  6. SaschaL

    SaschaL Гость

    Всем спасибо решение проблемы нашел сам.

    Вот код:
    Код ( (Unknown Language)):
    Для Каждого Стр из ТабСотр цикл             // получаем в цикле строки табличной части
    ТекСтр = ЭлементыФормы.ТабСотр.ДанныеСтроки(Стр);
    Сообщить(ТекСтр.Сотрудник);
    КонецЦикла;

    А вот метод ЭлементыФормы.ТабСотр.ТекущиеДанные возвращает значение, только одно и тоже причем количество раз возвращаемого значения соответствует количеству строк в таблице. Причем значение которое программа возвращает он берет из строки в которой стоит курсор.

    Всем спасибо, вопрос можно считать закрытым
     
  7. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Эхх, не догадался - достаточно было Сообщить(Стр.Сотрудник);

    Стр - это по сути строка табличной части, нафига еще строки кода ваять?
     
  8. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Как-то криво сделали)
     
  9. SaschaL

    SaschaL Гость

    ;) В чем просматривается эта кривизна?
     
  10. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Можно так :
    Для каждого Тек Из ТабСтр Цикл
    Сообщить(Тек.Сотрудник);
    КонецЦикла;

    можно так:
    Для каждого тек Из ЭлементыФормы.ТабСтр Цикл
    Сообщить(Тек.ТекущиеДанные.Сотрудник);
    КонецЦикла;
     
Загрузка...

Поделиться этой страницей