Имя: Пароль:
1C
1С v8
Не записывается инфа в регистр сведений подчиненный регистратору.
,
0 Radion
 
20.12.13
19:28
УТ 10.3. Создал новый регистр сведений подчиненный регистратору, периодичность установил - в пределах секунды. Данный в регистр записываются при перепроведении документа. Код следующий:
РегСвед = РегистрыСведений.ИзменениеСтатуса.СоздатьНаборЗаписей();
РегСвед.Отбор.Регистратор.Установить(РеализацияТиУ);
НоваяЗапись              = РегСвед.Добавить();
НоваяЗапись.Период       = РеализацияТиУ.Дата;
НоваяЗапись.СтатусЗаказа = РеализацияТиУ.СтатусЗаказа;
НоваяЗапись.ДатаИзменения= РеализацияТиУ.Дата;
НоваяЗапись.Уведомление  = РеализацияТиУ.Комментарий;
РегСвед.Записать(Ложь);
Так вот, первая запись проходит, а вторая и 3-я, когда меняю значение комментария или СтатусаЗаказа НЕТ, Ошибка - Запись с такими ключевыми полями уже существует. При изменении даты документа, нормально записывает. Вопрос - Почему в течении одного дня нельзя записать, несколько данных в регистр, если периодичность установлена - в пределах секунды а не дня ? Спасибо.
1 Dzenn
 
гуру
20.12.13
19:32
"Бывает......" (задумчиво закуривая трубку, философским тоном)
2 Dzenn
 
гуру
20.12.13
19:33
Вернее, нет, не так! "Бываааааааает......"
3 Radion
 
20.12.13
19:45
up
4 1sik
 
20.12.13
19:59
Можно всю процедуру увидеть? А то непонятно как вторая и третья запись должна попадать .
5 МишКа
 
20.12.13
20:05
(0) Секунды совпадают. Делай более детальную периодичность.
6 mehfk
 
20.12.13
20:12
(0) Существующие движения очищаются?
7 marvak
 
20.12.13
20:19
(0) СтатусЗаказа измерение?
8 Radion
 
23.12.13
10:44
(5) нет секунды не совпадают
9 Radion
 
23.12.13
10:46
(6) существующие движения не очищаются, наоборот требуется добавить к существующим движениям новые движения;
(7) СтатусЗаказа - ресурс, в рег. сведений только ресурсы, измерений вообще нет.
10 Maxus43
 
23.12.13
10:48
(9) что ты хотел без измерений? Считай что у тебя "Измерение" - Регистратор, и тольок одна запись в разрезе регистратора может быть
11 Defender aka LINN
 
23.12.13
10:48
(0) Этот код у тебя прямо в обработке проведения? Молодец, чо...
12 Radion
 
23.12.13
11:05
(10) понял. сейчас попробую;
(11) ну, чем чревато?
13 Maxus43
 
23.12.13
11:07
+ уточню, в разрезе "регистратора и периода"
14 Defender aka LINN
 
23.12.13
11:18
(12) Да ничем. Если тебе, конечно, не сильно надо, чтобы данные в регистр писались.
15 Radion
 
23.12.13
12:00
(14) да они и так пишутся. просто перезаписываются.
16 Radion
 
23.12.13
13:12
(10) добавил измерение, никаких изменений. Все также перезаписывает и все.
17 Лефмихалыч
 
23.12.13
13:15
вот в этой строке ошибка
НоваяЗапись.Период       = РеализацияТиУ.Дата;
18 Radion
 
23.12.13
13:30
(17) Спасибо. да я уже сам нашел, переписал так:
НоваяЗапись.Период       = ТекущаяДата();
Все равно перезаписывает текущую строку ((((
19 Radion
 
23.12.13
13:32
Почему добавляет строку в регистр а не перезаписывает, если добавляешь к периоду один день. Т.е. периодичность получается в пределах дня, хотя у меня периодичность стоит в пределах секунды. (((( почему так ? ((((
20 Radion
 
23.12.13
13:48
Что заметил: если я из внешней обработки меняю регистр сведений (добавляю дни к периоду), то все нормально, строки добавляются. Если я пытаюсь добавить строки при проведении документа, система очищает сперва все строки регистра сведений, а потом записывает туда строку по алгоритму. ппц!?!?!
21 hhhh
 
23.12.13
13:56
(19) ну вы делаете одну и ту же секунду: ТекущаяДата(). Вот и затирается
22 Radion
 
23.12.13
14:01
(21) блин, я видно что то не догоняю. Если я ставлю периодичность "В пределах секунды", я имею ввиду что, если я пытаюсь сделать две записи одновременно 14:01:01 (01 секунда), то система конечно выдаст ошибку. Если периодичность в пределах секунды, то формат "Периода": Дата Час:Минута:Секуда. Разве я не прав?
23 Enders
 
23.12.13
14:05
Регистр подчинен регистратору. И наверное в свойствах документа "Удаление движения" стоит "Удалять автоматически".
Соответственно при перепроведении документа сначала очищаются все записи, после чего добавляются заново ;)
24 Radion
 
23.12.13
14:08
(23)нет, стоит - "Не удалять автоматически"
25 Enders
 
23.12.13
14:10
Да, и кстати а прочитать набор?
26 Enders
 
23.12.13
14:10
РегСвед = РегистрыСведений.ИзменениеСтатуса.СоздатьНаборЗаписей();
РегСвед.Отбор.Регистратор.Установить(РеализацияТиУ);
РегСвед.Прочитать(); !!!!
НоваяЗапись              = РегСвед.Добавить();
НоваяЗапись.Период       = РеализацияТиУ.Дата;
НоваяЗапись.СтатусЗаказа = РеализацияТиУ.СтатусЗаказа;
НоваяЗапись.ДатаИзменения= РеализацияТиУ.Дата;
НоваяЗапись.Уведомление  = РеализацияТиУ.Комментарий;
РегСвед.Записать(Ложь);
27 hhhh
 
23.12.13
14:14
(22) формат - это для вывода даты на печать.

а так в любом периоде есть секунды.
28 Naumov
 
23.12.13
14:14
(0) А почему периодичность не по позиции регистратора?
29 Radion
 
23.12.13
14:25
(28) просто не знаю, что значит - по позиции регистратора.
30 Radion
 
23.12.13
14:25
(26) добавил - РегСвед.Прочитать(); никаких изменений (
31 hhhh
 
23.12.13
14:31
(30) наверно, у вас РеализацияТиУ - объект.
32 Enders
 
23.12.13
15:37
Попробуйте посмотреть отладчиком после прочитать
Сколько записей в наборе?
или Добавте
Сообщить(РегСвед.Количество()); После прочитать.
33 Radion
 
23.12.13
15:46
(32) да нет, все понятно. Просто перед проведением РеализацииТиУ система очищает все движения, в т.ч. и Регистр сведений. Проблема в другом, при попытке добавить новую строку в Регистр сведений, выдается сообщение об ошибке - что значение с такими ключевыми полями уже существует, имеется ввиду поле Период.
34 samozvanec
 
23.12.13
15:52
что за прикол такой, писать в РС, подчиненный регистратору, не из проведения?
35 samozvanec
 
23.12.13
15:55
+(34) или это в обработке проведения?? О_о
36 Radion
 
23.12.13
16:17
пишу все в обработке проведения документа
37 Enders
 
23.12.13
16:27
Покажите полный код обработки проведения. Имеется ввиду очистку и добавление записей.
38 samozvanec
 
23.12.13
16:36
(36) что мешает писать по-человечьи?
39 Radion
 
23.12.13
16:38
Спасибо, сделал без подчинения регистратору. Все работает, строки нормально добавляются.