Имя: Пароль:
 
1C
1С v8
При записи регистра сведений "Значение поля не соответствует установленному отбору"
0 Eastert
 
15.08.18
09:50
У регистра есть два измерения "Номенклатура", "Уникальный идентификатор записи", Ресурс "Значение".
Пользователю поле "Уникальный идентификатор записи" не видно, хочу при записи программно его заполнять

В модуле набора записей регистра

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

При этом получаю ошибку "Запись не верна! Значение поля не соответствует установленному отбор. Поле 'УникальныйИдентификаторЗаписи'"
Смотрю в "ЭтотОбъект.Отбор", там почему-то два элемента Номенклатура и УникальныйИдентификаторЗаписи заполнены своими значениями. Что где не так я делаю?
1 Малыш Джон
 
15.08.18
09:55
(0) там где ты набор записей записываешь - ты этот отбор и накладываешь
2 Eastert
 
15.08.18
09:56
(1) где я набор записываю? Это делает пользователь в форме списка регситра
3 Малыш Джон
 
15.08.18
09:56
+(1) потом у набора с отбором по одному значению измерения, ты в это измерение пихаешь другое значение и теперь удивляешься, что значение измерение не соответствует отбору?
4 Малыш Джон
 
15.08.18
09:56
(2) конечно пользователь. У него ведь консоль выполнения и он там прям так и пишет: НаборЗаписей.Записать().
5 Малыш Джон
 
15.08.18
09:57
(2) что тупим? значит в форме списка у тебя отбор накладывается
6 Cyberhawk
 
15.08.18
10:01
"два элемента Номенклатура и УникальныйИдентификаторЗаписи заполнены своими значениями" + "хочу при записи программно его заполнять" = ?
7 Cyberhawk
 
15.08.18
10:02
Зачем тебе _пере_заполнять значение УИДа?
8 Eastert
 
15.08.18
10:10
(3) Да, надо просто добавить

    Если ЭтотОбъект.Отбор.УникальныйИдентификаторЗаписи.Значение = "" Тогда
        ЭтотОбъект.Отбор.УникальныйИдентификаторЗаписи.Значение = УникальныйИдентификаторТекущейЗаписи;
    КонецЕсли;
9 Eastert
 
15.08.18
10:10
(7) я не перезаполняю его, это просто строковое поле, измерение регистра сведений. Он пустой перед записью, и я его заполняю
10 Малыш Джон
 
15.08.18
10:16
(8) то есть поставил костыль - и успокоился?)
http://pics.rsh.ru/img/_g015s8vu.jpg
11 Eastert
 
15.08.18
10:18
(10) а как быть?
12 dmpl
 
15.08.18
10:19
(11) Для чего этот идентификатор нужен в измерении?
13 Малыш Джон
 
15.08.18
10:20
(11) ну разберись, откуда там отбор берется,
может он там не нужен и его нужно убрать или наоборот, это новый механизм платформы и то что ты делаешь - это бессмысленно
14 Eastert
 
15.08.18
10:20
(12) иначе нельзя будет для одной и той же номенклатуры делать несколько записей
15 dmpl
 
15.08.18
10:21
(14) А как ты потом будешь различать какая запись что значит?
16 Cyberhawk
 
15.08.18
10:21
"два элемента Номенклатура и УникальныйИдентификаторЗаписи заполнены своими значениями"
"Он пустой перед записью"
Что-то ты завираешься
17 Eastert
 
15.08.18
10:21
(15) в этом нет цели
18 Eastert
 
15.08.18
10:22
(16) нет, ты не понял
отбор заполнен своим значением, как правило пустой строкой
а измерение в наборе пустое, поэтому я программно его заполняю
19 dmpl
 
15.08.18
10:22
(17) Зачем тогда регистр сведений? Клади в ТЧ элемента номенклатуры.
20 Cyberhawk
 
15.08.18
10:23
(12) Известно для чего: например, когда требуемая гранулярность не покрывается периодичностью регистра
21 Eastert
 
15.08.18
10:24
(19) может быть так и лучше, просто потом запросами регистр читать легче
22 dmpl
 
15.08.18
10:26
(21) Зато писать в него сложнее: тебе либо по 1 записи надо добавлять, либо читать набор записей с отбором только по номенклатуре, добавлять/модифицировать некоторые записи и записывать набор обратно, тоже с отбором только по номенклатуре.
23 Малыш Джон
 
15.08.18
10:27
(22) запись - ничто, чтение - всё
24 dmpl
 
15.08.18
10:28
(20) Тут тогда последовательный счетчик логичнее - по нему хотя бы сортировать можно.
25 Cyberhawk
 
15.08.18
10:38
(24) Если нужен порядок, то да (но без блокировки тогда никак). Но порядок внутри одной секунды (максимально возможная периодичность регистра) бывает что и не нужен.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший