Результат COM-запроса, отличается от результата в базе

1. maguga 19 20.11.14 09:34 Сейчас в теме
Добрый день коллеги.

Переношу остатки из базы 1с Астор в базу 1с УТ.
Есть com запрос, который выбирает остатки по партиям на дату. Вот этот запрос через com соединение возвращает больше остатков, которые существуют в базе.
Причем. com запрос возвращает те партиии, которые в базе источнике помечены на удаления, не содержат движения по регистрам и более того они даже не зависли в рассчитанных итогах по таблице.

Т.е. выполняю один и тот же запрос в источнике, получаю результат 0 строк, выполняю через com результат партия которая в источнике помечена на удаление.

обе базы в клиент-серверном варианте.
MSSQL на одной машине(обе базы на нем), сервер 1с на другой машине, выполняю запросы на своем рабочем месте. Предполагаю что где то, что то кешируется.

Вопросов два, как почистить эти кеши?
Или как выполнить ком запрос без обращения к кешам?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 20.11.14 10:37 Сейчас в теме
(1) maguga, переиндекс базы сиквелом, перед этип забекапся, затем зайди в тест и исрпавление - выполни,,,, затем проведи снова свои тесты!
3. maguga 19 20.11.14 11:31 Сейчас в теме
(2) DJDUH, Это общий совет.

База источник, рабочая. Проводить в ней такие эксперименты, по тестированию и исправлению довольно сложно.
Перегрузка остатков идет ~18 часов. Хотелось бы узнать более точечную причину проблемы.

Рассуждая по поводу ваших советов.
>>переиндекс базы сиквелом
Что это даст? что обычный, что ком запрос дергает 1с для получения данных из 1с. предполагаю что запросы в скуль падают идентичные. Если рабочая база возвращает корректный результат, то процентов на 80% проблема не в скуле.

Тестирование и исправление.... Что они мне дадут? Риск повредить боевую базу-возможно, сделать корректный кмо возврат тоже возможно, но риск первого выше чем результат второго успеха.

Предполагаю что можно почистить временные файлы, у меня, на сервере. Но это лишь предположения.

Может кто то обладает информацией по архитектуре сом запросов, что происходит, как стучится, где кешируется, как преобразуются параметры и т.д.?
4. deniseek77 86 20.11.14 11:54 Сейчас в теме
(3) maguga, Текст запроса в студию? Давайте посмотрим, что может быть еще.
5. maguga 19 20.11.14 11:59 Сейчас в теме
(4) deniseek77,

	Запрос = Соединение.NewObject("Запрос");
	Запрос.Текст ="ВЫБРАТЬ
	|	ПартииНоменклатурыОстатки.Партия.Документ КАК Партия,
	|	ПартииНоменклатурыОстатки.Номенклатура,
	|	СУММА(ПартииНоменклатурыОстатки.КоличествоОстаток) КАК КоличествоОстаток,
	|	ПартииНоменклатурыОстатки.МестоХранения
	|ПОМЕСТИТЬ Остатки
	|ИЗ
	|	РегистрНакопления.ПартииНоменклатуры.Остатки(&НаДату, ) КАК ПартииНоменклатурыОстатки
	|ГДЕ
	|	ПартииНоменклатурыОстатки.КоличествоОстаток > 0
	|	И ПартииНоменклатурыОстатки.Партия.Фирма.Код = 1  И не ПартииНоменклатурыОстатки.Партия.Документ ССЫЛКА Документ.Инвентаризация
	|
	|СГРУППИРОВАТЬ ПО
	|	ПартииНоменклатурыОстатки.Номенклатура,
	|	ПартииНоменклатурыОстатки.Партия.Документ,
	|	ПартииНоменклатурыОстатки.МестоХранения
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Остатки.МестоХранения.Наименование КАК СкладНаименование,
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Партия) как Комментарий,
	|	Остатки.Партия.Номер как ПартияДокументНомер,
	|	Остатки.Партия.Дата как ПартияДокументДата,
	|	Остатки.Партия.Контрагент.Код как КонтрагентКод,
	|	Остатки.Партия.Договор.Код как ДоговорКод,
	|	Остатки.Партия.Валюта.Наименование,
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Партия.ВариантРасчетаНДС.Ссылка) как НДС,
	|	Остатки.Партия.НомерСФ,
	|	Остатки.Партия.ДатаСФ,
	|	Остатки.Номенклатура.Код как НоменклатураКод,
	|	Остатки.КоличествоОстаток как Количество,
	|	ПриходнаяНакладнаяСостав.Цена как Цена,
	|	ПриходнаяНакладнаяСостав.СтавкаНДС.Наименование как СтавкаНДС,
	|	Остатки.Партия КАК Партия
	|ИЗ
	|	Остатки КАК Остатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Состав КАК ПриходнаяНакладнаяСостав
	|		ПО Остатки.Номенклатура = ПриходнаяНакладнаяСостав.Номенклатура
	|			И Остатки.Партия = ПриходнаяНакладнаяСостав.Ссылка
	 |УПОРЯДОЧИТЬ ПО
	 |	Остатки.Партия.Дата
	|ИТОГИ ПО
	|	СкладНаименование,
	|	Партия";
	Запрос.УстановитьПараметр("НаДату",КонецДня(НаДату));

Показать
9. Allexe8.1 20.11.14 12:52 Сейчас в теме
(1) maguga,
Т.е. выполняю один и тот же запрос в источнике, получаю результат 0 строк
База точно одна и та же?
как выполнить ком запрос без обращения к кешам?

Как вариант, через внешнюю обработку: делаете внешник, в его модуле - экспортную функцию, в этой функции - выполнение запроса и возврат (ЗначениеВСтрокуВнутр()), сохранение (ЗначениеВФайл()) результата запроса.

В базе, откуда подключаетесь, запускаете этот внешник:
КомОбработка = Соединение.ВнешниеОбработки.Создать(ИмяФайла);
КомРезультат = КомОбработка.ПолучитьРезультат();//имя экспортной функции
Результат = ЗначениеИзСтрокиВнутр(КомРезультат);
6. maguga 19 20.11.14 12:04 Сейчас в теме
не дослал

Результат = Запрос.execute();

Собственно запрос простой. Тип параметра простой(тип дата), устанавливаться между базами должен без проблем(ИМХО). В запросе так же нет никаких заковырок.
7. deniseek77 86 20.11.14 12:13 Сейчас в теме
(6) maguga, хм...ну, да, вроде все так. В источнике-0, а через com что то видит...Глюк. Да, видимо всетаки с кэшем чтото, а данные в момент запроса не меняются? Может добавить еще- блокировать для изменения... или разрешенные ? Хотя, врядли...
8. maguga 19 20.11.14 12:22 Сейчас в теме
данные не меняются, При чем он видит остатки по тем документам, которые помечены не вчера и не сегодня, а несколько месяцев назад...

Кеш чистить, вопрос какой кеш? где?
10. maguga 19 20.11.14 17:56 Сейчас в теме
Источник "корябать" нельзя, он в зоне ответственности отдельной компании. А так мысль хорошая.
11. drlivsey 20.11.14 18:09 Сейчас в теме
Если задача разовая, а перенос остатков как правило разовая задача, то как вариант внешняя обработка, запускаемая в Асторе, которая куда либо выгружает данные. Потом собственно часть 2, в УТ загрузить то, что выгрузили в Асторе.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот