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

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

  1. Helena

    Helena Гость

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

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

    jcnby Гость

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

    понял только то что ты выбрал строки, нашел из них нужные ( удовл. условию БИ_10.ПредставлениеСубконто(2,)), потом позиционировался на текущую строку, а дальше какой-то бред, ТЗ.СредСтоимость тута вообще привязанна как-то? и зачем тогда со строками париться если ТЗ.СредСтоимость находиться и без них, а СуммаДолга просто растет................. :blink:
    дополни плз свою проблемму...
     
  3. Helena

    Helena Гость

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

    jcnby Гость

    ну вот значит

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

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

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

    Helena Гость

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

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

    jcnby Гость

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

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

    Helena Гость

    Спасибо :)

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

    jcnby Гость

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

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

    Helena Гость

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

    jcnby Гость

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

    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]

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

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0
    а разве нельзя использовать перем=ТаблицаЗначений.Итог("колонка")? и ее уже выводить в печатную форму? помоему так будет проще)
     
  13. Helena

    Helena Гость

    LSH, спасибо, помогло!!!
     
  14. Helena

    Helena Гость

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

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

    :)
     
  15. jj_mail

    jj_mail Гость

    Не находит значение в ТЗ
     
  16. Helena

    Helena Гость

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

    jj_mail Гость

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

    kaa Гость

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

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

    Helena Гость

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

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

    LSH Гость

    Для: Helena

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

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

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