Имя: Пароль:
1C
1C 7.7
v7: запись нового реквизита справочника типа "Строка"
0 Norbertano
 
13.05.19
19:22
Добрый день. 9 лет не работал с 7.7, но вот пришлось лезть в одну конфигурацию. Для переноса данных в 8.3 решил предварительно записать уникальный идентификатор, но в реквизит значение не присваивается. Подскажите, вроде бы все правильно делаю.

сз = СоздатьОбъект("СписокЗначений");
сз.ДобавитьЗначение("Справочник.Номенклатура");
сз.ДобавитьЗначение("Справочник.Контрагенты");

Для Инд = 1 По сз.РазмерСписка() Цикл
вид =сз.ПолучитьЗначение(Инд);    
СпрСотр = СоздатьОбъект(вид);  

СпрСотр.ВыбратьЭлементы();  
Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл  
Спр=СпрСотр.ТекущийЭлемент();    
Инфо = СоздатьОбъект("AddIn.V7SysInfo");
ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID();

Спр.guid = ГлобальноУникальныйИдентификатор;
Спр.Записать();  

Сообщить(вид + " " + ГлобальноУникальныйИдентификатор);

КонецЦикла;

КонецЦикла;
1 MWWRuza
 
гуру
13.05.19
19:51
СпрСотр.ВыбратьЭлементы();  
Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл  
  
Инфо = СоздатьОбъект("AddIn.V7SysInfo");
ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID();

СпрСотр.guid = ГлобальноУникальныйИдентификатор;
СпрСотр.Записать();  

Сообщить(вид + " " + ГлобальноУникальныйИдентификатор);

КонецЦикла;
2 Norbertano
 
13.05.19
19:53
(1) так было изначально, тоже не записывает
3 MWWRuza
 
гуру
13.05.19
20:01
Должно записывать. В отладчике смотрите...
Инфо - формируется? Тип значения реквизитов guid справочников - строка ? Достаточной длины? Права у пользователя, запускающего обработку, достаточные?
4 Злопчинский
 
13.05.19
20:23
(2) лабуда, в (1) код правильный.
а...
Спр=СпрСотр.ТекущийЭлемент();    
Спр.guid = ГлобальноУникальныйИдентификатор;
Спр.Записать();  
...не прокатит, потому что "Спр" - ссылка, а не спозиционированный обьект
5 HawkEye
 
13.05.19
22:16
(0) что говорит отладчик? что говорит сообщить?
6 victuan1
 
14.05.19
05:51
Не нужен реквизит вообще.
ЗначениеВстрокуВнутр(СпрСотр.ТекущийЭлемент()) уже дает уникальное значение для любого элемента справочника. Нет необходимости его хранить дополнительно в виде реквизита.
7 hhhh
 
14.05.19
06:06
(6) нет это фигня к вас получится. в 2х базах будет одно и то же значение для элемента справочника. Особенно, если базы созданы друг из друга копированием.
8 DrZombi
 
гуру
14.05.19
06:14
(0) Любопытный подход, "если уидов нет, мы их сгенерим, что бы быль"

Дарю http://scheglov-sergey.narod.ru/1c/sprav.htm
9 victuan1
 
15.05.19
04:49
(7) Во-первых, задача стоит перенести данные из 7.7 в 8.3. Т.е. вторая база уже никак не будет результатом копирования первой.
Во-вторых, никто не мешает к УИД добавить произвольный префикс базы.
Именно такой принцип синхронизации используется при переносе данных между базами 1С 7.7, например, здесь http://catalog.mista.ru/public/14395/
Так что это уже не теория, а практика проверенная временем.