Коллеги, помогите разобраться, не понимаю в чём дело:
У РС есть два измерения - УникальныйИдентификатор (строка) и ЗаявкаНаРасходованиеДС (документ ссылка).
Перед записью табличной части документа пытаюсь очистить записи РС по установленному в отборе УИД и записать новые. В итоге, РС очищается полностью - то есть не срабатывает отбор по УИД.
УИД в отбор передаётся, но отбор не срабатывает. В отладчике смотрел, что Количество() записей в РС после отбора равно нулю.
В чём может быть дело?
У РС есть два измерения - УникальныйИдентификатор (строка) и ЗаявкаНаРасходованиеДС (документ ссылка).
Перед записью табличной части документа пытаюсь очистить записи РС по установленному в отборе УИД и записать новые. В итоге, РС очищается полностью - то есть не срабатывает отбор по УИД.
УИД в отбор передаётся, но отбор не срабатывает. В отладчике смотрел, что Количество() записей в РС после отбора равно нулю.
В чём может быть дело?
Если Не Отказ Тогда
УИДСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "УникальныйИдентификатор_f28953a6b0b647efaaf66265232aaea7");
УИД = УправлениеСвойствами.ЗначениеСвойства(Объект.Ссылка, УИДСвойство);
Если УИД <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| псПакетыЗаявок.УникальныйИдентификатор КАК УникальныйИдентификатор,
| псПакетыЗаявок.ЗаявкаНаРасходованиеДС КАК ЗаявкаНаРасходованиеДС
|ИЗ
| РегистрСведений.псПакетыЗаявок КАК псПакетыЗаявок
|ГДЕ
| псПакетыЗаявок.УникальныйИдентификатор = &УникальныйИдентификатор";
Запрос.УстановитьПараметр("УникальныйИдентификатор", УИД);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
// очищаем старые записи РС по УИД
РС = РегистрыСведений.псПакетыЗаявок.СоздатьНаборЗаписей();
РС.Отбор.УникальныйИдентификатор.Установить(УИД);
РС.Записать(Истина);
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
// записываем новые
РС = РегистрыСведений.псПакетыЗаявок.СоздатьНаборЗаписей();
Для Каждого Строка Из ЭтаФорма.ТаблицаЗаявок Цикл
НоваяЗапись = РС.Добавить();
НоваяЗапись.ЗаявкаНаРасходованиеДС = Строка.ЗаявкаНаРасходованиеДС;
НоваяЗапись.УникальныйИдентификатор = Строка.УникальныйИдентификатор;
КонецЦикла;
РС.Записать();
КонецЕсли;
КонецЕсли;
ПоказатьПо теме из базы знаний
- Обработка регистров сведений
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Подсистема прав доступа к объектам с гибкими отборами (расширение)
- Редактор регистров сведений для управляемых форм 8.3
- Экспертный кейс. Недостаточно памяти для получения результата запроса: что это такое и как с этим бороться?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Далее вы создаете набор вовсе без отбора, так что весь РС перезаписывается этим набором.
В отладчике смотрел, что Количество() записей в РС после отбора равно нулю.
Это не доказывает, что РС очищается полностью. Записывая пустой набор с отбором по определенному измерению, вы лишь удаляете записи с этим измерением.
Далее вы создаете набор вовсе без отбора, так что весь РС перезаписывается этим набором.
(9) У меня? Когда осваивал - было дело, конечно, "на кошках". Когда с нуля разрабатывал что-то проскакивало тоже иногда на ранних порах. В рабочих каких-то конфигах - не припоминаю за 20 лет таких случаев.
А вот то, что восстанавливал регистры за другими "хакерами" в рабочих базах - точно было дело.
А вот то, что восстанавливал регистры за другими "хакерами" в рабочих базах - точно было дело.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот