Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:13

Запись регистра сведений из общего модуля

Автор Keen Gaff, 29 дек 2021, 11:20

0 Пользователей и 1 гость просматривают эту тему.

Keen Gaff

Доброго дня всем.
Ипользую 1С 8.3 (8.3.19.1351) + БСП 3.1 + самописная конфа
В запись регистра сведений программно хочу записать некоторые поля. Поскольку самих регистров много вынес процедуру в общий модуль.
Процедуру вызываю при открытии записи на сервере.
Отбор = Новый Структура("ОписаниеОбразца", стрОбразец.ОписаниеОбразца);
ОтборТаблицаКоэффициентов = ТаблицаКоэффициентов.Скопировать(Отбор);
//Найдем запись в регистре сведений
МенеджерЗаписи = РегистрыСведений[ИмяЖурнала].СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ЗначенияКлючаЗаписи);
МенеджерЗаписи.Прочитать();
    ОписаниеРегистра = Метаданные.РегистрыСведений[ИмяЖурнала];
Для каждого стрТаблицы Из ОтборТаблицаКоэффициентов Цикл
Для каждого Поле Из ОписаниеРегистра.Реквизиты Цикл
Если Поле.Имя = стрТаблицы.НаименованиеРеквизита Тогда
МенеджерЗаписи[Поле.Имя] = стрТаблицы.ЗначениеРеквизита;
КонецЕсли;
КонецЦикла;
КонецЦикла;
МенеджерЗаписи.Записать();
Форма записи открывается, но поля не заполнены, хотя в отладчике вижу что все заполнено. Что не так?
Если процедуру перенести в сам регистр сведений, то все нормально сохраняется...

LexaK

Keen Gaff, так вы просто добавляете новую запись в регистр,
а форма новой записи, здесь вроде как и не причем!
а что бы увидеть значения в полях формы, так их необходимо заполнить!

или из вашей программы заполните поля формы (значения в реквизиты формы, или что там у вас)
или по ключу записи дайте команду формы на чтение данных (которые вы только что записали)
если помогло нажмите: Спасибо!

Keen Gaff

Сама запись создана ранее. Я ее нахожу по "ЗначенияКлючаЗаписи" и читаю (т.е. получаю).
МенеджерЗаписи = РегистрыСведений[ИмяЖурнала].СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ЗначенияКлючаЗаписи);
МенеджерЗаписи.Прочитать();
Потом в цикле обхожу поля записи, при совпадении имени поля с именем из таблицы заполняю значение.
Потом все записываю.
Если запись закрыть и открыть по новой, она открывается заполненная как положено (сама процедура вызывается только один раз). Получается что процедура заносит данные в запись на сервере, но фактически запись уже передана на клиента, поэтому она пустая...

Keen Gaff

В результат перенес вызов процедуры в момент создания записи регистра, раз уж она все равно создается в другом месте)... получилось как задумывалось.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск