Всем добрый день! И снова за помощью к вам, гуру 1С!
Поставлена задача: расширением в Бухгалтерия КОРП добавить документ по учету основных средств сданных в аренду. Расширение создала, перенесла в него справочник "ОсновныеСредства", "ПодразделенияОрганизаций", создала форму с ТЧ. Реквизит "Наименование ОС" тип: СправочникСсылка.ОсновныеСредства (работает, выбирает), следующее поле "Инвентаризационный №" в него должен помещаться стандартный реквизит "Код" из справочника "ОсновныеСредства", в поле "Стоимость ОС по 01 счету" должна помещаться Стоимость (БУ) (основного средства) из не знаю откуда, предполагаю, что из регистра сведений "РасчетАмортизации" (его тоже добавила в расширение).
Проблема в том, что как бы я не делала: функцию на клиенте и передачу на сервер и на сервер без контекста и через запрос, "Код" никак не подтягивается в "Инвентаризационный №", в поле "Стоимость ОС по 01 счету" тоже не получилось через запрос добавить Стоимость (БУ). Также пыталась чтобы в одно поле попадала разница двух других полей, тоже не считает.
Либо выдает ошибку: "Поле Код не обнаружено", либо молча ничего не заполняет и не считает.
В чем может быть проблема?
---
Чтобы понятней было:

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
    КонецФункции
```
---
Точнее так:

```1c
    Процедура Расш1ТабЧастьНаименованиеОСПриИзменении(Элемент)
    ТекДанные = Элементы.Расш1ТабЧасть.ТекущиеДанные;
    ТекДанные.ИнвОС = ПолучитьИнвОС (ТекДанные.НаименованиеОС);
    ТекДанные.СтоимостьОСпо01Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС);
    ТекДанные.СуммаАмортизацииОСпо02Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС) - ПолучитьОстСтоимостьБУ (ТекДанные.НаименованиеОС)
    + ПолучитьСуммаАмортизацииБУ (ТекДанные.НаименованиеОС);
    КонецПроцедуры
    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СтоимостьБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьОстСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.ОстаточнаяСтоимостьБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСуммаАмортизацииБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СуммаАмортизацииБУ;
    КонецФункции
```
---
А сама функция то где? ;) Угадать не берусь....
---
Осталось только два варианта из множества не работающих, было так

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

    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.Код;
    КонецФункции
```

и так:

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

    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.Код;
    КонецФункции
```
---
Надо возвращать не код справочника, а код элемента справочника, который у вас на входе в функцию. И что там? Текст наименования или ссылка? Если наименование, ищем по нему, если ссылка, забираем из нее код.
---
Чтобы понятней было:

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
    КонецФункции
```
---
У меня была такая мысль и я даже пробывала через НайтиПоНаименованию, но не додумалась, что "искать" :)
В очередной раз Вы мне помогли!
Осталось решить вопрос как и откуда мне вытащить Стоимость (БУ), Остаточную стоимость (БУ) и Сумму амортизации (БУ)..
---
Получилось вытащить из регистра сведений данные и итоговый код получился такой. Повторное спасибо Vlan

```1c
    Процедура Расш1ТабЧастьНаименованиеОСПриИзменении(Элемент)
    ТекДанные = Элементы.Расш1ТабЧасть.ТекущиеДанные;
    ТекДанные.ИнвОС = ПолучитьИнвОС (ТекДанные.НаименованиеОС);
    ТекДанные.СтоимостьОСпо01Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС);
    ТекДанные.СуммаАмортизацииОСпо02Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС) - ПолучитьОстСтоимостьБУ (ТекДанные.НаименованиеОС)
    + ПолучитьСуммаАмортизацииБУ (ТекДанные.НаименованиеОС);
    КонецПроцедуры
    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СтоимостьБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьОстСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СуммаАмортизацииБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСуммаАмортизацииБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.ОстаточнаяСтоимостьБУ;
    КонецФункции
```
---
Точнее так:

```1c
    Процедура Расш1ТабЧастьНаименованиеОСПриИзменении(Элемент)
    ТекДанные = Элементы.Расш1ТабЧасть.ТекущиеДанные;
    ТекДанные.ИнвОС = ПолучитьИнвОС (ТекДанные.НаименованиеОС);
    ТекДанные.СтоимостьОСпо01Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС);
    ТекДанные.СуммаАмортизацииОСпо02Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС) - ПолучитьОстСтоимостьБУ (ТекДанные.НаименованиеОС)
    + ПолучитьСуммаАмортизацииБУ (ТекДанные.НаименованиеОС);
    КонецПроцедуры
    &НаСервереБезКонтекста
    Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СтоимостьБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьОстСтоимостьБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.ОстаточнаяСтоимостьБУ;
    КонецФункции

    &НаСервереБезКонтекста
    Функция ПолучитьСуммаАмортизацииБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СуммаАмортизацииБУ;
    КонецФункции
```
---
В документ добавилось поле Дата учета арендованных ОС. Как написать, чтобы из регистра брались данные не на конец дня текущей даты (ПолучитьПоследнее(КонецДня(ТекущаяДата())), а на конец дня даты из поля Дата учета арендованных ОС?
---
Вопрос закрыт