|   |   | 
| 
 | 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 | 
        уволились люди - сел и переписал документ.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |