УТ 10.3 Как создать регистр сведений, у которого в качестве измерения документ?

1. pentanom 25 05.10.21 17:20 Сейчас в теме
К документу "Заказ покупателя" нужно добавить некоторое количество (10-15) новых реквизитов. Чтобы не сильно перелопачивать конфигурацию, хотел создать новый регистр сведения, в который и записывать значения этих реквизитов.
Сделал такую процедуру в форме документа:
Процедура ДействияФормыОткрытьФормуЗаявкиНаСборку(Кнопка)
	
	ФормаЗаявкиНаСборку = РегистрыСведений.ЗаявкиНаСборку.ПолучитьФорму("ФормаЗаписи");
	ФормаЗаявкиНаСборку.ЗаказПокупателя = Ссылка;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ *
	               |ИЗ
	               |	РегистрСведений.ЗаявкиНаСборку КАК ЗаявкиНаСборку
	               |ГДЕ
	               |	ЗаявкиНаСборку.ЗаказПокупателя = &ЗаказПокупателя";
	Запрос.УстановитьПараметр("ЗаказПокупателя",Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		ЗаполнитьЗначенияСвойств(ФормаЗаявкиНаСборку,Выборка);
	КонецЕсли;
	
	ФормаЗаявкиНаСборку.Открыть();
	
КонецПроцедуры
Показать
Но после редактирования реквизитов регистра выдается сообщение "Запись с такими ключевыми полями существует!" Похоже, что-то нужно записать в модуль регистра сведений, но я туплю :(
Подскажите, пожалуйста!
А может быть в качестве измерения нельзя использовать Документ?
Или может быть вообще подойти к проблемы в другой стороны?
По теме из базы знаний
Найденные решения
18. provadyuga 99 06.10.21 12:00 Сейчас в теме
Или еще можно создать процедуру в модуле формы "Заказа покупателя", которая будет открывать форму записи РС соотв. конкретному документу. И привязать эту процедуру к кнопке.
Процедура ОсновныеДействияФормыРеквизитыНаРС(Кнопка)
	
	Если Ссылка.Пустая() Тогда
		Предупреждение("Документ не записан! Для ввода реквизитов в РС документ необходимо записать!");
	КонецЕсли;	
	
	Запись = РегистрыСведений.РС.СоздатьМенеджерЗаписи();
    Запись.ЗаказПокупателя = Ссылка;
    Запись.Прочитать();
	
	Если Не Запись.Выбран() Тогда
		Запись.ЗаказПокупателя = Ссылка;
	КонецЕсли;	
	
	ФормаЗаписи = Запись.ПолучитьФорму();
	ФормаЗаписи.Открыть();
	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. nomad_irk 80 05.10.21 19:26 Сейчас в теме
(1)Чем не устраивает подчиненный РС вместо независимого?
10. pentanom 25 05.10.21 19:38 Сейчас в теме
(9)
(1)Чем не устраивает подчиненный РС вместо независимого?
Такой РС будет изменяться после действий с Заказом покупателя, а нам этого не нужно.
13. -AI- 06.10.21 09:06 Сейчас в теме
(1)
Но после редактирования реквизитов регистра выдается сообщение "Запись с такими ключевыми полями существует!"

а где код вызывающий эту ошибку?
16. pentanom 25 06.10.21 09:57 Сейчас в теме
(13)
а где код вызывающий эту ошибку?
По ошибке останова нет. Но, вероятно, это при записи в регистр.
2. RustamZz 05.10.21 17:49 Сейчас в теме
Еще один реквизит в РС нужно добавить: Свойство тип - ПВХ.
3. pentanom 25 05.10.21 17:56 Сейчас в теме
(2)
Еще один реквизит в РС нужно добавить: Свойство тип - ПВХ.
Это зачем? Я не вижу куда это добавить.
4. RustamZz 05.10.21 18:01 Сейчас в теме
(3) Что бы ошибки не было.
5. provadyuga 99 05.10.21 18:01 Сейчас в теме
Перед редактированием нужно найти запись РС соответствующую этому документу и отредактировать ее новыми значениями. У вас наверное при каждом редактировании пытается добавить новая запись в РС.
6. pentanom 25 05.10.21 18:31 Сейчас в теме
(5)
У вас наверное при каждом редактировании добавляется новая запись в РС.
Вот и непонятно почему она добавляется. Как это исключить?
14. DBV 06.10.21 09:27 Сейчас в теме
(6) При сохранении из формы записи видимо идет запись без замещения

Наверное можно в Модуле набора записей изменить параметр Замещение,
но у меня не получилось
7. provadyuga 99 05.10.21 19:05 Сейчас в теме
(6) Через менеджер записи попробуйте изменять данные.
8. provadyuga 99 05.10.21 19:10 Сейчас в теме
Примерно так это может выглядеть
&НаСервере
Процедура УстановитьЗначенияРеквизитов()
	Запись = РегистрыСведений.РеквизитыДокумента.СоздатьМенеджерЗаписи();
	Запись.Документ = Ссылка;
	Запись.Прочитать();
	Если Запись.Выбран() Тогда
		Запись.Реквизит1 = Реквизит1;
		// ..................
		// ..................
		// ..................
		Запись.РеквизитN = РеквизитN;
		Запись.Записать();
	КонецЕсли;
КонецПроцедуры
Показать
11. pentanom 25 05.10.21 19:42 Сейчас в теме
(8)Что-то похожее делать пробовал, но может быть я такую процедуру использовал в несоответствующем месте. Куда ее нужно включить? При записи в модуле формы РС?
12. provadyuga 99 06.10.21 05:15 Сейчас в теме
(11) В
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
модуля формы вашего документа
"Заказ покупателя"
15. pentanom 25 06.10.21 09:55 Сейчас в теме
(12)
модуля формы вашего документа
"Заказ покупателя"
1. У нас УТ 10.3
2. Если в модуле Заказа покупателя, то значит нужно перезаписывать документ, а нужно только изменить РС.
17. provadyuga 99 06.10.21 11:40 Сейчас в теме
Судя по приведенному вами коду
    Если Выборка.Следующий() Тогда
        ЗаполнитьЗначенияСвойств(ФормаЗаявкиНаСборку,Выборка);
    КонецЕсли;
эти реквизиты из РС выводятся на форму документа. Ну тогда посадите кнопку на эту форму, и привяжите к ней процедуру по сохранению этих реквизитов в РС.
18. provadyuga 99 06.10.21 12:00 Сейчас в теме
Или еще можно создать процедуру в модуле формы "Заказа покупателя", которая будет открывать форму записи РС соотв. конкретному документу. И привязать эту процедуру к кнопке.
Процедура ОсновныеДействияФормыРеквизитыНаРС(Кнопка)
	
	Если Ссылка.Пустая() Тогда
		Предупреждение("Документ не записан! Для ввода реквизитов в РС документ необходимо записать!");
	КонецЕсли;	
	
	Запись = РегистрыСведений.РС.СоздатьМенеджерЗаписи();
    Запись.ЗаказПокупателя = Ссылка;
    Запись.Прочитать();
	
	Если Не Запись.Выбран() Тогда
		Запись.ЗаказПокупателя = Ссылка;
	КонецЕсли;	
	
	ФормаЗаписи = Запись.ПолучитьФорму();
	ФормаЗаписи.Открыть();
	
КонецПроцедуры
Показать
19. provadyuga 99 06.10.21 12:04 Сейчас в теме
Настройки измерения РС ЗаказПокупателя
20. jenikslove 08.10.21 10:07 Сейчас в теме
Надо передавать отбор в РС.
Форма = РегистрыСведений.ТВОЙРС.Получить"ИМЯФОРМЫ"();
ОтборПоСписку = Форма.РегистрСведенийСписок.Отбор;
ОтборПоДокументу = ОтборПоСписку.Документ;
ОтборПоДокументу .Использование = Истина;
ОтборПоДокументу .Значение = Ссылка;
А так?
21. gybson 12.10.21 10:27 Сейчас в теме
22. pentanom 25 12.10.21 12:39 Сейчас в теме
(20)С отбором все нормально, а вот с записью изменений в РС проблема.
23. pentanom 25 12.10.21 12:58 Сейчас в теме
(21)
Записать(Истина);
Есть документ, к которому я хочу "преписать" запись РС. У РС есть форма записи (других форм нет). В документе добавил процедуру открытия записи РС. Форма записи по этой процедуре открывается. Теперь мне нужно ее отредактировать в этой форме и записать изменения. Но при нажатие на "ОК" или "Записать" выдается такое сообщение ("Запись с такими ключевыми полями существует!"). Куда же добавить эту строку?

Еще. Если у измерения "Заказ покупателя" установить галку "Ведущее", в меню "Перейти" появляется строка с вызовом РС, но при открытии я попадаю в форму списка РС (хотя формы списка не задана и в способе редактирования указано "В диалоге").
Прикрепленные файлы:
24. gybson 12.10.21 16:02 Сейчас в теме

Запись = РегистрыСведений.РС.СоздатьМенеджерЗаписи();
Запись.ЗаказПокупателя = Ссылка;
Запись.Прочитать();
Запись.Реквизит1 = 1;
Запись.Записать(Истина);

Показать


А типовых допреквизитов нет в конфе?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот