|
|
1С ЗУП запись данных в справочник Физические лица
spiller26, ptiz, pavlika, kamysh, PuhUfa, _Batoo, Fish, shuhard, ammorf, Мультук, SleepyHead, RAJAH, takefive, Vostochnick, Krendel, nick86, okmail, RVN, DemonShinji2, Prog_man, El_Duke, maxar, ReaLg, 2S, Ненавижу 1С, zenik, maxab72, Климов Сергей, План счетов, Волшебник, dva1c, Homer, Crusher, ГдеСобакаЗарыта, reg0303, lxndr, azt-yur, phabeZ, mTema32, d4rkmesa, Amra, Anchorite, piter3, igouranga, DimVad, eddy_n
| ☑ |
|
0
ammorf
27.07.26
✎
09:16
|
Приветствую всех! Проблем такая, требуется записать дату рождения физ лица и место рождения. Все данные обработкой получаю с файла, нахожу физика по СНИЛС получаю объект элемента справочника, вставляю значения в реквизиты, записываю. Все проходит нормально включая запись объекта. В отладчике проверяю после записи в ссылке реквизиты заполнены. Но дальше начинается странное, реквизиты остаются пустыми когда открываешь элемент справочника, позже я в журнале регистрации вижу что изменения объекта в статусе транзации "Отменено". Скажите, плиз, что не так с 1с ЗУП???
|
|
|
1
Мультук
гуру
27.07.26
✎
09:25
|
(0)
>> после записи в ссылке реквизиты заполнены
А дальше идёт
ОтменитьТранзакцию()
Код будет ?
|
|
|
2
ammorf
27.07.26
✎
09:29
|
(1)
Для Каждого Данные Из ТЗ Цикл
Если Данные.ФИО = "" Тогда
Продолжить;
КонецЕсли;
СНИЛС = Данные.СНИЛС;
ФИО = СокрЛП(Данные.Фамилия) + " " + СокрЛП(Данные.Имя) + ?(СокрЛП(Данные.Отчество) <> "", " " + СокрЛП(Данные.Отчество), "");
СсылкаСпрФЗ = ПолучитьЭлемнтСправочникаФЗ(СНИЛС);
Если МассивОбработанных.Найти(СсылкаСпрФЗ) <> Неопределено Тогда //уже обработали
Продолжить;
КонецЕсли;
Если СсылкаСпрФЗ = Неопределено Тогда
Общегоназначения.СообщитьПользователю("Не найден сотрудник: " + ФИО + "; СНИЛС: " + СНИЛС + "");
Продолжить;
КонецЕсли;
ОбъектСпрФЗ = СсылкаСпрФЗ.ПолучитьОбъект();
ОбъектСпрФЗ.ОбменДанными.Загрузка = Истина;
ДатаРождения = Дата(Сред(Данные.ДатаРождения, 7, 4) + Сред(Данные.ДатаРождения, 4, 2) + Сред(Данные.ДатаРождения, 1, 2));
ОбъектСпрФЗ.ДатаРождения = ДатаРождения;
Попытка
ОбъектСпрФЗ.Записать();
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецЦикла;
|
|
|
3
ammorf
27.07.26
✎
09:32
|
Пробовал с привилегией и без нее. Без толку. Но при этом групповая обработка реквизитов встроенная в конфу изменяет реквизит без проблем.
|
|
|
4
2S
27.07.26
✎
09:38
|
А если без попытки?
|
|
|
5
PuhUfa
27.07.26
✎
09:50
|
(2) это же не весь код. а что в остальном коде?
|
|
|
6
ammorf
27.07.26
✎
09:52
|
(4) без попытки тоже самое
|
|
|
7
ammorf
27.07.26
✎
09:57
|
Спсибо всем огромное, еще раз пробежался по коду и нашел лишнее начало транзакции)) оказывается я ее начал еще до цикла. В цикле вызывал еще раз. Потом убрал ее совсем а первую до цикла не фиксировал получается)))
|
|
|
8
ammorf
27.07.26
✎
09:57
|
Надо быть внимательнее))
|
|
|
9
Волшебник
27.07.26
✎
10:04
|
Для Каждого Данные Из ТЗ Цикл
Если Данные.ФИО = "" Тогда
Продолжить;
КонецЕсли;
СНИЛС = Данные.СНИЛС;
ФИО = СокрЛП(Данные.Фамилия) + " " + СокрЛП(Данные.Имя) + ?(СокрЛП(Данные.Отчество) <> "", " " + СокрЛП(Данные.Отчество), "");
Физлицо = НайтиФизлицо(СНИЛС);
Если МассивОбработанных.Найти(Физлицо) <> Неопределено Тогда //уже обработали
Продолжить;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Физлицо) Тогда
ОбщегоНазначения.СообщитьПользователю("Не найден сотрудник: " + ФИО + "; СНИЛС: " + СНИЛС + "");
Продолжить;
КонецЕсли;
оФизлицо = Физлицо.ПолучитьОбъект();
оФизлицо.ОбменДанными.Загрузка = Истина;
ДатаРождения = Дата(Сред(Данные.ДатаРождения, 7, 4) + Сред(Данные.ДатаРождения, 4, 2) + Сред(Данные.ДатаРождения, 1, 2));
оФизлицо.ДатаРождения = ДатаРождения;
Попытка
оФизлицо.Записать();
//Возврат;
Исключение
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
|
|
|
10
ammorf
27.07.26
✎
10:06
|
(9) Благодарю за попытку :))
|
|
|
11
SleepyHead
гуру
27.07.26
✎
10:09
|
|
|
|
12
ammorf
27.07.26
✎
10:22
|
(11) Все просто. За изменением справочника добавятся изменения регистров сведений в т.ч. документы физика. И без транзации уже не как) а ну как что то пойдет ни так))
|
|