Имя: Пароль:
1C
Админ
Связанные справочники
0 rhamzin
 
02.05.13
14:25
Имеются 2 справочника, которые связаны. Лицевые счета и Физические лица.
Справочник "Лицевые Счета" имеет реквизит "Физические лица" с типом "СправочникСсылка.ФизЛица".
Справочник "ФизЛица" имеет реквизит "Лицевой счет" с типом "СправочникСсылка.ЛицевыеСчета".

Требуется поменять код лицевого счета по порядку. Меняю следующим кодом (код лицевого счета меняется, но теряется связь со справочником ФизЛица.):
Как поменять код лицевого счета не теряя ссылки на ФизЛица?

Перем i,j,k,e;
i=0;j="0000000000";
СпрЛицевыеСчета=Справочники.ЛицевыеСчета;
Выборка=СпрЛицевыеСчета.Выбрать();
Пока Выборка.Следующий() Цикл    
ОбъектЛицевыеСчета=Выборка.ПолучитьОбъект();      
Сообщить("Обрабатывается элемент " + Выборка.Наименование);        
СпрФизЛица=Справочники.ФизЛица;        ВыбратьФизЛицо=СпрФизЛица.Выбрать();                
е=Выборка.ФизЛицо.ЛицевойСчет;                
i=i+1;        k=Лев(j,10-СтрДлина(Строка(i)))+Строка(i);                    
//ОбъектЛицевыеСчета.Код.Значение=k;        
//ОбъектЛицевыеСчета.ФизЛицо.Значение=e;        
//ОбъектЛицевыеСчета.Записать();      
//Прервать;
Сообщить("Новый код:"+Строка(k)+" Ссылка на физ лицо: "+Строка(e)+" ФизЛицо");
КонецЦикла;
1 1Сергей
 
02.05.13
14:46
>>Справочник "Лицевые Счета" имеет реквизит "Физические лица" с типом "СправочникСсылка.ФизЛица".
>>Справочник "ФизЛица" имеет реквизит "Лицевой счет" с типом "СправочникСсылка.ЛицевыеСчета".


Это кто такую хрень придумал?
2 EugeniaK
 
02.05.13
15:22
(0)
А при чем тут вообще "Справочник "ФизЛица" имеет реквизит "Лицевой счет" с типом "СправочникСсылка.ЛицевыеСчета". "?
Если нужно изменить коды справочника ""Лицевые Счета"", меняй на здоровья. В справочнике "ФизЛица" хранится ссылка на лицевой счет, а не код. От смены кода ссылка не изменится.
Меняй код в справочнике "Лицевые счета", а справочник физ лица и его ссылки вообще не трогай и не анализируй.
3 EugeniaK
 
02.05.13
15:26
Оставь:

Пока Выборка.Следующий() Цикл    
ОбъектЛицевыеСчета=Выборка.ПолучитьОбъект();      
Сообщить("Обрабатывается элемент " + Выборка.Наименование);        
i=i+1;        k=Лев(j,10-СтрДлина(Строка(i)))+Строка(i);                    
ОбъектЛицевыеСчета.Код.Значение=k;        
ОбъектЛицевыеСчета.Записать();      
Сообщить("Новый код:"+Строка(k)+" Ссылка на физ лицо: "+ОбъектЛицевыеСчета.ФизЛицо+" ФизЛицо");
КонецЦикла;
4 EugeniaK
 
02.05.13
15:31
А вместо
k=Лев(j,10-СтрДлина(Строка(i)))+Строка(i);                    
ОбъектЛицевыеСчета.Код.Значение=k;
достаточно написать
ОбъектЛицевыеСчета.Код.Значение=Формат(i,"ЧЦ=10; ЧВН=; ЧГ=0")