• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Таблица значений, НайтиЗначение

  • Автор темы Helena
  • Дата начала
H

Helena

Подскажите, плз, что не так? Мне нужно получать значения из найденной строки, а выходит, что берутся перыве n строк

ТЗ.ВыбратьСтроки();
Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1 Тогда
ТЗ.ТекущаяСтрока();
СуммаДолга = СуммаДолга + ТЗ.СредСтоимость;
КонецЕсли;
 
J

jcnby

Юзай :
ПолучитьЗначение(<?>,);
Синтаксис:
ПолучитьЗначение(<Строка>,<Колонка>)
Назначение:
Получить значение заданной ячейки таблицы значений. Возвращает значение заданной ячейки.
Параметры:
<Строка> - номер строки.
<Колонка> - номер или идентификатор колонки.

ТЗ.ВыбратьСтроки();
Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1 Тогда
Х=ТЗ.ПолучитьЗначение(ТЗ.ТекущаяСтрока(),ТЗ.ТекущаяКолонка());- чтото типа такого
СуммаДолга = СуммаДолга + ТЗ.СредСтоимость;
КонецЕсли;
понял только то что ты выбрал строки, нашел из них нужные ( удовл. условию БИ_10.ПредставлениеСубконто(2,)), потом позиционировался на текущую строку, а дальше какой-то бред, ТЗ.СредСтоимость тута вообще привязанна как-то? и зачем тогда со строками париться если ТЗ.СредСтоимость находиться и без них, а СуммаДолга просто растет................. :blink:
дополни плз свою проблемму...
 
H

Helena

У ТЗ всего 2 колонки - материал и СредСтоимость. Если материал совпадает (Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1) то мне нужно получить СредСтоимость этого материала и сложить с суммой долга
 
J

jcnby

ну вот значит

НужноеНамЗначение=ТЗ.ПолучитьЗначение(Строка,Колонка);

причем сторка= - есть ТЗ.ТекущаяСтрока();
а колонка- ето и есть числовой либо буквенный индефикатор колонки ( в ствоем случае ТЗ.СредСтоимость)

потом СуммаДолга=СуммаДолга+НужноеНамЗначение;
 
H

Helena

СредняяСтоимость = тз.ПолучитьЗначение(тз.ТекущаяСтрока(),тз.СредСТоимость);
Номер за пределами значения!

и так...
СредняяСтоимость = тз.ПолучитьЗначение(Тз.ТекущаяСтрока(),"СредСтоимость");
Номер за пределами значения!
 
J

jcnby

ТЗ.ВыбратьСтроки();

Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1 Тогда
НС=ТЗ.ТекущаяСтрока();
СредСтоимость=ТЗ.ПолучитьЗначение(НС,2); //2- ето номер колонки - если первая материалы, а потом СрСТоимость, то у Материалов -1 , а у Ср СТоимость -2 ( индификаторы)
СуммаДолга = СуммаДолга + СредСтоимость;
КонецЕсли;
 
H

Helena

Спасибо :)

ещё вопрос:
можно получить Итого по колонке в таблице печати? Мне неудобно в модуле отчета считать итоговое значение
 
J

jcnby

ещё вопрос:
можно получить Итого по колонке в таблице печати? Мне неудобно в модуле отчета считать итоговое значение

я с таким еще не сталкивалси))) вероятнее всего что нет, так как тама даже ячеет то и нету, есть секции)))

лутше щитать в модуле....на мой взгляд........еще можно в ТЗ по колонкам например.
 
H

Helena

просто определенные значения я подсчитываю не в модуле, а в самой таблице печати, например перемножаю значения из разных секций (вертикальных). Вот их итог мне и надо подсчитать
 
J

jcnby

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

и? в чем проблемма то?))) все данные серавно проходят через модуль. Т.е. их нужно всего то обозначить и тама же умножить, округлить, сложить, делить, и т.д.
 
L

LSH

Для: Helena
"Чем продвинутее становится программист, тем более сложными методами он решает простые задачи" ©Не моё.

Сам такой, знаю :)

Тебе надо знать кол-во строк и кол-во столбцов в твоей итоговой таблице.

Например, чтобы получить итог по 1-му столбцу делаем цикл:

Итого_1_Столбец = 0;
Для а = 1 По Количество_Строк_В_Таблице Цикл
Итого_1_Столбец = Итого_1_Столбец + Число(Табл.Область(а,1,а,1).Текст);
КонецЦикла;

<!--QuoteBegin-Helena+19:12:2007, 15:10 -->
<span class="vbquote">(Helena @ 19:12:2007, 15:10 )</span><!--QuoteEBegin-->СредняяСтоимость = тз.ПолучитьЗначение(тз.ТекущаяСтрока(),тз.СредСТоимость);
Номер за пределами значения!

и так...
СредняяСтоимость = тз.ПолучитьЗначение(Тз.ТекущаяСтрока(),"СредСтоимость");
Номер за пределами значения!
[snapback]90606" rel="nofollow" target="_blank[/snapback]​
[/quote]

Правильно будет тз.ПолучитьЗначение(Тз.НомерСтроки,"СредСтоимость");
 
T

tanat

а разве нельзя использовать перем=ТаблицаЗначений.Итог("колонка")? и ее уже выводить в печатную форму? помоему так будет проще)
 
H

Helena

Номер за пределами значения!
Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1 Тогда
СредняяСтоимость = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,"СредСтоимость");
СуммаДолга = СуммаДолга + СредняяСтоимость;
КонецЕсли;

То же самое, если
Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),,)=1 Тогда
НС = ТЗ.ТекущаяСтрока();
СредняяСтоимость = ТЗ.ПолучитьЗначение(НС,2);
СуммаДолга = СуммаДолга + СредняяСтоимость;
КонецЕсли;

:)
 
H

Helena

в таком случае не выполнялись бы операторы после "Тогда". Или я заблуждаюсь?
 
J

jj_mail

Возможно я ошибаюсь, но по-моему найти значение не позиционирует. В переменную нужно вернуть номер строки с найденным значением.
 
K

kaa

Стр = "";
Если ТЗ.НайтиЗначение(БИ_10.ПредставлениеСубконто(2,),Стр,"Материал")=1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(Стр);
СредняяСтоимость = ТЗ.СредСтоимость;
СуммаДолга = СуммаДолга + СредняяСтоимость;
КонецЕсли;

Где-то так :( Материал - Идентификатор колонки
 
H

Helena

ТЗ.ВыбратьСтроки();
Если ТЗ.НайтиЗначение(СокрЛП(ВСотрудник),,) = 1 Тогда
ТЗ.ТекущаяСтрока();
Таб.ВывестиСекцию("Сотрудник");
КонецЕсли;

В секции вывожу ТЗ.Сотр . Почему-то выводится пустое значение :(
 
L

LSH

Для: Helena

_стр = "";
Если ТЗ.НайтиЗначение(СокрЛП(ВСотрудник),_стр,) = 1 Тогда
ТЗ.ПоолучитьСтрокуПоНомеру(_стр);
Таб.ВывестиСекцию("Сотрудник");
КонецЕсли;

Замечание.
Если ты используешь поиск значения типа "строка" по таблице значений, то убедись, что:
1. Колонка, в которой хранится это значение имеет неопределенную длину, т.е. ТЗ.НоваяКолонка("Название","Строка"); В этом случае можно использовать ТЗ.НайтиЗначение(СокрЛП(ВСотрудник),_стр,)
2. Если же колонка имеет ограниченную длину, то то значение, которое ты ищешь должно иметь ту же длину. Например:
ТЗ.НоваяКолонка("Название","Строка",100);
...
ТЗ.НайтиЗначение(ВСотрудник,_стр,)
В этом случае перед поиском надо функцией Формат() привести переменную ВСотрудник в 100-символьную строку.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!