Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Авг 2017, 19:00
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: неправильные и отрицательные остатки через запрос УТ 10.3  (Прочитано 1022 раз)

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

Оффлайн xgladosx

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Программист 8.1
обычный запрос на отображение остатков уже вбитых товаров, выдает рандомное число(не представляю откуда оно берется, но всегда одинковое для отдельно взятой номенклатуры), и сразу же повторно выдает его же отрицательное, т.е. считает каждый запрос за два на каждую строку. Без понятия где проблема, запрос стандартный, код ниже. Подскажите откуда могла взяться проблема, не могу разобраться.

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



Онлайн Kironten

  • *****
  • Сообщений: 838
  • РЕПУТАЦИЯ: 178
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
обычный запрос на отображение остатков уже вбитых товаров, выдает рандомное число(не представляю откуда оно берется, но всегда одинковое для отдельно взятой номенклатуры), и сразу же повторно выдает его же отрицательное, т.е. считает каждый запрос за два на каждую строку. Без понятия где проблема, запрос стандартный, код ниже. Подскажите откуда могла взяться проблема, не могу разобраться.

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


Стандартный запрос? :xfbnsdfb:
Т.е. то, что вы для каждого элемента номенклатуры делаете свой запрос в цикле, да еще и потом идет запрос к наименованию номенклатуры, но уже через точку - это стандартный запрос? Это не считая того, что не используются параметры виртуальной таблицы.
Это, мягко говоря, очень серьезные ошибки.
А теперь по вопросу - берите отладчик и анализируйте, что у вас попало в выборку.
 Вы накладываете отбор только на элемент номенклатуры. Я конечно не помню навскидку измерения регистра в 10.3, но как минимум еще и по складам есть разрез.

Оффлайн xgladosx

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Программист 8.1
обычный запрос на отображение остатков уже вбитых товаров, выдает рандомное число(не представляю откуда оно берется, но всегда одинковое для отдельно взятой номенклатуры), и сразу же повторно выдает его же отрицательное, т.е. считает каждый запрос за два на каждую строку. Без понятия где проблема, запрос стандартный, код ниже. Подскажите откуда могла взяться проблема, не могу разобраться.

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


Стандартный запрос? :xfbnsdfb:
Т.е. то, что вы для каждого элемента номенклатуры делаете свой запрос в цикле, да еще и потом идет запрос к наименованию номенклатуры, но уже через точку - это стандартный запрос? Это не считая того, что не используются параметры виртуальной таблицы.
Это, мягко говоря, очень серьезные ошибки.
А теперь по вопросу - берите отладчик и анализируйте, что у вас попало в выборку.
 Вы накладываете отбор только на элемент номенклатуры. Я конечно не помню навскидку измерения регистра в 10.3, но как минимум еще и по складам есть разрез.

Да цикл не при чем, это не относится к сути вопроса. при обращении без циклов к одной единственной номенклатуре запрос с уточнением даты и склада выдает вместо пустого ответа 3 и -3, а вместо цифры "2" 9 и -9. откуда вообще могли взяться эти цифры? в остатках их нет ни за один день

p.s. пока отвечал на ум пришло вот что - а запрос учитывает разрез по организациям? в 10.2 точно нет, а в 10.3?

Оффлайн temrmal

  • ***
  • Сообщений: 118
  • РЕПУТАЦИЯ: 14
  • КПД: 12%
  • Регистрация: 2011-11-10
  • Сайт: 
  • Профессия: Программист 8.1
Берем регистр Товары на складах в пользовательском режиме, через все функции, ставим отбор по какой нибудь позиции, и смотрим движения. Скрин можешь выложить, там видно будет

Оффлайн xgladosx

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Программист 8.1
Берем регистр Товары на складах в пользовательском режиме, через все функции, ставим отбор по какой нибудь позиции, и смотрим движения. Скрин можешь выложить, там видно будет

это полное движение этого товара и остатки. выдает 3 и -3


Оффлайн DmitriyF

  • *****
  • Сообщений: 707
  • РЕПУТАЦИЯ: 46
  • КПД: 7%
  • Регистрация: 2013-03-18
  • Сайт: 
  • Профессия: Разработчик 1С
обычный запрос на отображение остатков уже вбитых товаров, выдает рандомное число(не представляю откуда оно берется, но всегда одинковое для отдельно взятой номенклатуры), и сразу же повторно выдает его же отрицательное, т.е. считает каждый запрос за два на каждую строку. Без понятия где проблема, запрос стандартный, код ниже. Подскажите откуда могла взяться проблема, не могу разобраться.

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

Запрос в цикле вообще супер. Чем не устраивает запрос по остаткам с группировкой?


Теги:  
 

Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8478
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
Запрос Параметры для "ИЗ"

Автор БерезинРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2780
Последний ответ 15 Май 2013, 23:27
от Березин
Что быстрее: Загрузить табличную часть в запрос и там добавить колонки, или пробежаться циклом по ТЧ и добавить значения в колонки

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 844
Последний ответ 11 Июл 2016, 09:00
от vitasw
Запрос по обработке "Согласование заявок"

Автор DenielAkreedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 538
Последний ответ 29 Сен 2016, 02:39
от DenielAkreed
8.2 Бух. Запрос с условием "комментарий содержит текст"

Автор bolobolРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 15392
Последний ответ 02 Сен 2011, 01:14
от bolobol

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
137 Сообщений
alex0402
56 Сообщений
AIFrame
38 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
Kironten
29 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
26 Сообщений
pavl_vs
26 Сообщений
Александр Лахтин Александр Лахтин
18 Сообщений
magnifico61
18 Сообщений
AsadRoman
16 Сообщений

* Кто онлайн

  • Точка Гостей: 419
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal