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

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

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

Оффлайн xgladosx

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

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



Оффлайн Kironten

  • *****
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 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

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

Оффлайн xgladosx

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

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


Оффлайн DmitriyF

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

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

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


Теги:  
 

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

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

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

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

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

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

Ответов: 1
Просмотров: 1253
Последний ответ 11 Июл 2016, 09:00
от vitasw
Как объединить объект в реквизите формы с типом "ДокументОбъект" и объект формы, созданной через "ПолучитьФорму()"?

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

Ответов: 3
Просмотров: 478
Последний ответ 06 Авг 2017, 21:22
от alex0402
Запрос по обработке "Согласование заявок"

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

Ответов: 0
Просмотров: 957
Последний ответ 29 Сен 2016, 02:39
от DenielAkreed

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

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

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


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

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
135 Сообщений
AIFrame AIFrame
126 Сообщений
alexandr_ll
58 Сообщений
pavl_vs
48 Сообщений
alex0402
47 Сообщений
buketov.av buketov.av
43 Сообщений
ilyay ilyay
37 Сообщений
trialex3
24 Сообщений
magnifico61
21 Сообщений
wise wise
15 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal