Имя: Пароль:
1C
1С v8
Запрет незаполненных значений не работает
0 Dirk Diggler
 
05.05.25
12:18
Есть регистр сведений, в нем есть поле с запретом незаполненных значений. В регистре регулярно появляется кучка записей, причем это поле там пустое.

Пока не могу отследить, откуда они там, но вопрос - каким образом можно обойти запрет незаполненных значений?
1 Hawk_1c
 
05.05.25
12:33
(0)Возможно обменом приходят.
2 Dirk Diggler
 
05.05.25
12:35
(1) Регистр не участвует ни в одном плане обмена, проверено трижды.
3 Гипервизор
 
05.05.25
12:46
(2) И без обмена можно для набора указать ОбменДанными.Загрузка = Истина.
Поищите в коде.
4 DrZombi
 
гуру
05.05.25
12:58
(0) А база какая, только Толстый клиент или только УФ?
Или помесь?
5 Ненавижу 1С
 
гуру
05.05.25
13:00
(0) во первых верно (3), во вторых что вы считаете "незаполненными значениями"?
6 Dirk Diggler
 
05.05.25
13:00
(4) Помесь. УТ 10.3 с постепенно наверченными на неё УФ.
(3) Регистр я создавал и код вокруг него. Мамой клянусь, никаких обменов я не включал нигде.

Вопрос такой - а подписки на события в этом режиме обмена работают? Может я подписку сделаю, и в журнал регистрации отладочную инфу писать буду? Посмотрю откуда вызывается создание этих записей.
7 DrZombi
 
гуру
05.05.25
13:03
(0) Вот держи.

https://xn----1-bedvffifm4g.xn--p1ai/%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D0%BE%D0%B5/2020-11-06-raznitsa-svoystv/

Подробности

Ответ
Здравствуйте. Эти свойства используются по-разному, и они не исключают, а, скорее дополняют друг друга.

Значение свойства “Проверка заполнения” проверяется только при интерактивном режиме работы: если оно установлено в значение “Выдавать ошибку” и поле не заполнено, пользователь получить сообщение об ошибке, и документ не будет проведен (элемент справочника не будет записан). Если документ формируется или проводится программно, это свойство не анализируется и данная проверка не сработает.

Свойство “Запрет незаполненных значений” для измерения регистра проверяется при каждой записи данных в регистра, независимо от того, программно она выполняется или интерактивно. Если значение этого свойства равно “Истина” и измерение не заполнено, при записи данных в регистр возникнет исключение и запись произведена не будет.

Если по логике задачи какое-то поле не должно быть пустым, можно включить оба этих способа проверки. Для экзамена можно ограничиться и одним из них – ошибочной ситуации в любом случае не возникнет. Но более удобно и логично включить интерактивную проверку заполнения (“Проверка заполнения” = “Выдавать ошибку”), так как это отсечет ошибку раньше и потребует меньше системных ресурсов.

Однако бывают ситуации, эти методы не взаимозаменяемы, но работают совместно. Например, измерение регистра допускает наличие пустых значений, а соответствующее поле документа (регистратора движений) – нет. В качестве примера посмотрите эту задачу: тема № 9: “Нюансы и подводные камни задач по взаиморасчетам в разрезе проектов”, пункт “Запрет пустых значений”. Измерение “Проект” регистра “Взаиморасчеты” допускает пустые значения, так как пустым значением тут обозначается аванс. В то же время для документа “Расходная накладная” указание пустого проекта недопустимо – продажа всегда выполняется по какому-то определенному проекту.

8 Ненавижу 1С
 
гуру
05.05.25
13:03
(6) Ну если все создавал ты, то наверное и код можно посмотреть?
9 DrZombi
 
гуру
05.05.25
13:04
(6) Подписки работают.
10 Dirk Diggler
 
05.05.25
13:05
(8) да естественно, все посмотрел. нет там никаких ОбменДанными.Загрузка = Истина;

А вот откуда эти записи берутся я пока хз, там каскад регламентных заданий выполняется, и в одном из них они создаются. Где именно я пока хз.
11 Dirk Diggler
 
05.05.25
13:07
(5) кстати, да, пардон, измерения с этой галкой все заполнены.
Не заполнены именно ресурсы, с "проверкой заполнения". Ага, один секрет разгадан. Ну тогда ща запилю подписку и буду проверять перед записью, и всё вычислим
12 Ненавижу 1С
 
гуру
05.05.25
13:07
(10) "там каскад регламентных заданий выполняется, и в одном из них они создаются"
это была кодогенерация? )))
13 Ненавижу 1С
 
гуру
05.05.25
13:08
(11) свойство "проверка заполнения" ничего не гарантирует при программной записи
14 Мультук
 
гуру
05.05.25
13:09
>> Регистр я создавал и код вокруг него.
>> и в одном из них они создаются. Где именно я пока хз.

Создаются магией ?
Или всё же можно поискать код

РегистрыСведений.МойМегаРегистр.Создать
15 Dirk Diggler
 
05.05.25
13:09
(13) спс, я уже прочитал выше
16 DrZombi
 
гуру
05.05.25
13:10
(11) Регистр поди пишется интерактивно, в диалоге (Справочника, документа, еще где)? Ну так, догадка :)

Как регистр называется? И где используется? :)
17 Dirk Diggler
 
05.05.25
13:11
(14) везде, где есть эти строки(а таких мест всего два), выше по коду все ресурсы заполняются всяким разным. А в регистре записи появляются пустые. Воспроизвести вручную пока не удается - как ни кручу, от руки все работает нормально.

Какой именно входной набор данных у регламентных вызывает появление пустых записей, я пока не вычислил. Через подписку найду.
18 Dirk Diggler
 
05.05.25
13:11
(16) регистр пишется исключительно из регламентных заданий
19 DrZombi
 
гуру
05.05.25
13:12
+(15) Если регистр твой, то можно и модуле регистра обрабатывать... только помни, ищи записи с данными... это же регистр, он так робит :)
20 DrZombi
 
гуру
05.05.25
13:14
(18) Вообще странно, что ты не видишь чем он пишется по регламентам :)

Есть регламенты вызываемые из внешних обработок.
21 DrZombi
 
гуру
05.05.25
13:15
+ Еще хуже, если регистр пишется обменом, он таки живет в текстовом виде файликов XML планов обменов ;)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.