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

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

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

Оффлайн xgladosx

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

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



Оффлайн Kironten

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

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

Оффлайн xgladosx

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

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


Оффлайн DmitriyF

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

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

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


Теги:  
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
alex0402
79 Сообщений
alexandr_ll
37 Сообщений
LexaK
29 Сообщений
crow1983
27 Сообщений
MuI_I_Ika MuI_I_Ika
26 Сообщений
sertak sertak
22 Сообщений
дфтын дфтын
17 Сообщений
Vzonder
14 Сообщений
BuhRust
13 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal