Имя: Пароль:
1C
1С v8
Установить цену произвольная при изменении цены.
0 seregapplk
 
11.08.21
12:09
Думаю интересно не только одному мне. Необходимо сделать чтобы при редактировании цены в реализации товаров типы цен устанавливались значение произвольная.
Как это сделать в конфигураторе?
1 polosov
 
11.08.21
12:19
(0) Это сложно. Надо программиста звать.
2 mistеr
 
11.08.21
12:27
(0) Событие ПриИзменении поля с ценой.
3 Галахад
 
гуру
11.08.21
12:28
Ну, там наверное и поле "цена" недоступно пока тип не тот.
4 seregapplk
 
11.08.21
12:38
Событие ПриИзменении поля с ценой.
пробовал

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

P.S.

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

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

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

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