Главная » 1С Предприятие » УЛУЧШЕНИЕ КАЧЕСТВА ИНТЕРФЕЙСА

0

В формах  1С или  в созданных взамен их своих формах  вы можете  разместить облегчающие  обработку  данных  элементы управления. Что  мы, собственно, и  сделали, например, в форме  списка ЖЗ Зарплата_2. Элементы диалога этой формы позволяют ввести  все записи,  провести  их расчеты  и  выпустить  необходимые  сопровождающие расчеты документы, не покидая формы списка ЖЗ.

Кроме размещения  дополнительных элементов управления, можно  произвести ревизию  существующих и  удалить перегружающие   интерфейс  элементы.  Однако это не всегда просто  сделать.

Возьмем, к примеру, иконку

лагаемых для выбора документов содержит много  лишних позиций (рис. 8.1).

Рис. 8.1. Список, открываемый иконконйа панели инструментов ЖЗ

Мы заменили эту иконку кнопкой Ввод расчета, показывающей для выбора список документов (см. рис. 7.25), вводящих расчеты  в ЖЗ Зарплата_2. Их перечень,  напом ним, мы внесли в перечисление ВР  2 (разд. 7.3.3).

Однако удалить иконку  из панели инструментов можно, только  убрав всю панель  инструментов (Сервис Панели инструментов Дополнительные Инструмен­

тальные панели окон  <Отключены>). Но даже после  этого аналогичный пункт останется в колонке Действия меню системы.

В большей мере  нежелательно присутствие на  панели  инструментов ЖЗ  иконки

, предлагающей удалить документ. Для этого есть по меньшей мере три причины.

Во-первых, пользователь, наблюдая ЖЗ, не видит документа, который ему предла­

гают удалить, перед ним лишь часть расчетов, порожденных документом (а эти расчеты могут быть рассыпаны по всему ЖЗ), а чтобы принять решение, нужно иметь перед глазами объект, а не его производные.

Во-вторых, пользователь, находясь  в ЖЗ, наблюдает удаление не документа, а записей ЖЗ.  Такая  рассогласованность намерений  и  визуального результата несколько обескураживает.

В-третьих, расчеты,  порожденные  удаляемым документом,  могут  иметь  неотмененную  ручную  правку. И если  ошибочное  удаление документа, расчеты которого не имеют ручной  правки, дело поправимое (для преодоления ошибки нужно  снять  пометку  удаления документа в  соответствующем  журнале  документов  и  провести  документ заново), то расчеты  с ручной  правкой после восстановления ошибочно удаленного документа придется произвести заново.

Ситуацию можно поправить,  если  в  предопределенную процедуру  ПриУдаленииДокумента,  которую нужно  расположить  в  глобальном модуле,  добавить вызов  нижеприводимой функции  ЕстьЛиРучнаяПравка, которая  как  раз-то и  фиксирует наличие расчета  с ручной правкой  и  запрещает при  наличии  такового  удаление  породившего его  документа. Функцию  придется  разместить  в  глобальном модуле, поскольку оттуда осуществляется ее вызов.

// Вернет 0, если хотя бы один расчет удаляемого документа имеет ручную правку функция ЕстьЛиРучнаяПравка(док)

перем жз;

жз = СоздатьОбъект("ЖурналРасчетов.Зарплата_2"); жз.ВыбратьЗаписиПоДокументу(док);

// Просматриваем все расчеты, порожденные документом док

пока жз.ПолучитьЗапись() = 1 цикл если жз.Исправлена = 1 тогда

возврат 0;                         //               Есть ручная  правка конецЕсли;

конецЦикла; // пока

возврат 1;                                //                   Нет расчетов с ручной правкой  конецФункции // ЕстьЛиРучнаяПравка

Саму  же  предопределенную   процедуру  ПриУдаленииДокумента можно  записать следующим  образом:

// Предопределенная процедура глобального модуля

// Интерфейс процедуры задан в системе и содержит два входных параметра: док и режим

// док удаляемый документ

// Параметр режим равен единице, если проставляется DBF-пометка удаления,

// и равен нулю, если документ получает  1С-пометку удаления

// В нашей проблеме этот параметр неинтересен процедура ПриУдаленииДокумента(док, режим) если док.ПометкаУдаления() = 1 тогда

возврат;                             //                 Если снимается  пометка удаления, конецЕсли;                             //                  то никаких проверок  не выполняем

// Исследуем документы, порождающие расчеты

// Иные документы в этом исследовании не участвуют

если (док.Вид() = "Табель") или (док.Вид() = "Премия") или (док.Вид() = "НачПериода_2") тогда

// Статус  возврата будет равен нулю, если расчеты  документа док имеют ручную

// правку. При таком  статусе возврата документ удален не будет если ЕстьЛиРучнаяПравка(док) = 0 тогда

СтатусВозврата(0);

Предупреждение("Нельзя удалить документ с ручной правкой."); конецЕсли;

конецЕсли;

конецПроцедуры // ПриУдаленииДокумента

Подобного рода модификации заинтересованный пользователь  может осуществить в великом множестве.

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии