Имя: Пароль:
1C
1С v8
Ошибка отображения типов
0 amadeus2010
 
08.10.12
13:30
Добрый день при вызове клиентской процедуры из серверной выходит ошибка

{Документ.ЗаказПокупателя.Форма.ФормаДокументаУпр.Форма(424)}: Ошибка при вызове метода контекста (ПриИзмененииНоменклатуры)
   ПриИзмененииНоменклатуры(Элементы.Товары.ТекущиеДанные);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

Вот эти процедуры
/////////////////////////////////////////////////////////////////

  &НаСервере

Процедура ПриИзмененииНоменклатуры(Элементы)
   МодульОбъекта=РеквизитФормыВЗначение("Объект");
   МодульОбъекта.ПриИзмененииНоменклатурыТоваров(Элементы);
   ЗначениеВРеквизитФормы(МодульОбъекта, "Объект");    
КонецПроцедуры    

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
   ПриИзмененииНоменклатуры(Элементы.Товары.ТекущиеДанные);
УправлениеАкцизами.РассчитатьАкцизТабЧасти(СтрокаТабличнойЧасти, Объект);
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, Объект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, Объект);
КонецПроцедуры
/////////////////////////////////////////////////////////////////////
После отображения ошибки поле номенклатура заполняется выбранным товаром.
1 Maxus43
 
08.10.12
13:32
на толстом клиенте встречался, баг платформы, перезапуск службы помогал. какая платформа?
2 DrShad
 
08.10.12
13:32
класс, а вопрос в чем?
3 DrShad
 
08.10.12
13:33
(1) да причем тут баг? он передает в процедуру не тот параметр
4 Maxus43
 
08.10.12
13:34
(3) да хз, на толстом видел такой именно баг)
5 amadeus2010
 
08.10.12
13:35
(1) платформа 8.2.14.519, конфигурация УПП 1.2 не типовая
6 amadeus2010
 
08.10.12
13:36
(3) перевожу конфу на управляемое приложение, (2)не подскажите про параметр?
7 DrShad
 
08.10.12
13:37
Процедура ПриИзмененииНоменклатуры(Элементы)
ПриИзмененииНоменклатуры(Элементы.Товары.ТекущиеДанные);

разницу не замечаешь?
8 amadeus2010
 
08.10.12
13:42
(7)про имя процедуры и указание параметров в вызове процедуры на клиенте?
9 DrShad
 
08.10.12
13:45
(8) про тип параметра, пилять
10 amadeus2010
 
08.10.12
13:51
сделал так
//////////////////////////////////////////////////////////////
&НаСервере

Процедура ПриИзмененииНоменклатуры()
   МодульОбъекта=РеквизитФормыВЗначение("Объект");
   МодульОбъекта.ПриИзмененииНоменклатурыТоваров(Элементы);
   ЗначениеВРеквизитФормы(МодульОбъекта, "Объект");    
КонецПроцедуры    

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
   ПриИзмененииНоменклатуры();
    //Комкон Акцизы Начало(
   УправлениеАкцизами.РассчитатьАкцизТабЧасти(СтрокаТабличнойЧасти, Объект);
   //Комкон Акцизы Конец)
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, Объект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, Объект);
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////
11 amadeus2010
 
08.10.12
13:59
теперь выдало ошибку
Документ.ЗаказПокупателя.МодульОбъекта(2944)}: Поле объекта не обнаружено (Цена)
   СуммаСтроки = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество + СтрокаТабличнойЧасти.СуммаАкциза;

Привожу саму процедуру из общего модуля

///////////////////////////////////////////////////////////////////
Процедура ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти,СтавкаНДСПоУмолчанию = Неопределено) Экспорт
   
   //Комкон Акцизы Начало(
   //комкон Акциз СуммаСтроки = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
   СуммаСтроки = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество + СтрокаТабличнойЧасти.СуммаАкциза;
   //комкон Акцизы Конец)
   
   // Выполнить общие действия для всех документов при изменении номенклатуры.
   ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   
   // Заполняем реквизиты табличной части.
   Если ТипЗнч(СтавкаНДСПоУмолчанию) = Тип("ПеречислениеСсылка.СтавкиНДС") И ЗначениеЗаполнено (СтавкаНДСПоУмолчанию) Тогда
       СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДСПоУмолчанию;
   Иначе    
       ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Реализация");
   КонецЕсли;    
   ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
   
   //Расчет скидок
   Если РассчитыватьАвтоматическиеСкидки() Тогда
       СуммаСтрокиПослеИзменения = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
       
       мСуммаДокументаБезСкидок = мСуммаДокументаБезСкидок + СуммаСтрокиПослеИзменения - СуммаСтроки;
       СтруктураПараметров = Новый Структура;
       СтруктураПараметров.Вставить("ВидРеализации",                       Перечисления.ВидыСкидок.Оптовая);
       СтруктураПараметров.Вставить("СуммаДокумента",                      мСуммаДокументаБезСкидок);
       СтруктураПараметров.Вставить("Карта",                               ДисконтнаяКарта);
       СтруктураПараметров.Вставить("УчитыватьНДС",                        УчитыватьНДС);
       СтруктураПараметров.Вставить("СуммаВключаетНДС",                    СуммаВключаетНДС);
       СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета",      мВалютаРегламентированногоУчета);
       СтруктураПараметров.Вставить("УчетнаяПолитика",       мУчетнаяПолитика);
       ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Товары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров);
   Иначе // Рассчитать реквизиты табличной части.
       ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
       ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   КонецЕсли;
   
   // Рассчитываем плановую себестоимость.
   ОбработкаТабличныхЧастей.РассчитатьПлановуюСебестоимостьВСтрокеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
   СтрокаТабличнойЧасти.Спецификация = УправлениеПроизводством.ОпределитьСпецификациюПоУмолчанию( СтрокаТабличнойЧасти.Номенклатура, СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры, Дата, Подразделение);
   
   ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Товары", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
   
   // Ввод состава набора
   УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
   
КонецПроцедуры // ПриИзмененииНоменклатурыТоваров()

///////////////////////////////////////////////////////////////////////////////
12 amadeus2010
 
08.10.12
14:22
ау есть кто-нибудь? прошу помощи,помогите разобраться с ошибкой
13 DrShad
 
08.10.12
14:24
МодульОбъекта.ПриИзмененииНоменклатурыТоваров(Элементы);

вот что ты передаешь туда?
14 amadeus2010
 
08.10.12
14:28
(13) пытаюсь обратиться к экспортной процедуре и передать строку таб части, но так не получается СтрокаТабличной Части или Элементы.Товары.ТекущиеДанные, так не предусмотрено это в серверной части
15 DrShad
 
08.10.12
14:29
(14) [пытаюсь обратиться к экспортной процедуре и передать строку таб части] ну и где ты пытаешься? все что ты передаешь не Строка таб части
16 amadeus2010
 
08.10.12
14:31
сделал так
/////////////////////////////////////////////////////
 &НаСервере

Процедура ПриИзмененииНоменклатуры()
   МодульОбъекта=РеквизитФормыВЗначение("Объект");
   МодульОбъекта.ПриИзмененииНоменклатурыТоваров();
   ЗначениеВРеквизитФормы(МодульОбъекта, "Объект");    
КонецПроцедуры    

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
   ПриИзмененииНоменклатуры();
    //Комкон Акцизы Начало(
   УправлениеАкцизами.РассчитатьАкцизТабЧасти(СтрокаТабличнойЧасти, Объект);
   //Комкон Акцизы Конец)
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, Объект);
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, Объект);
КонецПроцедуры
/////////////////////////////////////////////////////////////////////////
выдает ошибку  {Документ.ЗаказПокупателя.Форма.ФормаДокументаУпр.Форма(215)}: Недостаточно фактических параметров
   МодульОбъекта.ПриИзмененииНоменклатурыТоваров();
(14) как в серверной части можно обратиться к табличной части документа?
17 DrShad
 
08.10.12
14:33
(16) потому что ты без параметров обращаешься
18 amadeus2010
 
08.10.12
14:35
а что указать в качестве параметра?
19 amadeus2010
 
08.10.12
14:36
если указать Элемент или имя табличной части то выходит ошибка
20 DrShad
 
08.10.12
14:48
нужно передать строку таб части - очевидно же, что ни Элементы ни Имя ТЧ не являются строкой ТЧ
21 pumbaEO
 
08.10.12
14:50
(20)
Для ТС - это не очевидно.
Для ТС - проще спросить и ныть потом о помощи, чем подумать.

p.s.: ТС уже ничего не поможет, и не знаю то ли мама с папой не старались, то ли перестарались.
22 amadeus2010
 
08.10.12
14:57
(20),(21)
СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
МодульОбъекта.ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти.Номенклатура);

единственное что приходит на ум, добавить в серверной части
23 DrShad
 
08.10.12
14:59
(22) помогло?
24 DrShad
 
08.10.12
14:59
+(23) опять же СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти
25 amadeus2010
 
08.10.12
15:12
сделал так
///////////////////////////////////////////////////////////
   &НаСервере

Процедура ПриИзмененииНоменклатуры()
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
   МодульОбъекта=РеквизитФормыВЗначение("Объект");
   МодульОбъекта.ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти.Номенклатура);
   ЗначениеВРеквизитФормы(МодульОбъекта, "Объект");    
КонецПроцедуры    
////////////////////////////////////////////////////////////////
вышла ошибка "Ошибка при получении значения атрибута контекста (ТекущиеДанные)
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;"
26 amadeus2010
 
08.10.12
15:34
(24) объясните пожалуйста значение ошибки, дополнительно к (25)
Ошибка при получении значения атрибута контекста (ТекущиеДанные)
   СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;
Текущие данные таблицы недоступны на сервере
27 DrShad
 
08.10.12
15:41
ну нет на сервере текущих данных Элементов
28 amadeus2010
 
08.10.12
15:45
(27) это я тоже понял, а как можно передать параметры табличной части на сервере? через Объект?
29 amadeus2010
 
09.10.12
08:07
(27) это я тоже понял, а как можно передать параметры табличной части на сервере? через Объект?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн