Добрый вечер, помогите дописать код

```1c
    &НаСервере
    Функция НаценкаДляСклада(Идентификатор)
    Наценка = Константы.НаценкаПоУмолчанию.Получить();

    //ниже надо дописать логику получения цены для склада и номенклатуры
    СтрокаТоваров = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
    если ЗначениеЗаполнено(СтрокаТоваров.Номенклатура)и ЗначениеЗаполнено(Объект.Склад) тогда
    Номенклатура = СтрокаТоваров.Номенклатура;
    Склад = Объект.Склад;
    //....
    //Наценка = ...;
    Конецесли;

    //а пока процедура возвращает только константу
    Возврат Наценка;
    КонецФункции
```
---
немного неправильно сделана структура хранения данных
по хорошему нужно переделать
создать рег сведений с измерениями номенклатура, ТипСклада
и реквизитом цена, если цены нужно хранить по периодам то рег сведений должен быть периодическим
из справочника перенести данный в рег сведений обработкой
 удалить ТЧ

на форме уже обращаемся к регистру и получаем наценку,
---
наценка где хранится? в регистре? в справочнике складов?
может всетаки регистр сведений ЦеныНоменклатуры? и там склад, номенклатура, Цена?
---
в справочнике складов
---
в какой момент формируется наценка?
при добавлении строки в ТЧ?
склад в шапке документа 1 или в ТЧ разные склады?
---
ошибка. Наценка хранится в справочнике номенклатуры с табличной частью склад, наценка
---
```1c
    &НаКлиенте
    Процедура ТоварыЦенаПриИзменении(Элемент)
    //В этом случа нам надо посчитать сумм но и в зависмости от слада получить наценку, поэтому работаем с ТекущаяСтрока
    Идентификатор = Элементы.Товары.ТекущаяСтрока;
    Если Идентификатор = Неопределено Тогда
    Возврат; //исключаем ошибки в случае отсутствия данных
    КонецЕсли;
    СтрокаТоваров = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
    Если СтрокаТоваров = Неопределено Тогда
    Возврат; //исключаем ошибки в случае отсутствия данных
    КонецЕсли;
    СтрокаТоваров.Сумма=Окр(СтрокаТоваров.Количество*СтрокаТоваров.Цена,2);
    Если СкладРозничный() Тогда
    СтрокаТоваров.ЦенаВРознице=Окр(СтрокаТоваров.Цена+СтрокаТоваров.Цена*НаценкаДляСклада(Идентификатор)/100);
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Функция НаценкаДляСклада(Идентификатор)
    Наценка = Константы.НаценкаПоУмолчанию.Получить();
    СтрокаТоваров = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
    Если ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) и ЗначениеЗаполнено(Объект.Склад) Тогда
    Номенклатура = СтрокаТоваров.Номенклатура;
    Склад = Объект.Склад;
    //....
    //Наценка = ...;
    Конецесли;
    Возврат Наценка;
    КонецФункции
```
---
есть склад розничный и оптовый
---
склад получается либо розничный либо оптовый? и более никакой?
---
всё верно
---
т.е.
у номенклатуры в ТЧ 2 строки
1. оптовый наценка = 5
2. розничный наценка = 10
так получается?
---
да
---
поможете?
---
немного неправильно сделана структура хранения данных
по хорошему нужно переделать
создать рег сведений с измерениями номенклатура, ТипСклада
и реквизитом цена, если цены нужно хранить по периодам то рег сведений должен быть периодическим
из справочника перенести данный в рег сведений обработкой
 удалить ТЧ

на форме уже обращаемся к регистру и получаем наценку,