да я и сам .. не сильно "бывалый", но давайте попробуем =)
рассматривать будем "под микроскопом" т.к.
.. мы же боремся за звание дома высокой культуры и быта ! (с)к/Ф Иван Васильевич меняет профессию
итак : в закромах родины была найдена конфигурация :
"Бухгалтерия для Украины", редакция 1.1.
Разработка конфигурации: "ABBYY Ukraine", 2005-2007 (1.1.5.7)
что сразу ... ну просто сходу... бросается в глаза
Форма списка...
Код:
Процедура ДокументСписокПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущиеДанные = Неопределено Тогда
ЭлементыФормы.Движения.Страницы.ДвиженияНУ.Видимость = Истина;
ТабличноеПолеДвиженияБУ.Отбор.Регистратор.Установить(Документы.ОперацияБух.ПустаяСсылка());
ТабличноеПолеДвиженияНУ.Отбор.Регистратор.Установить(Документы.ОперацияБух.ПустаяСсылка());
Иначе
ТабличноеПолеДвиженияБУ.Отбор.Регистратор.Установить(Элемент.ТекущаяСтрока);
ЭлементыФормы.Движения.Страницы.ДвиженияНУ.Видимость = Истина;
ТабличноеПолеДвиженияНУ.Отбор.Регистратор.Установить(Элемент.ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
не понимаю назначения строки
ЭлементыФормы.Движения.Страницы.ДвиженияНУ.Видимос ть = Истина;
Код:
Процедура ДействияФормыПереключитьАктивность(Кнопка)
..........
...........
БухгалтерскийУчет.ПереключитьАктивностьПроводокБУ(Документ);
БухгалтерскийУчет.ПереключитьАктивностьПроводокНУ(Документ);
КонецПроцедуры // ДействияФормыПереключитьАктивность()
ну во-первых ... вызова это процедуры нет в контекстном меню, нет в меню "Дейсвия" (просто вынесена кнопочка на панель, НО есть хот кей .. это плюс ...)
я вообще иногда задумываюсь ... у них в руках достаточно мощный инструмент (я о контекстных меню), но они им как уж немного бездарно пользуются ...
далее ... сужу как разработчик ... (но тут уже притензия как бы и не к производителю конфигурации ... но это повсеместное явление, которое , кстати , активно обсуждается на конференции)
Процедуры
ПереключитьАктивностьПроводокБУ вызываются всего дважды во всей конфигурации, но они вынесены в общие модули... неудобство заключается в том , что просмотреть эту процедуру невозможно через "Перейти к определению"... но , еще раз .. это на совести разработчиков платформы ... (но и разработчик конфигурации должен пораскинуть мозгами, как и где распологать, в достаточно сложной конфигурации, что бы в дальнейшем облегчить навигацию разработчику)
но я собссно не о том ... рассмотрим саму процедуру :
Код:
Процедура ПереключитьАктивностьПроводокБУ(Документ) Экспорт
Если Документ.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
ПроводкиДокумента = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
ПроводкиДокумента.Отбор.Регистратор.Установить(Документ);
ПроводкиДокумента.Прочитать();
КоличествоПроводок = ПроводкиДокумента.Количество();
Если НЕ (КоличествоПроводок = 0) Тогда
// Определяем текущую активность проводок по первой проводке
ТекущаяАктивностьПроводок = ПроводкиДокумента[0].Активность;
// Инвертируем текущую активность проводок
ПроводкиДокумента.УстановитьАктивность(НЕ ТекущаяАктивностьПроводок);
ПроводкиДокумента.Записать();
КонецЕсли;
КонецПроцедуры // ПереключитьАктивностьПроводокБУ()
немного попродираемся к ней ... (мы же должны соблюдать рекомендауии к разработке) :
ПроводкиДокумента.Отбор.Регистратор.Установить(Док умент);
читаем RTFM :
Примечание:
Метод имеет смысл применять, если необходимо установить и значение и использование отбора.
т.е. нам как бы рекомендуют использовать конструкцию вида :
ПроводкиДокумента.Отбор.Регистратор.Значение = Документ;
ну и такое впечатление что эту процедуру писало 2 человека ... т.е.
если мы пишем :
Код:
Если Документ.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
то логичнее было бы потом написать
Код:
Если ПроводкиДокумента.Количество()= 0 Тогда
Возврат;
КонецЕсли;
конструкции НЕ плохо читаются а если после них еще и условие (которое может быть достаточно большим, то порой "КонецЕсли" найти бывает тяжело), при этом избавляемся от переменной которую мы используем один раз ...
Код:
Процедура ДействияФормыСтруктураПодчиненностиДокумента(Кнопка)
Если ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущиеДанные = Неопределено тогда
Возврат
КонецЕсли;
РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента(ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка);
КонецПроцедуры
Зачем там "ЭтаФорма." ? Везде писали без "ЭтаФорма." .. а тут чего то передернуло ...
Социальные закладки