Изящно сделать

  1. 2 г. назад
    Функция ДоступностьДокументаЭкземплярБюджета(Объект) Экспорт
    	
    	Доступность = Ложь;
    	Если УправлениеДоступом.ЕстьРоль("ИзменениеЭкземпляровБюджетовВЛюбомСтатусе") Тогда
    		Доступность = Истина;	
    	Иначе
    		
    		// ПредыдущийСтатус = Неопределено если объект новый.
    		ПредыдущийСтатус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Статус");
    		Если Объект.Статус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    			
    			Если ПредыдущийСтатус = Неопределено
    				Или Объект.Статус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    				
    				Доступность = Истина;
    				
    			КонецЕсли;
    			
    		ИначеЕсли Объект.Статус = Перечисления.СтатусыПланов.НаУтверждении Тогда
    			
    				Если ПредыдущийСтатус = Неопределено 
    					Или ПредыдущийСтатус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    			
    					Доступность = Истина;
    			
    				КонецЕсли;
    			
    		КонецЕсли;
    		
    	КонецЕсли;
    	
    	Возврат Доступность;
    
    КонецФункции

    Игорян, как этот код сделать изящным? Вообщем типовая задача переставления статусов в определенной последовательности. Не могу найти оптимальное универсальное решение, все как то криво получается.

    Ответы: (6) (7)
  2. камень ножницы бумага и вся изящность
    школа 10 класс первая четверть программирования

    Ответы: (2)
  3. Aistovich камень ножницы бумага и вся изящность
    школа 10 класс первая четверть программирования

    Да ты пидор [...].

    Ответы: (3)
  4. (2) убесй аб стену хууууййййло

  5. аааа убогий тут даже без туалетной бумаги
    баран лапотный

  6. мало тебя училка [...] указкой, сидел там соплю на последней парте ковырял, ничтожество

  7. (0) Начни с этого:

    Перем ДаТыПидорПиздобол, УбесйАбСтенуХууууййййло, УбогийБаранЛапотный, ПиздилаУказкой
    
  8. Hans

    Функция ДоступностьДокументаЭкземплярБюджета(Объект) Экспорт
    	
    	Доступность = Ложь;
    	Если УправлениеДоступом.ЕстьРоль("ИзменениеЭкземпляровБюджетовВЛюбомСтатусе") Тогда
    		Доступность = Истина;	
    	Иначе
    		
    		// ПредыдущийСтатус = Неопределено если объект новый.
    		ПредыдущийСтатус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Статус");
    		Если Объект.Статус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    			
    			Если ПредыдущийСтатус = Неопределено
    				Или Объект.Статус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    				
    				Доступность = Истина;
    				
    			КонецЕсли;
    			
    		ИначеЕсли Объект.Статус = Перечисления.СтатусыПланов.НаУтверждении Тогда
    			
    				Если ПредыдущийСтатус = Неопределено 
    					Или ПредыдущийСтатус = Перечисления.СтатусыПланов.ВПодготовке Тогда
    			
    					Доступность = Истина;
    			
    				КонецЕсли;
    			
    		КонецЕсли;
    		
    	КонецЕсли;
    	
    	Возврат Доступность;
    
    КонецФункции

    Игорян, как этот код сделать изящным? Вообщем типовая задача переставления статусов в определенной последовательности. Не могу найти оптимальное универсальное решение, все как то криво получается.

    що такое "переставление статусов"сортировка статусов?

  9. Ну у тебя есть статусы - 1,2,3,4.
    Пользователь может выставлять статус 2 при новом документе, или статус 3 после статуса 2, статус 4 после статуса 3.

    Ответы: (9) (23)
  10. Hans Ну у тебя есть статусы - 1,2,3,4.
    Пользователь может выставлять статус 2 при новом документе, или статус 3 после статуса 2, статус 4 после статуса 3.

    ну в регистр размести и щелкай

    Ответы: (11)
  11. 23.11.2021 10:17:45 отредактировано NewTesla

    самое простое решение че ты там [...] пишешь

    людей раздражаешь!

    так те [...] дадут, вместо 40 тыс (шутка)

  12. NewTesla ну в регистр размести и щелкай

    Напиши код.

    Ответы: (12)
  13. Hans Напиши код.

    всм?

    есть регистр сведений, получаешь статус из него при проведении документа, или когда

    когда документ удаляется запись удаляешь со статусом

    чтобы при заведении нового переключился

  14. а еще моно прописать реквизи в документе и смотреть предыдущий статус в запросе

    т.е делаем запрос по документам данного пользователя, смотрим какой статус предыдущий и пибавляем

  15. 23.11.2021 10:36:48 отредактировано NewTesla

    Выбрать

    документ.статус

    из документы как документ

    где

    докумет. пользователь = &нашпользователь
    и документ.проведен

  16. ы куда пропал, скатиняка)

  17. Полный код дай аналогичный моему. Что ты кусками делаешь.

    Ответы: (17)
  18. Hans Полный код дай аналогичный моему. Что ты кусками делаешь.

    ну ты петя [...] конечно

  19. нет [...] мне нужны твои кусочки. Чтоб с них что то складывать.

    Ответы: (19)
  20. Hans ПредыдущийСтатус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Статус");

    ПредыдущийСтатус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Статус");

    вот здесь сделай обращение к функции

    ПредыдущийСтатус = ОбщегоНазначения.ВернутьСтатусПредыдущегодокумента(ПараметрыСеанса.ТекущийПользователь)

    //////////////

    Функция ВернутьСтатусПредыдущегодокумента(параметрАвтор)
    Выбрать

    документ.статус

    из документы как документ

    где

    докумет. Автор = &параметрАвтор
    и документ.проведен

  21. и дальше напиши код по смыслу

    Ответы: (21)
  22. NewTesla и дальше напиши код по смыслу

    откуда ты это все копируешь? При чем здесь автор?

    Ответы: (22)
  23. Hans откуда ты это все копируешь? При чем здесь автор?

    ну я хз какая постановка задачи

    если статус нужно присваивать у юзера, то пользуйся автором,

    если просто у рядя документов, то другой запрос

    суть в том - вто получаешь ЗАПРОСОМ! предыдущий статус, в транзакции, и записываешь

  24. Hans Ну у тебя есть статусы - 1,2,3,4.
    Пользователь может выставлять статус 2 при новом документе, или статус 3 после статуса 2, статус 4 после статуса 3.

    шо ето за поебошь вообще?

    а где статус 1?

  25. 23.11.2021 15:12:35 отредактировано NewTesla

    крч Ганс [...] занимается на работе, сам не знаит о ему надо

    ща обнаружитса, шо его вообще печатную форму попросили сделать)

  26. Я тебя просил Изящное решение. Как сенсей делает.

  27. Сенсея зови билат.

или зарегистрируйтесь чтобы ответить!