|
Запись в регистр сведений без отбора | ☑ | ||
---|---|---|---|---|
0
Pr0gLamer
17.01.13
✎
11:56
|
Доброе Утро!
Я делаю одну запись в регистр сведений без отбора - весь регистр затирается,остаётся одна запись,это нормальное поведение.Делаю в цикле 50 записей и вместо одной записи - у меня их 50.Почему каждая последующая запись не затирает предыдущую? Вот код: мНаборЗаписейФИО = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей(); СпрФЛСВыборка = Справочники.ФизическиеЛица.Выбрать(); Пока СпрФЛСВыборка.Следующий() Цикл СпрФЛССылка = СпрФЛСВыборка.Ссылка; ФИО = СпрФЛССылка.Наименование; Фамилия = ОбщегоНазначения.ВыделитьСлово(ФИО); Имя = ОбщегоНазначения.ВыделитьСлово(ФИО); Отчество = ОбщегоНазначения.ВыделитьСлово(ФИО); ЗаписьНабора = мНаборЗаписейФИО.Добавить(); ЗаписьНабора.Период = '19000101'; ЗаписьНабора.Фамилия = Фамилия; ЗаписьНабора.Имя = Имя; ЗаписьНабора.Отчество = Отчество; ЗаписьНабора.ФизЛицо = СпрФЛССылка; мНаборЗаписейФИО.Записать(Истина); КонецЦикла; |
|||
1
mikecool
17.01.13
✎
11:58
|
(0) потому что пишешь набор из 50 записей
нах тебе набор? юзай запись |
|||
2
Starhan
17.01.13
✎
11:59
|
(0) все правлиьно работает
потому что ты каждый раз добавляешь запись в набор записей мНаборЗаписейФИО и записываешь этот набор записей. |
|||
3
Starhan
17.01.13
✎
12:01
|
(0)мНаборЗаписейФИО = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
если этот код поствить вначале цилка будет работаь как ты предполагаешь |
|||
4
Pr0gLamer
17.01.13
✎
12:02
|
Я ж вроде пишу каждый раз набор из одной записи?Или это записи добавляются каждый раз пишется на одну больше и на последней итерации записываются уже все да?
|
|||
5
Starhan
17.01.13
✎
12:03
|
Я ж вроде пишу каждый раз набор из одной записи?
нет Или это записи добавляются каждый раз пишется на одну больше и на последней итерации записываются уже все да? да |
|||
6
Maxus43
17.01.13
✎
12:03
|
(3) без отбора не будет же.
Записать(Ложь); юзай. а вобще лучще (1). Менеджер |
|||
7
Pr0gLamer
17.01.13
✎
12:04
|
спасибо,всё понял
|
|||
8
Starhan
17.01.13
✎
12:07
|
(6) как я понял ему нужна только 1 последняя запись.
Если внутри цикла создавать новый набор добавлять в него одну запись и записывать с признаком истина. То у конце будет одна запись. Я имею ввиду то что думает он было бы если бы код мНаборЗаписейФИО = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей(); был внутри цикла. А так он накапливает записи. |
|||
9
Starhan
17.01.13
✎
12:08
|
простите за отсутствие запятых :)
|
|||
10
ptiz
17.01.13
✎
12:08
|
Если установлен отбор по всем измерениям - запись в таком наборе может быть только 1.
Если хотя бы по одному измерению отбора нет - записей может быть сколько угодно, но отличающихся значениям в измерении, по которому не установлен отбор. |
|||
11
Maxus43
17.01.13
✎
12:10
|
ЗаписьНабора.Период = '19000101' - тоже зачет.
(8) а я уже не совем понимаю автора что-то) |
|||
12
Reset
17.01.13
✎
12:14
|
(11) Это запись даты литералом. Описано в СП :)
|
|||
13
Maxus43
17.01.13
✎
12:17
|
(12) всегда так делал ДАТАВРЕМЯ(2005, 01, 01) :)
|
|||
14
Pr0gLamer
17.01.13
✎
12:17
|
(11) в типовой в справочнике физ лиц с этой датой ФИО записывается
|
|||
15
Reset
17.01.13
✎
12:19
|
(13) Это если в запросе.
В языке пишут обычно Дата("19000101") хотя можно просто '19000101' Ведь мы пишем Количество=70 а не Количество=Число("70") :) |
|||
16
Pr0gLamer
17.01.13
✎
12:22
|
я понимаю,но только учусь,а в типовой ЗУП в справочнике Физические лица делается так
// запись в регистр ФИО Если мНаборЗаписейФИО.Количество() = 0 Тогда ЗаписьНабора = мНаборЗаписейФИО.Добавить(); ЗаписьНабора.Период = '19000101'; ЗаписьНабора.Фамилия = Фамилия; ЗаписьНабора.Имя = Имя; ЗаписьНабора.Отчество = Отчество; КонецЕсли; Если мНаборЗаписейФИО.Количество() > 0 И ЗначениеЗаполнено(мНаборЗаписейФИО[0].Период) Тогда мНаборЗаписейФИО[0].Физлицо = Ссылка; мНаборЗаписейФИО.Отбор.Физлицо.Использование = Истина; мНаборЗаписейФИО.Отбор.Физлицо.Значение = мНаборЗаписейФИО[0].Физлицо; мНаборЗаписейФИО.Отбор.Период.Использование = Истина; мНаборЗаписейФИО.Отбор.Период.Значение = мНаборЗаписейФИО[0].Период; мНаборЗаписейФИО.Записать(Истина); КонецЕсли; |
|||
17
Maxus43
17.01.13
✎
12:23
|
(16) да правильно делаешь, это я не выспался
|
|||
18
Pr0gLamer
17.01.13
✎
12:24
|
а такой вопрос,если я не заполню какое-то поле набора,допустим,Период,оно возьмётся из прочитанного набора или станет пустым?
|
|||
19
Maxus43
17.01.13
✎
12:24
|
Так, только щас дошёл до меня сабж. ответ (5) :)
|
|||
20
байт
17.01.13
✎
12:25
|
(0) тебе нужно записать только 50-ую запись судя по вопросу?
|
|||
21
Pr0gLamer
17.01.13
✎
12:27
|
мне нужно изменить фамилию и имя,а период оставить как был.Так вот если я его не буду заполнять при записи,он у меня останется прежним или запишется пустота?
|
|||
22
Maxus43
17.01.13
✎
12:28
|
(21) в периодических регистрах пустоты в периоде быть не может. Если установлен отбор - оттуда возьём, и наче не запишешь просто
|
|||
23
байт
17.01.13
✎
12:29
|
(21) тогда тебе нужно сначала отобрать нужную запись и перезаписать с новыми параметрами.
|
|||
24
Pr0gLamer
17.01.13
✎
12:29
|
вроде ясно,спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |