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

Проблемы с регистром накопления

Автор drago404, 17 мар 2018, 18:55

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

drago404

Здравствуйте, с 1с знаком совсем мало.

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

Есть у меня поле ввода реквизита на форме, тип значения которого указан как СправочникСсылкаНоменклатура. Через это поле ввода я выбираю номенклатуру и не могу вывести остатки.

Пробовал различные варианты сравнения, на самом деле, но думаю, что, возможно, сравниваю не объект со строкой или что-то типа того.



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

        НовЗапрос.УстановитьПараметр("ТекДата", ТекущаяДата());
НовЗапрос.УстановитьПараметр("Номенклатура", Номенклатура1);

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


        Пока ВыборкаЗапроса.Следующий() Цикл
Сообщить(ВыборкаЗапроса.Номенклатура);
Сообщить(Строка(ВыборкаЗапроса.КоличествоОстаток));
КонецЦикла;


именно вот это не срабатывает



|ГДЕ
| ТовОстатки.Номенклатура В (&Номенклатура)";



Прошу прощение за глупый вопрос. Честно листал много форумов, но почему-то их решения у меня тоже не работают. Я понимаю, что упускаю из вида какую-то важную деталь. Пожалуйста, направьте на путь истинный.
Спасибо

oleg-x

|ГДЕ
    | ТовОстатки.Номенклатура В (&Номенклатура)";

Номенклатура должна быть либо список, либо массив, но не ссылка на справочник.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

drago404

Хорошо, тогда такой вопрос - что я должен запихать в Номенклатура1, чтобы запрос сработал?

Если я туда закидываю то, что получил из поля ввода с выбором номенклатуры, ничего не выбирается. Если ввожу наименование номенклатуры, тоже ничего.

Как получить то, что туда нужно закинуть?

Даже если написать так
НовЗапрос.УстановитьПараметр("Номенклатура", "Кран пожарный ДУ50");

Ничего не выбирается.



"ВЫБРАТЬ
| ТовОстатки.Номенклатура,
| ТовОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата,Номенклатура=&Номенклатура) КАК ТовОстатки";





Подскажите, пожалуйста. Не совсем понимаю, почему не срабатывает.

oleg-x

Если тип сравнения равно, не равно, то ссылку на номенклатуру.
Если тип сравнения в иерархии, то ссылку на группу номенклатуры.
Если тип сравнения в, то список/массив ссылок на номенклатуру.
Добавлено: 18 мар 2018, 11:07





"ВЫБРАТЬ
| ТовОстатки.Номенклатура,
| ТовОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата,Номенклатура=&Номенклатура) КАК ТовОстатки";

НовЗапрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Кран пожарный ДУ50"));


Так сработает.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

drago404

Все-таки не работает.
Ничего не возвращает, к сожалению.
Не понимаю, почему.
Добавлено: 18 мар 2018, 19:11


Вот прям точь-в-точь пробовал

Цитата: oleg-x от 18 мар 2018, 11:06
Если тип сравнения равно, не равно, то ссылку на номенклатуру.
Если тип сравнения в иерархии, то ссылку на группу номенклатуры.
Если тип сравнения в, то список/массив ссылок на номенклатуру.
Добавлено: 18 мар 2018, 11:07





"ВЫБРАТЬ
| ТовОстатки.Номенклатура,
| ТовОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата,Номенклатура=&Номенклатура) КАК ТовОстатки";

НовЗапрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Кран пожарный ДУ50"));


Так сработает.
Добавлено: 18 мар 2018, 19:13


Может быть, фокус в том, что это Комплексная Автоматизация, редакция 1.1?


Цитата: oleg-x от 18 мар 2018, 11:06
Если тип сравнения равно, не равно, то ссылку на номенклатуру.
Если тип сравнения в иерархии, то ссылку на группу номенклатуры.
Если тип сравнения в, то список/массив ссылок на номенклатуру.
Добавлено: 18 мар 2018, 11:07





"ВЫБРАТЬ
| ТовОстатки.Номенклатура,
| ТовОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата,Номенклатура=&Номенклатура) КАК ТовОстатки";

НовЗапрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Кран пожарный ДУ50"));


Так сработает.

oleg-x

ЦитироватьМожет быть, фокус в том, что это Комплексная Автоматизация, редакция 1.1?
Без разницы (если конечно не семерка).
Если запрос создан корректно и корректные данные переданы в запрос, то запрос отработает корректно. Может быть конечно что остатков нет :-)
Тогда Выборка.Следующий будет Ложь.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

drago404

Да, кажется, именно в этом и была проблема. Нулевой остаток.
Благодарю за помощь!

Теги:

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

Рейтинг@Mail.ru

Поиск