Преобразование к типу число...

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 20 май 2010.

  1. Гость

    Задание: В документе «Расходная» при заполнении табличной части «Товары» номенклатурными позициями не просто заполнять цену из справочника «Номенклатура», а снижать ее в соответствии со скидками, актуальными на дату документа для данного Контрагента.

    Решаю так:

    Перем К;
    Перем Д;
    .....
    Процедура КонтрагентПриИзменении(Элемент)
    //Установить скидку
    К = РаботаСоСправочниками.С(Дата,Элемент.Значение);
    КонецПроцедуры

    Процедура ТоварыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    Д = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТабличнойЧасти.Номенклатура).
    ЦенаПродажи;
    СтрокаТабличнойЧасти.Цена = Д - (Д * К / 100);
    КонецПроцедуры

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

    Пишется ошибка:
    {Документ.Расходная.Форма.ФормаДокумента(27)}: Преобразование значения к типу Число не может быть выполнено
    СтрокаТабличнойЧасти.Цена = Д - (Д * К / 100);

    Причем если создаю новый документ то он не ругается но и считает... а если в существующем меняю, то ругается...

    подскажите как решить проблему...что я не замечаю...
     
  2. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    1) Ничего странного, вы получаете формулу:

    СтрокаТабличнойЧасти.Цена = "Ссылка" - ("Ссылка" * К / 100);

    Поэтому и получаете ошибку. "Д" - Тип ссылка, сделайте из него число (видимо в ссылке реквизит есть) и все будет хорошо.

    И во-вторых, у вас в табличной части "Номенклатура" - строка? Если нет, то нет необходимости искать по наименованию, обращайтесь напрямую через ".".
     
  3. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Каким образом вы элемент справочника "Д" хотите умножить на число?
    ("Утюг Philips") - ("Утюг Philips")*30/100 = Осколки утюга?
    И не называйте так переменные.

    Darlock опередил))
     
  4. Гость

    На имена не ругайтесь... я их обязательно переименую более понятно...это временные, чтоб проверить работает или нет...

    как сделать из Д Число... ?
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Какое число "Д" вы хотите получить из утюга?
    Зачем вы пишите непонятно, если хотите, чтобы вам ответили?
     
  6. Гость

    Процедура КонтрагентПриИзменении(Элемент)
    //Установить скидку
    Скидка = РаботаСоСправочниками.РасчетСкидки(Дата,Элемент.Значение);

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

    Процедура ТоварыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    ЦенаПродажи = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТабличнойЧасти.Номенклатура).
    ЦенаПродажи;
    СтрокаТабличнойЧасти.Цена = ЦенаПродажи - (ЦенаПродажи * Скидка / 100);

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

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

    Возврат ЗначенияРесурсов.Процент;
    КонецФункции


    так понятнее становится?
     
  7. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Для получения цены продажи, скорее всего, можно использовать функцию общего модуля. Не знаю, какая у вас конфигурация. Цена, скорее всего, хранится в регистре сведений.
    Ой... виноват. Точку не заметил.
    Так понятней)

    Добавлено:
    Бред. СторкаТабличнойЧасти.Номенклатура - это не наименование.

    ЦенаПродажи = СтрокаТабличнойЧасти.Номенклатура.Цена продажи.
    Попробуйте так.
    И пользуйтесь уже отладчиком.
     
Загрузка...
Похожие Темы - Преобразование типу число
  1. WolfEater
    Ответов:
    0
    Просмотров:
    784
  2. jager
    Ответов:
    1
    Просмотров:
    1.297
  3. PahaStar
    Ответов:
    0
    Просмотров:
    985
  4. PahaStar
    Ответов:
    0
    Просмотров:
    845
  5. ask40
    Ответов:
    0
    Просмотров:
    966

Поделиться этой страницей