|
Не заполняется регистр сведений | ☑ | ||
---|---|---|---|---|
0
Штурман
06.11.14
✎
14:24
|
Имеем в наличии непериодический независимый регистр сведений
Заполняю его из ТЗ следующим кодом: НаборЗаписей = РегистрыСведений.АвансыРаботникамОрганизаций.СоздатьНаборЗаписей(); для каждого ц из тз цикл Физлицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ц.Сотрудник); НоваяЗапись = наборЗаписей.Добавить(); НоваяЗапись.Организация = Организация; НоваяЗапись.Физлицо = Физлицо.Ссылка; НоваяЗапись.СуммаАванса = ц.Аванс; КонецЦикла; НаборЗаписей.Записать(Истина); Все заполняется нормально, однако, если использовать следующий код: НаборЗаписей = РегистрыСведений.АвансыРаботникамОрганизаций.СоздатьНаборЗаписей(); для каждого ц из тз цикл Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду(Число(СокрЛП(ц.Код))); НоваяЗапись = наборЗаписей.Добавить(); НоваяЗапись.Организация = Организация; НоваяЗапись.Физлицо = Физлицо.Ссылка; НоваяЗапись.СуммаАванса = ц.Аванс; КонецЦикла; НаборЗаписей.Записать(Истина); То вылетает ошибка: "Запись не верна! Значение поля "Физическое лицо" не может быть пустым! ... " Проверил ТЗ - там нет пустых полей в столбце кодов. Что не так? |
|||
1
vicof
06.11.14
✎
14:29
|
Код - это строка
|
|||
2
Heckfy
06.11.14
✎
14:31
|
Основное представление в виде наименования стоит.
Попробуй: Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду(Число(СокрЛП(ц.Код))).Ссылка; |
|||
3
vicof
06.11.14
✎
14:33
|
+(1)
Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду(СокрЛП(ц.Код)); НоваяЗапись.Физлицо = Физлицо; |
|||
4
vicof
06.11.14
✎
14:34
|
(2) Борис, ты не прав! (с)
|
|||
5
Enders
06.11.14
✎
14:34
|
Потому что код физЛица - строка.
И в первом варианте Физлицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ц.Сотрудник);
Вы ищите по строковому реквизиту и передаёте строку А во втором
Вы ищите по строковому реквизиту, а передаёте число.
|
|||
6
Heckfy
06.11.14
✎
14:35
|
Ну да.
|
|||
7
Штурман
06.11.14
✎
15:14
|
Переписал
Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду(СокрЛП(ц.Код)); НоваяЗапись = наборЗаписей.Добавить(); НоваяЗапись.Организация = Организация; НоваяЗапись.Физлицо = Физлицо.Ссылка; Регистр опять не заполняется, выдает туже самую ошибку, что в начале топика |
|||
8
hhhh
06.11.14
✎
15:35
|
ц.Код какого типа? И почему нельзя
Физлицо = ц.ссылка; НоваяЗапись = наборЗаписей.Добавить(); НоваяЗапись.Организация = Организация; НоваяЗапись.Физлицо = Физлицо; |
|||
9
Штурман
06.11.14
✎
15:56
|
(8) обычного, строкового
ц.Ссылка - не выйдет, т.к. ТЗ состоит только из двух колонок: Код и Сумма Хотя, думаю надо ТЗ переписать под квалификаторы, а не просто тз.Колонки.Добавить("Код") ... |
|||
10
Krolik Bezobraznik
06.11.14
✎
16:00
|
А вы уверены что у вас поиск по коду возвращает не пустое значение? =)
Добавте проверку Если ФизЛицо.Пустая() Тогда Сообщить("Фигня какая то"); Продолжить; КонецЕсли; |
|||
11
Maxus43
06.11.14
✎
16:01
|
а отбор у набора где вобще? потерялся?
|
|||
12
Krolik Bezobraznik
06.11.14
✎
16:02
|
Регистр независимый или какой?
|
|||
13
Жан Пердежон
06.11.14
✎
16:04
|
(0) семерошник шоле? что выведет этот код?
Сообщить(СокрЛП(100500)); |
|||
14
Штурман
06.11.14
✎
16:08
|
(10) странно, возвращает как раз пустое знаение
Однако, если в регистр этим же кодом добавлять одно физлицо, то все спокойно добавляется |
|||
15
Штурман
06.11.14
✎
16:10
|
(11) а зачем отбор при простом добавлении записей?
(12) в начале темы же написал, что независимый |
|||
16
Krolik Bezobraznik
06.11.14
✎
16:11
|
(14) Ну вот, разбирайтесь почему вам возвращает пустую ссылку. Код у справочника какого типа?
|
|||
17
Krolik Bezobraznik
06.11.14
✎
16:12
|
(14) Вот тут расшифруйте плиз "Однако, если в регистр этим же кодом добавлять одно физлицо, то все спокойно добавляется"
|
|||
18
Maxus43
06.11.14
✎
16:15
|
>>а зачем отбор при простом добавлении записей?
если юзаешь Набор - будь бодр наложить отбор, а то весь регистр будет перезаписывать/очищать и делать прочие гадости. Если простые операции с одной записью - используй менеджер записи, а не набор |
|||
19
Штурман
06.11.14
✎
16:28
|
(16) Код у справочника строкового типа
(17) Программно в одного спокойно добавляется, пример кода: Рег = РегистрыСведений.АвансыРаботникамОрганизаций.СоздатьМенеджерЗаписи(); Рег.Организация = Организация; Рег.Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду("1234"); Рег.СуммаАванса = Число("1000"); Рег.Записать(Истина); (18) у меня регистр как раз перед заполнением полностью очищается программным кодом |
|||
20
Жан Пердежон
06.11.14
✎
16:31
|
>> Рег.СуммаАванса = Число("1000");
это многое объясняет |
|||
21
Maxus43
06.11.14
✎
16:32
|
>>у меня регистр как раз перед заполнением полностью очищается программным кодом
без разницы, негоже использовать НаборЗаписей без Отбора, за это отдельная сковородка в аду готовится |
|||
22
Штурман
06.11.14
✎
16:34
|
(21) а поподроднее можно, что вы подразумеваете под отобором при заполнении регистра?
|
|||
23
Maxus43
06.11.14
✎
16:38
|
(22) делай как в (19), МенеджерЗаписи, а не набор записей как в (0).
НаборЗаписей используют для другого как правило |
|||
24
Штурман
06.11.14
✎
16:41
|
(23) т.е. менедженр записи в цикл выборки ТЗ поместить, а не как в (0), где набор записей перед циклом выборки?
в общем, буду пробовать ) |
|||
25
Maxus43
06.11.14
✎
16:42
|
(24) давай проще - Менеджер - для работы с одной записью, Набор - со множеством. У тебя работа с одной - ну и используй соответсвующие инструменты
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |