8.х ДБФ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем lanna_oops, 30 окт 2008.

  1. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Здравстуйте! Подскажите, пожалуйста, что не так делаю.
    создаю обработку для загрузки таблицы дбф. загружаю туда эту таблицу. таблица отображается в табличном поле. далее мне необходимо перебрать полученные строки этого табличного поля
    и вывести в другую таблицу определенные поля. пишу сдеующий код:
    Код:
    Процедура Кнопка1Нажатие(Элемент)
    КоличествоСтр=ЗначенияДБФ.Количество();
    ЭлементыФормы.Надпись1.Заголовок=КоличествоСтр;
    строкаТЧ=ЭлементыФормы.ЗначенияДБФ.ТекущиеДанные;
    для Кол=0 по КоличествоСтр-1  цикл
    ЛицСчет=СокрЛП(строкаТЧ["K_LS"]);
    КолСчет=СтрДлина(ЛицСчет);
    ТабП=ЭлементыФормы.проба;
    ТабП.ДобавитьСтроку();
    ТекущаяСтрока=ТабП.ТекущаяСтрока;
    ТекущаяСтрока.Количество=КолСчет;
    ТекущаяСтрока.ЛицевойСчет=ЛицСчет;
    
    конеццикла;	
    КонецПроцедуры
    
    в результате, в новую таблицу помещается только первая строка таблицы дбф, причем ровно столько раз, сколько строк в таблице ДБФ. а нужно чтобы выводились все строки по одному разу. пробовала воспользоваться таблицей значений:
    Код:
    Процедура Кнопка1Нажатие(Элемент)
    КоличествоСтр=ЗначенияДБФ.Количество();
    ЭлементыФормы.Надпись1.Заголовок=КоличествоСтр;
    ТабЗнач=новый ТаблицаЗначений;
    строкаТЧ=ЭлементыФормы.ЗначенияДБФ.ТекущиеДанные;
    
    таб=ТабЗнач.Добавить();
    таб=строкаТЧ;	
    
    для Кол=0 по КоличествоСтр  цикл
    ЛицСчет=СокрЛП(таб["K_LS"]);
    КолСчет=СтрДлина(ЛицСчет);
    ТабП=ЭлементыФормы.проба;
    ТабП.ДобавитьСтроку();
    ТекущаяСтрока=ТабП.ТекущаяСтрока;
    ТекущаяСтрока.Количество=КолСчет;
    ТекущаяСтрока.ЛицевойСчет=ЛицСчет;
    
    конеццикла;
    
    КонецПроцедуры
    
    результат тотже...
    помогите, пожалуйста.
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТабП=ЭлементыФормы.проба;
    
    А зачем это в цикле? вы каждый раз инициализируете таблицу, стирая ранее введенные данные.
  3. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1

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

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    ну вообще если посмотреть на этот бред:
    Код:
    	ЛицСчет=СокрЛП(строкаТЧ["K_LS"]);
    КолСчет=СтрДлина(ЛицСчет);
    
    
    который тоже внутри цикла, то вы увидите, что вы этим переменным присваиваете одно и то же значение ровно столько раз, сколько итераций в цикле.
  5. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    теперь выводтся одна первая строка в списке
    я с составлением циклов путаюсь...
    помогите, пожалуйста....
  6. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Ок. Процедура, которую вы выложили в начале, полная? или это кусок? Если второе истинно, скидывайте всю процедуру. Либо внешнюю обработку. Сложно судить.

    Суть в чем?

    Есть:
    ТаблицаЗначений (заполненная), ТабП.

    Код:
    Код:
    ТабП=ЭлементыФормы.проба;
    Для каждого ТекСтрока из ТаблицаЗначений  Цикл
    ТабП.ДобавитьСтроку(); 
    НоваяСтрока = ТабП.ТекущаяСтрока;
    НоваяСтрока.Количество = СтрДлина(ТекСтрока.ЛицСчет);
    НоваяСтрока.ЛичевойСчет = ТекСтрока.K_LS; //если я правильно понял
    КонецЦикла;
    
    Можно сделать иначе, конечно, но суть та же.
  7. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    процедура полная. ТабП-это пустая таблица, в нее нужно записать обработанные данные из дбф
  8. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    а если написать как вы предложили, выводится только первая строка с лицевым счетом и количеством

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