Имя: Пароль:
1C
1С v8
Ошибка передачи данных между клиентом и сервером
,
0 ghostrid3r
 
04.12.12
18:00
Добрый день в управляемой форме при изменении ОС хочу получить его налоговое назначение. При следующем коде процедуры выдает данную ошибку.

&НаКлиенте
Процедура ОсновноеСредствоПриИзменении(Элемент)
   
   СтрокаТабличнойЧасти = Элементы.Распределение.ТекущиеДанные;
   
   СтрокаТабличнойЧасти.НалоговоеНазначение = ЗаполнитьНалоговоеНазначениеОС(СтрокаТабличнойЧасти);
   
КонецПроцедуры

&НаСервере
Функция  ЗаполнитьНалоговоеНазначениеОС(Строка)
   
   Строка.НалоговоеНазначение = Неопределено;
   
   ДатаСреза    = Новый Граница(?(Параметры.Ключ.Пустая(), КонецДня(Объект.Дата), Объект.Ссылка.МоментВремени()), ВидГраницы.Исключая);
   Отбор        = Новый Структура("Организация, ОсновноеСредство", Объект.Организация, Строка.ОсновноеСредство);
   
   СведенияОНалоговомНазначение = РегистрыСведений.НалоговыеНазначенияОС.СрезПоследних(ДатаСреза, Отбор);
   Если СведенияОНалоговомНазначение.Количество() > 0 Тогда
       Строка.НалоговоеНазначение = СведенияОНалоговомНазначение[0].НалоговоеНазначение;
   КонецЕсли;
   
   Возврат Строка.НалоговоеНазначение;
КонецФункции

что то я дуплю наверно по жестокому но направте в нужное русло.
1 Wobland
 
04.12.12
18:01
на мисте сегодня день Строки
2 Wobland
 
04.12.12
18:02
вообще, ЗаполнитьНалоговоеНазначениеОС на процедуру смахивает
3 ghostrid3r
 
04.12.12
18:03
ну даже если процедурой будет, всеравно эта ошибка уже пробовал
4 Wobland
 
04.12.12
18:03
(3) ты дуплишь
5 ghostrid3r
 
04.12.12
18:05
(4) о мессия покажи выход из этого дуплежа
6 Wobland
 
04.12.12
18:09
СтрокаТабличнойЧасти.НалоговоеНазначение=
в процедуре не спасает?
7 ghostrid3r
 
04.12.12
18:11
(6) если ты про это, то не спасает, ошибка таже.

&НаКлиенте
Процедура ОсновноеСредствоПриИзменении(Элемент)
   
   СтрокаТабличнойЧасти = Элементы.Распределение.ТекущиеДанные;
   
   ЗаполнитьНалоговоеНазначениеОС(СтрокаТабличнойЧасти);
   
КонецПроцедуры

&НаСервере
Процедура  ЗаполнитьНалоговоеНазначениеОС(Строка)
   
   Строка.НалоговоеНазначение = Неопределено;
   
   ДатаСреза    = Новый Граница(?(Параметры.Ключ.Пустая(), КонецДня(Объект.Дата), Объект.Ссылка.МоментВремени()), ВидГраницы.Исключая);
   Отбор        = Новый Структура("Организация, ОсновноеСредство", Объект.Организация, Строка.ОсновноеСредство);
   
   СведенияОНалоговомНазначение = РегистрыСведений.НалоговыеНазначенияОС.СрезПоследних(ДатаСреза, Отбор);
   Если СведенияОНалоговомНазначение.Количество() > 0 Тогда
       Строка.НалоговоеНазначение = СведенияОНалоговомНазначение[0].НалоговоеНазначение;
   КонецЕсли;
   
КонецПроцедуры
8 vicof
 
04.12.12
18:12
(7) тебе строку табличной части между клиентом и сервером передавать нельзя, ясно же написано.
9 Wobland
 
04.12.12
18:14
Процедура РассчитатьСтоимость(СтрокаТЧ) Экспорт
   СтрокаТЧ.Стоимость=СтрокаТЧ.Количество*СтрокаТЧ.Цена;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыСтрокаТЧПриИзменении(Элемент)
   КлиентскийМодуль.РассчитатьСтоимость(Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
10 ghostrid3r
 
04.12.12
18:47
(9) попробовал как ты написал, добавил процедуру в модуль объекта но в модуле управляемой формы я ее никак не могу вызвать.
11 Serginio1
 
04.12.12
18:53
Попробуй вместо строки, передать структуру. На 8.1 не проходит из-за того сто строка ссылается на владельца
12 Serginio1
 
04.12.12
19:07
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт
   
   Структура = Новый Структура;
   Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
       Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
   КонецЦикла;
   
   Возврат Структура;
   
КонецФункции
13 ghostrid3r
 
04.12.12
19:11
(12) попробовал твой вариант, результата он не принес.
14 Wobland
 
04.12.12
19:20
(10) ты заметил, что у меня всё на клиенте происходит?
15 ghostrid3r
 
04.12.12
19:36
(14) Ну на клиенте но эспортная функция где находиться в модуле объекта?
16 Wobland
 
04.12.12
20:03
(15) d КлиентскийМодуль
17 ghostrid3r
 
04.12.12
20:15
(16) Тогда раскажи мне плз, как я тебе на клиенте буду запросы делать?
18 Wobland
 
04.12.12
20:24
(17) никак. можно вычисленное значение клиенту вручить
19 Serginio1
 
05.12.12
10:48
А вот зачем тебе передавать строку, если тебе нужно всего только ОсновноеСредство

Функция  ЗаполнитьНалоговоеНазначениеОС(ОсновноеСредство)
   
   НалоговоеНазначение = Неопределено;
   
   ДатаСреза     = Новый Граница(?(Параметры.Ключ.Пустая(), КонецДня(Объект.Дата), Объект.Ссылка.МоментВремени()), ВидГраницы.Исключая);
   Отбор         = Новый Структура("Организация, ОсновноеСредство", Объект.Организация, ОсновноеСредство);
   
   СведенияОНалоговомНазначение = РегистрыСведений.НалоговыеНазначенияОС.СрезПоследних(ДатаСреза, Отбор);
   Если СведенияОНалоговомНазначение.Количество() > 0 Тогда
       НалоговоеНазначение = СведенияОНалоговомНазначение[0].НалоговоеНазначение;
   КонецЕсли;
   
   Возврат НалоговоеНазначение;
КонецФункции
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан