Автозаполнение реквизитов табличной части документа созданный расширением.

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

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

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

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

 &НаСервереБезКонтекста
Функция ПолучитьСуммаАмортизацииБУ(НаименованиеОС)
    Отбор = Новый Структура ("Объект", НаименованиеОС);
    ЗначенияРесурсов = РегистрыСведений.РасчетАмортизации.ПолучитьПоследнее(КонецДня(ТекущаяДата()), Отбор);
    Возврат ЗначенияРесурсов.СуммаАмортизацииБУ;    
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 04.06.24 13:16 Сейчас в теме
(1)А сама функция то где? ;) Угадать не берусь....
3. DKNY_ 04.06.24 14:43 Сейчас в теме
(2) Осталось только два варианта из множества не работающих, было так
    &НаКлиенте
Процедура Расш1ТабЧастьНаименованиеОСПриИзменении(Элемент)
	Элементы.Расш1ТабЧасть.ТекущиеДанные.ИнвОС = ПолучитьИнвОС(Элементы.Расш1ТабЧасть.ТекущиеДанные.НаименованиеОС); 
КонецПроцедуры

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

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

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

&НаСервереБезКонтекста
Функция ПолучитьИнвОС(НаименованиеОС)
    Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
КонецФункции
6. DKNY_ 04.06.24 15:51 Сейчас в теме
(5) У меня была такая мысль и я даже пробывала через НайтиПоНаименованию, но не додумалась, что "искать" :)
В очередной раз Вы мне помогли!
Осталось решить вопрос как и откуда мне вытащить Стоимость (БУ), Остаточную стоимость (БУ) и Сумму амортизации (БУ)..
7. DKNY_ 05.06.24 16:15 Сейчас в теме
Получилось вытащить из регистра сведений данные и итоговый код получился такой. Повторное спасибо Vlan
Процедура Расш1ТабЧастьНаименованиеОСПриИзменении(Элемент)
ТекДанные = Элементы.Расш1ТабЧасть.ТекущиеДанные;
	ТекДанные.ИнвОС = ПолучитьИнвОС (ТекДанные.НаименованиеОС);
	ТекДанные.СтоимостьОСпо01Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС);
	ТекДанные.СуммаАмортизацииОСпо02Счету = ПолучитьСтоимостьБУ (ТекДанные.НаименованиеОС) - ПолучитьОстСтоимостьБУ (ТекДанные.НаименованиеОС)
		+ ПолучитьСуммаАмортизацииБУ (ТекДанные.НаименованиеОС); 
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьИнвОС(НаименованиеОС)
	Возврат Справочники.ОсновныеСредства.НайтиПоНаименованию(НаименованиеОС).Код;
КонецФункции

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

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

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

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

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот