|
|
|
Ошибка создания записи в регистре сведений | УТ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) Ну так я и написал &После("ПриЗаписи")
Спасибо конечно) Перед, После, Вместо) |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |