|
Ошибка отображения типов | ☑ | ||
---|---|---|---|---|
0
Vika_Vika
18.08.11
✎
22:47
|
Изучаю восьмерку по книжке Радченко. Дошла до документа "НачисленияСотрудникам". Не понравилось, что надо его заполнять вручную, решила часть данных запихнуть в справочник Сотрудники.
Затык случился, когда я решила сделать такую схему: в шапке задается ВидРасчета (варианты - оклад, премия, невыходы), а в зависимости от этого вида в качестве исходных данных должен в строке подставляться или извлеченный из справочника оклад (если вид расчета - оклад), или процент премии (если вид расчета - премия). И тут программа мне заявила, что она не в курсе, что такое ПланыВидовРасчета.ОсновныеНачисления.Оклад Все прочее нормально занеслось. Текст процедуры выглядел так: &НаКлиенте Процедура ОсновныеНачисленияСотрудникПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.ОсновныеНачисления.ТекущиеДанные; СтрокаТабличнойЧасти.ГрафикРаботы = СтрокаТабличнойЧасти.Сотрудник.График; СтрокаТабличнойЧасти.ДатаНачала = НачалоМесяца(Объект.МесяцРасчета); СтрокаТабличнойЧасти.ДатаОкончания = КонецМесяца(Объект.МесяцРасчета); СтрокаТабличнойЧасти.ВидРасчета = Объект.ВидРасчетаОбщ; Если СтрокаТабличнойЧасти.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад тогда СтрокаТабличнойЧасти.Начислено = СтрокаТабличнойЧасти.Сотрудник.Оклад; ИначеЕсли СтрокаТабличнойЧасти.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия тогда СтрокаТабличнойЧасти.Начислено = СтрокаТабличнойЧасти.Сотрудник.ПремияПроцент; КонецЕсли; КонецПроцедуры Я поразмыслила, пришла к выводу, что причина в том, что процедура выполняется на клиенте, а ПланыВидовРасчета.ОсновныеНачисления.Оклад принадлежит глобальному контексту, и решила это условие выкинуть в общий модуль, который будет выполняться на сервере. сделала такую процедуру в общем модуле Процедура ДанныеСотрудников(СтрокаТабличнойЧасти) Экспорт Если СтрокаТабличнойЧасти.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад тогда СтрокаТабличнойЧасти.Начислено = СтрокаТабличнойЧасти.Сотрудник.Оклад; ИначеЕсли СтрокаТабличнойЧасти.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия тогда СтрокаТабличнойЧасти.Начислено = СтрокаТабличнойЧасти.Сотрудник.ПремияПроцент; КонецЕсли; КонецПроцедуры и вызвала ее из модуля формы вместо условия ПроведениеРасчетов.ДанныеСотрудников(СтрокаТабличнойЧасти); Тут у меня получилось такое сообщение -------------------- {Документ.НачисленияСотрудникам.Форма.ФормаДокумента.Форма(17)}: Ошибка при вызове метода контекста (ДанныеСотрудников) ПроведениеРасчетов.ДанныеСотрудников(СтрокаТабличнойЧасти); по причине: Ошибка при вызове серверного метода. по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции' ------------------------------ Насколько я поняла, значение СтрокаТабличноеЧасти у меня получилось какое-то некачественное, незапомненное, что ли. Но как сделать правильно, до меня не доходит. Перепробовала кучу вариантов, не получается ничего. Умные люди, посоветуйте, плиз, как выходить из такой ситуации. |
|||
1
lubja
18.08.11
✎
22:55
|
а если сделать ДанныеСотрудников функцией, возвращающей истину, ложь или, вообще, неопределенно, если вид расчета и не оклад, и не премия. в эту функцию передавать не строку, а СтрокаТабличнойЧасти.ВидРасчета. а в процедуре ОсновныеНачисленияСотрудникПриИзменении обрабатывать.
|
|||
2
Vika_Vika
18.08.11
✎
23:06
|
Получилось! Спасибо.
|
|||
3
Vika_Vika
18.08.11
✎
23:07
|
Но все-таки интересно, почему вся строка передаваться не хочет.
|
|||
4
lubja
18.08.11
✎
23:11
|
(3) скорее всего с клиента на сервер просто так не передашь строку тч, нужно слегка извратиться.
|
|||
5
Vika_Vika
18.08.11
✎
23:14
|
А как извратиться?
|
|||
6
lubja
18.08.11
✎
23:15
|
(5) лучше дождаться завтрашнего дня и апнуть ветку, когда проснутся умы форума)
|
|||
7
Axel2009
18.08.11
✎
23:15
|
данныеформывзначение
|
|||
8
lubja
18.08.11
✎
23:16
|
+ а я сналету не скажу, лезть проверять нужно...
|
|||
9
Vika_Vika
18.08.11
✎
23:20
|
to Axel2009.
объясните подробнее, пожалуйста. Я только учусь. |
|||
10
Axel2009
18.08.11
✎
23:27
|
(9) ищи в СП описание данной функции
|
|||
11
Vika_Vika
19.08.11
✎
05:19
|
Штука в том, что в другом документе эта самая строка тихо-мирно передавалась и все вычислялось.
Вот ПриходнаяНакладная. В модуле формы: &НаКлиенте Процедура СписокНоменклатурыКоличествоПриИзменении(Элемент) ТекСтрока = Элементы.СписокНоменклатуры.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(ТекСтрока); КонецПроцедуры И в общем модуле: Процедура РассчитатьСумму(ТекСтрока) экспорт ТекСтрока.Сумма = ТекСтрока.Количество * ТекСтрока.Цена; КонецПроцедуры Разница только в том, что сейчас прежде чем обратиться в общий модуль, я ее пишу данные в строчку. Это такая определяющая вещь? Видимо, я чего-то не понимаю? Пожалуйста, кто-нибудь может объяснить? |
|||
12
Vika_Vika
19.08.11
✎
08:22
|
Народ, откликнитесь, плиз!
|
|||
13
lubja
19.08.11
✎
08:30
|
(12) сравни галочки в свойствах этих 2 общих модулей
|
|||
14
Vika_Vika
19.08.11
✎
13:17
|
(13) Предложение хорошее, правильное. Дело, безусловно, именно в этом.
Ситуация такая: Общий модуль, где вычисляется сумма, он помечен галочкой Клиент (управляемое пр-е). Но если поместить мою первую процедуру в него, получается та же ошибка, что и при работе в модуле формы. Он не знает что такое ПланыВидовРасчета. Поэтому она находится в модуле, помеченном Сервер, и соответственно дает ту ситуацию, которую я описала вначале. Вот такая зараза. |
|||
15
Hostess_
of_Love 19.08.11
✎
13:25
|
(0) была у меня похожая проблема. выкрутилась изменив тип значения в свойствах реквизита
|
|||
16
Vika_Vika
19.08.11
✎
17:21
|
То есть эта фигня никак не решается? Можно только выкрутиться?
|
|||
17
Hostess_
of_Love 19.08.11
✎
17:39
|
говорю же, тип значения в свойствах измени. на какой именно сказать не могу, экспериментируй. главное чтобы на другие механизмы не влеяло
|
|||
18
Vika_Vika
20.08.11
✎
10:08
|
В свойствах чего? Какого реквидита?
|
|||
19
Hostess_
of_Love 20.08.11
✎
11:43
|
А вот этого я уже сказать не могу... Я меняла у реквизита формы, в который заносила данные с сервера. Вместо неопределенно поставила СправочникСсылка. Можешь попробовать поставить тип Строка
|
|||
20
Vika_Vika
20.08.11
✎
17:47
|
М-да. Надеялась, что кто-то сможет объяснить. lubja - спасибо. Остальным - не знаю, что сказать.
Как-то иначе я представляла себе здешний форум. |
|||
21
acsent
20.08.11
✎
18:06
|
Есть замечательная функция ПредопределенноеЗначение()
|
|||
22
Vika_Vika
20.08.11
✎
20:55
|
Верю. И чем она замечательна?
|
|||
23
Vika_Vika
20.08.11
✎
21:04
|
Ее к моему вопросу можно применить? Если да, то как?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |