|
Проблемка при создании регистра сведений программно 🠗 (Волшебник 30.11.2017 09:37) | ☑ | ||
---|---|---|---|---|
0
DiFas
30.11.17
✎
09:19
|
Всем привет. Создаю обработку. Прошу помощи или подсказку: есть две одинаковые формы(https://yadi.sk/i/uSM7mngE3QBJhk), которых вводятся фио, адрес и тд. Вопрос заключается в том, что когда создаю пользователей("аб" и "бв", например), у меня не записывается адрес и паспортные данные первого пользователя, т.е. "аб"(https://yadi.sk/i/59kdthxO3QBJs4) + ко всему при создании адреса пользователей стираются все адреса других людей(это копия базы). Коды прилагаются:
Функция СоздатьКонтактнаяИнформацияФизЛица(НовыйФизЛицо); Если ФлажокСобственник0 Тогда НовыйКИФизЛицо = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НовыйКИФизЛицо.Прочитать(); ЗаписьКонтакта = НовыйКИФизЛицо.Добавить(); ЗаписьКонтакта.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьКонтакта.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица; ЗаписьКонтакта.Объект = НовыйФизЛицо.Ссылка; ЗаписьКонтакта.Представление = ЭлементыФормы.АдресПоле0.Значение; НовыйКИФизЛицо.Записывать = Истина; //Попытка НовыйКИФизЛицо.Записать(); //Исключение //КонецПопытки; КонецЕсли; Если ФлажокСобственник1 Тогда НовыйКИФизЛицо = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НовыйКИФизЛицо.Прочитать(); ЗаписьКонтакта = НовыйКИФизЛицо.Добавить(); ЗаписьКонтакта.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьКонтакта.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица; ЗаписьКонтакта.Объект = НовыйФизЛицо.Ссылка; ЗаписьКонтакта.Представление = ЭлементыФормы.АдресПоле1.Значение; НовыйКИФизЛицо.Записывать = Истина; //Попытка НовыйКИФизЛицо.Записать(); //Исключение //КонецПопытки; КонецЕсли; КонецФункции Если ФлажокСобственник0 Тогда НовыйДокФизЛицо = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьНаборЗаписей(); НовыйДокФизЛицо.Прочитать(); НовыйДокФизЛицо.Отбор.Период.Значение = ТекущаяДата(); ЗаписьПаспорта = НовыйДокФизЛицо.Добавить(); ЗаписьПаспорта.Период = ТекущаяДата(); ЗаписьПаспорта.ФизЛицо = НовыйФизЛицо.Ссылка; ЗаписьПаспорта.ДокументВид = ЭлементыФормы.ВидДокументаПоле0.Значение; ЗаписьПаспорта.ДокументСерия = ЭлементыФормы.СерияПоле0.Значение; ЗаписьПаспорта.ДокументНомер = ЭлементыФормы.НомерПоле0.Значение; ЗаписьПаспорта.ДокументДатаВыдачи = ЭлементыФормы.ДатаВыдачиПоле0.Значение; ЗаписьПаспорта.ДокументКемВыдан = ЭлементыФормы.КемВыданПоле0.Значение; НовыйДокФизЛицо.Записывать = Истина; //Форма = НовыйДокФизЛицо.ПолучитьФорму("ФормаЗаписи"); //ФОрма.Открыть(); Попытка НовыйДокФизЛицо.Записать(); Исключение КонецПопытки; КонецЕсли; Если ФлажокСобственник1 Тогда НовыйДокФизЛицо = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьНаборЗаписей(); НовыйДокФизЛицо.Прочитать(); НовыйДокФизЛицо.Отбор.Период.Значение = ТекущаяДата(); ЗаписьПаспорта = НовыйДокФизЛицо.Добавить(); ЗаписьПаспорта.Период = ТекущаяДата(); ЗаписьПаспорта.ФизЛицо = НовыйФизЛицо.Ссылка; ЗаписьПаспорта.ДокументВид = ЭлементыФормы.ВидДокументаПоле1.Значение; ЗаписьПаспорта.ДокументСерия = ЭлементыФормы.СерияПоле1.Значение; ЗаписьПаспорта.ДокументНомер = ЭлементыФормы.НомерПоле1.Значение; ЗаписьПаспорта.ДокументДатаВыдачи = ЭлементыФормы.ДатаВыдачиПоле1.Значение; ЗаписьПаспорта.ДокументКемВыдан = ЭлементыФормы.КемВыданПоле1.Значение; НовыйДокФизЛицо.Записывать = Истина; Попытка НовыйДокФизЛицо.Записать(); Исключение КонецПопытки; КонецЕсли; КонецФункции |
|||
1
Волшебник
модератор
30.11.17
✎
09:20
|
Используй МенеджерЗаписи или открой для себя Отбор
|
|||
2
zvial
30.11.17
✎
09:23
|
У вас платят за количество строк?
|
|||
3
DiFas
30.11.17
✎
09:25
|
(1) С этого места поподробнее, пожалуйста)
|
|||
4
Волшебник
модератор
30.11.17
✎
09:26
|
(3) В Синтакс-помощнике всё есть
|
|||
5
Numerus Mikhail
30.11.17
✎
09:30
|
(3) Сначала отбор, потом прочитать
|
|||
6
DiFas
30.11.17
✎
09:32
|
(5) (4) попробую покапаться, позже выложу ответ
|
|||
7
Serg_1960
30.11.17
✎
09:39
|
"Проблемка при создании" - это не "проблемка", а серьёзная проблема... при освоении базовых понятий работы с регистрами.
Просто запомни: читать(писать,удалять) набор записей - только после установки отбора. И ещё важно всегда помнить :) Как удалить ВСЕ записи регистра? РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей().Записать(); |
|||
8
DiFas
30.11.17
✎
09:54
|
(7) спасибо)
|
|||
9
Волшебник
модератор
30.11.17
✎
13:01
|
(7) Кстати, после установки отбора надо проверять, установился ли он. Например, могут типы не совпадать, а платформа ничего не скажет.
|
|||
10
DiFas
30.11.17
✎
15:16
|
(7) Такая штукенция будет очищать весь регистр только если твой код никаких данных не несет.
|
|||
11
DiFas
30.11.17
✎
15:19
|
В общем, как и обещал выложить решение (кому интересно). Сделал через СоздатьМенеджерЗаписей, а также СписокЗначений.
Функция СоздатьФизЛицо() КонтактныеДанные = Новый СписокЗначений; ПаспортныеДанные = Новый СписокЗначений; Если ФлажокСобственник0 Тогда НовыйФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйФизЛицо.Наименование = ЭлементыФормы.ФамилияПоле0.Значение + " " + ЭлементыФормы.ИмяПоле0.Значение + " " + ЭлементыФормы.ОтчествоПоле0.Значение; НовыйФизЛицо.ДатаРождения = ЭлементыФормы.ДатаРожденияПоле0.Значение; НовыйФизЛицо.Записать(); КонтактныеДанные.Очистить(); КонтактныеДанные.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес,"Тип"); КонтактныеДанные.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица,"Вид"); КонтактныеДанные.Добавить(НовыйФизЛицо.Ссылка,"Ссылка"); КонтактныеДанные.Добавить(ЭлементыФормы.АдресПоле0.Значение,"Представление"); ПаспортныеДанные.Очистить(); ПаспортныеДанные.Добавить(НовыйФизЛицо.Ссылка,"Ссылка"); ПаспортныеДанные.Добавить(ЭлементыФормы.ВидДокументаПоле0.Значение,"ДокументВид"); ПаспортныеДанные.Добавить(ЭлементыФормы.СерияПоле0.Значение,"ДокументСерия"); ПаспортныеДанные.Добавить(ЭлементыФормы.НомерПоле0.Значение,"ДокументНомер"); ПаспортныеДанные.Добавить(ЭлементыФормы.ДатаВыдачиПоле0.Значение,"ДокументДатаВыдачи"); ПаспортныеДанные.Добавить(ЭлементыФормы.КемВыданПоле0.Значение,"ДокументКемВыдан"); СоздатьКонтактнаяИнформацияФизЛица(НовыйФизЛицо, КонтактныеДанные); СоздатьПаспортныеДанныеФизлица(НовыйФизЛицо, ПаспортныеДанные); КонецЕсли; Функция СоздатьПаспортныеДанныеФизлица(НовыйФизЛицо, ПаспортныеДанные); НовыйДокФизЛицо = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьМенеджерЗаписи(); НовыйДокФизЛицо.Прочитать(); НовыйДокФизЛицо.Период = ТекущаяДата(); НовыйДокФизЛицо.ФизЛицо = ПаспортныеДанные.Получить(0).Значение; НовыйДокФизЛицо.ДокументВид = ПаспортныеДанные.Получить(1).Значение; НовыйДокФизЛицо.ДокументСерия = ПаспортныеДанные.Получить(2).Значение; НовыйДокФизЛицо.ДокументНомер = ПаспортныеДанные.Получить(3).Значение; НовыйДокФизЛицо.ДокументДатаВыдачи = ПаспортныеДанные.Получить(4).Значение; НовыйДокФизЛицо.ДокументКемВыдан = ПаспортныеДанные.Получить(5).Значение; Попытка НовыйДокФизЛицо.Записать(); Исключение КонецПопытки; КонецФункции Функция СоздатьКонтактнаяИнформацияФизЛица(НовыйФизЛицо, КонтактныеДанные); НовыйКИФизЛицо = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи(); НовыйКИФизЛицо.Прочитать(); НовыйКИФизЛицо.Тип = КонтактныеДанные.Получить(0).Значение; НовыйКИФизЛицо.Вид = КонтактныеДанные.Получить(1).Значение; НовыйКИФизЛицо.Объект = КонтактныеДанные.Получить(2).Значение; НовыйКИФизЛицо.Представление = КонтактныеДанные.Получить(3).Значение; НовыйКИФизЛицо.Записать(); КонецФункции |
|||
12
DiFas
30.11.17
✎
15:20
|
(11) ФУНКЦИИ ОБРЕЗАНЫ!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |