Имя: Пароль:
1C
1C 7.7
v7: Как правильно сделать...
0 tmpnikl
 
24.01.13
10:49
Почему если стоит оператор Спр.Записать(), то указатель записи переходит в следующую группу, а если его закомментировать, то все записи показываются по порядку...

Спр=СоздатьОбъект("Справочник.Сотр");
Если Спр.ВыбратьЭлементы()=1 Тогда
    Пока Спр.ПолучитьЭлемент()=1 Цикл
         Спр.Родитель=Спр.ТекущийЭлемент();
           Спр.Записать();
         Сообщить(Спр.Наименование);
    КонецЦикла;
КонецЕсли;
1 zak555
 
24.01.13
10:49
что хочешь в конечном итоге ?
2 Ёпрст
 
24.01.13
10:50
(0) це же очевидно - сбиваешь выборку при записи нового родителя.
3 Ёпрст
 
24.01.13
10:50
ну и это
Спр.Родитель=Спр.ТекущийЭлемент();

вообще шедевр.
4 Ёпрст
 
24.01.13
10:50
пизать родителем ссылку на самого себя..
5 Vladal
 
24.01.13
10:54
Вывод из (4) - для родителя используй другую переменную, чтобы не сбить выборку. Можешь сделать выборку по коду.
Как вариант, поместить выборку в таблицу значений и обходить уже таблицу.
6 tmpnikl
 
24.01.13
10:54
Да, мне не важно, что там записывается в Родителе(Там выбирается новая группа, просто осмотрелся), мне хотелсь бы знать, как продолжить просмотр таблицы с места, где была сделана запись...
7 Эльниньо
 
24.01.13
10:55
Сам себе папа. Круто!
8 Ёпрст
 
24.01.13
10:55
(5) нет, вывод тут совершенно другой
9 1Сергей
 
24.01.13
10:55
(7) если есть машина времени, то почему бы и нет? :)
10 пипец
 
24.01.13
10:57
(6) запросом в тз и смотри чо хочешь
11 tmpnikl
 
24.01.13
10:59
Вот полный код, мне надо изменить группу  записям...
Ном=Группы.ТекущаяСтрока();
КодГруппы=Группы.ПолучитьЗначение(Ном);
Спр=СоздатьОбъект("Справочник.Сотр");
СпрСотр=СоздатьОбъект("Справочник.Сотр");
Если КодГруппы <> 0 Тогда
   Если Спр.НайтиПоКоду(КодГруппы)=1 Тогда
       Если СпрСотр.ВыбратьЭлементы()=1 Тогда
         Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
            если  СпрСотр.ЭтоГруппа() = 0 тогда
               если (СпрСотр.Степень_вып=Перечисление.Степень.М)  тогда
                     СпрСотр.Родитель=Спр.ТекущийЭлемент();
//                      СпрСотр.Записать();
                     Сообщить(СпрСотр.Наименование);
               КонецЕсли;
            конецесли;
         КонецЦикла;
       КонецЕсли;
   КонецЕсли;
конецесли;
12 Ёпрст
 
24.01.13
11:00
(11)
Если СпрСотр.ВыбратьЭлементы(0)=1 Тогда
13 Ёпрст
 
24.01.13
11:00
наслаждайся
14 Mikeware
 
24.01.13
11:00
(11) а чего ваша контора программиста не наймет?
15 tmpnikl
 
24.01.13
11:00
Весь этот излишний код, просто уводит от сути, мне не надо просматривать, мне надо менять родителя в справочнике. а как правильно , чтоб не уходил указатель не знаю...
18 Случайный прохожий
 
24.01.13
11:04
Синтаксис семерочный плохо помню, но где-то так:

Спр=СоздатьОбъект("Справочник.Сотр");
Спр2=СоздатьОбъект("Справочник.Сотр");
Если Спр.ВыбратьЭлементы()=1 Тогда
    Пока Спр.ПолучитьЭлемент()=1 Цикл
         Спр2 = Спр.ПолучитьОбъект();
         Спр2.Родитель=....;
         Спр2.Записать();
    КонецЦикла;
КонецЕсли;

Вообщем выборку трогать нельзя. Создаешь другую переменную и извращаешься с ней как хочешь.
19 Ёпрст
 
24.01.13
11:05
(15) см. 12
20 tmpnikl
 
24.01.13
11:10
Спасибо.. Есди бы я знал, где можно задавать глупые вопросы, то я бы пошёлна тот форум.., чтоб не раздражать тут небожителей..., мне без разница, клоун, Индия и т.д., я не мальчик типа "Сам такой", я ник сменил, а знания остались, и это для меня главное. а не ваше презрение... к индийцам и прочее..
21 1Сергей
 
24.01.13
11:10
(18)
         Спр2 = Спр.ПолучитьОбъект();
         ...
         Спр2.Записать();

Не взлетит
22 Случайный прохожий
 
24.01.13
11:14
(21) Не спорю :) Главное - идея. Как реализовать - думаю додумается.
23 tmpnikl
 
24.01.13
11:16
ещё раз спасибо... подошло Если СпрСотр.ВыбратьЭлементы(0)=1