Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: запись нового реквизита справочника типа "Строка"

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует