Имя: Пароль:
1C
 
Запись в регистр сведений, глюк, помогите.
0 НоваяВолна
 
21.07.21
14:36
Создал новый регистр сведений. Непериодический, независимый. Имеет всего два измерения (плюс ресурсы) ЛицевойСчет и Телефон. Задача его первоначально заполнить данными. Данные получаю из Документов События и РегистрСведений.КонтактнаяИнформация. Причина таких танцев с бубном в том, что в разных источниках номера телефонов записывались в разном формате. Надо же привести к единому +7ХХХХХХХХХХ где первые 4 цифры могут буть кодом города или все 10 номер мобильного телефона.
   Создал обработку, которая единоразово должна заполнить регистр. Сначала собираю данные, меняю формат номера телефона и вывожу на форму обработки. После этого пытаюсь записать в регистр.
  

  Процедура КнопкаВыполнитьНажатие(Кнопка)
    НаборЗаписей = РегистрыСведений.Модус_ТелефоныАбонентов.СоздатьНаборЗаписей();
    НаборЗаписей.Записать();
    
    НаборЗаписей = РегистрыСведений.Модус_ТелефоныАбонентов.СоздатьНаборЗаписей();
    Для Каждого Стр Из СписокТелефонов Цикл
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.ЛицевойСчет = Стр.ЛицевойСчет;
        НоваяЗапись.Телефон = Стр.Телефон;
    КонецЦикла;    
        НаборЗаписей.Записать();
КонецПроцедуры




Получаю ошибку {ВнешняяОбработка.ЗаполнениеРегистраТелефоныАбонентов.Форма.Форма.Форма(45)}: Ошибка при вызове метода контекста (Записать)
        НаборЗаписей.Записать();
по причине:
Запись с такими ключевыми полями существует! : Модус_ТелефоныАбонентов: , +7904ХХХХ530 (Регистр сведений: Телефоны абонентов; Номер строки: 24)

При этом запись с этим же номером вижу, но ЛицевойСчет отличается.
В чем я неправ, подскажите?
1 НоваяВолна
 
21.07.21
14:39
+ (1) данные запросом получаю в ТЗ, ТЗ сворачиваю по "ЛицевойСчет, Телефон2
2 НоваяВолна
 
21.07.21
14:40
+ (1) Из этой ТЗ (свернутой) вывожу на форму обработки (для визуального контроля) и только с ТЧ обработки идет запись в регистр
3 dubolom
 
21.07.21
14:41
НаборЗаписей отладчиком смотрели в момент записи?
4 НоваяВолна
 
21.07.21
14:43
(3) нет, а что я там могу увидеть?
5 dubolom
 
21.07.21
14:43
(4) Например, дублирование записей по лицевому счёту и телефону:)
6 НоваяВолна
 
21.07.21
14:45
(5) посмотрю. Но видимо уже завтра с утра
7 OldCondom
 
21.07.21
14:46
Вот это программисты от бога просто, вот это новые волны. Зачем мне отладчик, что я там увижу? И правда.
Только что звонит программист, отключал ли я регламент. "Ты в консоли заданий смотрел?", "Нет", "В ЖР смотрел?", "Нет", "Остальные регламенты работают", "Не знаю", "Нахера мне звонишь?".
8 Kassern
 
21.07.21
14:47
(0) а зачем вы в цикле набор заполняете? Получите результирующую таблицу с уникальными связями измерений и загрузить в ваш набор.
9 НоваяВолна
 
21.07.21
14:50
(8) ну как бы я с ТЧ обработки заполняю регистр, а вывожу в ТЧ для визуального контроля
10 Kassern
 
21.07.21
14:51
(9) а в чем проблема получить ТЗ из ТЧ? Вы проверяете на уникальность связей измерений?
11 НоваяВолна
 
21.07.21
14:51
(7) да, не чета старым годонам)))
12 НоваяВолна
 
21.07.21
14:51
(10) не подумал, попробую
13 dubolom
 
21.07.21
14:52
(9) Для визуального контроля кагбэ отладчик существует.
14 dubolom
 
21.07.21
14:53
И два раза записывать НаборЗаписей не обязательно, достаточно один раз его создать и записать с замещением (по умолчанию).
15 OldCondom
 
21.07.21
14:54
(10) да пусть хоть каждый раз набор создает с цикле, ошибка-то в другом.

"Запись с такими ключевыми полями существует!
При этом запись с этим же номером вижу, но ЛицевойСчет отличается."
Платформа пыталась сказать, что не сделала запись с одинаковыми полями. Ты смотришь в регистр, одинаковых полей не видишь. Но платформа не умеет сказать: "Правильно, я же не сделала дублирующую запись и выдала ошибку, поэтому ты и не видишь дублей!".
16 Kassern
 
21.07.21
14:54
(14) для чего эти танцы с бубном, если метод загрузить и так очистит и запихнет что есть в тз?)
17 Kassern
 
21.07.21
14:55
(15) поэтому я и написал, чтобы он проконтролировал уникальность связи измерений.
18 dubolom
 
21.07.21
14:55
(16) Тоже верно.
19 НоваяВолна
 
21.07.21
14:56
(15) я смотрю в ТЧ, которую передаю на запись. А не в то что придумала себе платформа
20 ДенисЧ
 
21.07.21
14:58
(19) То есть ты смотришь в то, что придумал ты, а не в то, что выполняет система...
Скажите, товарищ прапрорщик, а у вас на мониторе трава ровно пострижена?
21 Исновая
 
21.07.21
15:15
(20) там газон только у здания казначейства, так шо не подстрижена
22 lodger
 
21.07.21
15:17
Процедура КнопкаВыполнитьНажатие(Кнопка)
НаборЗаписей = РегистрыСведений.Модус_ТелефоныАбонентов.СоздатьНаборЗаписей();
ТабЗнач = СписокТелефонов.выгрузить();
ТабЗнач.Свернуть("ЛицевойСчет,Телефон");
НаборЗаписей.Загрузить(ТабЗнач);
НаборЗаписей.Записать(Истина);
КонецПроцедуры
23 Lexandr
 
21.07.21
16:07
Возможно формат измерения "режет" лицевой счет в результате чего при записи разные лиц. счета на твой взгляд в ТЗ, а  реально пытается записать одно и то же значение.
24 Сергиус
 
21.07.21
16:53
(0)У тебя походу пишет пустой лицевой счет в регистр
25 OldCondom
 
21.07.21
17:00
да Путин отладку по http подключает и правит значения в ТЗ, дублируя записи.
26 Кулибин
 
21.07.21
17:49
(25) ))) спасибо )
28 НоваяВолна
 
22.07.21
06:04
(20) хотите сказать что у меня запрос не прав? :-)
29 ДенисЧ
 
22.07.21
06:28
(28) Я хочу сказать, что нечего на зеркало пенять, коли.
Платформе и субду видней, что ты реально пытаешься записать.
30 OldCondom
 
22.07.21
06:31
(27) быдло, английский подучи. Хотя нет, оставайся на том же уровне в русском языке, английском, программировании, культуре и всех остальных. Чтобы более развитым собратьям легче было расти.
Уму непостижимо, вторые сутки идут, а запись в регистр не сделана.
31 hhhh
 
22.07.21
06:33
(22) ресурсы же вы все грохнули таким способом.
32 НоваяВолна
 
22.07.21
08:16
(30) ты из битвы экстрасенсов? Записи в регистр сделаны ещё вчера)))
33 Мимохожий Однако
 
22.07.21
09:08
(27) ОФФ. Вроде бы взрослый мальчик...(
34 lodger
 
22.07.21
09:29
(31) в куске кода (0) тоже нет ресурсов.
35 НоваяВолна
 
23.07.21
14:14
(34) так обработка в (0) нужна была для первичного заполнения регистра и все... надо было заполнить только измерения и измерение Телефон привести к формату +7ХХХХХХХХХХ. Было почти 1,5 миллиона записей, формат полная каша.. В итоге удалось записать регистр в нужном формате, оставив не более сотни "левых записей". В дальнейшем операторы будут их видеть, править/удалять из регистра. Как раз для этих целей созданы Булевы ресурсы. Как-то так...))
36 НоваяВолна
 
23.07.21
14:23
(0) да!!!! А ступил то в том, что измерению Телефон дал длину 20 символов, нарвавшись на 6-ти значный городской [пробел, запятая] 12 знаков мобильный +7ХХХХХХХХХХ.
  Потом уже нашел записи вида ХХХХХХ,ХХХХХХ,ХХХХХХ и ХХХХХХ,ХХХХХХ,ХХХХХХ,ХХХХХХ с одним и тем же Лицевым, но из разных источников. Причем первые три ХХХХХХ одинаковые. Поэтому длин обрезалась и номер получался одинаковым.. .Тупанул, не спорю