Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Установить цену произвольная при изменении цены.

Установить цену произвольная при изменении цены.
Я
   seregapplk
 
11.08.21 - 12:09
Думаю интересно не только одному мне. Необходимо сделать чтобы при редактировании цены в реализации товаров типы цен устанавливались значение произвольная.
Как это сделать в конфигураторе?
   polosov
 
1 - 11.08.21 - 12:19
(0) Это сложно. Надо программиста звать.
   mistеr
 
2 - 11.08.21 - 12:27
(0) Событие ПриИзменении поля с ценой.
   Галахад
 
3 - 11.08.21 - 12:28
Ну, там наверное и поле "цена" недоступно пока тип не тот.
   seregapplk
 
4 - 11.08.21 - 12:38
Событие ПриИзменении поля с ценой.
пробовал
Элементы.ТоварыВидЦены = "<произвольная>";
 или 
Элементы.ТоварыВидЦены = "";
   acanta
 
5 - 11.08.21 - 12:42
Кстати да. Обработка выбора строки, если текущая колонка = цена, то вид цены = произвольная и привыборевидацены вероятно..
   acanta
 
6 - 11.08.21 - 12:46
Но чаще всего скидка = ценапотипу()*количество-ценапофакту*количество. Чтобы в отчете потом собрать можно было итого по пользователям.
   seregapplk
 
7 - 11.08.21 - 12:50
запрет на редактирование в процедуре,
так что скорее через скидку
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    Если Поле = Элементы.ТоварыПроцентАвтоматическойСкидки
        Или Поле = Элементы.ТоварыСуммаАвтоматическойСкидки Тогда
        
        СтандартнаяОбработка = Ложь;
        ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
        
        Если Не Объект.РеализацияПоЗаказам ИЛИ РеализацияСверхЗаказа И ТекущиеДанные.КодСтроки = 0 Тогда
            
            Если Не Объект.СкидкиРассчитаны Тогда
                Результат = Вопрос(НСтр("ru='Скидки (наценки) не рассчитаны, рассчитать?';uk='Знижки (націнки) не розраховані, розрахувати?'"), РежимДиалогаВопрос.ДаНет);
                Если Результат = КодВозвратаДиалога.Нет Тогда
                    Возврат;
                Иначе
                    
                    СтруктураПараметры = Новый Структура;
                    СтруктураПараметры.Вставить("ПрименятьКОбъекту",                Истина);
                    СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет",      Ложь);
                    СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
                    СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
                    СтруктураПараметры.Вставить("РеализацияСверхЗаказа", РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам);
                    
                    СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
                    Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
                        ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
                    КонецЕсли;
                    
                КонецЕсли;
            КонецЕсли;
            
            Если НЕ ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
                РассчитатьСкидкиБезПримененияКОбъекту();
            КонецЕсли;
            
            ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
            СкидкиНаценкиКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
            
        КонецЕсли;
                
    ИначеЕсли Поле = Элементы.ТоварыЗаказКлиента Тогда
        
        Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ЗаказКлиента) Тогда
            ОткрытьЗначение(Элементы.Товары.ТекущиеДанные.ЗаказКлиента);
        ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
            ОткрытьЗначение(Объект.ЗаказКлиента);
        КонецЕсли;
        
    ИначеЕсли Поле = Элементы.ТоварыЦена Тогда
        
        ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
        Если ПравоНаЧтениеВидаЦены Тогда
            Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
                ОчиститьСообщения();
                ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                    НСтр("ru='Для редактирования цены выберите вид цены ""<произвольная>""';uk='Для редагування ціни виберіть вид ціни ""<довільна>""'"),
                    Объект.Ссылка,
                    ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
            КонецЕсли;
        КонецЕсли;
        
    ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
        
        ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
        Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) И ТекущаяСтрока.КодСтроки = 0 Тогда
            
            ПараметрОповещения = Новый Структура;
            ПараметрОповещения.Вставить("НоменклатураНабора",   ТекущаяСтрока.НоменклатураНабора);
            ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
            ПараметрОповещения.Вставить("ФормаВладелец",        УникальныйИдентификатор);
            ПараметрОповещения.Вставить("СверхЗаказа",          Истина);
            
            Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
            
        КонецЕсли;
        
    ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
        
        ОткрытьЗначение(Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
        
    КонецЕсли;
    
КонецПроцедуры
   seregapplk
 
8 - 11.08.21 - 12:54
как взять "ценапофакту" если он не дает менять значение?
   Мультук
 
9 - 11.08.21 - 13:17
(4) Метод псевдослучайного программирования ?

P.S.

Элементы.Товары.ТекущиеДанные.ВидЦены = Неопределено;
   seregapplk
 
10 - 11.08.21 - 13:45
не получается, все равно цену менять не дает
   Мультук
 
11 - 11.08.21 - 14:13
(0) Ищем в модуле формы строку "Для редактирования цены выберите"

Читаем. Думаем. Комментируем ненужное. 

Вписываем нужное:
Элементы.Товары.ТекущиеДанные.ВидЦены = Неопределено;

Проверяем. Почти работает. Но нужно кликать дважды.
Поиск условного оформления, чтобы не кликать дважды - самостоятельно.
   seregapplk
 
12 - 11.08.21 - 14:49
мозг дымится
ну ткните носом пожалуйста
   seregapplk
 
13 - 11.08.21 - 14:49
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
        Если ПравоНаЧтениеВидаЦены Тогда
            Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
                ОчиститьСообщения();
                ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                    НСтр("ru='Для редактирования цены выберите вид цены ""<произвольная>""';uk='Для редагування ціни виберіть вид ціни ""<довільна>""'"),
                    Объект.Ссылка,
                    ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
            КонецЕсли;
        КонецЕсли;
           
    ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
        
        ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);                                            
        Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) И ТекущаяСтрока.КодСтроки = 0 Тогда
            
            ПараметрОповещения = Новый Структура;
            ПараметрОповещения.Вставить("НоменклатураНабора",   ТекущаяСтрока.НоменклатураНабора);
            ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
            ПараметрОповещения.Вставить("ФормаВладелец",        УникальныйИдентификатор);
            ПараметрОповещения.Вставить("СверхЗаказа",          Истина);
            
            Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
            
        КонецЕсли;
        
    ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
        
        ОткрытьЗначение(Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
        
    КонецЕсли;
   seregapplk
 
14 - 11.08.21 - 15:23
все работает, 
теперь как в подборе так сделать
   seregapplk
 
15 - 12.08.21 - 14:50
сделел

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.