Бух 3.0.106.60. Делаю отладку. Понадобилось очистить ранее заполненное доп. сведение у документа. Тип доп. сведения - ссылка на другой документ. Очищаю, нажимаю Записать и закрыть - открываю - в поле старое значение... Если просто нажать Записать - то признак модифицированности уходит, как будто записано, но по факту ничего не записано. Я не понял логику. Пояснит кто-нибудь? Если ошиблись и не в том документе установили доп. сведение, то как теперь сбросить это доп. сведение?
В процедуре ЗаписатьНаборСвойствВРегистр (общий модуль РедактированиеДополнительныхСведений) стоит конкретная проверка:
В процедуре ЗаписатьНаборСвойствВРегистр (общий модуль РедактированиеДополнительныхСведений) стоит конкретная проверка:
Если Не ЗначениеЗаполнено(Запись.Значение)
Или Запись.Значение = Ложь Тогда
ТекущиеЗначения.Удалить(Запись);
КонецЕсли;
&НаСервереБезКонтекста
Процедура ЗаписатьНаборСвойствВРегистр(Знач Ссылка, Знач ЗначенияСвойств)
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ДополнительныеСведения");
ЭлементБлокировки.УстановитьЗначение("Объект", Ссылка);
Блокировка.Заблокировать();
Набор = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
Набор.Отбор.Объект.Установить(Ссылка);
Набор.Прочитать();
ТекущиеЗначения = Набор.Выгрузить();
Для Каждого Строка Из ЗначенияСвойств Цикл
Запись = ТекущиеЗначения.Найти(Строка.Свойство, "Свойство");
Если Запись = Неопределено Тогда
Запись = ТекущиеЗначения.Добавить();
Запись.Свойство = Строка.Свойство;
Запись.Значение = Строка.Значение;
Запись.Объект = Ссылка;
КонецЕсли;
Запись.Значение = Строка.Значение;
Если Не ЗначениеЗаполнено(Запись.Значение)
Или Запись.Значение = Ложь Тогда
ТекущиеЗначения.Удалить(Запись);
КонецЕсли;
КонецЦикла;
Набор.Загрузить(ТекущиеЗначения);
Набор.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Всякие полезности
- Типовая борьба - личный опыт работы с типовыми конфигурациями 1С:8
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
- Использование дополнительных реквизитов и сведений в отчетах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Из РС Дополнительные сведения тоже не получается удалить:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов:
- Поле объекта "Наименование" не существует
{ОбщийМодуль.ОбщегоНазначения.Модуль(595)}: ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{ОбщийМодуль.ОбщегоНазначения.Модуль(288)}: ЗначенияРеквизитовОбъекта = ЗначенияРеквизитовОбъектов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Ссылка), Реквизиты, ВыбратьРазрешенные, КодЯзыка)[Ссылка];
{ОбщийМодуль.ОбщегоНазначения.Модуль(401)}: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка);
{ОбщийМодуль.УправлениеСвойствами.Модуль(2022)}: Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Значение, "Наименование", , КодЯзыка);
{ОбщийМодуль.УправлениеСвойствами.Модуль(1054)}: ФорматСвойства(ЗначениеСвойства.Свойство));
{ОбщийМодуль.УправлениеСвойствамиСлужебный.Модуль(239)}: Для Каждого ЗначениеСвойства Из УправлениеСвойствами.ЗначенияСвойств(Объект.Ссылка, ПолучатьДопРеквизиты, ПолучатьДопСведения) Цикл
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(2983)}: МодульУправлениеСвойствамиСлужебный.ПриПодготовкеДанныхОбъекта(Объект, ДополнительныеРеквизиты);
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1833)}: Возврат Выборка.КонтрольнаяСумма <> КонтрольнаяСумма(ДанныеДляХранения(Объект));
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1289)}: Если Не Объект.ЭтоНовый() И (ИзмененаПроведенность И СведенияОВерсииОбъекта.НомерВерсии > 1 Или ВерсияОтличаетсяОтРанееЗаписанной(Объект)) Тогда
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1401)}: СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта);
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(237)}: ПриСозданииВерсииОбъекта(Источник, РежимЗаписи);
{РегистрСведений.ДополнительныеСведения.МодульНабораЗаписей(24)}: МодульВерсионированиеОбъектов.ЗаписатьВерсиюОбъекта(ЭлементОтбора.Значение);
Показатьпо причине:
Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов:
- Поле объекта "Наименование" не существует
{ОбщийМодуль.ОбщегоНазначения.Модуль(595)}: ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{ОбщийМодуль.ОбщегоНазначения.Модуль(288)}: ЗначенияРеквизитовОбъекта = ЗначенияРеквизитовОбъектов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Ссылка), Реквизиты, ВыбратьРазрешенные, КодЯзыка)[Ссылка];
{ОбщийМодуль.ОбщегоНазначения.Модуль(401)}: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка);
{ОбщийМодуль.УправлениеСвойствами.Модуль(2022)}: Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Значение, "Наименование", , КодЯзыка);
{ОбщийМодуль.УправлениеСвойствами.Модуль(1054)}: ФорматСвойства(ЗначениеСвойства.Свойство));
{ОбщийМодуль.УправлениеСвойствамиСлужебный.Модуль(239)}: Для Каждого ЗначениеСвойства Из УправлениеСвойствами.ЗначенияСвойств(Объект.Ссылка, ПолучатьДопРеквизиты, ПолучатьДопСведения) Цикл
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(2983)}: МодульУправлениеСвойствамиСлужебный.ПриПодготовкеДанныхОбъекта(Объект, ДополнительныеРеквизиты);
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1833)}: Возврат Выборка.КонтрольнаяСумма <> КонтрольнаяСумма(ДанныеДляХранения(Объект));
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1289)}: Если Не Объект.ЭтоНовый() И (ИзмененаПроведенность И СведенияОВерсииОбъекта.НомерВерсии > 1 Или ВерсияОтличаетсяОтРанееЗаписанной(Объект)) Тогда
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(1401)}: СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта);
{ОбщийМодуль.ВерсионированиеОбъектов.Модуль(237)}: ПриСозданииВерсииОбъекта(Источник, РежимЗаписи);
{РегистрСведений.ДополнительныеСведения.МодульНабораЗаписей(24)}: МодульВерсионированиеОбъектов.ЗаписатьВерсиюОбъекта(ЭлементОтбора.Значение);
(15) Я так и делаю. И об этом написано в (0) (если когда-нибудь прочитаете (0)).
На всякий случай ещё попытался удалить непосредственно в РС, т.к. у меня пока отладка.
Но основной вопрос в том - как очистить пользователю. У меня - не сохраняет.
После сохранения переоткрывали?
На всякий случай ещё попытался удалить непосредственно в РС, т.к. у меня пока отладка.
Но основной вопрос в том - как очистить пользователю. У меня - не сохраняет.
После сохранения переоткрывали?
а вы как программист, случайно умеете пользоваться отладчиком? вообще знаете что это такое?
если знаете и умеете пользоваться отладчиком, поставьте точку останова в этой процедуре, и по шагам пройдите, сразу все станет ясно.
(а если нет, тогда, все же, к НАСТОЯЩЕМУ программисту)
если знаете и умеете пользоваться отладчиком, поставьте точку останова в этой процедуре, и по шагам пройдите, сразу все станет ясно.
(а если нет, тогда, все же, к НАСТОЯЩЕМУ программисту)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот