У меня есть документ ПеремещениеТСИОборудования и переодический регистр сведений МестонахождениеТС. Надо чтоб при выборе Транспортного средства и оборудования в документе ПеремещениеТСИОборудования автоматически подтягивалась информация о водителе(СправочникСсылка.Сотрудники) и бортовом номере (Строка).
Я решил сделать так :
1)На ФормеДокумента Перемещение вынес табличную часть с нужными реквизитами.
2)Проведение по регистрам сведений водителя и бортовой .
3) И в реквизите на форме ТС и Оборудование пишу событие при изменении . Хочу вытащить данные через срез последних.
ТСНомерТС - ТС и Оборудование.

Код:

```1c
    Процедура ТСНомерТСПриИзменении(Элемент)
    Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водитель",Объект.ТС.Водитель));
    Для каждого Элемент Из Сведения Цикл
    Если Элемент.Ключ="Водитель" Тогда
    Продолжить;
    КонецЕсли;
    Объект[Элемент.Ключ]=Элемент.Значение;
    КонецЦикла;
```

Но не получаеться. Сам пока новичок и трудно пока писать код.
---
```1c
    ТСТСПриИзмененииНаСервере(Элементы.ТС.ТекущиеДанные.ТС)
```
---
Как я понимаю должно быть:

```1c
    &НаКлиенте
    Процедура ТСТСПриИзменении(Элемент)
    ПриИзмененииТСТСнаСервере(Элемент);
    КонецПроцедуры

    &НаСервере
    Процедура ПриИзмененииТСТСнаСервере(Элемент);
    //Выполняешь требуемые действия
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
    Структура("Организация,ТС",Объект.Организация,Элемент.ТекущиеДанные.ТС));
    Элемент.ТекущиеДанные.Водитель = Сведения[0].Водитель;
    Элемент.ТекущиеДанные.БортНомер = Сведения[0].БортНомер;
    КонецПроцедуры
```

Остановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
---
УАТ)
Вы, наверное, не правильно обращаетесь к регистру сведений, в "Элемент" регистр вряд ли будет. А там бог его знает.
Я всегда через запрос обращаюсь, примерно так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатМестонахождениеТССрезПоследних.ТС,
    | уатМестонахождениеТССрезПоследних.Колонна
    |ИЗ
    | РегистрСведений.уатМестонахождениеТС.СрезПоследних(&Дата, ТС.Водитель = &Водитель) КАК уатМестонахождениеТССрезПоследних";

    Запрос.УстановитьПараметр("Водитель", Объект.ТС.Водитель);
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    // Ваш код для обхода
    КонецЦикла;
```
---
А через срез последних можно ли ? Сам понимаю что не через элемент
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водій",Объект.ТС.Водій));
Но так ругаеться компилятор :

Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма(176,13)}:Переменная не определена (РегистрыСведений)
 Сведения = <<?>>РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водитель",Объект.ТС.Водитель));
---
Форма управляемая? Код на &Клиент?
---
Без запроса?
---
Вероятно вы обращаетесь к выборке по регистру на Клиенте. Надо на Сервере.
---
Форма Управляемая и Код на &Клиент в событии при Изменении.
Тоесть надо прописать ПриСоздании на Сервере и вызвать ПриИзменении на клиенте? Я так понимаю?
---
```1c
    &НаКлиенте
    Процедура ПриИзмененииРеквизита()
    ПриИзмененииРеквизитаНаСервере();
    КонецПроцедуры;

    &НаСервере
    Процедура ПриИзмененииРеквизитаНаСервере()
    //Тут делаете обращение к базе данных и заполняете
    КонецПроцедуры;
```
---
ну или как то по другому?
---
БортовойНомер прибить к справочнику ТранспортногоСредства. Однозначно.
Текущий водитель из Регистра сведений по любому брать через
&НаСервере
Хоть через запрос, хоть через РегистрыСведений.уатМестонахождениеТС.СрезПоследних(КонечнаяДата,ОтборСтруктура)
Возвращает ТаблицуЗначений, если есть записи.

```1c
    &НаКлиенте
    Процедура ТСНомерТСПриИзменении(Элемент)
    Водитель=ПолучитьВодителя(ТранспортноеСредство);
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьВодителя(ТранспортноеСредство)
    Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних(ТекущаяДата()), Новый Структура("ТранспортноеСредство",ТранспортноеСредство);
    Если Сведения.КУоличество()>0 Тогда
    Водитель=Сведения.Водитель;
    Иначе
    Водитель=Неопределено;
    КонецЕсли;
    Возврат Водитель;
    КонецФункции
```
---
Не видел.Сейчас попробую
---
Прописал код + в СрезПоследних в Новый Структура прописал "Организация" так как это измерение а Водитель - ресурс :

```1c
    &НаСервере
    Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
    Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Организация",Объект.ТС.Водитель));
    Для каждого Элемент Из Сведения Цикл
    Если Элемент.Ключ="Наименование" Тогда
    Продолжить;
    КонецЕсли;
    Объект[Элемент.Ключ]=Элемент.Значение;
    КонецЦикла;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТСНомерТСПриИзменении(Элемент)
    ПриИзмененииТСНомерТСнаСервере(Элемент);
    КонецПроцедуры
```

Но все равно не подтягивает данные. Кто знает почему так?
---
Какая-то у вас каша.

```1c
    &НаСервере
    Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
    Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
    Структура("Организация, Водитель", Объект.Организация, Объект.ТС.Водитель));
    БортовойНомер = Сведения[0].БортовойНомер;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТСНомерТСПриИзменении(Элемент)
    КонецПроцедуры

    &НаСервере
    Процедура ПриИзмененииТСНомерТСнаСервере(Элемент);
    КонецПроцедуры
```
---
А зачем 2 раза процедуру на сервере?
---
Это у вас так было написано, я просто ошибки исправил.
---
Спасибо)
---
А еще вопрос.У меня водитель это ресурс а не измерение.Получаеться я не могу его передать в Структура("Водитель")?
---
Нет.
---
У меня в измерении только ТС и Организация. Поэтому в стуктуре прописую :
Структура("Организация,ТС", Объект.Организация, Объект.ТС.ТС));
(18)
---
Но компилятор ругается Поле объекта не обнаружено (ТС)
---
Наверное слишком мало написано ТС. Надо что бы наверняка пробрало компилятор еще раз 10 написать.
```1c
    Объект.ТС.ТС.ТС.ТС.ТС.ТС.ТС.ТС.ТС.ТС
```
 Но если не поможет я даже не знаю что посоветовать.
---
Объект.ТС - табличная часть где есть реквизит ТС
---
Нужно взять это значение из ТекущихДанных на клиенте и передать на сервер в параметрах процедуры
---
1)Нужно взять это значение из ТекущихДанных на клиенте
Процедура ТСТСПриИзменении(Элемент)
 ТСТСПриИзмененииНаСервере();
ТекСтрока = Элементы.ТС.ТекущиеДанные;
КонецПроцедуры

2)передать на сервер в параметрах процедуры. Это так?

&НаСервере
Процедура ОбновитьНомерТСвТЧ( ТекСтрока = Неопределено)
 ИмяТЧ = "ТС";
 ТекСтрока = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
КонецПроцедуры
---
и прописать на клиенте ОбновитьНомерТСвТЧ(ТекСтрока);
---
Как то с передачей на сервер немного непонятно.
---
```1c
    ТСТСПриИзмененииНаСервере(Элементы.ТС.ТекущиеДанные.ТС)
```
---
А в РегистрыСведений.уатМестонахождениеТС у вас ТС есть?
---
Да , ТС у меня измерение
---
Можете подсказать как передать на сервер в параметрах процедуры?
---
В параметры процедуры вставляете. Что именно хотите передать?
---
Водителя и БортНомер
---
Как-то так:

```1c
    &НаКлиенте
    Процедура ТСНомерТСПриИзменении(Элемент)
    ПриИзмененииТСНомерТСнаСервере(Элемент, Водитель, БортНомер);
    КонецПроцедуры

    &НаСервере
    Процедура ПриИзмененииТСНомерТСнаСервере(Элемент, Водитель, БортНомер);
    //Выполняешь требуемые действия
    КонецПроцедуры
```
---
Есть еще вопрос
по СрезПоследних
У меня в регистре сведений уатМестонахождениеТС измерения : ТС и Организация.
В документе Перемещения Организация- реквизит а ТС - табл.часть
Мой код по срезу:

```1c
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Организация,ТС",Объект.Организация,Объект.ТС));
```

Понимаю что передавать так нельзя Объект.ТС и Объект.ТС.ТС тоже)
Но как правильно предать объект из табл.части?
---
Как я понимаю должно быть:

```1c
    &НаКлиенте
    Процедура ТСТСПриИзменении(Элемент)
    ПриИзмененииТСТСнаСервере(Элемент);
    КонецПроцедуры

    &НаСервере
    Процедура ПриИзмененииТСТСнаСервере(Элемент);
    //Выполняешь требуемые действия
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
    Структура("Организация,ТС",Объект.Организация,Элемент.ТекущиеДанные.ТС));
    Элемент.ТекущиеДанные.Водитель = Сведения[0].Водитель;
    Элемент.ТекущиеДанные.БортНомер = Сведения[0].БортНомер;
    КонецПроцедуры
```

Остановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
---
Очень нужна помощь !!!! Немного переделал и надо подтянуть организацию и подазделение

```1c
    &НаСервере
    Процедура ТСТСПриИзмененииНаСервере(Ав)
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));

    КонецПроцедуры

    Процедура ТСТСПриИзменении(Элемент)
    ТекСтрока = Элементы.ТС.ТекущиеДанные;
    Ав = ТекСтрока.ТС;
    ТСТСПриИзмененииНаСервере(Ав);
    КонецПроцедуры
```

Как вытащить данные из регистра? Но при добавлении в 1с : Поле об`єкту не виявлено (Организация)
Ав.Организация = Сведения.Организация; :

Делаю так

```1c
    &НаСервере
    Процедура ТСТСПриИзмененииНаСервере(Ав)
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));

    Ав.Организация = Сведения[0].Организация;
    Ав.Подразделение = Сведения[0].Подразделение;

    КонецПроцедуры
```
---
Ав = Элемент.ТС.ТекущиеДанные; это данные строки(Элемент, а не Элементы).

```1c
    Ав.Организация = Сведения[0].Организация;
    Ав.Подразделение = Сведения[0].Подразделение;
```

В строке есть колонка Организация? В РегистрыСведений.уатМестонахождениеТС есть Подразделение?
---
Получился СрезПоследних. Как вытащить данные со среза.Пробую через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр но ругаеться компилятор :

Сведения = <<? >> ЗначениеИзСтрокиВнутр (стр) (Проверка: Тонкий клиент)
{Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма (458,13)}: Процедура или функция с указанным именем не определена (ЗначениеИзСтрокиВнутр)

Код:

```1c
    &НаСервере
    Функция ТСТСПриИзмененииНаСервере(Ав)
    Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));
    Возврат ЗначениеВСтрокуВнутр(Сведения);
    КонецФункции

    &НаКлиенте
    Процедура ТСТСПриИзменении(Элемент)
    ТекСтрока = Элементы.ТС.ТекущиеДанные;
    Ав = ТекСтрока.ТС;
    Стр = ТСТСПриИзмененииНаСервере(Ав);
    Сведения = ЗначениеИзСтрокиВнутр(Стр);
    КонецПроцедуры
```