Как работать с таблицей значений?
02.07.2008
15:43
#1
"Выполняем некий запрос, его результаты выгружаем в таблицу значений.
Запрос выполнился проверяем:
если запрос.выполнить (текстзапроса) = 1 тогда
далее выгружаем:
запрос.выгрузить (тз,0,0);
проверяем, чтобы в таблице значений (тз) что-то было:
если тз.количествострок()>0 тогда
далее в цикле получаем строку
пока тз.получитьстроку() = 1 цикл
тс = тз.текущаястрока();
и из строки пытаемся получить занчение:
нинв = тз.получитьзначение (тс,1);
при выполнении имеем ошибку:
нинв = тз.получитьзначение (тс,1);
{Отчет.расчеты_с_пост.Форма.Модуль(44)}: Номер за пределами значения!
В чем здесь может быть дело?"
Запрос выполнился проверяем:
если запрос.выполнить (текстзапроса) = 1 тогда
далее выгружаем:
запрос.выгрузить (тз,0,0);
проверяем, чтобы в таблице значений (тз) что-то было:
если тз.количествострок()>0 тогда
далее в цикле получаем строку
пока тз.получитьстроку() = 1 цикл
тс = тз.текущаястрока();
и из строки пытаемся получить занчение:
нинв = тз.получитьзначение (тс,1);
при выполнении имеем ошибку:
нинв = тз.получитьзначение (тс,1);
{Отчет.расчеты_с_пост.Форма.Модуль(44)}: Номер за пределами значения!
В чем здесь может быть дело?"
02.07.2008
17:28
#2
"При просмотре ТЗ с помощью цикла Текущей строки как таковой НЕТ
Она есть, если есть диалог и курсор установлен на определенную строку
Самое простое - использовать счетчик:
Ном = 1;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
нинв = ТЗ.ПолучитьЗначение(Ном,1);
Ном = Ном + 1;
КонецЦикла;"
Она есть, если есть диалог и курсор установлен на определенную строку
Самое простое - использовать счетчик:
Ном = 1;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
нинв = ТЗ.ПолучитьЗначение(Ном,1);
Ном = Ном + 1;
КонецЦикла;"
02.07.2008
17:29
#3
"предыдущий вопрос снимается. зато возникает следующий вопрос:
можно ли создать запрос сразу к двум видам документов, если они связаны через реквизит, т.е. что-то типа:
|док = документ.оплата.текущийдокумент;
|датао = документ.оплата.датадок;
|номеро = документ.оплата.номердок;
|контр = документ.оплата.инвойс.
|контрагент.наименование;
|вал = документ.оплата.
|инвойс.валюта.валюта.наименование;
|сттьвс = документ.оплата.стоимость_вс;
|сттьост = документ.оплата.инвойс.остаток_оплаты;
где, есть документ "оплата", а у него в табличной части есть реквизит "инвойс", который является ссылкой на другой документ?"
можно ли создать запрос сразу к двум видам документов, если они связаны через реквизит, т.е. что-то типа:
|док = документ.оплата.текущийдокумент;
|датао = документ.оплата.датадок;
|номеро = документ.оплата.номердок;
|контр = документ.оплата.инвойс.
|контрагент.наименование;
|вал = документ.оплата.
|инвойс.валюта.валюта.наименование;
|сттьвс = документ.оплата.стоимость_вс;
|сттьост = документ.оплата.инвойс.остаток_оплаты;
где, есть документ "оплата", а у него в табличной части есть реквизит "инвойс", который является ссылкой на другой документ?"
02.07.2008
17:32
#4
"Или если известны переменные запроса, тогда просто пользоваться ими
Допустим вы точно знаете, что в запросе есть переменная НИнв, которая вам и нужна. В ТЗ она выгрузится под тем же именем
т.е. в цикле по ТЗ можно тогда просто написать, что нинв = ТЗ.Нинв;
"
Допустим вы точно знаете, что в запросе есть переменная НИнв, которая вам и нужна. В ТЗ она выгрузится под тем же именем
т.е. в цикле по ТЗ можно тогда просто написать, что нинв = ТЗ.Нинв;
"
02.07.2008
17:52
#5
Ответов 2, потому что все зависит от обстоятельств:
1. Если Реквизит Инвойс - это КОНКРЕТНЫЙ документ, то ДА, можно!
2. Если Реквизит Инвойс имеет тип "Документ", то НЕТ, в теле запроса обратиться к реквизитам дока не получится, ибо непонятно к чему обращаться.Выход из этой ситуации - в запросе задавать переменной значение самого документа, который выступает реквизитом в первом доке (допустим Инвойс = документ.оплата.инвойс), а перебирая ТЗ получать контрагента уже через ТЗ.Инвойс.Контрагент.Наименование
1. Если Реквизит Инвойс - это КОНКРЕТНЫЙ документ, то ДА, можно!
2. Если Реквизит Инвойс имеет тип "Документ", то НЕТ, в теле запроса обратиться к реквизитам дока не получится, ибо непонятно к чему обращаться.Выход из этой ситуации - в запросе задавать переменной значение самого документа, который выступает реквизитом в первом доке (допустим Инвойс = документ.оплата.инвойс), а перебирая ТЗ получать контрагента уже через ТЗ.Инвойс.Контрагент.Наименование
Читают тему
(гостей: 1)