Результат COM-запроса, отличается от результата в базе
Добрый день коллеги.
Переношу остатки из базы 1с Астор в базу 1с УТ.
Есть com запрос, который выбирает остатки по партиям на дату. Вот этот запрос через com соединение возвращает больше остатков, которые существуют в базе.
Причем. com запрос возвращает те партиии, которые в базе источнике помечены на удаления, не содержат движения по регистрам и более того они даже не зависли в рассчитанных итогах по таблице.
Т.е. выполняю один и тот же запрос в источнике, получаю результат 0 строк, выполняю через com результат партия которая в источнике помечена на удаление.
обе базы в клиент-серверном варианте.
MSSQL на одной машине(обе базы на нем), сервер 1с на другой машине, выполняю запросы на своем рабочем месте. Предполагаю что где то, что то кешируется.
Вопросов два, как почистить эти кеши?
Или как выполнить ком запрос без обращения к кешам?
Переношу остатки из базы 1с Астор в базу 1с УТ.
Есть com запрос, который выбирает остатки по партиям на дату. Вот этот запрос через com соединение возвращает больше остатков, которые существуют в базе.
Причем. com запрос возвращает те партиии, которые в базе источнике помечены на удаления, не содержат движения по регистрам и более того они даже не зависли в рассчитанных итогах по таблице.
Т.е. выполняю один и тот же запрос в источнике, получаю результат 0 строк, выполняю через com результат партия которая в источнике помечена на удаление.
обе базы в клиент-серверном варианте.
MSSQL на одной машине(обе базы на нем), сервер 1с на другой машине, выполняю запросы на своем рабочем месте. Предполагаю что где то, что то кешируется.
Вопросов два, как почистить эти кеши?
Или как выполнить ком запрос без обращения к кешам?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) DJDUH, Это общий совет.
База источник, рабочая. Проводить в ней такие эксперименты, по тестированию и исправлению довольно сложно.
Перегрузка остатков идет ~18 часов. Хотелось бы узнать более точечную причину проблемы.
Рассуждая по поводу ваших советов.
>>переиндекс базы сиквелом
Что это даст? что обычный, что ком запрос дергает 1с для получения данных из 1с. предполагаю что запросы в скуль падают идентичные. Если рабочая база возвращает корректный результат, то процентов на 80% проблема не в скуле.
Тестирование и исправление.... Что они мне дадут? Риск повредить боевую базу-возможно, сделать корректный кмо возврат тоже возможно, но риск первого выше чем результат второго успеха.
Предполагаю что можно почистить временные файлы, у меня, на сервере. Но это лишь предположения.
Может кто то обладает информацией по архитектуре сом запросов, что происходит, как стучится, где кешируется, как преобразуются параметры и т.д.?
База источник, рабочая. Проводить в ней такие эксперименты, по тестированию и исправлению довольно сложно.
Перегрузка остатков идет ~18 часов. Хотелось бы узнать более точечную причину проблемы.
Рассуждая по поводу ваших советов.
>>переиндекс базы сиквелом
Что это даст? что обычный, что ком запрос дергает 1с для получения данных из 1с. предполагаю что запросы в скуль падают идентичные. Если рабочая база возвращает корректный результат, то процентов на 80% проблема не в скуле.
Тестирование и исправление.... Что они мне дадут? Риск повредить боевую базу-возможно, сделать корректный кмо возврат тоже возможно, но риск первого выше чем результат второго успеха.
Предполагаю что можно почистить временные файлы, у меня, на сервере. Но это лишь предположения.
Может кто то обладает информацией по архитектуре сом запросов, что происходит, как стучится, где кешируется, как преобразуются параметры и т.д.?
(4) deniseek77,
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст ="ВЫБРАТЬ
| ПартииНоменклатурыОстатки.Партия.Документ КАК Партия,
| ПартииНоменклатурыОстатки.Номенклатура,
| СУММА(ПартииНоменклатурыОстатки.КоличествоОстаток) КАК КоличествоОстаток,
| ПартииНоменклатурыОстатки.МестоХранения
|ПОМЕСТИТЬ Остатки
|ИЗ
| РегистрНакопления.ПартииНоменклатуры.Остатки(&НаДату, ) КАК ПартииНоменклатурыОстатки
|ГДЕ
| ПартииНоменклатурыОстатки.КоличествоОстаток > 0
| И ПартииНоменклатурыОстатки.Партия.Фирма.Код = 1 И не ПартииНоменклатурыОстатки.Партия.Документ ССЫЛКА Документ.Инвентаризация
|
|СГРУППИРОВАТЬ ПО
| ПартииНоменклатурыОстатки.Номенклатура,
| ПартииНоменклатурыОстатки.Партия.Документ,
| ПартииНоменклатурыОстатки.МестоХранения
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Остатки.МестоХранения.Наименование КАК СкладНаименование,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Партия) как Комментарий,
| Остатки.Партия.Номер как ПартияДокументНомер,
| Остатки.Партия.Дата как ПартияДокументДата,
| Остатки.Партия.Контрагент.Код как КонтрагентКод,
| Остатки.Партия.Договор.Код как ДоговорКод,
| Остатки.Партия.Валюта.Наименование,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Партия.ВариантРасчетаНДС.Ссылка) как НДС,
| Остатки.Партия.НомерСФ,
| Остатки.Партия.ДатаСФ,
| Остатки.Номенклатура.Код как НоменклатураКод,
| Остатки.КоличествоОстаток как Количество,
| ПриходнаяНакладнаяСостав.Цена как Цена,
| ПриходнаяНакладнаяСостав.СтавкаНДС.Наименование как СтавкаНДС,
| Остатки.Партия КАК Партия
|ИЗ
| Остатки КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Состав КАК ПриходнаяНакладнаяСостав
| ПО Остатки.Номенклатура = ПриходнаяНакладнаяСостав.Номенклатура
| И Остатки.Партия = ПриходнаяНакладнаяСостав.Ссылка
|УПОРЯДОЧИТЬ ПО
| Остатки.Партия.Дата
|ИТОГИ ПО
| СкладНаименование,
| Партия";
Запрос.УстановитьПараметр("НаДату",КонецДня(НаДату));
Показать
(1) maguga,
Как вариант, через внешнюю обработку: делаете внешник, в его модуле - экспортную функцию, в этой функции - выполнение запроса и возврат (ЗначениеВСтрокуВнутр()), сохранение (ЗначениеВФайл()) результата запроса.
В базе, откуда подключаетесь, запускаете этот внешник:
Т.е. выполняю один и тот же запрос в источнике, получаю результат 0 строк
База точно одна и та же?
как выполнить ком запрос без обращения к кешам?
Как вариант, через внешнюю обработку: делаете внешник, в его модуле - экспортную функцию, в этой функции - выполнение запроса и возврат (ЗначениеВСтрокуВнутр()), сохранение (ЗначениеВФайл()) результата запроса.
В базе, откуда подключаетесь, запускаете этот внешник:
КомОбработка = Соединение.ВнешниеОбработки.Создать(ИмяФайла);
КомРезультат = КомОбработка.ПолучитьРезультат();//имя экспортной функции
Результат = ЗначениеИзСтрокиВнутр(КомРезультат);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот