Имя: Пароль:
1C
1С v8
Работа с ТЧ
0 2version
 
15.02.13
18:07
Люди, спасайте. Ничего не могу понять.
Мне нужно, чтоб из документа выбирались определенные поля и вводились в таблицу. Написал вот такой код:
**********************************************************************
&НаСервере
Процедура хз()
НоваяСтрока = ЭтаФорма.СписокВыбораМП.Добавить();
Колонка =("ФИО");
Переменная1 = Справочники.Сотрудники.Выбрать();
  Пока Переменная1.Следующий()=1 Цикл
  НоваяСтрока[Колонка] = Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество;
  КонецЦикла;
КонецПроцедуры
**********************************************************************
На клиенте я просто вызываю эту процедуру, естественно не кидая туда никаких параметров. Но вот какая беда, выводится в таблице только последняя строчка из всей БД. Я так понимаю я в цикле постоянно переприсваиваю НоваяСтрока, но как сделать, чтобы нормально заполнялось не хватает опыта. Я уже после вставлял ЗаполнениеТаблицы(), результат аналогичен.
1 Rie
 
15.02.13
18:09
(0) А вставить добавление строки внутрь цикла - не пробовал?
2 2version
 
15.02.13
18:13
(1) Пробовал. Добавляет столько строк, сколько и полей в БД, но они пустые. А заполняется только 1-я строка последней записью в БД.
Если вызвать ошибку в цикле, то тогда первая строка как и положено заполнится первой записью, дальше естественно ошибка.
3 2version
 
15.02.13
18:15
(2) Причем если я делаю вывод сообщения:
Сообщить (Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество);
Мне выводится сообщение как положено всех строк по очереди, т.е. к БД доступ идет нормальный.
4 Rie
 
15.02.13
18:15
(2) Покажи код, который "пробовал".
5 Reset
 
15.02.13
18:16
&НаСервере

Процедура хз()
Запрос=Новый Запрос("Выбрать Фамилия+Имя+Отчество Как Фио из Справочник.СписокВыбораМП");
СписокВыбораМП.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
6 2version
 
15.02.13
18:17
(2) Вот так вот я делал. Тут код с комментами, сори за неотсортированный хлам:
************************************************************
&НаСервере
Процедура хз()
   НоваяСтрока = ЭтаФорма.СписокВыбораМП.Добавить();
   Колонка =("ФИО");
   Переменная1 = Справочники.Сотрудники.Выбрать();

   //    текстстрока.Артикул = текстстрока.Номенклатура.Артикул;
//    Сообщить (Справочники.Сотрудники.НайтиПоРеквизиту("Имя",текстстрока.Артикул));
     
    Пока Переменная1.Следующий()=1 Цикл
       
        НоваяСтрока[Колонка] = Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество;
   //     ЭтаФорма.СписокВыбораМП.Добавить();
   
   //ЭтаФорма.СписокВыбораМП.Об
       //Сообщить(Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество);    
    // ЗаполнениеТаблицы();
     
   КонецЦикла;
   
   //Сообщить("Сотрудник " + Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество);

   //Для Каждого ЭлементМассива из МассивЗначений Цикл
//        Если МассивЗначений.Количество() >= ЭтаФорма.СписокВыбораМП.Количество() Тогда
 //          НоваяСтрока[Колонка] = МассивЗначений.Получить(ЭтаФорма.СписокВыбораМП.Количество()-1);    
   //        ЗаполнениеТаблицы();
           //    ПриОткрытии(Отказ);
       //КонецЕсли;

 КонецПроцедуры
***********************************************************
7 Reset
 
15.02.13
18:18
(6) Здесь нет того, что говорили в (1)
8 Rie
 
15.02.13
18:18
(6) НоваяСтрока = ЭтаФорма.СписокВыбораМП.Добавить(); - перед циклом, а не внутри него.
9 Reset
 
15.02.13
18:19
(7) Проглядел. Точнее есть, но неверно.
10 2version
 
15.02.13
18:22
Подкажи как правильно, пжл. Я не очень понял про цикл. Цикл на серваке 1, и он начинается со слова Пока ...
Внутри него нету того, что ты мне сказал.
Ты имел введу вверху цикла поставить добавление строки? Т.е. выше цикла Пока?
11 Reset
 
15.02.13
18:23
(10) Rie же сказал как правильно
12 2version
 
15.02.13
18:23
Добавление строки выше цикла вызывает простое добавление пустой строки в таблице, а дальше заполнение как и раньшею
13 Reset
 
15.02.13
18:24
&НаСервере
Процедура хз()
НоваяСтрока = ЭтаФорма.СписокВыбораМП.Добавить(); /// Убрать отсюда
Колонка =("ФИО");
Переменная1 = Справочники.Сотрудники.Выбрать();
  Пока Переменная1.Следующий()=1 Цикл
   НоваяСтрока = ЭтаФорма.СписокВыбораМП.Добавить(); /// Добавить сюда
  НоваяСтрока[Колонка] = Переменная1.Фамилия +" "+ Переменная1.Имя+" "+ Переменная1.Отчество;
  КонецЦикла;
КонецПроцедуры
14 2version
 
15.02.13
18:26
(13) Спасибо, ребят. Это наверное 2 часа сна дают о себе знать :)
Ошибка? Это не ошибка, это системная функция.