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