|
v7: Установки периодического реквизита проведением документа | ☑ | ||
---|---|---|---|---|
0
yur4egg
16.07.12
✎
14:42
|
В модуле проведения документа использую:
УстановитьРеквизитСправочника(СпрЦенКон,"Цена",Цена,ДатаИзм); где ДатаИзм - не обязательно дата документа, а может быть другая. Документ не оперативный (только такие могут работать с произвольной датой). В итоге цена записывается в справочник, но после просмотра истории изменения, наблюдается дата самого документа, а не та, что указывалась при проведении как ДатаИзм. Как это можно исправить? |
|||
1
Lea_Lear
16.07.12
✎
14:50
|
//-----------------------------------------------
Процедура ОбработкаПроведения(ВходЗнач) глДокументПриПроведении(Контекст,0); СпрКатегорииЦен=СоздатьОбъект("Справочник.Категориицен"); СпрКатегорииЦен.ИспользоватьДату(ДатаЦен); СпрЦены=СоздатьОбъект("Справочник.Цены"); Контр=СоздатьОбъект("Справочник.Контрагенты"); Если ПустоеЗначение(Контрагент.КатегорияЦены)=1 Тогда Если СпрКатегорииЦен.НайтиПонаименованию(СокрЛП(Контрагент.Наименование),1,1)=0 Тогда СпрКатегорииЦен.Новый(); СпрКатегорииЦен.Наименование=Контрагент.Наименование; СпрКатегорииЦен.ТипЦен=ТипЦен; СпрКатегорииЦен.ВключенНДС=ВключенНДС; СпрКатегорииЦен.ВключенНП=ВключенНП; СпрКатегорииЦен.ВидОплаты=ВидОплаты; СпрКатегорииЦен.Валюта=Валюта; СпрКатегорииЦен.Основная=0; СпрКатегорииЦен.Доставка=ЦенаДоставки; СпрКатегорииЦен.Наценка=ЦенаНаценки; //***ШО 2010-03-15 СпрКатегорииЦен.Записать(); Контр.НайтиЭлемент(Контрагент); Контр.КатегорияЦены= СпрКатегорииЦен.ТекущийЭлемент(); Контр.Записать(); Иначе Контр.КатегорияЦены= СпрКатегорииЦен.ТекущийЭлемент(); Контр.Записать(); КонецЕсли; Иначе СпрКатегорииЦен.НайтиЭлемент(Контрагент.КатегорияЦены); КонецЕсли; Если СпрКатегорииЦен.Доставка<>ЦенаДоставки Тогда УстановитьРеквизитСправочника(СпрКатегорииЦен.ТекущийЭлемент(),"Доставка",ЦенаДоставки,ДатаЦен); КонецЕсли; //***ШО 2010-03-15 Если СпрКатегорииЦен.Наценка<>ЦенаНаценки Тогда УстановитьРеквизитСправочника(СпрКатегорииЦен.ТекущийЭлемент(),"Наценка",ЦенаНаценки,ДатаЦен); КонецЕсли; //***шо ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл СпрЦены.ИспользоватьВладельца(Номенклатура); //выбрать по реквизитам: КатегорияЦены = СпрКатегорииЦен.ТекущийЭлемент(), // Подразделение = Подразделение, // Договор = Договор ЦенаПоРеквизитам = Пусто; Если СпрЦены.ВыбратьЭлементыПоРеквизиту("КатегорияЦены",СпрКатегорииЦен.ТекущийЭлемент(),,0)>0 Тогда Пока СпрЦены.ПолучитьЭлемент()<>0 Цикл Если (СпрЦены.ПометкаУдаления()=0) И //Совпало по Подразделению (?(ПустоеЗначение(Подразделение)=0,?(СпрЦены.Подразделение=Подразделение,1,0),ПустоеЗначение(СпрЦены.Подразделение)) = 1 ) И //Совпало по Договору (?(ПустоеЗначение(Договор)=0,?(СпрЦены.Договор=Договор,1,0),ПустоеЗначение(СпрЦены.Договор)) = 1 ) Тогда ЦенаПоРеквизитам = СпрЦены.ТекущийЭлемент(); //Сообщить("Нашли цену!"); Прервать; //УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"Цена",Цена,ДатаЦен); //УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"ЦенаПК",ЦенаПК,ДатаЦен); КонецЕсли; КонецЦикла; КонецЕсли; Если ПустоеЗначение(ЦенаПоРеквизитам)=1 Тогда //Сообщить("Создаем новую цену!"); СпрЦены.Новый(); СпрЦены.КатегорияЦены = СпрКатегорииЦен.ТекущийЭлемент(); СпрЦены.Подразделение = Подразделение; СпрЦены.Договор = Договор; //СпрЦены.МассаЛитр = МассаЛитр; //***ШО 2008-11-29 СпрЦены.Записать(); //УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"Цена",Цена,ДатаЦен); //УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"ЦенаПК",ЦенаПК,ДатаЦен); КонецЕсли; //Сообщить("установили новое значение для цены: "+СпрЦены.ТекущийЭлемент()); //Сообщить("Владелец = <"+СпрЦены.Владелец+">, КатегорияЦены = <"+СпрЦены.КатегорияЦены+">, Подразделение = <"+СпрЦены.Подразделение+">, Договор = <"+СпрЦены.Договор+">"); УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"Цена",Цена,ДатаЦен); УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"ЦенаПК",ЦенаПК,ДатаЦен); //***ШО 2010-03-22 //Если ЦенаН<>0 Тогда УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"ЦенаН",ЦенаН,ДатаЦен); //КонецЕсли; //***шо 2010-03-22 УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"МассаЛитр",МассаЛитр,ДатаЦен); //***ШО 2008-11-29 УстановитьРеквизитСправочника(СпрЦены.ТекущийЭлемент(),"МассаЛитр1",МассаЛитр1,ДатаЦен); //***ШО 2009-01-21 Признак вторых цен ЦенПК //СпрЦены.МассаЛитр = МассаЛитр; //***ШО 2008-11-29 СпрЦены.Записать(); //***ШО 2008-11-29 КонецЦикла; КонецПроцедуры //----------------------------------------------- Процедура ОбработкаУдаленияПроведения() //Если СОКРЛП(ВРЕГ(Строка(глПользователь))) = "АДМИНИСТРАТОР" Тогда //***ШО 2010-08-26 Если (СОКРЛП(ВРЕГ(Строка(глПользователь))) = "АДМИНИСТРАТОР") или (СОКРЛП(ВРЕГ(Строка(глПользователь))) = "ГУБАНОВА") или (СОКРЛП(ВРЕГ(Строка(глПользователь))) = "КЛИМЕНКОВА") Тогда Иначе Предупреждение("Только АДМИНИСТРАТОР может удалять или делать не проведенными эти документы!"); СтатусВозврата(0); КонецЕсли; КонецПроцедуры |
|||
2
Lea_Lear
16.07.12
✎
14:51
|
Все работает. хз почему у Вас не работает.
|
|||
3
Mikeware
16.07.12
✎
14:57
|
(1) за (СОКРЛП(ВРЕГ(Строка(глПользователь))) = "ГУБАНОВА") и т.п. надо бить ногами по хлебалу...
|
|||
4
andrewks
16.07.12
✎
14:58
|
(3) а чё, нормальный такой быдлокодинг :)
|
|||
5
andrewks
16.07.12
✎
14:59
|
(0) давай скрин истории
|
|||
6
Lea_Lear
16.07.12
✎
15:19
|
(3) Лучше потвоему три константы наваять , умник.
|
|||
7
Mikeware
16.07.12
✎
15:28
|
(6) я что, завсом, что ли, константы на кажжый пук вводить...
|
|||
8
Ёпрст
16.07.12
✎
15:30
|
(6) для этого есть права и НазваниеНабораПрав
|
|||
9
Lea_Lear
16.07.12
✎
15:30
|
ну тогда гони решение , а не умничай - сам знаю что некрасиво написано.
|
|||
10
Lea_Lear
16.07.12
✎
15:31
|
А если влом из-за одного документа мутить новые права?
|
|||
11
Lea_Lear
16.07.12
✎
15:32
|
уволились люди - сел и переписал документ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |