Основная страница

Дополнительные приемы конфигурирования


Создание сервисных режимов групповой обработки данных

В некоторых случаях для эффективной работы пользователей с конкретной конфигурацией целесообразно разработать некоторые сервисные режимы обработки информации. Достаточно часто возникает потребность в специальных режимах выполняющих групповые действия с объектами (элементами справочника, документами). Такие операции оформляются в конфигурации 1С:Предприятия в качестве объектов метаданных "Обработка", по принципам конфигурирования идентичных объектам "Отчет".

Сами действия, выполняемые над множеством объектов вполне очевидны. Это могут быть:

* пометка и снятие пометки на удаление;

* проведение и отмена проведения документов;

* перенос элементов справочника в другую группу;

* изменение реквизитов определенным образом;

* печать документов

* другие варианты обработки.

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

Первый тип - это обработки, ограничивающие состав обрабатываемых объектов некоторыми условиями, которые задаются как выбираемые пользователем значения в диалоге формы обработки. Например, может быть создана обработка, помечающая на удаление все документы определенного вида с конкретным клиентом в определенном интервале. Этот принцип аналогичен параметрам настройки отчетов.

Второй тип предполагает задание множества обрабатываемых объектов пользователем посредством выбором самих объектов. Для создания таких обработок рекомендуется использовать объект "СписокЗначений". Для того, чтобы пользователь мог заполнить список обрабатываемых объектов в диалоге формы обработки следует создать элемент диалога "Список". Для его заполнения следует предусмотреть кнопки добавления и удаления значений. Само добавление может выполняться выбором или с использованием механизма "Подбора", что обеспечит достаточно быстрое заполнение списка. Отдельная кнопка должна быть предусмотрена для выполнения тех действий ради которых и создавалась обработка.

Пример обработки, выполняющей групповой перенос товаров в выбранную группу, приведен в методической конфигурации (обработка "ПереносТоваров").

Печать на матричных принтерах в текстовом режиме

При печати на матричном принтере Windows выводит всю информацию в графическом режиме, что сильно замедляет скорость работы принтера. Для ускорения этого процесса можно выводить информацию на принтер в текстовом режиме.

В методической конфигурации печать на матричном принтере в текстовом режиме  демонстрируется на примере печати расходной накладно (кнопка "Печать текст").

С помощью объекта "Текст" в каталоге временных файлов формируется текстовый файл, например  "Tmp.txt" (в DOS - кодировке) . После формирования файл, с помощью команды системы "copy", пересылается в порт, к которому подключен принтер (в данном примере порт указывается в переменной ПортПринтера). После того как файл переслан на принтер он удаляется из каталога временных файлов.

Для печати на сетевом принтере, он должен быть назначен на соответствующий порт с помощью настроек свойств принтера (для Windows 95, Windows 98) или с помощью команды системы:

"net use <порт>: \\<название компьютера>\<название принтера>" (для

WindowsNT) .

Где:

<порт> - название порта на который будет назначен принтер,

<название компьютера> - название сетевого компьютера к которому

подсоединен принтер,

<название принтера> - сетевое название принтера.

Например, команда может выглядеть следующим образом: "net use lpt1:

\\printserver\printer".

Публикация данных 1С:Предприятия в Интернет

Для организаций имеющих свой Web-сайт весьма актуальной является задача публикации в Интернет некоторой информации, получаемой из информационной базы 1С:Предприятия. Обычно это рекламно-коммерческая информация, которую организация хочет оперативно доводить до своих партнеров и потенциальных клиентов.

Средства 1С:Предприятия позволяют достаточно просто и эффективно получать необходимые данные для публикации в Web.

В методической конфигурации выгрузка данных для публикации в Интернет демонстрируется на примере формирования прайс-листа  в виде фрагмента Web-сайта. Для этого используется обработка "ПрайсВИнтернет".

В данной обработке используется возможность записи табличного документа в формате HTML.

То есть прайс формируется как обычный отчет, но табличный документ не показывается на экране, а записывается в виде файла в формате HTML. Так как прайс-лист может быть достаточно большой, то он выгружается не как один HTML-файл, а как набор файлов, каждый из которых содержит товары одной группы. Для формирования отдельных файлов по группам справочника используется рекурсивный вызов процедуры. Совокупность этих файлов образует фрагмент сайта обеспечивающий просмотр прайс-листа любого размера. Необходимое оформление страниц автоматически генерируется при записи табличного документа в формате HTML. Для осуществления перехода к определенным группам в ячейках табличного документа размещаются специальные теги языка HTML. В них указываются ссылки на соответствующие файлы, сформированные данной обработкой.

Вызов Конфигуратора из режима работы "1С:Предприятие" для сохранения резервной копии

Для начинающих пользователей 1С:Предприятия определенную сложность представляет создание резервной копии. Одной из причин возникающих сложностей является то, что резервное копирование информационной базы выполняется в режиме "Конфигуратор", в котором начинающие пользователи практически не работают.

Одним из путей решения этой проблемы может являться включение в меню 1С:Предприятия вызова режима "Конфигуратор" для создания резервной копии. В методическую конфигурацию включена обработка "РезервноеКопирование", которая фактически и выполняет вызов режима "Конфигуратор". Вызов данной обработки включен в меню "Сервис" пользовательского интерфейса.

Обработка выполняет собственно запуск 1С:Предприятия в режиме "Конфигуратор", а все необходимые действия по созданию резервной копии пользователь будет выполнять самостоятельно. Напоминание об этом включено в форму обработки.

Обработка позволяет выбрать исполняемый файл 1С:Предприятия (так как имена файлов в зависимости от установленной версии могут отличаться). В форме обработки предусмотрено поле для ввода пароля пользователя.

Так как создание резервной копии не может выполняться параллельно с работой пользователей с информационной базой, то в данной обработке предусмотрена возможность завершения работы 1С:Предприятия текущим пользователем. Разумеется, при работе в разделенном режиме необходимо будет также обеспечить завершение работы другими пользователями.

В обработке предусмотрена возможность установки режима автоматического вызова данной обработки при выходе из 1С:Предприятия.

В модуль обработки  включен текст, выполняющий запуск Конфигуратора в пакетном режиме для выполнения собственно сохранения данных, однако этот фрагмент модуля закомментирован. Это объясняется тем, что в общем случае невозможно гарантировать освобождение информационной базы к моменту запуска Конфигуратора даже при монопольном режиме работы данного пользователя. Поэтому использовать возможность запуска в пакетном режиме лучше всего внешними средствами, которые могут проанализировать результат выполнения необходимого действия и при необходимости запустить его снова.

Выполнение регламентных операций в режиме запуска "1С:Предприятие"

В некоторых случаях необходимо организовать выполнение определенных действий в режиме запуска "1С:Предприятие" без участия пользователя. Одним из путей решения этой задачи является использование технологии Ole-Automation. Однако эту же задачу можно решить и другим способом. В методической конфигурации данная задача реализована на примере организации регламентной выгрузки прайс-листа в Интернет. Для этого у обработки "ПрайсВИнтернет" в процедуре "ПриОткрытии" предусмотрена возможность выполнения выгрузки в пакетном режиме в каталог, переданный в качестве параметра при открытии формы обработки средствами встроенного языка. В глобальном модуле предусмотрен запуск обработки "ПрайсВИнтернет" в предопределенной процедуре "ПриНачалеРаботыСистемы". В качестве признака того, что 1С:Предприятие запущено для выполнения регламентных действий выступает файл с именем "AutoCmd.txt", располагающийся в каталоге пользователя. Если при запуске системы данный файл обнаружен, то выполняется анализ его содержимого, выполнение указанных там действий, удаление файла и завершение работы системы. Соответственно чтобы запустить 1С:Предприятие для выполнения регламентных операций достаточно указать в строке запуска того пользователя, у которого в пользовательском  каталоге будет размещаться файл "AutoCmd.txt". Это может быть специально введенный служебный пользователь или любой реальный пользователь.

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

Заметим, что для того, чтобы запуск выполнялся без выдачи диалога выбора информационной базы и диалога авторизации, в строке запуска должен быть указан каталог ИБ, слово "ENTERPRISE", имя пользователя, а также пароль пользователя, если он установлен.

Организованный таким образом регламентный запуск 1С:Предприятия может выполняться различными программами, например, в определенный момент времени. При этом отсутствие файла "AutoCmd.txt" в каталоге пользователя после запуска 1С:Предприятия может являться признаком того, что операция выполнена успешно.

Корректировка существующих движений при изменении структуры регистров

В процессе развития конфигураций разработанных на основе компоненты "Оперативный учет" достаточно часто возникает потребность в изменении структуры регистров. При этом в некоторых случаях встает необходимость внесения определенных значений в движения регистров уже проведенных документов.

В процессе изменения метаданных и реструктуризации информационной базы новые данные регистра (измерения, ресурсы и реквизиты) в существующих движениях будут заполнены пустыми значениями. Для того чтобы в них были проставлены определенные значения, необходимо выполнить перепроведение всех существующих документов, так как движения регистров записываются только в процессе проведения. В случае если конфигурация работает уже достаточно давно полное перепроведение документов является достаточно ответственной и небезопасной операцией. Заметим, что перепроведение документов является существенно более сложной и операцией чем пересчет итогов по существующим движениям, так как в процессе перепроведения заново отрабатывает алгоритм формирования движения, а при пересчете итогов используются записанные движения. Необходимо чтобы полное перепроведение документов точно воспроизвело все существующие движения и соответственно остатки на текущий момент. Зачастую это может не произойти. Например, аппаратная или программная ошибка в одном из предыдущих периодов привела к неправильному формированию движения документа. В последствии эта ошибка была скомпенсирована введенными данными инвентаризации или другими документами. Таким образом существующие остатки соответствуют реальным данным и удовлетворяют пользователей. При перепроведении "сбойный" документ будет проведен правильно, и текущие остатки изменятся. Другой причиной того, что документы при перепроведении запишут движения отличные от существующих, может быть некорректное изменение конфигурации сделанное в некоторый момент и не учитывающее необходимость правильного перепроведения существующих документов. Кроме того, если документ при проведении использует данные справочников,  то в некоторых случаях изменения справочников пользователями также может привести к тому что, при перепроведении изменятся движения и соответственно текущие остатки. Поиск причин таких коллизий может отнять очень много времени. Таким образом, существует необходимость внести изменения в существующие движения, не отрабатывая заново алгоритм проведения.

В  методической конфигурации предлагается методика, реализующая заполнение необходимых данных движений регистров таким образом, что сами движения воспроизводятся полностью. Для этого в конфигурацию включена обработка "ПерепроведениеДокументов". Обработка обходит все проведенные документы и выполняет их перепроведение. Перед проведением документа обработка запоминает все его движения регистров в таблицах значений. В процессе проведения документов вместо обычного алгоритма формирования движений выполняется процедура глобального модуля ("глТехнологическоеПерепроведение"), которая записывает движения, запомненные в таблицах значений. Для реализации данной методики в модуле каждого документа в начале процедуры "ОбработкаПроведения" включен однотипный фрагмент, выполняющий анализ переданного при вызове метода "Провести" параметра и вызов при необходимости процедуры глобального модуля. Для того, чтобы вносить в записываемые движения необходимые изменения, при запоминании каждого движения вызывается процедура "КорректировкаДвижения", в которой выполняется заполнение новых данных регистра (измерений, ресурсов, реквизитов). В приведенном примере в регистр "ТовЗап" введен новый реквизит "Внутреннее", в котором предполагается отмечать движения, отражающие внутренние перемещения товаров. В процедуре "КорректировкаДвижения" значение этого реквизита заполняется числом "1" для документов "Перемещение".

Данная методика может использоваться совместно с методикой временного отключения автоматического удаления движения. Это может быть целесообразно если необходимо минимизировать выполняемые действия при больших объемах движений. Временное отключение автоматического удаления движений позволит в процессе перепроведения удалять и записывать движения только по тем регистрам, структура которых изменилась. Однако реализация этой технологии более сложна, чем описанная полная перезапись движений.

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

Сортировка строк документа при печати

Достаточно часто у пользователей возникает потребность сортировки строк документа по некоторому значению отличному от номера строки. В форме документа для этого предусмотрены специальные команды меню и кнопки панели инструментов.

Однако в некоторых случаях необходимо организовать сортировку строк непосредственно в процессе печати, а не при вводе документа. Для решения данной задачи можно предложить использовать выгрузку табличной части документа в таблицу значений и вывод на печать данных из таблицы значений, отсортированной предварительно по одной или нескольким колонкам. Такой пример печати содержится в методической конфигурации (документ "Перемещение").

Заметим, что применение таблицы значений позволяет добавить дополнительные колонки, заполнить их необходимыми данными и отсортировать таблицу по значению, которое не содержится в явном виде в самой табличной части документа, например, по виду товара.

Другим способом печати документа в отсортированном виде является применение списка значений, в котором в качестве значений выступают номера строк документа, а в качестве представления - то значение, по которому необходимо выполнить сортировку. В этом случае при печати выполняется обход отсортированного по представлению списка значений и на каждом элементе списка выполняется позиционирование на соответствующую строку документа по номеру. Этот способ более трудоемок в реализации, но в некоторых случаях будет более эффективен с точки зрения производительности.

Переход к журналу документов из формы документа

В 1С:Предприятии не существует штатной возможности перехода из открытой формы документа к журналу документов. В некоторых случаях такая возможность может быть весьма полезна для пользователей. Например, если ввод документа инициализирован с помощью меню или документ открыт как расшифровка отчета и пользователь хочет посмотреть список "соседних" документов.

Для предоставления пользователю такой возможности предлагается методика реализации перехода средствами встроенного языка. В методической конфигурации эта методика реализована в виде процедуры глобального модуля "глПереходКЖурналу". Вызов данной процедуры помещается во все формы документов, в которых существует необходимость перехода к журналу документов. Данная процедура может быть использована в любой конфигурации без изменения.

Так как документ может входить в разные журналы, то данная процедура формирует с помощью объекта "Метаданные" список возможных журналов, и выдает пользователю запрос в виде меню. Далее выполняется открытие выбранного журнала с помощью функции "ОткрытьФорму". Так как дата документа может располагаться вне интервала журнала, то выполняется анализ интервала и при необходимости корректировка его. Далее выполняется активизация документа в открытом журнале. Если документ в форме еще не записан, то  выполняется позиционирование на последний документ в дате вводимого документа или ближайшей предыдущей дате, в который существуют документы.

Завершение работы пользователей с программой по требованию администратора

При реальной эксплуатации 1С:Предприятия в многопользовательском режиме в некоторых случаях возникает необходимость прекратить работу пользователей с информационной базой, например, для выполнения регламентных операций, таких как:  изменение конфигурации, сохранение архивной копии и т.д. Если все пользователи находятся в одном помещении, то это делается достаточно легко. Трудности возникают обычно, если пользователи находятся в различных помещениях.

Обычно эта задача решается либо средствами администрирования локальной сети, либо средствами конфигурирования 1С:Предприятия. В методической конфигурации приведен типичный пример организации механизма завершения работы пользователей средствами конфигурирования.

Для реализации проверки необходимости завершения используется периодически вызываемая процедура "ПроверкаНеобходимостиЗавершения", вызываемая процедурой "ПроцессОбработкиОжидания", назначенной функцией "ОбработкаОжидания".

В методической конфигурации эта процедура вызывается с частотой раз в 2 секунды для автоматического ввода документов. Так как опрос необходимости завершения работы не должен выполняться часто, выполняется проверка на смену текущей минуты. В результате анализ необходимости завершения

выполняется раз в минуту.

Сам признак необходимости завершения хранится в константе "СообщениеНеобходимостиЗавершения" в виде текстового сообщения, которое должно выдаваться пользователям. В некоторых реализациях данного механизма в качестве признака завершения используется файл с определенным именем, располагающийся в каталоге информационной базы.

Включение и выключение признака необходимости завершения выполняется с помощью обработки "ЗавершениеРаботыПользователей", выполняющей модификацию константы "СообщениеНеобходимостиЗавершения".

Проверка выполняется не только в процессе работы, но и при запуске конфигурации, чтобы исключить вход новых пользователей.

Проверка необходимости завершения выполняется для всех пользователей, кроме тех для которых установлен набор прав "Администратор". Таким образом, администратор будет иметь возможность войти в систему и снять признак необходимости завершения работы пользователей.

Данный механизм в некоторых случаях позволяет выполнить завершение работы даже, если пользователи не работают в текущий момент с программой. Для этого предупреждение с указанным текстом выдается с параметром "Таймаут". Однако процедура, назначенная функцией "ОбработкаОжидания", не будет вызываться, если в текущий момент открыт какой-либо системный модальный диалог, или какая-либо форма открыта модально.

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

Таким образом, предложенный механизм является сервисной возможностью и не может гарантировать обязательного освобождения информационной базы всеми пользователями. Разумеется, более однозначного эффекта можно достичь с помощью средств администрирования локальной сети, но это решение будет сопряжено с опасностью потери данных вводимых пользователем и, в некоторых случаях (при работе с базой данных в формате DBF/CDX), с нарушением целостности информационной базы.

Использование предложенного механизма  за счет применения исключительно штатных средств 1С:Предприятия не допускает потери вводимых данных и разрушения информационной базы.

Установка стандартного интервала журнала для отдельных категорий пользователей

1С:Предприятие для нового пользователя (впервые запустившему систему с конкретной информационной базой) автоматически устанавливает стандартный интервал просмотра журналов документов, операций и проводок. Эту установку пользователь может затем изменить в режиме настройки параметров (меню "Сервис - Параметры" - закладка "Журналы").

Система устанавливает начальные значения исходя из состава используемых в конфигурации компонент. Так, например, если используется компонента "Оперативный учет", то изначально для пользователей устанавливается интервал: "Текущая дата" - "Текущая дата", так как предполагается, что большинство пользователей будут заняты работой с документами в реальном времени и им нужно просматривать, прежде всего, сегодняшние документы.

Однако при большом количестве пользователей часть из них могут иметь достаточно специфические функции и для них не будут удобны значения установленные системой по умолчанию. Например, при работе в комплексной конфигурации бухгалтеру наиболее целесообразно видеть документы за квартал или за год.

В этом случае предлагается организовать установку начальных параметров интервала журналов для отдельных категорий пользователей средствами встроенного языка.

В методической конфигурации пример такой установки реализован в глобальном модуле в процедуре "ПриНачалеРаботыСистемы". С помощью функций "СохранитьЗначение" и "ВосстановитьЗначение" определяется первый вход пользователя в систему, так как затем параметры интервала журнала он будет устанавливать самостоятельно.

Собственно установка начальных значений выполняется функциями "НачалоСтандартногоИнтервала" и "КонецСтандартногоИнтервала". Установка параметров выполняется только для администратора. Предполагается, что для лиц осуществляющих администрирование информационной базы имеет смыслпросматривать все документы. Поэтому в качестве начальной границы интервала выбирается дата начала года первого документа, а в качестве конечной границы - конец текущего года.

Организация быстрой смены пользователем системных установок

В качестве одной из сервисных возможностей, которую можно предоставить пользователю в ходе доработки конфигурации, может быть создание режима быстрого изменения системных параметров, которые чаще всего

устанавливаются в конкретной организации.

В качестве примера такой сервисной функции в методической конфигурации реализовано быстрое изменение рабочей даты. Для этого в панель инструментов внесена кнопка "Рабочая дата", которая выполняет редактирование и установку нового значения рабочей даты. Для быстрого вызова данной функции кнопке назначен "Акселератор".

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

Вызов процедур и функций модуля открытой формы

Встроенный язык 1С:Предприятия не допускает вызова процедур и функций модуля формы из другого модуля. Допускается только обращение к атрибутам и методам контекста модуля формы.

В некоторых случаях возникает необходимость вызова некоторого алгоритма модуля формы (процедуры или функции) из другого модуля.

Для решения этой задачи можно использовать следующий прием. В 1С:Предприятии 7.7 в модуле формы может использоваться предопределенная процедура "ПриПовторномОткрытии". Эта процедура вызывается в том случае, если каким-либо способом выполняется открытие уже открытой формы. При чем при повторном открытии функцией "ОткрытьФорму" в модуль формы также как и при первом открытии передается параметр. Эта особенность может быть использована для активизации "снаружи" некоторого алгоритма в модуле открытой формы.

В методической конфигурации данный прием демонстрируется на примере открытия формы расходной накладной с автоматическим открытием подбора (меню "Документ - Расходная накладная с подбором"). Обычными средствами подбор в форме не может быть автоматически вызван непосредственно после открытия документа. Поэтому обычно пользователю необходимо после открытия документа вызывать подбор нажатием соответствующей кнопки. В приведенном примере при открытии нового документа сразу открывается режим подбора. Для реализации автоматического открытия подбора пункт меню вызывает процедуру "ОткрытьНакладнуюСПодбором" в глобальном модуле. В этой процедуре выполняется открытие формы документа "РасхНакл", а затем выполняется повторное открытие с передачей в качестве параметра строки

"Подбор". В модуле формы документа в предопределенной процедуре "ПриПовторномОткрытии" выполняется проверка параметра формы и в случае наличия в параметре строки "Подбор" выполняется активизация подбора.

В приведенной методике важным моментом является то, что при повторном вызове функции "ОткрытьФорму" должна открываться именно та форма, которая уже открыта, так как только в этом случае будет вызвана процедура "ПриПовторномОткрытии". Например, если после первого вызова функции "ОткрытьФорму" документ будет записан, то при втором вызове будет открыта новая форма.

Организация обращения к ранее открывавшимся объектам

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

Механизм обращения к ранее открывавшимся объектам реализован в методической конфигурации. В глобальном модуле ведется список значений "СписокИсторииОбъектов", в котором накапливаются те документы и справочники, которые пользователь открывает в ходе работы. В форме каждого элемента справочника (кроме тех, которые редактируются в списке) и в форме каждого документа в процедурах "ПриОткрытии" и "ПриЗакрытии" выполняется обращение к процедуре "ИсторияОбъектов", расположенной в глобальном модуле. В данной процедуре происходит пополнение списка истории объектов.

Объекты добавляются в начало списка, чтобы при просмотре истории первыми выдавались объекты, к которым обращение выполнялось позже. При добавлении больше 20 объектов, последний с конца объект удаляется, чтобы история не "распухала". Если объект уже содержится в списке, то перед добавлением в

начало предыдущее значение удаляется, чтобы не хранить в списке