|
Помогите решить задачу для подготовки к экзамену 1с специалист | ☑ | ||
---|---|---|---|---|
0
Merry_fellow
27.03.12
✎
20:45
|
Доброго времени суток! помогите с задачей по специалисту, платформа 8.2
задача по управляемым формам № 5.11: Необходимо создать управляемую основную форму документа "Расходная накладная", в которой пользователь сможет осуществлять выбор товаров с помощью специальной формы подбора. Выбор товаров должен осуществляться посредством перетаскивания мышкой нужного элемента из формы подбора в форму документа. Решение взято отсюда http://chistov.spb.ru/forum/16-1057-1#post. Однако вопрос, как запретить перетаскивать группу? проверка Если Не ЗначениеМассива.ЭтоГруппа выдает ошибку: поле объекта не обнаружено (ЭтоГруппа) |
|||
1
aleks-id
27.03.12
✎
20:49
|
что есть ЗначениеМассива ?
|
|||
2
Feanor
27.03.12
✎
20:49
|
предлагаю воспользоваться отладчиком
|
|||
3
Merry_fellow
27.03.12
✎
21:03
|
ЗначениеМассива - это значение типа СправочникСсылка.Номенклатура
|
|||
4
Feanor
27.03.12
✎
21:05
|
(3) это ты так думаешь, или на самом деле так?
|
|||
5
Merry_fellow
27.03.12
✎
21:07
|
это в отладчике
|
|||
6
Feanor
27.03.12
✎
21:11
|
(5) и у него действительно нет поля "ЭтоГруппа"?
а справочник "Номенклатура" иерархический? |
|||
7
Merry_fellow
27.03.12
✎
21:19
|
&НаКлиенте
Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) СтандартнаяОбработка = Ложь; Для каждого ЗначениеМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЗначениеМассива) = Тип("СправочникСсылка.Номенклатура") Тогда Если Не ЗначениеМассива.ЭтоГруппа Тогда НоваяСтрока = Объект.Товары.Добавить(); НоваяСтрока.Номенклатура = ЗначениеМассива; НоваяСтрока.Количество = 1; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
8
Merry_fellow
27.03.12
✎
21:20
|
Справочник номенклатура иерархический.
код процедуры представлен выше |
|||
9
Feanor
27.03.12
✎
21:21
|
(7) в тонком клиенте нельзя обращаться к свойствам объектов
|
|||
10
DUDE
27.03.12
✎
21:23
|
(5) если ты это проверяешь на тонком клиенте, то у ссылки не будет доступа к ее свойствам.
|
|||
11
DUDE
27.03.12
✎
21:26
|
либо выполнять процедуру обработчика на сервере либо какой-то обходной маневр придумывать, например, в параметрахперетаскивания чтоб передавать и свойство ЭтаГруппа (тут надо почитать хелп)
|
|||
12
Merry_fellow
27.03.12
✎
21:27
|
ясно, спасибо большое за помощь!
|
|||
13
Feanor
27.03.12
✎
21:29
|
(12) заходите ещё))
блин, про фотку забыли(( |
|||
14
sanja26
27.03.12
✎
21:31
|
(9) К свойствам ссылки можно
|
|||
15
Merry_fellow
27.03.12
✎
21:46
|
теперь работает, вот окончательный код, если кому интересно) всем спасибо!)
&НаКлиенте Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) ДобавитьТовары(ПараметрыПеретаскивания.Значение); КонецПроцедуры &НаСервере Процедура ДобавитьТовары(МассивЭлементов) Для Каждого ЗначениеПеретаскивания Из МассивЭлементов Цикл Если ТипЗнч(ЗначениеПеретаскивания) = Тип("СправочникСсылка.Номенклатура") Тогда Если Не ЗначениеПеретаскивания.ЭтоГруппа Тогда НовСтр = Объект.Товары.Добавить(); НовСтр.Номенклатура = ЗначениеПеретаскивания; НовСтр.Количество = 1; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
16
Ranger_83
27.03.12
✎
21:47
|
можно получить свойства ссылки на стороне клиента ,но не напрямую,а посредством серверной функции.
Например,ПолучитьЗначениеРеквизита("<ИмяРеквизита>",Ссылка) |
|||
17
Feanor
27.03.12
✎
21:49
|
(15) лучше немного не так сделать:
оставить в целом процедуру без изменения, только переписать одну строку: "Если Не ЗначениеМассива.ЭтоГруппа Тогда" > "Если Не ЭтоГруппаНоменклатуры(ЗначениеМассива) Тогда" ну и процедурку добавить &НаСервереБезКонтектста Процедура ЭтоГруппаНоменклатуры(Номенклатура) Возврат Номенклатура.ЭтоГруппа; КонецПроцедуры |
|||
18
GROOVY
27.03.12
✎
22:22
|
Перетаскивание <> подбор. Задачу нужно решать с использованием временного хранилища.
|
|||
19
Feanor
27.03.12
✎
22:26
|
(18) дак вроде по условию сказано, что нужно использовать перетаскивание
|
|||
20
GROOVY
27.03.12
✎
22:45
|
(19) Точно, стормозил, надо меньше работать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |