|
Блокировка кнопки Загрузить | ☑ | ||
---|---|---|---|---|
0
amadeus2010
18.06.12
✎
08:47
|
Доброе утро, помогите пожалуйста разобраться с таким вопросом.Имеется обработка в которой товар располагается в виде дерева заказов.Сначала идет регион, номер заказа,номенклатура. Требуется чтобы если курсор стоит на номенклатуре,то при нажатии кнопки загрузить не происходило никого действия,т.е конопка Загрузить не срабатывала.
|
|||
1
butterbean
18.06.12
✎
08:48
|
и где вопрос??
|
|||
2
chelentano
18.06.12
✎
08:50
|
(0) хорошо, делай
|
|||
3
vah1
18.06.12
✎
09:02
|
Ну так эта... сходи ЛКМ словай. Ну и Enter до кучи
|
|||
4
vah1
18.06.12
✎
09:02
|
оп: сломай
|
|||
5
vah1
18.06.12
✎
09:04
|
а то зае... уже
|
|||
6
amadeus2010
18.06.12
✎
09:05
|
(1) как сделать так чтобы в ДеревеЗаказов тип ДеревоЗначений сделать проверку что если текущаястрока=строка.Номенклатура кнопка Загрузить не производила никаких действий?
|
|||
7
kosts
18.06.12
✎
09:11
|
(6)
Если ЭлементыФормы.ДеревоЗначений1.текущаястрока.Номенклатура = строка.Номенклатура Тогда Возврат; //чтобы в ДеревеЗаказов тип ДеревоЗначений сделать проверку что если текущаястрока=строка.Номенклатура кнопка Загрузить не производила никаких действий? КонецЕсли |
|||
8
amadeus2010
18.06.12
✎
09:31
|
и еще вопрос, эту проверку мне надо добавить в процедуру при активизации строки или я могу добавить ее в в процедуру кнопкаЗагрузить?
|
|||
9
kosts
18.06.12
✎
09:32
|
(8) А подумать?
|
|||
10
Diose
18.06.12
✎
09:39
|
:)
|
|||
11
amadeus2010
18.06.12
✎
09:41
|
я так думаю что эту проверку надо добавить в процедуру кнопкаЗагрузить
|
|||
12
kosts
18.06.12
✎
09:43
|
(11) Логично в принципе.
|
|||
13
kosts
18.06.12
✎
09:48
|
(11) Но если тебе именно нужно заблокировать кнопку, что бы ее нельзя было нажать совсем.
То тогда так: ЭлементыФорма.Кнопка.Доступность = Ложь; (или если кнопка на панели) ЭлементыФорма.ОсновныеДействияФормы1.Кнопки.Доступность = Ложь; Применяю подход с возвратом (с выдачей описания проблемы пользователю), если ситуация для пользователя достаточно редкая. Или с блокировкой, если ситуация частая. |
|||
14
amadeus2010
18.06.12
✎
09:53
|
я сделал такую проверку
////////////////////////////////////////////////////////////// Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока=Строка.Номенклатура тогда Возврат; КонецЕсли; /////////////////////////////////////////////////////////////// добавил ее в процедуру конопкаЗагрузить,но номенклатура все равно загрузилась когда я поставил курсор на нее.Мне надо чтобы если пользователь случайно поставил курсор на строку номенклатура то кнопка Загрузить не загружала тот товар на котором стоит курсор,т.е текущую строку. Кнопка на панели и мне подойдет 2-й вариант |
|||
15
kosts
18.06.12
✎
09:59
|
(14) Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока<Тут ошибка>=Строка.Номенклатура тогда
|
|||
16
amadeus2010
18.06.12
✎
10:05
|
(14) т.е я должен указать
///////////////////////////////////////////////////////////////////////////// Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура=Строка.Номенклатура тогда ЭлементыФормы.КоманднаяПанель5.Кнопки.Загрузить1.Доступность=Ложь; КонецЕсли; /////////////////////////////////////////////////////////////////////////// |
|||
17
kosts
18.06.12
✎
10:06
|
(16) Ну примерно так
|
|||
18
kosts
18.06.12
✎
10:07
|
(16) Только в истину еще где-то нужно возвести, в иначе например.
|
|||
19
amadeus2010
18.06.12
✎
10:11
|
я сейчас проверил этот кусок кода в обработке.При установки курсора на наименование номенклатуры при нажатии кнопки Загрузить товар загружается в табличное поле из дерева заказов и командная панель становится неактивой, а мне надо чтобы наименование номенклатуры не загружалось в табличную часть
|
|||
20
kosts
18.06.12
✎
10:17
|
(19) А, ну имя колонки смотри, так вроде
Если ЭлементыФормы.ДеревоЗаказов.ТекущаяКолонка.Имя="Номенклатура" тогда |
|||
21
kosts
18.06.12
✎
10:25
|
(19) Описывай свои вопросы сразу точнее, а то двусмысленно получилось - то ли "Блокировка кнопки Загрузить ", то ли "Загрузить не срабатывала"; и "курсор стоит на номенклатуре" - не следует, что курсор стоит в колонке номенклатура.
|
|||
22
amadeus2010
18.06.12
✎
10:42
|
извиняюсь за неточный вопрос, у меня есть обработка в Дереве Значений которой имеются колонки регион, заказ,номенклатура внутри которой есть наименование товаров.Так вот задача состоит в том чтобы если курсор стоит на наименовании товара, тогда кнопка загрузить не должна загружать этот товар в табличную часть.
|
|||
23
kosts
18.06.12
✎
10:56
|
(22) Ну у тебя уже все есть, ничего нового не могу добавить
|
|||
24
amadeus2010
18.06.12
✎
11:09
|
если я выложу весь код с моими изменениями вы можете посмотреть все ли я сделал правильно, я сейчас заменил блокировку кнопки на Возврат и у меня не загружается номенклатура если курсор стоит на № заказа или регион
///////////////////////////////////////////////////////////////// Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура=Строка.Номенклатура тогда Возврат; Иначе ТаблицаТоваров = ДеревоЗаказовПолучитьТаблицуТоваровизТекущейСтроки(Строка); ТаблицаТоваровОставитьТолькоТоварыПодходящиеДляРейса(ТаблицаТоваров,МТекущийРейс); ТекущийРейсДобавитьТаблицуТоваров(ТаблицаТоваров); КонецЕсли; //////////////////////////////////////////////////////////////////////// Вот весь код кнопкиЗагрузить //////////////////////////////////////////////////////////////////////// Процедура КоманднаяПанель5Загрузить(Кнопка, Строка = Неопределено) Если Строка = Неопределено Тогда Строка = ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока; КонецЕсли; Если МТекущийРейс.Ссылка.Пустая() Тогда Возврат КОнецЕсли; Запрос=Новый Запрос; Если МНомерДогруза<>0 Тогда ФильтрДогруза=" РейсТовары.НомерДогруза = &НомерДогруза И "; Запрос.УстановитьПараметр("НомерДогруза", МНомерДогруза); Иначе ФильтрДогруза=""; КонецЕсли; Запрос.Текст= "ВЫБРАТЬ | РейсТовары.Ссылка |ИЗ | Документ.Рейс.Товары КАК РейсТовары |ГДЕ "+ФильтрДогруза+" | РейсТовары.Накладная.Ссылка <> Значение(Документ.РеализацияТоваровУслуг.ПустаяСсылка) | И РейсТовары.Ссылка = &Рейс"; Запрос.УстановитьПараметр("Рейс", МТекущийРейс.Ссылка); НакладныеПоТекРейсуИДогрузу=Запрос.Выполнить().Выгрузить(); Если МТекущийРейс.Товары.Количество() <> 0 и НакладныеПоТекРейсуИДогрузу.Количество()<>0 Тогда //МТекущийРейс.Товары[0].Накладная.Пустая() = ЛОЖЬ Тогда Предупреждение("Менять состав рейса можно только в случае, если по нему не созданы накладные"); Возврат; КонецЕсли; //+Начало Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура=Строка.Номенклатура тогда Возврат; Иначе ТаблицаТоваров = ДеревоЗаказовПолучитьТаблицуТоваровизТекущейСтроки(Строка); ТаблицаТоваровОставитьТолькоТоварыПодходящиеДляРейса(ТаблицаТоваров,МТекущийРейс); ТекущийРейсДобавитьТаблицуТоваров(ТаблицаТоваров); КонецЕсли;//-Конец Если МТекущийРейс.Модифицированность() Тогда МТекущийРейс.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Если КонтрольЗагрузки ИЛИ КонтрольОстатков Тогда КоманднаяПанель3Обновить("", Истина); Иначе Если Строка <> Неопределено Тогда СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("Регион",Строка.Регион); СтруктураПоиска.Вставить("Контрагент", Строка.Контрагент); СтруктураПоиска.Вставить("Заказ" , Строка.Заказ); СтруктураПоиска.Вставить("Номенклатура", Строка.Номенклатура); ДеревоЗаказовУдалитьСтрокуРекурсивно(Строка, ТаблицаТоваров); ДеревоЗаказовНайтиТекущуюСтроку(ДеревоЗаказов,СтруктураПоиска); КонецЕсли; КонецЕсли; КоманднаяПанель4Обновить(""); КонецЕсли КонецПроцедуры |
|||
25
kosts
18.06.12
✎
12:35
|
(24)
В твоем коде Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура=<<Строка>>.Номенклатура тогда Чему равна "Строка", а она равна "ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока", т.е. Если ОдинОдин равен ОдинОдин, то ничего не делать - логика железная. Так чему у тебя равен параметр процедуры "Строка", может быть тут нужна строка другого табличного поля? > курсор стоит на наименовании товара, тогда кнопка загрузить не должна загружать этот товар в табличную часть. Т.е. При загрузке нужно пропустить всего одну строку на которой стоит курсор, а все остальные загрузить? |
|||
26
amadeus2010
18.06.12
✎
13:11
|
нет товар можно загрузить если курсор стоит на Колонке регион или Заказ,чтобы пользователь загружал все товары из списка а не одиночный товар.
В этой части кода Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура=<<Строка>>.Номенклатура я пытался проверить что если курсор стоит на Номенклатура то при нажатии кнопки Загрузить не должно происходить никаких действий. |
|||
27
kosts
18.06.12
✎
13:21
|
(26) А ну то есть если курсор стоит в дереве на 3-м уровне где перечислены конкретные товары, то ничего не делать?
|
|||
28
amadeus2010
18.06.12
✎
13:35
|
ну да точно.Только пока я никак не соображу как это можно реализовать.Т.е я понимаю что д.б как так Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока=Строка.Номенклатура где строка=ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока
|
|||
29
kosts
18.06.12
✎
13:41
|
(28) С одной стороны всегда можно проверить на то, что в ячейке заполнена номенклатура. В вышестоящих же строках она же не заполнена. Т.е.
Если значениеЗаполнено(ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Номенклатура) Тогда Возврат; КонецЕсли; С другой стороны это искусственное ограничение, пользователи будут страдать и придется им объяснять, что "поставьте курсор на эту строку, а на эту не ставьте", а оно тебе нужно, каждому объяснять. |
|||
30
amadeus2010
18.06.12
✎
14:30
|
оно то мне не надо просто поступило распоряжение по которому пользователи могут нажать на кнопку загрузить только если текущая строка= регион или заказ и номенклатура должна загрузиться целиком а не поштучно
|
|||
31
amadeus2010
18.06.12
✎
14:38
|
мне не надо проверять строку Номенклатура на заполнение товарами, а просто поставить проверку на местоположение курсора, если он на номенклатура,то кнопка Загрузить не действует
|
|||
32
kosts
18.06.12
✎
15:32
|
(30) Просто если стоим на номенклатуре, то она же принадлежит какому то документу, ну вот и загружать целиком этот документ.
(31) Не пойму в чем проблема, дерево такое? |Регион |номера заказов |Номенклатура |регион1 |Пусто |Пусто |регион1 |номер заказа 31 |Пусто |регион1 |номер заказа 31 |номенклатура 1 <- Если стоим на строке с номенклатурой, то значение тут заполнено, почему не подходит? |регион1 |номер заказа 31 |номенклатура 2 |регион1 |номер заказа 31 |номенклатура 3 |
|||
33
amadeus2010
18.06.12
✎
15:44
|
Не у меня так
Регион,Заказ,Номенклатура 20 2110 Лимонад 1,5л Пепси кола 0,5л. Список группируется иерархически по регион У нас может быть несколько таких веток дерева заказа.В любом случае надо сделать проверку на то что если текущая строка=Лимонад,то кнопка загрузить не должна работать, а если текущая строка 20 или 2110 то Загрузить загружает всю номенклатуру что есть в заказе,что она в принципе и делает.Осталось только сделать проверку. |
|||
34
kosts
18.06.12
✎
17:25
|
(33) Ну так попробуй, если у тебя все в одну колонку внесено.
Если ЭлементыФормы.Дерево.ТекущаяСтрока.Родитель.Родитель.Родитель = Неопределено и ЭлементыФормы.Дерево.ТекущаяСтрока.Родитель.Родитель <> Неопределено Тогда Возврат; |
|||
35
del123
18.06.12
✎
17:32
|
если тип значения в колонке = Справочник номенклатуры, то ничего не делать
Условие в свободной форме :) |
|||
36
del123
18.06.12
✎
17:37
|
либо
СтрокаДереваЗначений (ValueTreeRow) Уровень (Level) Синтаксис: Уровень() Возвращаемое значение: Тип: Число. Для строки, не имеющей родителя, уровень будет равен 0. Описание: Получает уровень строки дерева значений. |
|||
37
amadeus2010
19.06.12
✎
10:20
|
(34) этот код не сработал,думаю что надо определить что если строка номенклатура является текущей тогда возврат.Для этого хочу использовать что-то типа поиска если дерево заказов.найти(строка.номенклатура,"номенклатура")=элементыформы.деревозаказов.текущаястрока тогда возврат конецесли;
Возможно ли использование такого варианта в коде? |
|||
38
amadeus2010
19.06.12
✎
10:49
|
есть кто-нибудь?
|
|||
39
del123
19.06.12
✎
10:55
|
Если ЭлементыФормы.Дерево.ТекущаяСтрока.Уровень() = 2 тогда
возврат; конецесли; так попробуй |
|||
40
amadeus2010
19.06.12
✎
11:41
|
(39)большое спасибо получилось,при попытке загрузить один товар из списка кнопка Загрузить не работает,только при установке курсора на Регион или Заказ загружается вся номенклатура из списка, как и было изначально задано по условию задачи.Окончательно код выглядит так
/////////////////////////////////////////////// Если ЭлементыФормы.ДеревоЗаказов.ТекущаяСтрока.Уровень() = 3 тогда возврат; КонецЕсли; //////////////////////////////////////////////////// Насколько я понял в дереве заказов подчиненные элменты определяются по № уровня? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |