Бухгалтерия / Говнокод #9670 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Для Каждого Строка Из тчПутевыеЛисты Цикл
		Если Строка.ПринятКУчету = Истина Тогда
			ПутЛист = Строка.ПутевойЛист.ПолучитьОбъект();
			ПутЛист.ПринятКУчету = Истина;
			ПутЛист.ДатаПринятияКУчету = Дата;
			ПутЛист.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		КонецЕсли;
	КонецЦикла;
	Форма = ЭтотОбъект.ПолучитьФорму("ФормаДокумента");
	Форма.ЭлементыФормы.тчПутевыеЛисты.Доступность = Ложь;
	Форма.ЭлементыФормы.тчРаспределениеЗатрат.Доступность = Ложь;
	Форма.ЭлементыФормы.КоманднаяПанель2.Кнопки.СформироватьДокумент.Доступность = Ложь;
	Форма.ЭлементыФормы.КоманднаяПанель2.Кнопки.Заполнить.Доступность = Ложь;
	Форма.ЭлементыФормы.КоманднаяПанель1.Кнопки.ЗаполнитьПоДаннымПоставщика.Доступность = Ложь;
	Форма.ЭлементыФормы.КоманднаяПанель1.Кнопки.Заполнить.Доступность = Ложь;
КонецПроцедуры

ШЕДЕВР!
Конечно, база данных ведь запоминает, что мы элементы формы сделали недоступными...

Запостил: mrbus mrbus, (Updated )

Комментарии (6) RSS

  • просто база после проведения изменяет интерфейс (если проведение выполнялось в диалоге а не программно).
    иногда это все-таки имеет смысл.
    Ответить
    • Это не делается в обработке проведения. Для этого есть событие формы "ПослеЗаписи"
      Ответить
      • кому надо после записи изменить интерфейс - тот меняет после записи.
        кому надо в рамках одного сеанса после проведения в диалоге изменить интерфейс - тот меняет при проведении.
        я так понимаю ты претендуешь на то, что тебе виднее - кому что надо?..
        Ответить
        • Кому что надо - не претендую, а как что делается - претендую. Проведение тоже вызывает событие ПослеЗаписи на форме, т. к. проведение документа выполняется в одной транзакции с записью. К тому же хотелось бы обратить внимание на код
          Форма = ЭтотОбъект.ПолучитьФорму("ФормаДокумента ");
          который СОЗДАЕТ НОВУЮ ФОРМУ. А на экране форма так и не показывается (нет вызова Форма.Открыть()). То бишь мы создаем новую форму (хм... с чего бы - не факт, что юзер хотел её увидеть... а вдруг мы проводим документы через ежемесячное групповое проведение документов), делаем в ней какие-то настройки, но форма на экране так и не покажется и она теряется.
          И третий момент. Проведение документа вполне могло выполняться на сервере (например, через регламентированное задание). А сервер с формами не работает и попросту выдаст ошибку.
          Я вам говорю, всякие изменения на форме надо делать, если форма вообще существует, то бишь в КОДЕ ФОРМЫ.
          Ответить
  • Перепроведение документа при проведении другого документа да еще и в цикле, + работа с формой из потенциально серверного модуля. Реальный говнокод.
    Ответить
  • ж!G$J!X,W!M,X:Y(Q$W(X"F D!N,J$M.P.N)L(F D!D O,I"H$V"C)ZКFGOZCXQXRVXLJPVWBOWXZTAMZPRQYOSXBRIIPEAQRKVHQQPFFJKXIRISERDIVRHWXSSKAAIPSTCDSKZZNVGAHPHVWLNMBOH
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8