|
Ошибка создания записи в регистре сведений | УТ11 | ☑ | ||
---|---|---|---|---|
0
Lepexa207
25.07.24
✎
08:52
|
Добрый день. Возникла такая проблема, мне необходимо сопоставлять состояния (они выставляются автоматически - Диадок), но само состояние записывается лишь в дополнительные сведения одного документа. Менеджерам и бухам необходимо видеть их и в реализации и заказе клиента.
В итоге я докопался до того, что смог отобрать значение состояния из счёта и застрял на том, чтобы записать это значение в реализации и заказе клиента, так как у меня не встаёт значение объекта при записи в регистр сведений. Я правда не понимаю в чём проблема, хотелось бы прояснений) Вот код: &НаСервере Функция ПолучитьДиадок() ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "СтатусДиадок"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДополнительныеСведения.Значение КАК Значение, | ДополнительныеСведения.Свойство КАК Свойство |ИЗ | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения |ГДЕ | ДополнительныеСведения.Объект = &Объект | И ДополнительныеСведения.Свойство = &Свойство"; Запрос.УстановитьПараметр("Объект", Объект.Ссылка); Запрос.УстановитьПараметр("Свойство", ДопСвойство); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Свойство = ДопСвойство Тогда Сообщить(Выборка.Значение); Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда РеализацияДок = Объект.ДокументОснование.ПолучитьОбъект(); НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Объект = РеализацияДок; // Вот его он не записывает, хотя в отладке явно видна ссылка на Реализацию НоваяЗапись.Свойство = ДопСвойство; НоваяЗапись.Значение = Выборка.Значение; КонецЕсли; КонецЕсли; КонецЦикла; КонецФункции Сам регистр сведений "Дополнительные сведения" является независимым, непериодическим. Ошибка по причине: Запись не верна! Значение поля "Объект" не может быть пустым!: ДополнительныеСведения: , Статус Диадок (Счета-фактуры выданные) (Регистр сведений: Дополнительные сведения) |
|||
1
mmg
25.07.24
✎
08:58
|
(0) Если поле назвали "объект", это еще не означает, что туда надо писать объект.
|
|||
2
Lepexa207
25.07.24
✎
09:05
|
(1) М, там сначала идёт выбор типа данных, а после выбор документа
|
|||
3
Мультук
25.07.24
✎
09:09
|
(0)
НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Объект = РеализацияДок; // Вот его он не записывает, хотя в отладке явно видна ссылка на Реализацию НоваяЗапись.Свойство = ДопСвойство; НоваяЗапись.Значение = Выборка.Значение; Хотите очистить весь регистр РегистрыСведений.ДополнительныеСведения ? Ай молодец! Хорошо что 1С предусмотрительно упал в ошибку. |
|||
4
ass1c
25.07.24
✎
09:10
|
МенеджерЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = Объект.ДокументОснование.ССЫЛКА; МенеджерЗаписи.Свойство = ДопСвойство; МенеджерЗаписи.Значение = Выборка.Значение; МенеджерЗаписи.Записать(Истина); |
|||
5
Lepexa207
25.07.24
✎
09:12
|
(3) ну поэтому и работаю в тестовой, чтобы в случае чего откатить)
а так, забавно бы получилось. Буду знать) |
|||
6
Мультук
25.07.24
✎
09:13
|
(4)
Вот зачем, объясните мне, вы (как множество) вместо МенеджерЗаписи.Объект = Объект.ДокументОснование; пишите МенеджерЗаписи.Объект = Объект.ДокументОснование.ССЫЛКА; ДокументОснование -- это уже ссылка. |
|||
7
Lepexa207
25.07.24
✎
09:14
|
(4) Спасибо, работает, истина была рядом)
|
|||
9
Timon1405
25.07.24
✎
13:02
|
||||
10
Lepexa207
25.07.24
✎
13:13
|
Другой вопрос. У меня всё работает, я начал делать расширение, я выполняю данный код через сам Регистр Сведений : Дополнительные Сведения, через его Модуль набора записи.
Я написал "Область", в ней процедуру "При записи", но в итоге с "Расширения" даже не идёт отладка. Вот код: #Область ОбработчикиСобытий Процедура ПриЗаписи(Отказ) // // Мой код // КонецПроцедуры &Вместо("ПередЗаписью") Процедура СДР_ПередЗаписью(Отказ, Замещение) Сообщить("Проверка"); // Причём, этот отрабатывает КонецПроцедуры #КонецОбласти В самом регистре нет ничего кроме ПередЗаписью, так что я не могу понять в чём проблема🤦 |
|||
11
Мультук
25.07.24
✎
13:35
|
(10)
1) Просто восхитительно. Был/есть типовой код? В топку его (с) &Вместо("ПередЗаписью") 2) Я не знаю (сталкиваюсь без фанатизма) как работают расширения, но вот -- почему у "ПередЗаписью" есть префикс и чудное &Вместо("ПередЗаписью") -- а у "ПриЗаписи" ни префикса, ни чудесных магических слов ? P.S. Жизнь вам уже второй раз подсказывает "не делай это", а вы не слышите. P.P.S. Интересно, а Диадок с вашими изобретениями согласен ? Ему не поплохеет ? |
|||
12
Lepexa207
25.07.24
✎
13:46
|
(11) Да я видел эту штуку как &Вместо, я ж и описал, что кроме ПередЗаписью нет никаких других процедур. Следовательно как я могу обратиться к ПриЗаписи в обвёртке &Вместо если его нет в самой конфигурации
Так я думал, пока не попробовал и оно заработало, спасибо) Да и к чему тут Диадок, я просто беру же его статус и обновляю его в других, в которых он не может. |
|||
13
Мультук
25.07.24
✎
13:56
|
(12)
>> кроме ПередЗаписью нет никаких других процедур Сейчас нет. В данном релизе нет. А в будущем 1С добавит "ПриЗаписи", а работать оно не будет, ибо вы уже написали "Вместо". (0) Вопрос к тебе Какие еще волшебные слова ("Аннотации") можно написать вместо "Вместо" ? |
|||
14
Lepexa207
25.07.24
✎
14:04
|
(13) Ну так я и написал &После("ПриЗаписи")
Спасибо конечно) Перед, После, Вместо) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |