Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Избитый вопрос по битой ссылке Единицы измерения в УТ10.3

Избитый вопрос по битой ссылке Единицы измерения в УТ10.3
Я
   МимохожийОднако
 
25.05.18 - 08:27
УТ10.3
есть позиция номенклатуры, в которой битые ссылки на единицах измерения. Попытался перевыбрать единицы измерения. Но при записи номенклатуры ругань на то, что единицы измерения уже использованы в документах и регистрах.
Попытался программно поменять.
..
    Ном=Номенклатура.ПолучитьОбъект();
    Ном.ОбменДанными=Истина;
    Ном.БазоваяЕдиницаИзмерения=БазоваяЕдиницаИзмерения;
    Ном.ЕдиницаДляОтчетов=ЕдиницаДляОтчетов;
    Ном.ЕдиницаХраненияОстатков=ЕдиницаХраненияОстатков;
    Ном.Записать();

Результат отрицательный.
ТИИ с восстановлением объектов не хочу запускать, т.к. может появиться неизвестная кучка ненужных объектов.
...
Дело осложняется тем, что у единиц измерения есть Владелец.
Может есть лайфхак для выборочного восстановления битых ссылок?
 
 
   Гипервизор
 
1 - 25.05.18 - 08:36
(0) Так может заменить в документах и регистрах?
   МимохожийОднако
 
2 - 25.05.18 - 08:38
(1) Замена проблематична. Базе лет 6. Большой объем.
..
Но я решил задачку следующим кодом
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ЗафиксироватьВладельцаЕдиницы(ЕдиницаДляОтчетов);
    ЗафиксироватьВладельцаЕдиницы(ЕдиницаХраненияОстатков);

    Ном=Номенклатура.ПолучитьОбъект();
    Ном.ОбменДанными.Загрузка=Истина;
    Ном.БазоваяЕдиницаИзмерения=БазоваяЕдиницаИзмерения;
    Ном.ЕдиницаДляОтчетов=ЕдиницаДляОтчетов;
    Ном.ЕдиницаХраненияОстатков=ЕдиницаХраненияОстатков;
    Ном.Записать();
    
    Сообщить("Записали единицы номенклатуры "+Ном.Наименование);
КонецПроцедуры

Процедура ЗафиксироватьВладельцаЕдиницы(Единица)
    Ед=Единица.ПолучитьОбъект();
    Ед.Владелец=Номенклатура;
    Ед.Записать();
КонецПроцедуры
...
На форме перед запуском подготавливаю элементы измерения.
Для разовой задачи помогло.

Спасибо за внимание
   Сияющий в темноте
 
3 - 25.05.18 - 09:34
Если битые ссылки,то ссылки есть,а элемента нету.
Что мешает через установитьссылкунового добавить эту ссылку к новому элементу?
и больше не переносите номенклатуру без единиц
   hhhh
 
4 - 25.05.18 - 09:37
(2) можно запустить тии на копии, а потом выгрузка-загрузка xml перенести в рабочую только то, что нужно.
   МимохожийОднако
 
5 - 25.05.18 - 09:37
(3) Примерчик кода сбрось для затравки.
Ошибка образовалась при неудачной замене дублей номенклатуры. Это не новый элемент номенклатуры, а давно используемый.
   МимохожийОднако
 
6 - 25.05.18 - 09:38
(4) ТИИ на пробной копии показала кучу других ошибок ))
А восстановленные  объекты приобрели неудобоваримый вид.
   mehfk
 
7 - 25.05.18 - 09:46
(0) >> Может есть лайфхак для выборочного восстановления битых ссылок?
Есть. Вызываешь программиста и ставишь задачу.
   МимохожийОднако
 
8 - 25.05.18 - 19:12
(7) Шутка засчитана. Спасибо. А по делу?
   mehfk
 
9 - 25.05.18 - 20:27
Увольняйся, пока не уволили за несоответствие занимаемой должности.
   МимохожийОднако
 
10 - 25.05.18 - 20:35
(9) Мне неоткуда увольняться. Я свободный художник. Ты чего такой злой? Пятница вроде. )) Подскажи, если спец. Стебаться и я могу.
 
 Рекламное место пустует
   mehfk
 
11 - 25.05.18 - 20:38
Поскажу, если оплатишь.
   МимохожийОднако
 
12 - 25.05.18 - 20:39
(11) Не оплачу. Давай,до свидания.
   mehfk
 
13 - 25.05.18 - 20:39
Нищеброд.
   МимохожийОднако
 
14 - 25.05.18 - 20:40
(13) Это твоя подпись
   mehfk
 
15 - 25.05.18 - 20:42
Да ты еще и скудоумен.
   Cyberhawk
 
16 - 26.05.18 - 00:03
Я так и не понял: сколько платят за решение вопроса? ))
   МимохожийОднако
 
17 - 26.05.18 - 05:40
(16) Вопрос я решил еще в (2).
ОФФ: Я не заказчик. Из-за невинного вопроса про "лайфхак" на будущее - получил небольшой срач в ответ... На пустом месте... Всё как в жизни ))
   Serg_1960
 
18 - 26.05.18 - 08:12
(17) Sorry,  свой избитый вопрос ты не решил - ты его усложнил .
   МимохожийОднако
 
19 - 26.05.18 - 08:20
(18) ОК. Но кроме критики хотелось бы пример кода или хотя бы алгоритм исправления на будущее.
   MaxS
 
20 - 26.05.18 - 08:32
(19) Смысл примерно такой:
ОбъектНовойЕИ.УстановитьСсылкуНового(БитаяСсылкаЕИ);

EndOff
Много критики... ;)
   МимохожийОднако
 
21 - 26.05.18 - 08:36
(20) Спасибо.
   Serg_1960
 
22 - 26.05.18 - 08:43
(19) В понедельник, если не забуду.
   Serg_1960
 
23 - 28.05.18 - 11:10
//- Видишь суслика?

    //- Нет.

    //- И я не вижу. А он есть.

    //(ДМБ)

    
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Хозяин,
    |    Номенклатура.ЕдиницаХраненияОстатков КАК Суслик
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.ЕдиницаХраненияОстатков <> ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
    |    И Номенклатура.ЕдиницаХраненияОстатков.Ссылка ЕСТЬ NULL";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        GUID = "Проверка логической целостности... " + Выборка.Суслик;    // имитация работы со строкой из ТИИ

        GUID = Сред(GUID, Найти(GUID, "<Объект не найден>") + 20);        // выделяем начало ссылки

        GUID = Сред(GUID, 1, Найти(GUID, ")") - 1);                        // отрезаем конец строки

        GUID = Сред(GUID, Найти(GUID, ":") + 1);                        // освобождаемся от кода вида ссылки

        GUID = Сред(GUID,25,8) + "-" + Сред(GUID,21,4) + "-" + Сред(GUID,17,4) + "-" + Сред(GUID,1,4) + "-" + Сред(GUID,5,12);
        GUID = Новый УникальныйИдентификатор(GUID);
        // Оно, конечно, нафиг не нужно было так извращаться - сама ссылка уже есть в запросе.

        // Но мы делаем вид, что якобы сканируем протокол ТИИ, - так оно веселее :)

        Суслик = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
        Суслик.Владелец = Выборка.Хозяин;
        Суслик.УстановитьСсылкуНового(Справочники.ЕдиницыИзмерения.ПолучитьСсылку(GUID));
        Суслик.Записать();    // можно получить и открыть форму, чтобы сразу дозаполнить... но лень-матушка писать :)

        
    КонецЦикла;
   МимохожийОднако
 
24 - 28.05.18 - 11:18
(23) Респект. Спасибо.
   Cyberhawk
 
25 - 28.05.18 - 19:57
Не учел английский вариант "Объект не найден"
   Serg_1960
 
26 - 28.05.18 - 20:31
А также языки: азербайджанский, армянский, стран Прибалтики, Беларуси, Болгарии, Молдавии, Грузии и наших ближневосточных коллег.
   Cyberhawk
 
27 - 28.05.18 - 20:41
(26) Пожалуйста:
vi     Không tìm thấy đối tượng
tr     Nesne bulunamadı
ro     Obiectul nu a fost găsit
pl     Obiekt nie odnaleziono
en     Object not found
de     Objekt nicht gefunden
lt     Objektas nerastas
lv     Objekts nav atrasts
uk     Об`єкт не знайдено
bg     Обектът не е намерен
ru     Объект не найден
kk     Объект табылған жоқ
ka     ობიექტი არ მოიძებნა

Но ты уже и сам понял, что твой вариант не самый надежный
   Serg_1960
 
28 - 28.05.18 - 20:57
Feci quod potui faciant meliora potentes
   Сияющий в темноте
 
29 - 29.05.18 - 09:56
Отсутствие обьекта проще проверять запросом по ссылке из привегилерованного модуля,запрос будет быстрее чем получение обьекта,особенно в случае,когда обьект неожиданно найдется


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