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

Получение данных справочника для обработки

Автор marshalbratsk, 26 мая 2016, 08:26

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

marshalbratsk

Имеется справочник "АвтомобилиИМеханизмы", в котором есть табличная часть "НормыРасхода" из которой нужно получить значения для обработки. 
В обработке "КалькуляторРасходаТоплива" выбирается наименование транспорта, и по этому наименованию надо получить данные из табличной части справочника. Как это можно сделать?
Простите за довольно банальный вопрос, но это мне очень поможет.

LexaK

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

&НаСервере
Функция ПолучитьДанные(прТранспорт,прСезон)
//прТранспорт - ссылка из поля Транспорт
//прСезон - "Лето" или "Зима"

лкЗапрос = Новый Запрос;
лкЗапрос.Текст = "
    |Выбрать
|   Спр.ВидТоплива,
|   Спр.ЕдИзмерения,
|   Спр.ЛинРасход100км<Сезон> как ЛинРасход100км,
|   Спр.Ковш<Сезон> как Ковш,
|   Спр.Фреза<Сезон> как Фреза,
|   Спр.Щетка<Сезон> как Щетка,
|   Спр.Гклин<Сезон> как Гклин
|
|из
Справочник.АвтомобилиИМеханизмы.НормыРасхода Спр
|где
|   Спр.Ссылка = &Транспорт
|
|
|";
лкЗапрос.УстановитьПараметр("Транспорт",прТранспорт);
лкЗапрос.Текст = СтрЗаменить(лкЗапрос.Текст,"<Сезон>",прСезон);

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

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



вообще структуру данных вам какой-то говнокодировщик писал
следовало бы ТЧ сделать по другому,
на первый взгляд
Поля
Расход100км,
Сезон, (можно перечисление сделать Сезоны.Лето,Сезоны.Зима)
ДопОборудование, различные комбинации доп. оборудования (справочник)
и т.д.

тогда итоговая таблица выглядела бы





РасходТопливаСезонДоп.Обор.
23ЛетоКовш
28ЗимаКовш
25ЗимаБез обор.

с такой структурой гораздо удобнее получать данные
если помогло нажмите: Спасибо!

marshalbratsk

Цитата: LexaK от 26 мая 2016, 11:01
с такими данными, вам надо динамическиизменяемый запрос в обработке выполнять
вот пример функции которая возвращает результат запроса

&НаСервере
Функция ПолучитьДанные(прТранспорт,прСезон)
//прТранспорт - ссылка из поля Транспорт
//прСезон - "Лето" или "Зима"

лкЗапрос = Новый Запрос;
лкЗапрос.Текст = "
    |Выбрать
|   Спр.ВидТоплива,
|   Спр.ЕдИзмерения,
|   Спр.ЛинРасход100км<Сезон> как ЛинРасход100км,
|   Спр.Ковш<Сезон> как Ковш,
|   Спр.Фреза<Сезон> как Фреза,
|   Спр.Щетка<Сезон> как Щетка,
|   Спр.Гклин<Сезон> как Гклин
|
|из
Справочник.АвтомобилиИМеханизмы.НормыРасхода Спр
|где
|   Спр.Ссылка = &Транспорт
|
|
|";
лкЗапрос.УстановитьПараметр("Транспорт",прТранспорт);
лкЗапрос.Текст = СтрЗаменить(лкЗапрос.Текст,"<Сезон>",прСезон);

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

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



вообще структуру данных вам какой-то говнокодировщик писал
следовало бы ТЧ сделать по другому,
на первый взгляд
Поля
Расход100км,
Сезон, (можно перечисление сделать Сезоны.Лето,Сезоны.Зима)
ДопОборудование, различные комбинации доп. оборудования (справочник)
и т.д.

тогда итоговая таблица выглядела бы





РасходТопливаСезонДоп.Обор.
23ЛетоКовш
28ЗимаКовш
25ЗимаБез обор.

с такой структурой гораздо удобнее получать данные

Огромное спасибо за подсказку с новой структурой данных (всё поменял, теперь намного чище стало и приятнее), благо я ту часть даже не стал заполнять ибо мне (говнокодеру) не казалась та структура чем то здоровым. Душевное спасибо. Но вопрос обращения к данным тогда не уходит, а меняется. Как тогда к таким данным обратиться будет лучше?

LexaK

а зачем оборудование и операцию в одну кучу свалили?
разнесите!

операции сделайте такие

РасходНа100км,
Моточас,
ОперацияТакаято,
ОперацияДругая,
и т.д.

а в запросе уже конкретно передаете в параметрах те значения по которым хотите получить данные
например в условии запроса
...
где
  Спр.Сезон = &Сезон
и Спр.Оборудование = &Оборудование

к сведению, набор условий тоже можно формировать динамически с таким же приемом СтрЗаменить()
если помогло нажмите: Спасибо!

marshalbratsk

Цитата: LexaK от 26 мая 2016, 14:03
а зачем оборудование и операцию в одну кучу свалили?
разнесите!

операции сделайте такие

РасходНа100км,
Моточас,
ОперацияТакаято,
ОперацияДругая,
и т.д.

а в запросе уже конкретно передаете в параметрах те значения по которым хотите получить данные
например в условии запроса
...
где
  Спр.Сезон = &Сезон
и Спр.Оборудование = &Оборудование

к сведению, набор условий тоже можно формировать динамически с таким же приемом СтрЗаменить()

Извините меня за наглость, но можете написать код функции, которая будет возвращать значение столбца "Расход"? А то я не совсем понимаю как написать запрос и значение как вернуть.
Нормально же будет, если в калькуляторе будет выглядеть как:
Условие (в нём выбор оборудования и т.п.)
Переменная=Функция
....
Расход=Переменная+Переменная и т.п.?

Теги:

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

Рейтинг@Mail.ru

Поиск