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

Получение данных табличной части справочника по наименованию через функцию

Автор marshalbratsk, 27 мая 2016, 20:00

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

marshalbratsk

Уже кипит голова, нужна помощь бывалых.:dfbsdfbsdf:
Имеется справочник АвтомобилиИМеханизмы с табличной частью РасходТоплива и реквизитами этой табличной части Сезон, ОборудованиеИлиОперация и РасходТоплива.
Мне нужно сделать функцию для обработки, которая по трём переменным (Транспорт (наименование транспорта), Сезон, ОборудованиеИлиОперация) будет возвращать значение столбца РасходТоплива нужной строки

Т.е.
Функция ПолучитьДанные(Транспорт, Сезон, ОборудованиеИлиОперация)
//Тут запрос, который мне уже все мозги выел, потому что в интернетах не могу найти нормальных примеров

Возврат РасходТоплива
КонецФункции

marshalbratsk

Прикинул примерный запрос, а как вернуть значение РасходТоплива из запроса???:dfbsdfbsdf: И может ошибки есть?Функция ПолучитьРасход (Транспорт, Сезон, ОборудованиеИлиОперация)

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

Запрос1.УстановитьПараметр("Транспорт",Транспорт);
Запрос1.УстановитьПараметр("Сезон",Сезон);
Запрос1.УстановитьПараметр("ОборудованиеИлиОперация",ОборудованиеИлиОперация);

//а как вернуть значение поля РасходТоплива???

КонецФункции


Добавлено: 28 мая 2016, 18:36


Есть кто живой? Очень нужна помощь, я в тупике

Есть Процедура, которая обращается к функции (ниже). Переменными для функции служит наименование транспорта из формы калькулятора и ещё два значения указал напрямую из перечислений для проверки
&НаКлиенте
Процедура Рассчитать(Команда)

Транспорт1=ЭтаФорма.Объект.Транспорт;
Сезон1=ПредопределенноеЗначение("Перечисление.Сезон.Лето");
Операция1=ПредопределенноеЗначение("Перечисление.ОборудованиеИлиОперация.Нет");
Сообщить(ПолучитьРасход(Транспорт1,Сезон1,Операция1));

КонецПроцедуры


Есть функция
Функция ПолучитьРасход (Транспорт, Сезон, ОборудованиеИлиОперация)

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

Запрос1.УстановитьПараметр("Транспорт",Транспорт);
Запрос1.УстановитьПараметр("Сезон",Сезон);
Запрос1.УстановитьПараметр("ОборудованиеИлиОперация",ОборудованиеИлиОперация);

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

Пока Выборка.Следующий() Цикл

РасходТоплива = Выборка

КонецЦикла;

Возврат РасходТоплива;

КонецФункции


В итоге сообщается пустое значение, вместо указания расхода топлива

дфтын

Да проблем нет, просто много букв. переформулируйте в 2 - 3 строчки.
уверен там отбор не тот
Помог? Нажми - Спасибо :)
skype: Soprov1C

electr

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

TytovV

По какому объекту делаете запрос?


Отправлено с моего iPhone используя Tapatalk

TytovV

Если я правильно понял, то вы все запрашиваете по справочнику


Отправлено с моего iPhone используя Tapatalk

TytovV

Но в запросе нет не одного параметра, у вас их 4, первых два где нет по 2 полю оборудования, 2 других есть оборудование, и того надо поставить в запрос 2 параметра которые вы передадите
- зима
- нет оборудования

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


Отправлено с моего iPhone используя Tapatalk

TytovV

Должна после запроса быть только одна строка,


Отправлено с моего iPhone используя Tapatalk

TytovV

У вас на форме есть, зима и лето, и есть мото часы где вы пишите количество часов, но для запроса нужно не количество часов а параметр мото час работы двигателя
т.е.
Лето и мото час работы двигателя - эти два параметра в запро надо передать, после выберется 1 час работы, далее остается этот час умножить на количество мото часов.......


Отправлено с моего iPhone используя Tapatalk

TytovV

И в запросе ошибки, к примеру
РасходТоплива = Выборка , выборка чего? Должно быть
Выборка.Параметр


Отправлено с моего iPhone используя Tapatalk

Теги:

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

Рейтинг@Mail.ru

Поиск