Имя: Пароль:
1C
1С v8
замещение записи в непереодическом независимом регистре сведений
0 Oblako486
 
22.01.23
22:03
для каждого строка из объект.ДанныеЗаказов цикл
            НоваяЗапись = РегистрыСведений.АдресаКоординаты.СоздатьМенеджерЗаписи();
            НоваяЗапись.Контрагент = строка.контрагент;
            НоваяЗапись.Адрес = строка.адрес;
            НоваяЗапись.Прочитать();
            Если НоваяЗапись.Выбран()   Тогда
                НоваяЗапись.Широта = строка.Широта;
                НоваяЗапись.Долгота = строка.Долгота;
                НоваяЗАпись.Записать();
            Иначе
                НоваяЗапись.Контрагент = строка.Контрагент);
                НоваяЗапись.Адрес = строка.Адрес;
                НоваяЗапись.Широта = строка.Широта;
                НоваяЗапись.Долгота = строка.Долгота;
                НоваяЗАпись.Записать();
            
            КонецЕСли;
        
    КОнецЦикла;
1 Oblako486
 
22.01.23
22:03
Новый записи создаются, старые не замещаются
2 Oblako486
 
22.01.23
22:03
в регистре два измерения Контрагент и Адрес
3 Oblako486
 
22.01.23
22:04
в чем может быть дело, регистр настроен не верено или код?
4 Oblako486
 
22.01.23
22:11
Дублей нет. Отладчиком, вроде все присвается.
5 Oblako486
 
22.01.23
22:11
Но замещение не происходит, остаются старые данные
6 Oblako486
 
22.01.23
22:19
Если НоваяЗапись.Выбран()   Тогда
                НоваяЗапись.Удалить();

Так тоже не удаляется, и ошибок нет.
7 Oblako486
 
22.01.23
22:28
в пользовательском режиме, вроде нормально всё, редактирование, удаление.
8 eddy_n
 
22.01.23
22:42
У тебя синтаксическая ошибка для начала в коде здесь. Рука дрогула или как?
НоваяЗапись.Контрагент = строка.Контрагент);
9 RomanYS
 
22.01.23
23:09
Зачем вообще читать и проверять в условие, если в результате перезапись при любых условиях?
10 RomanYS
 
22.01.23
23:11
НоваяЗапись = РегистрыСведений.АдресаКоординаты.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(НоваяЗапись, строка);
НоваяЗапись.Записать(Истина);//Замещать = Истина
11 Oblako486
 
23.01.23
10:56
Проблема оказалась в данных, в ТЧ несколько одинаковых строк, и нижние строки замещали запись повторно на предыдущие значения. Создавалась иллюзия что замещение не происходит. (10) тоже работает.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший