Версия для печати темы (https://pro1c.org.ua/index.php?s=f35d9f0f4b0e3d1a0f6f7cc7672e1f67&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 * ,
Велосипед smile.gif

&НаКлиенте
Процедура Отобор_СубТочки()
ЗначениеОтбора="" +Объект.Код;
СтолбецОтбора="СнабжКод";    
//==========================
Если ЗначениеОтбора="" Тогда
ЗначениеОтбора="----";
КонецЕсли;
//==========================
Отбор = СубТочкиСписок.Отбор.Элементы;
СубТочкиСписок.Отбор.Элементы.Очистить();
//==========================
ЭлементОтбора=СубТочкиСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ПравоеЗначение=ЗначениеОтбора;
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных(СтолбецОтбора);
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование=ИСТИНА;
//==========================
// 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) *
Пишет, что поле: "СубТочка_Отменить" не найдено.

Значит имя кнопки не такое, или её нет на форме.

Автор: Gigi 29.05.17, 13:55

logist @ Сегодня, 13:51 * ,
Как нет

smile.gifsmile.gifsmile.gifsmile.gifsmile.gif

Автор: 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) *
Как нет

Ну если отладчик говорит что нет - значит нет, всё просто smile.gif

Автор: 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) *
КоманданаяПанель faceoff.gif


Автор: logist 29.05.17, 14:30

Цитата(Gigi @ 29.05.17, 15:27) *
Тупизм! Опять вечно капризничает!
с VBA в Экселе было проще!

Точно так же могу сказать с точки зрения программиста 1с, делая что-то в VBA - в 1С было бы проще, а там тупизм какой-то. Всего лишь потому, что я в этом не разбираюсь. Продолжая винить в этом всё/всех кроме себя, вы будете зарывать в себя в еще большую яму. Берегите нервы, они источник всех болезней wink.gif

Автор: Bernet 29.05.17, 14:31

Gigi @ Сегодня, 15:27 * ,
Оно же вам в конфигураторе должно подсказывать когда нажимаете ".", пройдите полный путь, посмотрите как достучаться, элементарно если так не можете понять, откройте отладчик, поставте точку остановы где-нибудь и посмотрите что у вас есть в "Элементы", пораскрывайте ветки, найдите свою кнопку, выделите её мышкой и получите сверху полный путь к ней =)

Цитата
Берегите нервы, они источник всех болезней
золотые слова, знаю не по наслышке, у очень близкого человека на этой почве рак развился....

Автор: Gigi 29.05.17, 14:58

Bernet @ Сегодня, 14:31 * ,
Ладно! Попытаюсь .... чуть успокоившись.
Но в любом случае спасибо!


Gigi @ Сегодня, 14:35 * ,
Сработало!
Я понял в чем была ошибка.
Дело в том, что во вкладке "Команды" кнопка так и называется: "СубТочка_Отменить". Как и видно на первом скине.
И как только ее (кнопку) переносишь на форму ее имя уже меняется. И складывается в зависимости от того, где размещена
Так что, вот так сработала:

Элементы.СубТочкиСписокСубТочка_Отменить.Доступность = ЛОЖЬ;

Наконец то...
Но без Вашей помощи не обошлось бы.
Так что всем финальное спасибо! smile.gifsmile.gif

Автор: 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