Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: як користуватися функцією Ценообразование.ПолучитьЦенуКонтрагента() ?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
berest.andriy@gmail.com
привіт. підкажіть б-ласка як користуватися функцією ценообразование.ПолучитьЦенуКонтрагента?
перепробував все що можна а мені видає 0.
може у когось є приклад використання даної функції та опис як вона працює. мені потрібно отримати ціну контрагента з врахуванням знижок встановлених в документа "Установка скидок номенклатури"
дякую

необходимо зарегистрироваться для просмотра ссылки
qqq=ценообразование.ПолучитьЦенуКонтрагента(полеввода1,,справочники.Контрагенты.НайтиПоКоду("УТП000438"),Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("утп000004"),,,справочники.Валюты.НайтиПоКоду("980"),,,,);


вже пробував вказувати договір, але все одно на виході 0


1С:Підприємство 8.3 (8.3.15.1869)
"Управление торговым предприятием для Украины", редакция 1.2. (1.2.58.1) (http://1c.ua/v8/RegionalSolutions_UA_UTP.php)
Copyright © Molenari OU, 2017-2020. All rights reserved
mvo2008
berest.andriy@gmail.com @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,

F12 і читаєте опис функції......
denis84
berest.andriy@gmail.com @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,
// Функция возвращает цену контрагента для требуемой номенклатуры в указанном типе цен , 
// на заданную дату, за заданную единицу измерения, пересчитанную в требуемую валюту по заданному курсу.
//
// Параметры:
//  Номенклатура               - ссылка на элемент справочника "Номенклатура", для которого надо получить цену,
//  ХарактеристикаНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры",
//  Контрагент                 - ссылка на элемент справочника "Контрагенты", для которого надо получить цену,
//  ТипЦен                     - ссылка на элемент справочника "Типы цен", опредедяет цену какого типа надо получить,
//  Дата                       - дата, на которую надо получить цену, если не заполнено, то берется рабочая дата
//  ЕдиницаИзмерения           - ссылка на элемент справочника "Единицы измерения", определяет для какой единицы надо получить
//                               цену, если не заполнен, то заполняется единицей цены
//  Валюта                     - ссылка на элемент справочника "Валюты", определяет валюту. в которой надо вернуть цену,
//                               если не заполнен, то заполняется валютой цены
//  Курс                       - число, курс требуемой валюты, если не заполнен, берется курс из регистра
//                               сведений "Курсы валют".
//  Кратность                  - число, кратность требуемой валюты, если не заполнена, берется курс из регистра
//                               сведений "Курсы валют".
//
// Возвращаемое значение:
//  Число, рассчитанное значение цены.
//
Функция ПолучитьЦенуКонтрагента(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Контрагент,
                                ТипЦен, Дата = Неопределено, ЕдиницаИзмерения = Неопределено,
                                Валюта = Неопределено, Курс = 0, Кратность = 1,
                                ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено) Экспорт

    ХарактеристикиНоменклатуры = ПолучитьМассивХарактеристик(ХарактеристикаНоменклатуры);

    Дата = ПолучитьАктуальнуюДатуРасчетаЦен(Дата);

    ПолученнаяЦена = 0;

    Если ДоговорКонтрагента <> Неопределено Тогда
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("Дата", Дата);
        Запрос.УстановитьПараметр("Договор", ДоговорКонтрагента);
        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", ХарактеристикиНоменклатуры);

        ТекстЗапроса = "
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    УсловияПоставок.Цена                  КАК Цена,
        |    ВЫБОР    КОГДА сНоменклатура.Услуга И УсловияПоставок.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
        |            ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
        |            ИНАЧЕ УсловияПоставок.ЕдиницаИзмерения
        |    КОНЕЦ                                 КАК ЕдиницаИзмерения,
        |    УсловияПоставок.ВалютаЦены            КАК ВалютаЦены
        |ИЗ
        |    РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.СрезПоследних(&Дата,
        |       ДоговорКонтрагента = &Договор И Номенклатура = &Номенклатура
        |       И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)) КАК УсловияПоставок
        |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        |    Справочник.Номенклатура КАК сНоменклатура
        |ПО
        |    сНоменклатура.Ссылка = УсловияПоставок.Номенклатура
        |ГДЕ
        |    УсловияПоставок.Цена <> 0 И сНоменклатура.Ссылка = &Номенклатура
        |УПОРЯДОЧИТЬ ПО
        |    УсловияПоставок.ХарактеристикаНоменклатуры УБЫВ
        |";

        Запрос.Текст = ТекстЗапроса;

        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);
            ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, Выборка.ВалютаЦены, Валюта, Курс, Кратность, Дата);
        КонецЕсли;
    КонецЕсли;

    Если ПолученнаяЦена = 0 Тогда // особых условий нет
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("Дата", Дата);
        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", ХарактеристикиНоменклатуры);
        Запрос.УстановитьПараметр("ТипЦен", ТипЦен);

        Запрос.Текст = "
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    ЦеныНоменклатурыКонтрагентов.Цена           КАК Цена,
        |    ВЫБОР    КОГДА сНоменклатура.Услуга И ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
        |            ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
        |            ИНАЧЕ ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения
        |    КОНЕЦ                                       КАК ЕдиницаИзмерения,
        |    ЦеныНоменклатурыКонтрагентов.Валюта         КАК Валюта
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, Номенклатура = &Номенклатура И ТипЦен = &ТипЦен
        |       И ХарактеристикаНоменклатуры В(&ХарактеристикиНоменклатуры)) КАК ЦеныНоменклатурыКонтрагентов
        |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        |    Справочник.Номенклатура КАК сНоменклатура
        |ПО
        |    сНоменклатура.Ссылка = ЦеныНоменклатурыКонтрагентов.Номенклатура
        |ГДЕ
        |    сНоменклатура.Ссылка = &Номенклатура
        |УПОРЯДОЧИТЬ ПО
        |    ХарактеристикаНоменклатуры УБЫВ
        |";

        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);
            ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, Выборка.Валюта, Валюта, Курс, Кратность, КонецДня(Дата));
        КонецЕсли;
    КонецЕсли;

    ИзменитьЦенуПоУсловиюПродаж(Дата, Номенклатура, УсловиеПродаж, ПолученнаяЦена);

    Возврат ПолученнаяЦена;

КонецФункции // ПолучитьЦенуКонтрагента()


Цена = Ценообразование.ПолучитьЦенуКонтрагента(Номенклатура, Характеристика, Контрагент, ТипЦен, Дата, ЕдиницаХранения, Валюта);
Moloko
berest.andriy@gmail.com @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,
Дуже цікаве запитання. Скільки років вже працюю з УТП, але ніколи не бачив, щоби хтось використовував регістр відомостей
"Умови поставок за договорами контрагентів по номенклатурі", та документ "Умови поставок за договорами контрагентів",
який є реєстратором для нього. Саме завдяки ним буде працювати/не працювати ваша функція
Gazulo
berest.andriy@gmail.com @ Сегодня, 11:23 необходимо зарегистрироваться для просмотра ссылки ,
Добрий день, яке значення в "полеввода1"?
Vofka
berest.andriy@gmail.com, 99%, что полеввода1 это не то, что туда надо передавать. Скорее всего надо передавать реквизит, к которому привязано это ваше поле ввода.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.