Как установить данные в табличную часть?

Как правильно настроить справочник "Акции", чтобы реквизит "название" в табличной части ссылался на справочник "Процедуры"? При этом цена акции должна вводиться вручную, а цена без акции должна автоматически загружаться из справочника "Процедуры". В коде есть функция ПолучитьЦену(Процедуры), которая возвращает цену процедуры, и процедура ТоварыНазваниеПриИзменении(Элемент), которая обновляет цену без акции. Однако возникает ошибка "Поле объекта не обнаружено (Процедуры)". В чем может быть проблема?
  • 1 сентября 2024 г. 19:44
Ответы на вопрос 2
Чтобы правильно настроить табличную часть для работы с вашим справочником "Акции" и установить связь с справочником "Процедуры", вам нужно следовать определенным шагам. Давайте разберем их:

1. **Настройка табличной части**:
   - Создайте табличную часть в вашем справочнике "Акции".
   - В табличной части добавьте колонку, ссылающуюся на справочник "Процедуры". Это может быть реквизит типа "Ссылка на Процедуры" (или аналогичный).
   - Добавьте еще одну колонку для цены акции, которая будет вводиться вручную.

2. **Обработка изменения элементов**:
   - В процедуре `ТоварыНазваниеПриИзменении(Элемент)` вам необходимо обновлять цену без акции. Здесь вы должны вызывать функцию `ПолучитьЦену`, передавая в нее ссылку на соответствующую процедуру.

3. **Проблема "Поле объекта не обнаружено (Процедуры)"**:
   - Ошибка "Поле объекта не обнаружено (Процедуры)" может возникать, если вы обращаетесь к полю или объекту, который не существует или неправильно задан в коде.
   - Убедитесь, что вы правильно обращаетесь к реквизитам. Например, если у вас есть колонка с названием "Процедура", то для обращения к ней вы можете использовать что-то вроде `Элемент.Процедура`.
   - Проверьте, что в вашей табличной части действительно есть поле, которое соответствует вашим ожиданиям. Возможно, стоит использовать отладку, чтобы проверить доступность объектов и их полей.

4. **Пример реализации**:
   Если предположить, что у вас есть табличная часть с колонками "Процедура" и "ЦенаАкции", ваш код может выглядеть так:

   ```1C
   Процедура ТоварыНазваниеПриИзменении(Элемент)
       // Проверяем, заполнена ли процедура
       Если Не ПустаяСтрока(Элемент.Процедура) Тогда
           // Получаем цену процедуры
           ЦенаБезАкции = ПолучитьЦену(Элемент.Процедура);
           Элемент.ЦенаБезАкции = ЦенаБезАкции;
       КонецЕсли;
   КонецПроцедуры
   ```

5. **Проверка вызова функции**:
   В функции `ПолучитьЦену`, убедитесь, что передаете правильный объект:

   ```1C
   Функция ПолучитьЦену(Процедура)
       Если Процедура <> Неопределено Тогда
           // Логика получения цены по процедуре
           Возврат Процедура.Цена;
       Иначе
           Возврат 0; // Или любое другое значение по умолчанию
       КонецЕсли;
   КонецФункции
   ```

Если все сделано правильно и ошибка все еще возникает, проверьте, какие объекты доступны в контексте вызова и возможно используете отладку для более глубокого анализа.
не понимаю в чем ошибка

У вас в табличной части нет поля Процедуры, вместо этого есть поле Название, которое по сути и есть процедуры.
Похожие вопросы