Имя: Пароль:
1C
1С v8
Битая ссылка вместо ед. измерения, или как так у меня получилось?
,
0 FOI1977
 
26.11.13
11:34
Конфа УТ10 с CRM от Rarus

Сделал автогенерацию артикула при записи элемента справочника номенклатура.
Теперь ИНОГДА вылазит вместо Единицы хранения остатков битая ссылка:
<Объект не найден> (87:966900237d06eb3811e35665c93ce983)

Вот кусок кода:

Процедура ПриЗаписи(Отказ)

    Если Услуга Тогда
        Если ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
            ПроверитьЕдиницуХраненияОстатков(Отказ);
        КонецЕсли;
    Иначе
        
        //+ФОИ сгенерим артикул, коли не заполнили ручёнками
        Если ПустаяСтрока(Артикул) Тогда
            
            СпКнопок = Новый СписокЗначений;
            СпКнопок.Добавить("Ввести руками");
            СпКнопок.Добавить("Сгенерировать");
            Ответ = Вопрос("Артикул не задан, сгенерировать?", СпКнопок);
            
            Если Ответ = "Ввести руками" Тогда
                Отказ = Истина;
            Иначе
                Артикул = "~#" + СокрЛП(Код);
            КонецЕсли;        
                
        КонецЕсли;
        //-ФОИ



При чём закономерности не выявлено. Как вы думаете в чём дело?
1 Широкий
 
26.11.13
11:36
RLS?
2 Стрелок
 
26.11.13
11:36
в 8-ке не силён но по логике что то сомнительно что единица только для услуги ставится. думается мне ты какой то кусок кода вытер случайно
3 FOI1977
 
26.11.13
11:36
(1) Иногда?
4 dj_serega
 
26.11.13
11:37
А банальных прав на непосредственное удаление, случайно, ни у кого нет?
5 FOI1977
 
26.11.13
11:37
(2) Услуга булев реквизит. Если услуга Истина (на форме галка стоит) тогда всё как было, Иначе - мой код.
6 dmpl
 
26.11.13
11:38
(0) Запись новой единицы хранения остатков и номенклатуры происходит в разных транзакциях?
7 FIXXXL
 
26.11.13
11:38
не пихай свои куски в типовые ЕСЛИ, пиши отдельно
8 FOI1977
 
26.11.13
11:38
(4) Уверяют что Именно при генерации артикула это происходит. Самому смоделировать не удалось.
9 FOI1977
 
26.11.13
11:40
(7) Обоснуй.
1. Мне это уже не обновлять, а только дописывать.
2. думаешь в общем модуле это бы лучше смотрелось?
10 dj_serega
 
26.11.13
11:40
(8) Ну тогда как вариант (6) .
11 FOI1977
 
26.11.13
11:42
(10) То есть, намекаешь, ПередЗаписью сделать генерацию.

Но меня всё равно сбивает то что это не всегда выскакивает, а изредка.
12 dmpl
 
26.11.13
11:44
(11) Ну дык только когда вылезает ошибка ожидания блокировки транзакции.
13 FIXXXL
 
26.11.13
11:47
(9) просто работать потом легче :)
и нафига пользователя спрашивать, если все равно генеришь?
14 FOI1977
 
26.11.13
11:48
(12) Скорее всего.
(13) Вдруг продаван просто забыл его ввести. Они такие.
15 FOI1977
 
26.11.13
11:49
(13) Скорее обновляться проще, но этой конфе уже не обновляться. Не видать им управляемых форм.
16 Sabbath
 
26.11.13
11:52
(0) Вылетает при блокировке, при повторной записи реквизит объект то заполнен, но в базе его нет.

Чего-то ты какой-то текст имхо не связанный с проблемой скинул), не вижу тут где генерится артикул и где присваивается единица измерения
17 FIXXXL
 
26.11.13
11:52
(14) из этого
          Если Ответ = "Ввести руками" Тогда
                Отказ = Истина;
            Иначе
                Артикул = "~#" + СокрЛП(Код);

            КонецЕсли;        

выходит, что у продавана нет возможности кроме как генерации
генери в фоне, не спрашивай
18 FOI1977
 
26.11.13
11:57
(17) Нет. Отказ записи, форма элемента открыта, вводи руками. Есть возможность, не спорь.
19 Господин ПЖ
 
26.11.13
11:57
может где-то "рядом" идет выборка единиц через .Выбрать()... а там ж.па с чистотой чтения...
20 FOI1977
 
26.11.13
12:00
(19) Пока перенёс в ПослеЗаписи. Вроде событие возникает когда уже всё записано. Посмотрим.
21 samozvanec
 
26.11.13
12:05
(18) транзакция записи номенклатуры откатывается, а единица была записана и указана в реквизите?
22 Sabbath
 
26.11.13
12:10
(21) наверняка была записана, ссылка присвоена реквизиту, а транзакция потом откатилась, второй раз записывается, проверку заполнения, естественно, проходит, но ссылки такой нет
23 Sabbath
 
26.11.13
12:13
(0) мне вот еще интересно, елси в ПриЗаписи заполняется Реквизит (а я так понял это реквизит объекта), то после записи обхект должен просить перезаписаться, по идее, и надо записывать второй раз
24 Sabbath
 
26.11.13
12:14
+(23) Я про Артикул
25 Господин ПЖ
 
26.11.13
12:16
>ПриЗаписи заполняется Реквизит (а я так понял это реквизит объекта), то после записи обхект должен просить перезаписаться

почему? ПриЗаписи - это после начала транзакции, но до действий в базе
26 Sabbath
 
26.11.13
12:27
(25) Помню, что не на УФ было так, присваиваешь реквизиту значение, если не перед записью, а дальше по транзакции, то у объекта в форме отображается модифицированность и при закрытии опять просит записать.
27 Sabbath
 
26.11.13
12:28
(25) из проф разработки
Событие ПриЗаписи вызывается после того, как была выполнена
запись данных в базу данных, но до окончания транзакции записи.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс