Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:31

ТекСтрокаТовары. Объясните, пожалуйста, начинающему программисту)

Автор Sv_Graal, 10 окт 2012, 01:54

0 Пользователей и 1 гость просматривают эту тему.

Sv_Graal

Почему-то в синтакс-помощнике не удается найти, что такое ТекСтрокаТовары вот в таком коде:

Процедура ОбработкаПроведения(Отказ, Режим)

   // регистр Проводки
   Движения.Проводки.Записывать = Истина;
   Для Каждого ТекСтрокаТовары Из Товары Цикл
      Движение = Движения.Проводки.Добавить();
      Движение.СчетДт = ТекСтрокаТовары.СчетУчета;
      Если ТекСтрокаТовары.СчетУчета.УчетПоПодразделениям Тогда
         Движение.ПодразделениеДт = Подразделения;
      КонецЕсли;
      Движение.СчетКт = ПланыСчетов.Бухгалтерский.Поставщики;
      Движение.ПодразделениеКт = ЭтотОбъект.Подразделения;
      Движение.Период = Дата;
      Движение.Сумма = ТекСтрокаТовары.Сумма;
      Движение.Организация = Организация;
   КонецЦикла;

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

Если это переменная, то почему она не объявлена ни явно, ни неявно?..
Если это какая-то стандартная конструкция языка, почему ее нет в помощнике?..
Я сейчас склоняюсь к мысли, что это переменная, в которую попадает структура, содержащая в себе данные строки "под курсором". Поправьте, пожалуйста, меня, если я не права. Это какая-то "системная переменная"? Такие вообще бывают?

PLEASE, HELP!  :lol:

Dethmontt

Вы правы это переменная
В СП это есть!


Для каждого (For each)
Синтаксис:
    Для каждого <Имя переменной 1> Из <Имя переменной 2> Цикл
    // Операторы
    [Прервать;]
    // Операторы
    [Продолжить;]
    // Операторы
    КонецЦикла;

Англоязычный синтаксис:
    For each <Имя переменной 1> In <Имя переменной 2> Do
    // Операторы
    [Break;]
    // Операторы
    [Continue;]
    // Операторы
    EndDo;

Параметры:
    <Имя переменной 1>
    Переменная, которой при каждом повторении цикла присваивается значение очередного элемента коллекции.


    Из
    Синтаксическая связка для параметра <Имя переменной 2>.

    <Имя переменной 2>
    Переменная или выражение, предоставляющее коллекцию. Элементы этой
коллекции будут присваиваться параметру <Имя переменной 1>.


    Цикл
    Операторы, следующие за ключевым словом Цикл выполняются, пока значение переменной <Имя переменной> меньше значения <Выражение 2>.

    // Операторы
    Исполняемый оператор или последовательность таких операторов.

    Прервать
    Позволяет прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла.

    Продолжить
    Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются.

    КонецЦикла
    Ключевое слово, которое завершает структуру оператора цикла.

Описание:
Оператор цикла Для каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Тип переменной1 будет зависеть от типа переменной2

Например если мы перебираем Табличную часть
То переменная1 будет принимать значения строк Табличной части (Тип строка табличной части)

Если мы будем перебирать Массив то переменная будет принимать значения массива (тип значения массива, может быть вложенный массив или строка и т.д.)

(У каждого элемента коллекции свои свойства и методы про которые можно прочитать в Синтаксис помощнике)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Sv_Graal

Ага! Спасибо большое за ответ)))

То есть существует еще один способ неявно объявить переменную, помимо ее указания в левой части оператора присваивания...
Для меня диковато, что они появляются в самых неожиданных местах :bleh:

И все-таки это не системная переменная, они есть и, вроде бы, начинаются с нижнего подчеркивания. Это я неловко выразилась.
Pardon))

Dethmontt

Кто вам мешает объявит ее(переменную1) ЯВНО?
Процедура МояПроцедура()
Перем ИнтераторЦикла;

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Колонка1");
СтрокаТаблицы = Таблица.Добавить();
СтрокаТаблицы.Колонка1 = "тест";

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


Такой способ обхода коллекций есть во многих языках....
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Sv_Graal

Все, вроде бы разобралась. Это переменная, генерируемая платформой при создании табличной части)) Она ведь вываливается в менюшке при наборе кода и присутствует во всяких конструкторах.
Интересовала именно сама ТекСтрокаТовары
Вообще эта платформа такая самостоятельная) Мне с моим стремлением до донца докопаться, похоже, надо идти до конца, т.е. до эксперта, чтобы успокоиться
Спасибо за подсказки! :ooifh:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск