Имя: Пароль:
1C
1С v8
И снова: Запись с такими ключевыми полями существует
,
0 Хуан
 
31.10.12
08:52
Имеется регистр сведений
Непереодический
Независимый
При интерактивном создании при попытке записать новый элемент ругается что "Запись с такими ключевыми полями существует"
В форме списка регистра, вводимой записи нет.
http://s2.ipicture.ru/uploads/20121031/qSCzqTvE.jpg
http://s2.ipicture.ru/uploads/20121031/I8KOGwR3.jpg
ТИИ делал.
В чем может быть дело? Куда рыть?
1 Coldboy
 
31.10.12
08:56
(0) уверены, что нет, другого быть не может, а сколько у вас измерений?
2 Хуан
 
31.10.12
08:59
(1) содержимое регистра приведено на второй картинке.
Может где-то и есть, но на экран она не выводится. В таблицу БД не лазил....
3 butterbean
 
31.10.12
09:00
посмотри в отборы
4 rphosts
 
31.10.12
09:08
1.создаём набор записей
2.указываем набору записей отбор.
3.выполняем наборузаписей метод прочитать();
4.указываем свои данные
5.выполняем наборузаписей метод записать();


профит!
5 butterbean
 
31.10.12
09:10
(4) а Прочитать() зачем??
6 sanja26
 
31.10.12
09:12
чтобы проверить, есть ли записи
7 МишКа
 
31.10.12
09:12
(0) А чего это у тебя на второй картинке в заголовке?
Структуру регистра выложи.
8 butterbean
 
31.10.12
09:12
(6) зачем?? все равно своё писать туда собираешься
9 Хуан
 
31.10.12
09:13
(4) это в процедуру "При записи" ?
10 CaMoJleT
 
31.10.12
09:15
(8) Если запись существует и её не прочитать перед записью, то должно выдать ошибку из (0).
11 butterbean
 
31.10.12
09:15
(10) не должно
12 CaMoJleT
 
31.10.12
09:19
(11) Сейчас потестим)
13 CaMoJleT
 
31.10.12
09:40
(11) В ходе тестов (позорно конечно, что тесты идут по обычному синтаксису хD) выяснилось, что Прочитать() необходимо для установки отбора)
14 Хуан
 
31.10.12
09:42
В таблице запись действительно есть
Но почему-то не показывается в списке...
15 rphosts
 
31.10.12
09:42
(13) ргохнул регистр? надеюсь не на рабочей базе?
16 rphosts
 
31.10.12
09:43
(9) там где формируешь запись в РС
17 rphosts
 
31.10.12
09:43
(14) никаких отборов не наложено на РС?
18 rphosts
 
31.10.12
09:43
* на форму списка РС
19 butterbean
 
31.10.12
09:44
(13) хреново тестил
(14) отборы в списке посмотри
20 Хуан
 
31.10.12
09:52
(16) да я хотел интерактивно ввести. Кода нет, формы записи регистра тоже нет. Программно-то все делается. Правда конкретно с этой записью не пробовал.
(17) (19) Отборов нет
21 Хуан
 
31.10.12
09:55
Однако понял:
Похоже на нем стоит пометка удаления, вот поэтому и не показывается.
Подскажите в какой таблице хранятся пометки удаления :-)
22 butterbean
 
31.10.12
09:56
(21) в РС не бывает пометок удаления
23 Reset
 
31.10.12
09:56
(13)  "что Прочитать() необходимо для установки отбора)"

Прочитать() необходимо для того, чтобы прочитать, внезапно.
24 Reset
 
31.10.12
09:56
(21) Нет такого понятия для РС
25 Хуан
 
31.10.12
09:58
(22) (24) Ага. Уже проверил. Удаленный элемент удалился из таблицы, а тот нивидимый так и висит...
26 МишКа
 
31.10.12
09:59
(21) На твоей картинке не видно измерений регистра. На ней какие-то наименования. Как они связаны с измерениями - не понятно. Структуру регистра покажи.
27 Reset
 
31.10.12
09:59
(0) Дружище, не заставляй всех гадать, что у тебя происходит (хотя тут так принято, загадками).
Дай структуру измерений регистра и код, которым пишешь.
28 МишКа
 
31.10.12
10:00
+(26) И форму списка. Она, по-ходу, самописная.
29 МишКа
 
31.10.12
10:02
(25) С чего ты взял, что он невидимый? Я почти уверен, что он один из двух первых на твоей картинке.
30 Aprobator
 
31.10.12
10:06
(0) хм, что такое ключевые поля в курсе?
31 Aprobator
 
31.10.12
10:09
(11) зависит от режима записи и был ли установлен отбор перед записью. Если пишется без отбора с добавлением записи, то ошибка будет.
32 CaMoJleT
 
31.10.12
10:11
(19) Приведи тогда плз пример простейшего кода для записи в регистр по схеме из (4) без пункта 3:
1.создаём набор записей
2.указываем набору записей отбор.
3.выполняем наборузаписей метод прочитать();
4.указываем свои данные
5.выполняем наборузаписей метод записать();
33 Хуан
 
31.10.12
10:11
(28) Черт! На форму-то я не подумал. Все работало до сих пор. Но косяк был именно в запросе.
Спасибо!
34 Хуан
 
31.10.12
10:12
Всем принявшим участие спасибо. Проблему нашел, щас решу
35 Пеппи
 
31.10.12
10:12
(34) и в чем проблема то была))
36 Reset
 
31.10.12
10:13
(32) Самурай без меча подобен самураю с мечом, только без меча
37 butterbean
 
31.10.12
10:16
(32)
1.создаём набор записей
2.указываем набору записей отбор.

4.указываем свои данные
5.выполняем наборузаписей метод записать();
38 CaMoJleT
 
31.10.12
10:16
(36) В (23) была простая придирка к словам, не?
(37) Ну установи отбор без Прочитать().
39 Хуан
 
31.10.12
10:18
(35) Ладно, уж, опозорюсь :-)
Было:

ВЫБРАТЬ
   РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления,
   АдресОтправления.Представление КАК АдресОтправления,
   РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения,
   АдресНазначения.Представление КАК АдресНазначения,
   РегистрСведенийРасстоянияМеждуСкладами.Расстояние,
   РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления.ГруппаСектора,
   РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения.ГруппаСектора
ИЗ
   РегистрСведений.РасстоянияМеждуСкладами КАК РегистрСведенийРасстоянияМеждуСкладами
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады.КонтактнаяИнформация КАК АдресОтправления
       ПО РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления = АдресОтправления.Ссылка
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады.КонтактнаяИнформация КАК АдресНазначения
       ПО РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения = АдресНазначения.Ссылка
ГДЕ
   АдресНазначения.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресСклада)
   И АдресОтправления.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресСклада)


Стало:

ВЫБРАТЬ
   РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления,
   АдресОтправления.Представление КАК АдресОтправления,
   РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения,
   АдресНазначения.Представление КАК АдресНазначения,
   РегистрСведенийРасстоянияМеждуСкладами.Расстояние,
   РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления.ГруппаСектора,
   РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения.ГруппаСектора
ИЗ
   РегистрСведений.АРПИ_РасстоянияМеждуСкладами КАК РегистрСведенийРасстоянияМеждуСкладами
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады.КонтактнаяИнформация КАК АдресОтправления
       ПО РегистрСведенийРасстоянияМеждуСкладами.СкладОтправления = АдресОтправления.Ссылка И АдресОтправления.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресСклада)
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады.КонтактнаяИнформация КАК АдресНазначения
       ПО РегистрСведенийРасстоянияМеждуСкладами.СкладНазначения = АдресНазначения.Ссылка И АдресНазначения.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресСклада)
40 butterbean
 
31.10.12
10:18
(38) ты бредишь что-ли??
НаборЗаписей.Отбор.КакоеТоИзмерение.Установить(Значение);
41 Хуан
 
31.10.12
10:19
Вместо ГДЕ нужно было добавить И в условие соединения
42 МишКа
 
31.10.12
10:19
(35) В недостатке внимания при разглядывании картинки.
43 Reset
 
31.10.12
10:19
(38) Нет, констатация факта. Просто факт настолько очевиден, что его констатация выглядит странной.

Для чего нужна суповая ложка? Чтобы есть суп.
44 Reset
 
31.10.12
10:20
Хотя с ложкой менее очевидно даже
45 Reset
 
31.10.12
10:20
Или тебе кажется логчиным, что свойство отбор нужно для чтения, а метод прочитать для установки отбора? Ок.
46 CaMoJleT
 
31.10.12
10:21
(40) Для нескольких полей так же по порядку их перечислить?
НаборЗаписей.Отбор.КакоеТоИзмерение1.Установить(Значение);
НаборЗаписей.Отбор.КакоеТоИзмерение2.Установить(Значение);
так?
47 Reset
 
31.10.12
10:22
Забегая вперед, сообщу новость - метод Записать() нужен для того, что записать.
48 butterbean
 
31.10.12
10:22
(46) ты не поверишь
49 CaMoJleT
 
31.10.12
10:23
(43)
Прочитать (Read)
Синтаксис:

Прочитать()
Описание:

Считывает записи из базы данных по установленному отбору.

------
Вместо "для установки отбора" надо использовать "для чтения записи из базы данных по установленному отбору"?
50 CaMoJleT
 
31.10.12
10:24
(45)(47) Божественный сарказм. Высший уровень. Браво.
51 Reset
 
31.10.12
10:24
(49) Мне кажется, я совсем тебя не понимаю.
52 CaMoJleT
 
31.10.12
10:25
(48) Небольшая копипаста из синтаксис-помощника:
НаборКурсов.Отбор.Валюта.Установить(Доллар);
НаборКурсов.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));
НаборКурсов.Прочитать();
53 CaMoJleT
 
31.10.12
10:25
(51) Я почему-то не удивлён.
54 butterbean
 
31.10.12
10:26
(52) хорошая годная копипаста, только она ничего не объясняет про установку отбора и связь с Прочитать()
55 dmpl
 
31.10.12
10:27
(38) Установил, что дальше?
56 CaMoJleT
 
31.10.12
10:28
(54) Толк с установки отбора без дальнейшего его использования? Я не совсем уверен, что код с отбором всё же отберет нужные записи.
57 CaMoJleT
 
31.10.12
10:28
+(56) Код с отбором !без прочитать()!...
58 Reset
 
31.10.12
10:28
(54) Для записи,не ? (безнадежным голосом)
59 Reset
 
31.10.12
10:28
(58) для (56_
60 butterbean
 
31.10.12
10:29
(56) пля, в (4) отбор нужен только для записи
61 dmpl
 
31.10.12
10:37
(57) Да не нужно ничего читать. См., например, в типовой УПП/ЗУП общий модуль ПроцедурыОбновленияИнформационнойБазыПереопределяемый, процедуру ЗаполнитьУчетнуюПолитикуПоОценочнымОбязательствам()
62 Aprobator
 
31.10.12
10:39
(57) отбор используется не только для чтения, но и для записи.
63 rphosts
 
31.10.12
10:42
(61) там записи пишутся которых заведомо нет в РС или как в (0)?
64 Aprobator
 
31.10.12
10:44
(63) произойдет замещение записи с установленным отбором.
65 dmpl
 
31.10.12
10:47
(63) Это вообще никакой рояли не играет - по умолчанию метод Записать() просто стирает все записи, соответствующие установленному отбору, а затем пишет созданный набор записей.
66 CaMoJleT
 
31.10.12
10:48
Виноват, Прочитать() не обязательно.

Выяснил кодом:

Расстояния = РегистрыСведений.Расстояния;
НаборКурсов = Расстояния.СоздатьНаборЗаписей();
НаборКурсов.Отбор.Расстояние.Установить(Расстояние);
НовыйКурс = НаборКурсов.Добавить();
НовыйКурс.Расстояние = Расстояние;
НовыйКурс.тестРеквизит = "тест";
НаборКурсов.Записать();

Рад, что местные тролли вместо примитивных пары строк прува разогнались до 60+ постов сарказма.
67 Aprobator
 
31.10.12
10:49
(66) что такое пара строк прува и кто тут тебя так обидел?
68 Aprobator
 
31.10.12
10:50
код убийственный кстати.
69 CaMoJleT
 
31.10.12
10:51
(67) Пара строк прува - пара строк доказательства своих слов)
(68) Знаю)
70 Aprobator
 
31.10.12
10:53
(69) тебе описали полностью схему - ты ее протестить не смог. Уж не знаю, что там тебе помешало. Чем тебе можно было доказать справедливость доводов?
71 CaMoJleT
 
31.10.12
10:53
(67) Понял суть того, что мне говорили, только после (62), за что и спасибо.
72 dmpl
 
31.10.12
10:53
(69) Надо людям верить на слово ;)
73 CaMoJleT
 
31.10.12
10:55
(70) Ну как чем?) Пусть и корявый, но код-то я привел. Неужто знающие потратили на болтовню меньше времени, чем на аналогичный код?
(72) Лучше сначала проверить)
74 Aprobator
 
31.10.12
10:56
(73) люди пытались тебя научить, чтобы ты понял, а не готовое в рот засунуть.
75 Reset
 
31.10.12
10:56
В (37) тебе на твой вопрос терпеливо ответили.
76 Aprobator
 
31.10.12
10:57
Прежде чем других обзывать - на себя посмотри.
77 CaMoJleT
 
31.10.12
11:06
(74) Людям наплевать на моё обучение. Странно, что кто-то думает иначе.
(75) "Напишите плз код по схеме п1,п2,п3, только убрав из схемы п2" - "п1,п3". Не кажется, что в (37) шло банальное издевательство? Перепечатать список, убрав один из пунктов, я и сам могу. Или из моей просьбы не было понятно, что я прошу показать на примере то, что он утверждает?
78 CaMoJleT
 
31.10.12
11:07
Кстати, ТСу помогли хоть?)
79 МишКа
 
31.10.12
11:09
(78) Все у него хорошо (33),(39). Не отвлекайся.