Имя: Пароль:
1C
 
Не меняется наименование и артикул в номенклатуре при изменении обработкой
, ,
0 val245
 
16.05.21
15:44
Здравствуйте

В Бухгалетрии 3.0 ошибочно вбили вместо наименования артикулы и наоборот. Теперь обработкой пытаюсь перебить. Код на сервере выполняется следующий

        ВыборкаНоменклатура = Справочники.Номенклатура.Выбрать();
    
    КатегорияПустая = Справочники.КатегорииНоменклатуры.БезКатегории;
    
    
    Пока ВыборкаНоменклатура.Следующий()Цикл
        Если ВыборкаНоменклатура.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        
        НоменклатураОбъект = ВыборкаНоменклатура.ПолучитьОбъект();
        
        НоменклатураОбъект.ОбменДанными.Загрузка = Истина;
        
        БуферНаименование = НоменклатураОбъект.Наименование;
        БуферАртикул = НоменклатураОбъект.Артикул;
        
        НоменклатураОбъект.Наименование = БуферАртикул;
        НоменклатураОбъект.НаименованиеПолное = БуферАртикул;
        НоменклатураОбъект.Артикул = БуферНаименование;
        НоменклатураОбъект.КатегорияНоменклатуры = КатегорияПустая;
        
        Попытка
            НоменклатураОбъект.Записать();
        Исключение
            СообщитьПользователю(ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;

При прослеживании точкой останова наименования и артикулы меняются, но когда захожу в предприятии в номенклатуру, все остается как было. вместо артикула наименование и наоборот, при этом категоряи проставляется. Может кто знает, что мешает поменять данные? Может где-то обработка перехватиывается?
1 acht
 
16.05.21
15:48
Небось, четное число раз обработку выполняешь?
2 ДенисЧ
 
16.05.21
15:49
Поставить точку на записать(), включить замер производительности и сделать шаг. Выключить замер и вдумчиво раскурить его вывод.
3 val245
 
16.05.21
15:49
Я об этом подумал) Нет. Каждый раз ничего не меняется...
4 acht
 
16.05.21
15:50
Или они там вообще в других местах хранятся как периодические... впрочем, я БП3 не помню.
5 val245
 
16.05.21
15:55
(4)Да вроде все в реквизитах, все как нужно
6 val245
 
16.05.21
16:01
(2) Сделал так, вроде ничего подозрительного не нашел пока что.. посмотрю еще..
7 val245
 
16.05.21
16:15
Нашел. Один новый реквизит, обязательный к заполнению, был не заполнен. Просто странно, что не выходила ошибка и не выполнялось исключение, хотя номенклатура не записывалась
8 RomanYS
 
16.05.21
16:46
(3) Значит за раз выборка обходит номенклатуру два раза. Вообще использовать выборку для изменения кода/наименования рисково. Лучше запросом выбрать
9 Злопчинский
 
16.05.21
21:41
выборка в каком порядке выполняется? в порядке кода? скорее всего - в порядке наименования.... а ты наименование в выборке меняешь..
???
10 acht
 
16.05.21
23:31
(7) Одна из черепашек
в (0), значит, "при этом категоряи проставляется", а в (7) уже "номенклатура не записывалась"
11 Cthulhu
 
17.05.21
01:10
(7): потому что Отмена = Истина
12 val245
 
17.05.21
09:58
Теперь вот что произошло. Если зайду в номенклатуру, то все встало на места, но представленрие в списке остается то же. То есть в списке номенклатура отображается как Артикул
13 val245
 
17.05.21
10:03
Хотя нет не совсем так. Сделал таблицу для номенклатуры. Выбираю там номенклатуру, нажимаю обработку. Артикуль и наименование меняется местами. Захожу в список, все меняется. Но вот в самой таблице почему то все остается как есть, представление происходит по артикулу, хотя отобраджение таблицы обновил как Элементы.Товары.Обновить();
Да и если закрыть таблицу и выбрать из выпадающего списка, то почему-то иартикл и наименование как-будто не поменялись местами
14 val245
 
17.05.21
10:24
Как можно после обработки перечитать данные в таблице? ОбновитьОтображениеДанных() и Элементы.Товары.Обновить() на клиенте не помогают
15 acht
 
17.05.21
10:30
(14) Там у тебя еще представление меняется из-за смены наименований. Надо кэш представлений сбрасывать. Попробуй ОповеститьОбИзменении из глобального контекста. Ну или просто новый сеанс 1С.
16 val245
 
17.05.21
10:39
(15) Да. Помогло. Спасибо
17 Serg_1960
 
17.05.21
10:49
Излишне сложно написано :(
НоменклатураОбъект.НаименованиеПолное = НоменклатураОбъект.Артикул;
НоменклатураОбъект.Артикул = НоменклатураОбъект.Наименование;
НоменклатураОбъект.Наименование = НоменклатураОбъект.НаименованиеПолное;
18 pechkin
 
17.05.21
11:30
(17) может у него условие, что нельзя доп  переменные использовать
19 pechkin
 
17.05.21
11:31
(17) а нет это у тебя такое условие откуда то взялось