привіт. підкажіть б-ласка як користуватися функцією ценообразование.ПолучитьЦенуКонтрагента?
перепробував все що можна а мені видає 0.
може у когось є приклад використання даної функції та опис як вона працює. мені потрібно отримати ціну контрагента з врахуванням знижок встановлених в документа "Установка скидок номенклатури"
дякую
Код
вже пробував вказувати договір, але все одно на виході 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
berest.andriy@gmail.com @ Сегодня, 10:23
,
F12 і читаєте опис функції......
berest.andriy@gmail.com @ Сегодня, 10:23
,
// Функция возвращает цену контрагента для требуемой номенклатуры в указанном типе цен ,
// на заданную дату, за заданную единицу измерения, пересчитанную в требуемую валюту по заданному курсу.
//
// Параметры:
// Номенклатура - ссылка на элемент справочника "Номенклатура", для которого надо получить цену,
// ХарактеристикаНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры",
// Контрагент - ссылка на элемент справочника "Контрагенты", для которого надо получить цену,
// ТипЦен - ссылка на элемент справочника "Типы цен", опредедяет цену какого типа надо получить,
// Дата - дата, на которую надо получить цену, если не заполнено, то берется рабочая дата
// ЕдиницаИзмерения - ссылка на элемент справочника "Единицы измерения", определяет для какой единицы надо получить
// цену, если не заполнен, то заполняется единицей цены
// Валюта - ссылка на элемент справочника "Валюты", определяет валюту. в которой надо вернуть цену,
// если не заполнен, то заполняется валютой цены
// Курс - число, курс требуемой валюты, если не заполнен, берется курс из регистра
// сведений "Курсы валют".
// Кратность - число, кратность требуемой валюты, если не заполнена, берется курс из регистра
// сведений "Курсы валют".
//
// Возвращаемое значение:
// Число, рассчитанное значение цены.
//
Функция ПолучитьЦенуКонтрагента(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Контрагент,
ТипЦен, Дата = Неопределено, ЕдиницаИзмерения = Неопределено,
Валюта = Неопределено, Курс = 0, Кратность = 1,
ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено) Экспорт
ХарактеристикиНоменклатуры = ПолучитьМассивХарактеристик(ХарактеристикаНоменклатуры);
Дата = ПолучитьАктуальнуюДатуРасчетаЦен(Дата);
ПолученнаяЦена = 0;
Если ДоговорКонтрагента <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Договор", ДоговорКонтрагента);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", ХарактеристикиНоменклатуры);
ТекстЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| УсловияПоставок.Цена КАК Цена,
| ВЫБОР КОГДА сНоменклатура.Услуга И УсловияПоставок.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
| ИНАЧЕ УсловияПоставок.ЕдиницаИзмерения
| КОНЕЦ КАК ЕдиницаИзмерения,
| УсловияПоставок.ВалютаЦены КАК ВалютаЦены
|ИЗ
| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.СрезПоследних(&Дата,
| ДоговорКонтрагента = &Договор И Номенклатура = &Номенклатура
| И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)) КАК УсловияПоставок
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Номенклатура КАК сНоменклатура
|ПО
| сНоменклатура.Ссылка = УсловияПоставок.Номенклатура
|ГДЕ
| УсловияПоставок.Цена <> 0 И сНоменклатура.Ссылка = &Номенклатура
|УПОРЯДОЧИТЬ ПО
| УсловияПоставок.ХарактеристикаНоменклатуры УБЫВ
|";
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);
ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, Выборка.ВалютаЦены, Валюта, Курс, Кратность, Дата);
КонецЕсли;
КонецЕсли;
Если ПолученнаяЦена = 0 Тогда // особых условий нет
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", ХарактеристикиНоменклатуры);
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| ЦеныНоменклатурыКонтрагентов.Цена КАК Цена,
| ВЫБОР КОГДА сНоменклатура.Услуга И ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
| ИНАЧЕ ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения
| КОНЕЦ КАК ЕдиницаИзмерения,
| ЦеныНоменклатурыКонтрагентов.Валюта КАК Валюта
|ИЗ
| РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, Номенклатура = &Номенклатура И ТипЦен = &ТипЦен
| И ХарактеристикаНоменклатуры В(&ХарактеристикиНоменклатуры)) КАК ЦеныНоменклатурыКонтрагентов
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Номенклатура КАК сНоменклатура
|ПО
| сНоменклатура.Ссылка = ЦеныНоменклатурыКонтрагентов.Номенклатура
|ГДЕ
| сНоменклатура.Ссылка = &Номенклатура
|УПОРЯДОЧИТЬ ПО
| ХарактеристикаНоменклатуры УБЫВ
|";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);
ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, Выборка.Валюта, Валюта, Курс, Кратность, КонецДня(Дата));
КонецЕсли;
КонецЕсли;
ИзменитьЦенуПоУсловиюПродаж(Дата, Номенклатура, УсловиеПродаж, ПолученнаяЦена);
Возврат ПолученнаяЦена;
КонецФункции // ПолучитьЦенуКонтрагента()
Цена = Ценообразование.ПолучитьЦенуКонтрагента(Номенклатура, Характеристика, Контрагент, ТипЦен, Дата, ЕдиницаХранения, Валюта);
berest.andriy@gmail.com @ Сегодня, 10:23
,
Дуже цікаве запитання. Скільки років вже працюю з УТП, але ніколи не бачив, щоби хтось використовував регістр відомостей
"Умови поставок за договорами контрагентів по номенклатурі", та документ "Умови поставок за договорами контрагентів",
який є реєстратором для нього. Саме завдяки ним буде працювати/не працювати ваша функція
berest.andriy@gmail.com @ Сегодня, 11:23
,
Добрий день, яке значення в "полеввода1"?
berest.andriy@gmail.com, 99%, что полеввода1 это не то, что туда надо передавать. Скорее всего надо передавать реквизит, к которому привязано это ваше поле ввода.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua