Имя: Пароль:
1C
1С v8
Сохранение в регистр сведений из справочника
,
0 andryus
 
18.03.14
14:54
Первоначальные данные:
Регистр сведений: ЦеныНаУслуги имеет ресурсы Номенклатура (Справочник.Номенклатура), Учреждение (Справочник.Учреждение)
Есть справочник: Номенклатура в котором создано табличное поле ТПЦены с значением РегистрСведенийНаборЗаписей.ЦеныНаУслуги

При создании элемента выбирается в поле ввода Учреждение из соответствующего справочника. В справочнике в Модуле формы элемента в процедуре ПриЗаписи() вставлен код: [CODE]ЗаписатьДанныеЦен(ТПЦены, Ссылка, Отказ);[/CODE] В модуле объекта создана процедура: [CODE]Процедура ЗаписатьДанныеЦен(НаборЗаписей, Ссылка, Отказ) Экспорт
    НаборЗаписей.Отбор.Учреждение.Значение = Учреждение;
    НаборЗаписей.Отбор.Номенклатура.Значение = Ссылка;
    НаборЗаписей.Записать();[/CODE]
При создании нового элемента при заполнении закладки Цены и при записи данного объекта выдает ошибку

[QUOTE]Запись не верна! Значение поля не соответствует установленному отбору: ЦеныНаУслуги: 10.01.2012, ,  (Регистр сведений: Цены на услуги; Номер строки: 1; Поле: Номенклатура)[/QUOTE]

НО! Если без заполнения закладки Цены записать объект, а потом открыть и отредактировать данную закладку, то в регистре данные сохраняются корректно и при изменении тоже все работает корректно, Но только у уже записанного объекта. В чем ошибка моего кода? Спасибо
1 Добрый хачик
 
18.03.14
14:56
потому как элемент должен быть записан
2 andryus
 
18.03.14
14:57
(1) А выход какое? Как правильно сделать? Как то не дело сначала сохранять, а потом открывать и редактировать?
3 kosts
 
18.03.14
15:07
(2) Правильно сперва записать элемент. Так в типовых делают включая на УФ.
4 andryus
 
18.03.14
15:08
(2) Всмысле? Сначала сохранить элемент справочника, потом открыть его и отредактировать? Так я понял?
5 kosts
 
18.03.14
15:15
(4) При активации страницы с ТП выдаешь вопрос "Элемент должен быть записан"?
Записать();
Иначе закладку не активируешь.

Или выдавать вопрос про запись при начале добавления данных в ТП.

Или можно ТП делать сперва при открытии Доступность = Ложь. После записи пользователем по кнопке, делать Доступность = Истина.
6 andryus
 
18.03.14
15:17
(5) Ну такой вариант понятен. Значит это один единственный и так скажем правильный метод решения, что сначала Записываем, а потом устанавливаем Цены?
7 kosts
 
18.03.14
15:18
(6) Не то что единственны, но распространенный.
8 kosts
 
18.03.14
15:20
(6) Можно заморочиться и эмулировать набор регистра через таблицу значений. Т.е. её можно будет редактировать до записи элемента. И в момент записи элемента записывать данные и регистр из ТЗ.
9 grigo
 
18.03.14
15:21
(0) Перед записью набора для новой номенклатуры принудительно установи ссылку методом "УстановитьСсылкуНового()".
10 Добрый хачик
 
18.03.14
15:22
(9) тоже вариант. но лучше старым дедовским способом
11 andryus
 
18.03.14
15:23
(8) Тут действительно можно заморочиться и как вариант могут возникнуть проблемы при изменении этой же Цены у данного элемента, Добавления нового периодического элемента (т.е. установка Цены на новую дату) для данной Номенклатуры, удаления, короче..... Муторно
12 andryus
 
18.03.14
15:24
(10) Старый дедовский способ это как предложил kosts? Т.е. сначала записываем, потом добавляем чего угодно
13 VikingKosmo
 
18.03.14
15:25
(12) он самый. Причем он самый надежный.
14 andryus
 
18.03.14
15:26
Все понятно. Всем большое спасибо за участие!