Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 23:56

Неправильная обработка запроса в 1с 8.2

Автор Baltazarar, 06 мар 2012, 15:31

0 Пользователей и 1 гость просматривают эту тему.

Baltazarar

Здравствуйте помогите с такой проблемой. Есть в 1с-ке отчёт по складам, который формируется на основе регистра. Отчёт показывает правильное состояние складов, но когда я пытаюсь получить остатки регистра через запрос по определённым параметрам в документе и вывести в табличную часть конкретные значения, то выводятся не совсем корректные сведения: часть выводится правильно, а по некоторым позициям вылазят непонятные минуса. Текст запроса проверял, ошибок нет (с другими регистрами примерно такие-же запросы проходят правильно), пробовал разные виды запросов (по остаткам, суммы, обороты) - не помогает. И иногда как будто некоторые документы отменяются( то есть документ числится проведённым, но запросы к регистру не хотят видеть движение, хотя запись в регистре есть. Отмена проведения документа и проведение его заново проблему решают, но документов туева хуча и искать какой именно документ отменился порой очень сложно). Если кто сталкивался с подобным подскажите есть ли решение без необходимости создавать регистр заново?

СветланаCC

Скорее всего не правильно создаете запрос... по идее если отчет по одному и тому же регистру - данные должны быть одинаковыми
Тазовод)

Baltazarar

в том-то и проблема, что большинство позиций при запросе совпадает с отчётом, а часть вылазит минусами (сразу говорю проблема не в периоде -пробовал выставлять на завтрашнее число не помогает), причём минуса вылазят не в течении дня а где попало

СветланаCC

Какая база? отчет делаете на компановке? текст запроса можно увидеть?
Тазовод)

Baltazarar

Движения.РегистрЗаказов.Записывать = Истина;
Для Каждого ТекСтрокаТовар Из Товар Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегистрЗаказовОстатки.Магазин,
| РегистрЗаказовОстатки.Покупатель,
| РегистрЗаказовОстатки.Номенклатура,
| РегистрЗаказовОстатки.Дата,
| СУММА(РегистрЗаказовОстатки.ЗаказаноОстаток) КАК ЗаказаноОстаток,
| СУММА(РегистрЗаказовОстатки.НаСкладеОстаток) КАК НаСкладеОстаток
|ИЗ
| РегистрНакопления.РегистрЗаказов.Остатки КАК РегистрЗаказовОстатки
|ГДЕ
| РегистрЗаказовОстатки.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| РегистрЗаказовОстатки.Магазин,
| РегистрЗаказовОстатки.Покупатель,
| РегистрЗаказовОстатки.Номенклатура,
| РегистрЗаказовОстатки.Дата";

Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовар.Номенклатура);
Запрос.УстановитьПараметр("Дата", ТекстрокаТовар.ДатаЗаказа);
Запрос.УстановитьПараметр("Магазин", ТекСтрокаТовар.Магазин);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// регистр РегистрЗаказов Расход
Сообщить(НаскладеОстаток);
Сообщить(ЗаказаноОстаток);
Если ВыборкаДетальныеЗаписи.НаСкладеОстаток>0 тогда
Сообщить( "Перемещение на склад "+ТекстрокаТовар.Магазин+" номенклатуры"+ТекСтрокаТовар.Номенклатура);
Движение = Движения.РегистрЗаказов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Магазин = ТекСтрокаТовар.Магазин;
Движение.Номенклатура = ТекСтрокаТовар.Номенклатура;
Движение.Дата = ТекСтрокаТовар.ДатаЗаказа;
Движение.НаСкладе = ТекСтрокаТовар.Количество;

Движения.ТоварыНаСкладах.Записывать = Истина;
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.Период = Дата;
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Номенклатура = ТекстрокаТовар.Номенклатура;
Движение.Склад = Справочники.Склады.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Магазин);
Движение.Количество = ТеКстрокаТовар.Количество;
Иначе
Сообщить("Удаление номенклатуры "+ТекСтрокаТовар.Номенклатура+" из заказа");
Движение = Движения.РегистрЗаказов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Магазин = ТекСтрокаТовар.Магазин;
Движение.Номенклатура = ТекСтрокаТовар.Номенклатура;
Движение.Дата = ТекСтрокаТовар.ДатаЗаказа;
Движение.Заказано = ТекСтрокаТовар.Количество;

КонецЕсли;
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецЦикла

вот например такой запрос, отчёт на компановке конструктором, некоторые позиции видит минусами, некоторые вообще нулевыми, хотя по отчёту стоят плюсом.

СветланаCC

база какая? чтобы наглядно посмотреть и какой отчет,
Тазовод)

Baltazarar

1с 8.2, конфигурацию писал сам практически с нуля, проблема возникла буквально недавно и только в одном регистре (до этого все запросы шли правильно, платформа не обновлялась, в корневые обработки изменения не вносились), отчёт делал конструктором, вручную не дописывал, так что проблема врятли в нём, к тому же не поленился залезть в регистр и документы и пересчитать сумму на калькуляторе для проблемных позиций, и получается что отчёт прав. в стандартных конфигурациях таких документов и отчётов нет, так что повторить это можно увы только в этой конфигурации (((

СветланаCC

Так плохо думать, не видя глазами((  то есть, в регистре данные правильные, станд. отчет работает правильно, а Ваш нет? так? увидеть бы конфигурацию в глаза...
Тазовод)

Baltazarar

ну примерно так, кстати сейчас начал ковырялся ещё, и нашёл такую закономерность, что старые обработки которые  писались примерно месяца полтора назад с запросами к этому регистру работают правильно, а новые неправильно, вообще какой-то маразм (((

Baltazarar

у меня уже случался подобный глюк при создании отчёта, только там проблема была с форматированием - ни с того ни с сего отчёт начал выводиться не в том формате, в котором должен был быть, но там проще: удалил отчёт, создал новый с точно такими же параметрами, и заработало как надо, но тут перезабивать регистр не вариант

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск