Имя: Пароль:
1C
1C 7.7
v7: Не все выбирает подчиненные элементы!
0 Melcor
 
22.03.12
10:52
Пытаюсь назначить кода для справочника, но почему-то выбобрка проходит не по всем элементам. Если же закомментить строки с назначением кода сохранением элемента, то выбирает все. Конетроль уникальности отключен.

Процедура Сформировать()
   Кодик = 0;
   СпрК = СоздатьОбъект("Справочник.Контрагенты");
   СпрК.ВыбратьЭлементы();
   Пока СпрК.ПолучитьЭлемент()=1 цикл
       Если СпрК.Код = "ЦБ000305" тогда
           сообщить("!");    
       
       состояние(строка(СпрК.ТекущийЭлемент()));
       СпрТЦ = СоздатьОбъект("Справочник.ТипыЦенКонтрагентов");
       СпрТЦ.ИспользоватьВладельца(СпрК.ТекущийЭлемент());
       СпрТЦ.ПорядокНаименований();
       СпрТЦ.ВыбратьЭлементы();
       Пока СпрТЦ.ПолучитьЭлемент()=1 цикл
           Кодик = Кодик+1;
           СпрТЦ.Код = прав("0000000"+Кодик,7);
           сообщить(строка(СпрТЦ.Код));
           СпрТЦ.Записать();
       КонецЦикла;
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
1 Джинн
 
22.03.12
10:57
ПорядокНаименований()
2 Melcor
 
22.03.12
10:59
Без этого не даст кода даобовлять
3 Melcor
 
22.03.12
11:00
тогда посоветуйте пжл, как тут кода назначить можно!
4 Ёпрст
 
22.03.12
11:02
запихать в с список - потом назначить
Или, взять типовой перенумератор с диска итс
5 Melcor
 
22.03.12
11:03
не вспомнишь название обработки типового перенумератора?
6 miki
 
22.03.12
11:05
(4)а что не так в (0)? На первый взгляд всё дожно работать...
7 Melcor
 
22.03.12
11:05
ну вот так, не работает
8 Ёпрст
 
22.03.12
11:14
(5) входит в состав обработок uchoice.ert
9 Melcor
 
22.03.12
11:17
спасибо
10 altone1C
 
22.03.12
11:19
Тут есть одна особенность.
При любой записи объекта в 1с 7.7 выборка текущего объекта сбрасывается.

Процедура Сформировать()
   Кодик = 0;
   СпрК = СоздатьОбъект("Справочник.Контрагенты");
   СпрК.ВыбратьЭлементы();
   Пока СпрК.ПолучитьЭлемент()=1 цикл
       Если СпрК.Код = "ЦБ000305" тогда
           сообщить("!");    
       
       состояние(строка(СпрК.ТекущийЭлемент()));
       СпрТЦ = СоздатьОбъект("Справочник.ТипыЦенКонтрагентов");
       СпрТЦзапись = СоздатьОбъект("Справочник.ТипыЦенКонтрагентов");
       СпрТЦ.ИспользоватьВладельца(СпрК.ТекущийЭлемент());
       СпрТЦ.ВыбратьЭлементы();
       Пока СпрТЦ.ПолучитьЭлемент()=1 цикл
           Кодик = Кодик+1;
           СпрТЦзапись=НайтиОбъект(СпрТЦ.ТекущийЭлемент());
           СпрТЦзапись.Код = прав("0000000"+Кодик,7);
           сообщить(строка(СпрТЦзапись.Код));
           СпрТЦзапись.Записать();
       КонецЦикла;
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Вот так будет работать. "Более лучший" вариант - обход спрвочника через запрос.
11 Попытка1С
 
22.03.12
11:20
Renumber она называется.
12 Ёпрст
 
22.03.12
11:24
(10) не ври - не при любой выборке
13 miki
 
22.03.12
11:26
и не сбрасывается, а сбивается. И только при изменении+записи реквизита, по котрому индекс выборки.
(12)так что не так у автора?
14 altone1C
 
22.03.12
11:36
(13) Ну да, сбивается. Не вижу принципиальной разницы :)
(12) Пример с "ВыбратьЭлементы()", где после записи выборка не сбивается - в студию!
15 altone1C
 
22.03.12
11:39
Хотя да, точно сбивается при смене наименования/кода, но я (после грабель) всегда страхуюсь :)
16 Ёпрст
 
22.03.12
11:43
(13) я не проерял, думаю ИспользоватьВладельца не дружит потом с порядком наименований.. хотя хз, с виду должно и так работать
17 Ёпрст
 
22.03.12
11:46
(14) наслаждайся:

пример 1:

Спр.ВыбратьЭлементы(0);
Пока Спр.ПолучитьЭлемент()=1 Цикл
  Спр.Код = _GetPerformanceCounter();
  Спр.Наименование = "Вася";
  Спр.Записать();
КонецЦикла;

пример 2:
Спр.ПорядокКодов();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
  Спр.Наименование = "Вася";
  Спр.Записать();
КонецЦикла;

пример 3:

Спр.ПорядокНаименований();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
  Спр.Код = _GetPerformanceCounter();
  Спр.Записать();
КонецЦикла;
18 miki
 
22.03.12
12:21
на всякий случай:
А длина наименования у тебя >0? Нескольких с пустым наименованиями нет?
19 altone1C
 
22.03.12
16:47
(17) не работают у меня такое. Ни один из примеров. Проходит только одну итерацию.
Если что - 7.7, база скуль 2000.
20 chief accountant
 
22.03.12
16:51
(19) Хватит велик изобретать пользуйся (8)
21 Ёпрст
 
22.03.12
17:02
(19) врешь
22 Ёпрст
 
22.03.12
17:02
ты и не пробовал ни один