Доброго всем дня.
Конфигурация 1С Документооборот. Нужно программно записать пользователю должность и подразделение, которые хранятся в непериодическом регистре сведений. Не получается, ошибок никаких не выдаёт, всё отрабатывает, в отладке вижу что пользователь правильный, должность и подразделения правильные. Но после выполнения запись в регистре не меняется, остаются старые должность и подразделение. Пытался тремя разными способами, везде так. Уже обменДанными.Загрузка = Истина воткнул, не помогло. Может кто сталкивался, в чём причина?
Пробовал так:
И так:
Нашёл стандартную процедуру в Документообороте, вызываю её. Те же яйца, только в профиль. Текст процедуры:
Конфигурация 1С Документооборот. Нужно программно записать пользователю должность и подразделение, которые хранятся в непериодическом регистре сведений. Не получается, ошибок никаких не выдаёт, всё отрабатывает, в отладке вижу что пользователь правильный, должность и подразделения правильные. Но после выполнения запись в регистре не меняется, остаются старые должность и подразделение. Пытался тремя разными способами, везде так. Уже обменДанными.Загрузка = Истина воткнул, не помогло. Может кто сталкивался, в чём причина?
Пробовал так:
Набор = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НовПольз.Ссылка);
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Пользователь = НовПольз.Ссылка;
НоваяЗапись.Должность = ДолжСсылка;
НоваяЗапись.Подразделение = ПодрСсылка;
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();
ПоказатьИ так:
ЗаписьРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Пользователь = НовПольз.Ссылка;
ЗаписьРегистра.Прочитать();//пробовал и с этой строкой и без неё
ЗаписьРегистра.Должность = ДолжСсылка;
ЗаписьРегистра.Подразделение = ПодрСсылка;
ЗаписьРегистра.Записать(Истина);
ПоказатьНашёл стандартную процедуру в Документообороте, вызываю её. Те же яйца, только в профиль. Текст процедуры:
Процедура ПеренестиПользователяВПодразделение(Пользователь, Подразделение) Экспорт
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Пользователь);
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СведенияОПользователяхДокументооборот");
ЭлементБлокировки.УстановитьЗначение("Пользователь", Пользователь);
Блокировка.Заблокировать();
Запись = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьМенеджерЗаписи();
Запись.Пользователь = Пользователь;
Запись.Прочитать();
Если Запись.Подразделение <> Подразделение Тогда
Набор = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(Пользователь);
НоваяЗапись = Набор.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Запись);
НоваяЗапись.Подразделение = Подразделение;
НоваяЗапись.Пользователь = Пользователь;
Набор.Записать();
КонецЕсли;
ПользовательОбъект = Пользователь.ПолучитьОбъект();
Если ПользовательОбъект.Подразделение <> Подразделение Тогда
ПользовательОбъект.Подразделение = Подразделение;
ПользовательОбъект.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка лицевых счетов из файла Сбербанка формата XML для ЗУП 2.5 (обычные формы)
- Консультация для сдачи экзамена "1С:Специалист" по конфигурированию платформы
- Нюансы Конвертации данных 2.1, или как небольшая задача привела нас к восстановлению регистра сведений из нескольких миллионов строк
- Редактор констант и записей независимых регистров сведений (управляемые формы)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
вот пример рабочего кода, сегодня делал:
вот пример рабочего кода, сегодня делал:
поискФормы = регистрыСведений._ИспользованиеФорм.СоздатьНаборЗаписей();
поискФормы.Отбор.ШифрФормы.Значение = ТекСтрока.Шифр;
поискФормы.Отбор.ШифрФормы.Использование = истина;
поискФормы.Прочитать();
если поискФормы.Количество()>0 тогда
НовыйДвиж = поискФормы.Получить(0);
иначе
НовыйДвиж = регистрыСведений._ИспользованиеФорм.СоздатьМенеджерЗаписи();
КонецЕсли;
НовыйДвиж.Местонахождение = перечисления._Местонахождение.Механика;
НовыйДвиж.ФормыЗаливки = ТекСтрока.Изделие;
НовыйДвиж.Пригодность = перечисления._ПригодностьФорм.МожноИспользовать;
НовыйДвиж.Расточена = Ложь;
НовыйДвиж.ШифрФормы = ТекСтрока.Шифр;
если поискФормы.Количество()>0 тогда
ПоискФормы.Записать();
иначе
НовыйДвиж.Записать();
КонецЕсли;
Показать
(11)
Но тем не менее этот код работает
и работает безупречно
где-то вы в лесу... повторюсь, не нужно добавлять, нужно изменить тем более что вот это
ЗаписьРегистра.Записать(Истина);
нормально не работает если есть регистратор
мне плевать на стиль, как хочу так и пишу
Но тем не менее этот код работает
и работает безупречно
где-то вы в лесу... повторюсь, не нужно добавлять, нужно изменить тем более что вот это
ЗаписьРегистра.Записать(Истина);
нормально не работает если есть регистратор
мне плевать на стиль, как хочу так и пишу
(1)
Ты ставишь отбор по пользователю, и добавляешь в набор новую запись и типа получается у тебя при записи уже будет не 1 пользователь а 2 с разными должностями и подразделениями.
Набор = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НовПольз.Ссылка);
НоваяЗапись = Набор.Добавить();
Набор.Отбор.Пользователь.Установить(НовПольз.Ссылка);
НоваяЗапись = Набор.Добавить();
Ты ставишь отбор по пользователю, и добавляешь в набор новую запись и типа получается у тебя при записи уже будет не 1 пользователь а 2 с разными должностями и подразделениями.
НоваяЗапись = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьМенеджерЗаписи();
НоваяЗапись.Пользователь = СозданныйПользователь;
НоваяЗапись.Подразделение = СведенияПользователей.Подразделение;
НоваяЗапись.Должность = СведенияПользователей.Должность;
НоваяЗапись.ГрафикРаботы = СведенияПользователей.ГрафикРаботы;
НоваяЗапись.Ранг = СведенияПользователей.Ранг;
НоваяЗапись.Записать();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот