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

Помогите сделать кнопку

Автор Анюта17, 24 мая 2018, 10:16

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

Анюта17

У меня есть регистр сведений СвободныйТранспорт( где есть поля, Транспорт и Статус), и есть Справочник Траснпорт. На формесписка справочника я вынесла кнопку ПоказатьСвободныйТранспорт. Мне надо чтоб при нажатии на эту кнопку, по регистру сведений проверялся статус транспорта и тот, который свободен выводился на форме списка.
Я что-то пыталась сделать, но понимаю что чушь какая-то. кнопка не работает соответственно

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

//

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


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

ДокОбъект = Выборка.Транспорт.ПолучитьОбъект();
//ДокОбъект.Статус = Перечисления.Статус.Выполнено;
ДокОбъект.Записать();



КонецЦикла;



//Пока ДокОбъект.Следующий() Цикл
фиксНастройки = Новый НастройкиКомпоновкиДанных;


эОтбор = фиксНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
эОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
эОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
эОтбор.ПравоеЗначение = ДокОбъект.Ссылка;
эОтбор.Использование = Истина;
эОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;


фНастройки = фиксНастройки;

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


&НаКлиенте
Процедура ПоказатьСвободныйТранспорт(Команда)
ФНастройки = неопределено;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ФиксированныеНастройки", ПоказатьСвободныйТранспортНаСервере(ФНастройки));

ОткрытьФорму("Справочник.Транспорт.ФормаСписка", ПараметрыФормы, ЭтаФорма);
//КонецЦикла;


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

ilyay

А зачем вы перезаписываете объекты в цикле? То, что вам нужно, делается гораздо проще. В динамическом списке справочника транспорт внутренним соединением присоединяете ваш регистр сведений, чтобы остался только свободный. Либо левым соединением и делаете условное оформление по статусу, выделяя свободный транспорт другим цветом.

Анюта17

Цитата: ilyay от 24 мая 2018, 10:23
А зачем вы перезаписываете объекты в цикле? То, что вам нужно, делается гораздо проще. В динамическом списке справочника транспорт внутренним соединением присоединяете ваш регистр сведений, чтобы остался только свободный. Либо левым соединением и делаете условное оформление по статусу, выделяя свободный транспорт другим цветом.

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

ilyay

Перечисление и устанавливайте. Можно прямо в запросе:
ГДЕ СвободныйТранспорт.Статус = Значение(Перечисление.Статус.Выполнено)

Анюта17

Цитата: ilyay от 24 мая 2018, 11:28
Перечисление и устанавливайте. Можно прямо в запросе:
ГДЕ СвободныйТранспорт.Статус = Значение(Перечисление.Статус.Выполнено)

Это в конструкторе запроса динамического списка?

ilyay


Анюта17

Цитата: ilyay от 24 мая 2018, 12:30
Да

Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(29, 30)}: Поле не найдено "Перечисление.Статус.Выполнено"
СвободныйТранспорт.Статус = <<?>>Перечисление.Статус.Выполнено

AIFrame

СвободныйТранспорт.Статус = ЗНАЧЕНИЕ(Перечисление.Статус.Выполнено)
Внимательно читаем ответы же.

Теги:

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

Рейтинг@Mail.ru

Поиск