Запрос в цикле к регистру сведений не видит изменений этого регистра в этом цикле
Добрый день!
Есть периодический регистр сведений "АрхивTS", у него есть индексированный ресурс "ИмяTSФайлаСРасширением" типа "Строка". Есть цикл по внешним файлам для заполнения имени. Чтобы не было дублей некрасиво в цикле идёт запрос.
Запрос специально в цикле, чтобы видеть свежедобавленные записи, но он их не видит! Как минимум, при одном пользователе в базе. Возможно, 1С видит, что параметр у запроса не меняется и не выполняет его вновь. Кеш чистил - не помогает.
Как с этим бороться?
В данном конкретном случае я вышел из положения через ТЗ с индексом (заодно и запрос вынес за пределы цикла), но как именно заставить запрос выполняться каждый раз?
Есть периодический регистр сведений "АрхивTS", у него есть индексированный ресурс "ИмяTSФайлаСРасширением" типа "Строка". Есть цикл по внешним файлам для заполнения имени. Чтобы не было дублей некрасиво в цикле идёт запрос.
Финиш=Текст.КоличествоСтрок();
Для СчСтрок=1 По Финиш Цикл
// тут очень много всякой разной фигни
// а не было уже этого TS-файла?
// запрос в цикле СПЕЦИАЛЬНО,
// чтобы видеть свежедобавленные записи
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| АрхивTS.ИмяTSФайлаСРасширением КАК ИмяTSФайлаСРасширением
|ИЗ
| РегистрСведений.АрхивTS КАК АрхивTS
|ГДЕ
| АрхивTS.ИмяTSФайлаСРасширением = &ИмяTSФайлаСРасширением";
Запрос.УстановитьПараметр("ИмяTSФайлаСРасширением", ИмяTS_ФайлаУНас);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Продолжить;
КонецЕсли;
// тут ещё много всякой фигни
// заполняем регистр
МенеджерЗаписиРегистраАрхивTS=РегистрыСведений.АрхивTS.СоздатьМенеджерЗаписи();
МенеджерЗаписиРегистраАрхивTS.ИмяTSФайлаСРасширением=ИмяTS_ФайлаУНас;
МенеджерЗаписиРегистраАрхивTS.Период=ТекущийПериод;
// ещё всякие реквизиты
МенеджерЗаписиРегистраАрхивTS.Записать();
КонецЦикла;
ПоказатьЗапрос специально в цикле, чтобы видеть свежедобавленные записи, но он их не видит! Как минимум, при одном пользователе в базе. Возможно, 1С видит, что параметр у запроса не меняется и не выполняет его вновь. Кеш чистил - не помогает.
Как с этим бороться?
В данном конкретном случае я вышел из положения через ТЗ с индексом (заодно и запрос вынес за пределы цикла), но как именно заставить запрос выполняться каждый раз?
По теме из базы знаний
- hsИнтегратор 3. Онлайновый обмен и удаленное исполнение функций по HTTP протоколу
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Backend силами 1С. 4 кейса внедрений
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(19) Уверенность есть. Под отладчиком МенеджерЗаписиРегистраАрхивTS.Записать() проходит.
Возможно, я не прав и тему следовало бы назвать "Менеджер записи записывает через раз", но:
1) есть ресурс "НомерЗаписи" и он стабильно увеличивается. Только, если поглядеть в базу, он увеличивается не через 1, как должен, а через 2, иногда и через 6.
2) стоило заменить поиск через запрос на поиск через ТЗ, как всё заработало
Следовательно, запись в регистр ПРОХОДИТ
Возможно, я не прав и тему следовало бы назвать "Менеджер записи записывает через раз", но:
1) есть ресурс "НомерЗаписи" и он стабильно увеличивается. Только, если поглядеть в базу, он увеличивается не через 1, как должен, а через 2, иногда и через 6.
2) стоило заменить поиск через запрос на поиск через ТЗ, как всё заработало
Следовательно, запись в регистр ПРОХОДИТ
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот