Версия для печати темы (https://pro1c.org.ua/index.php?s=7d8df00b619251e936502e78e60b6c74&showtopic=37511)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Как обозначить пустой результат списка
Автор: Gigi 29.05.17, 12:40
Привет Всем!
Уважаемые форумчане!
На подскажете к как обозначить пустой результат списка.
На пример такого отбора:
&НаКлиенте
Процедура Отобор_СубТочки()
ЗначениеОтбора="" +Объект.Код;
СтолбецОтбора="СнабжКод";
//==========================
Если ЗначениеОтбора="" Тогда
ЗначениеОтбора="----";
КонецЕсли;
//==========================
Отбор = СубТочкиСписок.Отбор.Элементы;
СубТочкиСписок.Отбор.Элементы.Очистить();
//==========================
ЭлементОтбора=СубТочкиСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ПравоеЗначение=ЗначениеОтбора;
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных(СтолбецОтбора);
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование=ИСТИНА;
//==========================
//Сообщить(КАК ОБОЗНАЧИТЬ ЕСЛИ РЕЗУЛЬТАТ ОТБОРА ПУСТ. Т.е когда не было не одного совпадения);
КонецПроцедуры
Это нужно для того, что бы самому вставленную кнопку, в случае пустого динамического списка, сделать недоступной.
Буду признателен!
Автор: Flexy 29.05.17, 12:54
Gigi @ Сегодня, 12:40
,
Как получаете количество записей в динамическом списке при изменении отбора?
Автор: logist 29.05.17, 13:00
У динамического списка нет количества элементов. что бы понять что результат отбора пустой надо выполнить аналогичный запрос с отбором, иначе никак.
Автор: Gigi 29.05.17, 13:12
logist @ Сегодня, 13:00
,
Блин! Ну а как тогда быть?
Цитата(logist @ 29.05.17, 13:00)
аналогичный запрос с отбором
Это нагрузка.... только так и никак иначе?
мне просто нужно, что бы кнопка стала недоступной... как в командной панели по стандарту.
ведь когда список пуст, на пример кнопка "удалить" становиться ведь недоступной. И в стандартном режиме, как то ведь это работает,.?... без проблем.
просто нужно то же самое, только с самим вложенной кнопкой.
Только для этого не знаю как обозначить пустой результат отбора.. при любом событии... на пример при изменении значения отбора, или при открытии... не важно.
Автор: Flexy 29.05.17, 13:22
Gigi @ Сегодня, 13:12
,
Велосипед
&НаКлиенте
Процедура Отобор_СубТочки()
ЗначениеОтбора="" +Объект.Код;
СтолбецОтбора="СнабжКод";
//==========================
Если ЗначениеОтбора="" Тогда
ЗначениеОтбора="----";
КонецЕсли;
//==========================
Отбор = СубТочкиСписок.Отбор.Элементы;
СубТочкиСписок.Отбор.Элементы.Очистить();
//==========================
ЭлементОтбора=СубТочкиСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ПравоеЗначение=ЗначениеОтбора;
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных(СтолбецОтбора);
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование=ИСТИНА;
//==========================
// Flexy
Элементы.МояКнопка.Доступность = Не Элементы.Список.ТекущаяСтрока = Неопределено;
//-----
КонецПроцедуры
Автор: logist 29.05.17, 13:46
Цитата(Gigi @ 29.05.17, 14:12)
только так и никак иначе?
Откуда ж я знаю, вы себе придумали задачу, и придумали что надо сделать именно так... Возможно всё это можно сделать по другому, и оптимально, только надо понимать задачу в целом, а не тот конкретный кусок в который вы уперлись и решили огласить тут.
Цитата(Gigi @ 29.05.17, 13:40)
ЗначениеОтбора="" +Объект.Код;
это же не php (или откуда вы это взяли), если Код явно имеет тип строка то не зачем ставить кавычки, и не зачем создавать эту переменную.
Автор: Gigi 29.05.17, 13:47
Flexy @ Сегодня, 13:22
,
Цитата(Flexy @ 29.05.17, 13:22)
// Flexy
Элементы.МояКнопка.Доступность = Не Элементы.Список.ТекущаяСтрока = Неопределено;
Не знаю велосипед или мотоцикл но НЕ РАБОТАЕТ!!!!
Имя кнопки: "СубТочка_Отменить".
В отладчике, на месте:
Элементы.СубТочка_Отменить.Доступность
Пишет, что поле: "СубТочка_Отменить" не найдено.
Автор: logist 29.05.17, 13:51
Цитата(Gigi @ 29.05.17, 14:47)
Пишет, что поле: "СубТочка_Отменить" не найдено.
Значит имя кнопки не такое, или её нет на форме.
Автор: Flexy 29.05.17, 13:59
Gigi @ Сегодня, 13:55
,
Давайте скрин где размещена кнопка. Или на пальцах объясняйте.
Автор: logist 29.05.17, 14:09
Цитата(Flexy @ 29.05.17, 14:59)
Или на пальцах объясняйте.
В прошлый раз уже объясняли на пальцах, это затянется надолго)))
Цитата(Gigi @ 29.05.17, 14:55)
Как нет
Ну если отладчик говорит что нет - значит нет, всё просто
Автор: Gigi 29.05.17, 14:12
Цитата(Flexy @ 29.05.17, 13:59)
Давайте скрин где размещена кнопка. Или на пальцах объясняйте.
Кнопка на форме размещена в командной панели динамического списка.
Хотя я перенес ее прямо на форму ... все равно не находит зараза.
Пишет:
Поле объекта не обнаружено (СубТочка_Отменить)
Автор: Flexy 29.05.17, 14:15
Цитата(Gigi @ 29.05.17, 14:12)
Кнопка на форме размещена в командной панели динамического списка.
Ну дык, так и пишите: Элементы.Список.КоманданаяПанель.ПодчиненныеЭлементы.МояКнопка ... как-то так.
Автор: Petre 29.05.17, 14:24
Gigi @ Сегодня, 15:12
,
Еще раз после просмотренных скриншотов: у вас НЕТ элемента "СубТочка_Отменить".
Автор: Gigi 29.05.17, 14:27
Flexy @ Сегодня, 14:15
,
Гуууу... да что же это в самом деле... опять для до передела простого аж велосипед заново....
//Для теста сделал так:
Элементы.СубТочкиСписок.КоманданаяПанель.ПодчиненныеЭлементы.СубТочка_Отменить.Доступность = ЛОЖЬ
//пишет: в поле не обнаружено КоманданаяПанель
Ладно! вижу что лажа.. сделать до предела простое это наверно целое дело. Так не получается ... сьяк не хочет. Тупизм! Опять вечно капризничает!
с VBA в Экселе было проще!
Придется обойтись без того, что хотел сделать.
Автор: Flexy 29.05.17, 14:30
Цитата(Gigi @ 29.05.17, 14:27)
Команд
анаяПанель
Автор: logist 29.05.17, 14:30
Цитата(Gigi @ 29.05.17, 15:27)
Тупизм! Опять вечно капризничает!
с VBA в Экселе было проще!
Точно так же могу сказать с точки зрения программиста 1с, делая что-то в VBA - в 1С было бы проще, а там тупизм какой-то. Всего лишь потому, что я в этом не разбираюсь. Продолжая винить в этом всё/всех кроме себя, вы будете зарывать в себя в еще большую яму. Берегите нервы, они источник всех болезней
Автор: Bernet 29.05.17, 14:31
Gigi @ Сегодня, 15:27
,
Оно же вам в конфигураторе должно подсказывать когда нажимаете ".", пройдите полный путь, посмотрите как достучаться, элементарно если так не можете понять, откройте отладчик, поставте точку остановы где-нибудь и посмотрите что у вас есть в "Элементы", пораскрывайте ветки, найдите свою кнопку, выделите её мышкой и получите сверху полный путь к ней =)
Цитата
Берегите нервы, они источник всех болезней
золотые слова, знаю не по наслышке, у очень близкого человека на этой почве рак развился....
Автор: Gigi 29.05.17, 14:58
Bernet @ Сегодня, 14:31
,
Ладно! Попытаюсь .... чуть успокоившись.
Но в любом случае спасибо!
Gigi @ Сегодня, 14:35
,
Сработало!
Я понял в чем была ошибка.
Дело в том, что во вкладке "Команды" кнопка так и называется: "СубТочка_Отменить". Как и видно на первом скине.
И как только ее (кнопку) переносишь на форму ее имя уже меняется. И складывается в зависимости от того, где размещена
Так что, вот так сработала:
Элементы.СубТочкиСписокСубТочка_Отменить.Доступность = ЛОЖЬ;
Наконец то...
Но без Вашей помощи не обошлось бы.
Так что всем финальное спасибо!
Автор: Vofka 29.05.17, 15:21
Цитата(Gigi @ 29.05.17, 15:27)
Ладно! вижу что лажа.. сделать до предела простое это наверно целое дело. Так не получается ... сьяк не хочет. Тупизм! Опять вечно капризничает!
Зачем же вы лезете в эту "тупую" 1С?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua