Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таблица Значений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
mavrik
Помогите чайнику.Как вывести список значений из таблицы поля Сумма.? Реквизит табличной части Сумма,тип значения число.
Таким методом не работает,выводит первое число из таблицы.
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
         Сообщить(ТЗ.Сумма);
    КонецЦикла;
Читатель
ТЗ.ПолучитьЗначение(<Строка>,<Колонка>) работает белее предсказуемо.
mavrik
Цитата(Читатель @ 11.10.11, 15:57) необходимо зарегистрироваться для просмотра ссылки
ТЗ.ПолучитьЗначение(<Строка>,<Колонка>) работает белее предсказуемо.


Мне надо не конкретный элемент а полностью всю колонку сумма
alex040269
    ТЗ.ВыбратьСтроку();


посмотрите сколько реально у Вас строк в ТЗ.
mavrik
Цитата(alex040269 @ 11.10.11, 16:35) необходимо зарегистрироваться для просмотра ссылки
    ТЗ.ВыбратьСтроку();


посмотрите сколько реально у Вас строк в ТЗ.

9
Читатель
Цитата(mavrik @ 11.10.11, 16:34) необходимо зарегистрироваться для просмотра ссылки
Мне надо не конкретный элемент а полностью всю колонку сумма

Я имел в виду вот это:
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    КолСтр=ТЗ.КоличествоСтрок();
    Если КолСтр>0 Тогда
        Для й=1 По КолСтр Цикл
             Сообщить(ТЗ.ПолучитьЗначение(й,"Сумма");
        КонецЦикла;

Иначе
Сообщить("Нет строк");
КонецЕсли;

Цитата(mavrik @ 11.10.11, 16:34) необходимо зарегистрироваться для просмотра ссылки
Мне надо не конкретный элемент а полностью всю колонку сумма

Я имел в виду вот это:
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    КолСтр=ТЗ.КоличествоСтрок();
    Если КолСтр>0 Тогда
        Для й=1 По КолСтр Цикл
             Сообщить(ТЗ.ПолучитьЗначение(й,"Сумма");
        КонецЦикла;
    Иначе
         Сообщить("Нет строк");
    КонецЕсли;
alex040269
Цитата(mavrik @ 11.10.11, 15:43) необходимо зарегистрироваться для просмотра ссылки
Помогите чайнику.Как вывести список значений из таблицы поля Сумма.? Реквизит табличной части Сумма,тип значения число.
Таким методом не работает,выводит первое число из таблицы.
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
         Сообщить(ТЗ.Сумма);
    КонецЦикла;


я имел в виду, что если этот код выдает только одну сумму, то в ТЗ - одна строка.
mavrik
Цитата(Читатель @ 11.10.11, 16:50) необходимо зарегистрироваться для просмотра ссылки
Я имел в виду вот это:
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    КолСтр=ТЗ.КоличествоСтрок();
    Если КолСтр>0 Тогда
        Для й=1 По КолСтр Цикл
             Сообщить(ТЗ.ПолучитьЗначение(й,"Сумма");
        КонецЦикла;

Иначе
Сообщить("Нет строк");
КонецЕсли;


Я имел в виду вот это:
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    КолСтр=ТЗ.КоличествоСтрок();
    Если КолСтр>0 Тогда
        Для й=1 По КолСтр Цикл
             Сообщить(ТЗ.ПолучитьЗначение(й,"Сумма");
        КонецЦикла;
    Иначе
         Сообщить("Нет строк");
    КонецЕсли;


Выдает "Нет строк"
alex040269
Цитата(mavrik @ 11.10.11, 16:59) необходимо зарегистрироваться для просмотра ссылки
Выдает "Нет строк"


а где тз.новаяСтрока()?
mister-x
ТЗ  = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
         Сообщить(ТЗ.Сумма);
    КонецЦикла;
а де власне заповнення ТЗ
Цитата
а где тз.новаяСтрока()?

+1
Читатель
Цитата(mavrik @ 11.10.11, 16:59) необходимо зарегистрироваться для просмотра ссылки
Выдает "Нет строк"

Если Ваш код именно такой, как здесь показано, то конечно нет строк.
Я предполагал (остальные тоже видимо), что между ТЗ = СоздатьОбъект("ТаблицаЗначений"); и циклом есть заполнение Вашей ТЗ.
Если Ваша ТЗ - это елемент диалога, то её и опрашивайте. Если Вы её ещё не обозвали- то обозвите и опрашивайте. Ваш исходный код именно для ТЗ которая в диалоге вряд ли сработает правильно. Мой сработает.
MATEVI
Что то у меня такое предчувствие что надо вообще получить итого по колнке сумма в документе. smile.gif
Тогда просто Итог("Сумма") И таблица значений вообще не нужна.

Создание ТЗ на основе табличной части документа

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
Сообщить(ТЗ.Итог("Сумма") );
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Сообщить(ТЗ.Сумма);
КонецЦикла
Читатель
Битва эксрасенсов, короче. smile.gif
Vofka
Цитата
Битва эксрасенсов, короче. smile.gif

У нас когда-то раздел даже такой был "Битва экстрасенсов". Закрыли его и сменили темматику, всётаки, на более ближе к 1С. Но люди всёравно идут к нам, чтобы обратиться к экстрасенсам faceoff.gif
mister-x
так почекаємо автора теми - що він скаже на всі запитання (якщо дочекаємся)
mavrik
Ребята вы уж извините. Я неправильно объяснил.Я не знал что такое ТаблицаЗначений.Надо было просто написать
    ВыбратьСтроки();
        Пока ПолучитьСтроку() = 1 Цикл
            Сообщить("Сумма");
        КонецЦикла;

Всем спасибо за помощь.Извините я видь только учусь.
Читатель
В битве экстасенсов победил MATEVI. smile.gif Но и автор кое-что приобрёл.
MATEVI
Цитата(Читатель @ 12.10.11, 12:55) необходимо зарегистрироваться для просмотра ссылки
В битве экстасенсов победил MATEVI. smile.gif Но и автор кое-что приобрёл.

Ну и Вам + Хотя такой код обычно пугает smile.gif

ЗЫ Кстати что Вы имели ввиду под тем что работает более предсказуемо ПолучитьЗначение() чем Пока ПолучитьСтроку()
Читатель
Цитата(MATEVI @ 12.10.11, 13:53) необходимо зарегистрироваться для просмотра ссылки
Ну и Вам + Хотя такой код обычно пугает smile.gif

ЗЫ Кстати что Вы имели ввиду под тем что работает более предсказуемо ПолучитьЗначение() чем Пока ПолучитьСтроку()

Спасибо, конечно.
Меня раньше тоже пугал такой код.
Имел в виду если ТЗ - это елемент диалога обработки, например. Сталкивался неоднократно, когда ПолучитьСтроку() не даёт результата, а ПолучитьЗначение() всегда даёт.
vadim007
Цитата(Читатель @ 12.10.11, 14:12) необходимо зарегистрироваться для просмотра ссылки
Имел в виду если ТЗ - это елемент диалога обработки, например. Сталкивался неоднократно, когда ПолучитьСтроку() не даёт результата, а ПолучитьЗначение() всегда даёт.

Если можно - дайте конкретный пример, когда ТЗ.ПолучитьСтроку() не дает результата. Я регулярно использую конструкцию ТЗ.ПолучитьСтроку(), и ваше утверждение, что это не всегда работает, слегка бросило в холодный пот: тогда в моих отчетах/обработках могут быть ошибки.
Читатель
Цитата(vadim007 @ 16.10.11, 11:04) необходимо зарегистрироваться для просмотра ссылки
Если можно - дайте конкретный пример, когда ТЗ.ПолучитьСтроку() не дает результата. Я регулярно использую конструкцию ТЗ.ПолучитьСтроку(), и ваше утверждение, что это не всегда работает, слегка бросило в холодный пот: тогда в моих отчетах/обработках могут быть ошибки.

Не дам. Наблюдал такое года два-три назад. И только в случае если ТЗ - это елемент диалога отчёта или обработки.
"Не даёт результата" - это я не точно выразился. Результат давал, но не тот. Например ТЗ.Сумма возвращало сумму не той строки, которая текущая в цикле ТЗ.ПолучитьСтроку(), а той которая была текущей в диалоге (или просто первой, точно не помню).
Причин не искал. Использую ПолучитьЗначение(,) и УстановитьЗначение(,) - номер строки указывается явно, проблем нет.
Кстати (сейчас придумал). Может проблема была и не в 1С, а в Windows - она у меня лет пять-шесть. Причём как раз пару лет назад поменял материнку-проц-память без переустановки винды.
Ardi
Перед тем как писать "ТЗ.ПолучитьСтроку()" нужно писать "ТЗ.ВыбратьСтроки()"
Читатель
Цитата(Ardi @ 16.10.11, 15:27) необходимо зарегистрироваться для просмотра ссылки
Перед тем как писать "ТЗ.ПолучитьСтроку()" нужно писать "ТЗ.ВыбратьСтроки()"

Спасибо. Я в курсе.
vadim007
Выдержка из помощи:
Цитата
При работе с таблицей значений следует различать два понятия текущей строки таблицы. Во-первых, существует текущая строка объекта «ТаблицаЗначений», которая устанавливается при помощи методов ПолучитьСтрокуПоНомеру, ВыбратьСтроки, ПолучитьСтроку, эта текущая строка меняется программно и служит для обращения к значениям колонок с помощью идентификаторов уже без указания строки. Во-вторых, существует текущая строка элемента формы диалога «ТаблицаЗначений», которая является активной строкой (на ней установлен курсор) в диалоге. Текущая строка элемента диалога возвращается и устанавливается исключительно только при помощи метода ТекущаяСтрока. Например, если программно сменить текущую строку объекта, курсор в визуальном представлении диалога сам собой не передвинется, это можно выполнить только при помощи метода ТекущаяСтрока. Однако, при вызове из формы процедуры обработки, текущая строка объекта будет совпадать с текущей строкой визуального представления.

Из нее следует, что никаких проблем при использовании методов ВыбратьСтроки(), ПолучитьСтроку() применительно к элементу диалога типа ТаблицаЗначений нет. Да и я никаких проблем не замечал. Возможно, вы пытались использовать метод ТекущаяСтрока() - тогда будете "топтаться" на месте.
Читатель
Цитата(vadim007 @ 16.10.11, 20:29) необходимо зарегистрироваться для просмотра ссылки
Возможно, вы пытались использовать метод ТекущаяСтрока() - тогда будете "топтаться" на месте.

Возможно. Не помню. К сожалению.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.