Имя: Пароль:
1C
1C 7.7
v7: после записи элемента пропадает ссылка
0 moon_sparckle
 
27.06.12
14:14
Я думала, что 77 меня уже ничем не может удивить. Поэтому сегодня усиленно протираю тряпочкой монитор и глаза.
Полезла в поиск - действительно есть такая проблема.
Вот код:
Попытка
СпрЗК.Записать();  
Сообщить(СпрЗК.PART_NAME_RUS);    
Исключение
Сообщить(ОписаниеОшибки()+ " "+СпрЗК.PART_NAME_RUS,"!");  
КонецПопытки;
Так вот, в отладчике на момент записи СпрЗК выбран, а после записи пустой.
1 andrewks
 
27.06.12
14:22
ТекущийЭлемент()
2 Ёпрст
 
27.06.12
14:23
(0) видать перед этим есть выборка по реквизиту
3 Ёпрст
 
27.06.12
14:23
или поиск по реквизиту
4 Господин ПЖ
 
27.06.12
14:24
(1) + 1000

старый глюк-с
5 moon_sparckle
 
27.06.12
14:25
СпрЗК.ТекущийЭлемент() после записи пустой
(3) да поиск по реквизиту есть
6 asady
 
27.06.12
14:29
(1)+1 порваный баян!
7 shergar
 
27.06.12
14:30
(0)
Попробуйте использовать две переменных для одного и того же справочника
Одна для записи, другая для поиска
8 moon_sparckle
 
27.06.12
14:33
вот так сделала

           Если СпрЗК.НайтиПоРеквизиту("PART_NO", ЗначениеПоиска, 1) = 0 Тогда
               СпрЗК.Новый();
               НужноЗаписать = НужноЗаписать + 1;    
           Иначе
               Ссылка = СпрЗК.ТекущийЭлемент();
           КонецЕсли;

                   Попытка
                       СпрЗК.Записать();  
                       Ссылка = ?(ПустоеЗначение(СпрЗК.ТекущийЭлемент()) = 1, Ссылка, СпрЗК.ТекущийЭлемент());
                       Сообщить(Ссылка.PART_NAME_RUS);    
                       й=2;
                   Исключение
                       Сообщить(ОписаниеОшибки()+ " "+Ссылка.PART_NAME_RUS,"!");  
                   КонецПопытки;
но про ТекущийЭлемент() и баян так и не поняла. Нет там текущего элемента
9 Ёпрст
 
27.06.12
14:37
(8) сбивается позиционирование из-за метода НайтиПоРеквизиту + Записать()
Запоминай в переменной, потом если надо, ищи через НайтиЭлемент()
10 palpetrovich
 
27.06.12
14:41
так наверное будет вернее
Если СпрЗК.НайтиПоРеквизиту("PART_NO", ЗначениеПоиска, 1) = 0 Тогда
        СпрЗК.Новый();
        СпрЗК.PART_NO = ЗначениеПоиска;
    СпрЗК.Записать();  
КонецЕсли;
Ссылка = СпрЗК.ТекущийЭлемент();
11 moon_sparckle
 
27.06.12
14:49
Спасибо.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший