Как заменить обработку в конфигурации 1с

Обновлено: 05.07.2024

Внешние обработки, печатные формы, обработки по заполнению табличных частей

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

Общее описание

Механизм предназначен для подключения (без изменения конфигурации):

  • Внешних обработок для произвольного выполнения
  • Внешних обработок в качестве дополнительных печатных форм объектов (справочников и документов)
  • Обработок для заполнения табличных частей объектов

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

Для реализации механизма ВПФО используется справочник "Внешние обработки".

Для справочника предусмотрены специализированные реквизиты*:

  • "Вид обработки" - описывает, какого вида данная ВПФО
    1. Произвольная обработка
    2. Обработка для заполнения табличных частей объектов
    3. Внешняя печатная форма
    • "Хранилище внешней обработки" - хранит двоичные данные подключаемой внешней обработки. При использовании двоичные данные сохраняются на диск во временный файл, и обращение к файлу производится программно как к внешней обработке.

    ПРИМЕЧАНИЕ
    Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"

    Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту "Вид обработки", из подменю "Сервис".

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

    Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.

    Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:

    • Возможность использования механизма пользователями, НЕ имеющими права на интерактивное открытие внешних обработок
    • Ограничение доступа к использованию и изменению обработок на уровне записей (RLS), т.е. к каждой обработке отдельно
    • Целостность БД и неизменность функционала в зависимости от внешних факторов (переноса БД, сетевой работы пользователей, создания архивных копий БД и пр.)

    Описание видов справочника ВПФО и требования к подключаемым внешним обработкам

    Рассмотрим каждый вид ВПФО по отдельности.

    Произвольная обработка

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

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

    Основная форма для произвольной обработки должна быть определена обязательно.

    Обработка для заполнения ТЧ объектов

    Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.

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

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

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

    Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)

    • Объект – ДокументОбъект, СправочникОбъект. Откуда был произведен вызов процедуры заполнения внешней обработки;
    • ИмяТабличнойЧасти – Строка. Имя табличной части, для которой вызвана обработка;
    • ТабличноеПолеОбъекта – Элемент формы: Табличное поле. Табличное поле формы, для которого вызвана обработка.

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

    Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки". Макет должен состоять из 2-х колонок – "полное имя объекта" и "имя табличной части".

    Пример макета Параметры_Авторегистрации:


    Внешняя печатная форма

    Для подключаемых внешних печатных форм указывается:

    • внешняя обработка
    • список объектов, для которых данная печатная форма используется

    Для каждого типа объекта дополнительно можно указать:

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

    Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке "отбор":


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


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

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

    Для сохраненной внешней обработки:

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

    Наличие реквизита "СсылкаНаОбъект" и экспортной функции "Печать()" в модуле объекта обработки с видом "Внешняя печатная форма" обязательно.

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

    Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки" состоящий из одной колонки – полное имя объекта для которого будет создаваться соответствующая кнопка печати.

    Пример макета Параметры_Авторегистрации:


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

    Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"

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


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

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

    Реквизиты табличной части:

    • ПредставлениеОбъекта. Строка, неограниченной длинны, хранит строковое представление выбранного объекта, для отображения пользователю.
    • СсылкаОбъекта. СправочникСсылка, ДокументСсылка, содержит пустую ссылку на объект конфигурации. т.к. реквизит типа "Тип" для табличной части не может быть определен, то по пустой ссылке определяется тип объекта, для которого следует подключать внешнюю печатную форму или обработку по заполнению табличной части. Ссылку на пустое значение определенного типа удобно использовать в запросах.
    • ТабличнаяЧастьИмя**. Строка, 100. Содержит имя ТЧ объекта, для которого задается ВПФО.
    • ТабличнаяЧастьПредставление**. Строка, неограниченной длинны. Содержит синоним ТЧ объекта, используется для отображения пользователю представления табличной части объекта, для которого задается.
    • НастройкиПостроителяДляОтбора***. Хранилище значения, может содержать настройки построителя отчета, выгруженные из него отборы для выбранного объекта.
    • ХранилищеВнешнейОбработки***. ХранилищеЗначения, может содержит двоичные данные подключаемой внешней обработки., которая будет использоваться в первую очередь, вместо обработки расположенной в шапке.
    • ЗаменяемаяПечатнаяФорма***. Строка, 200. Имя печатной встроенной формы объекта, которую необходимо заменить подключаемой.
    • ИмяФайлаПечатнойФормы***. Строка, неограниченной длинны - имя файла подключенной печатной формы.
    • ПредставлениеОтбораПостроителя***. Строка, неограниченной длинны, хранит представление отбора построителя, используется для отображения представления отбора в табличной части формы элемента справочника "Внешние обработки".

    ** Используется только для элементов с видом обработки: "Заполнение табличных частей"
    *** Используется только для элементов с видом обработки: "печатная форма".

    Подключение дополнительных печатных форм к формам объектов конфигурации

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

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

    Для обеспечения подключения механизма в форме объекта должны присутствовать следующие процедуры и функции:

    Может, кто-то сталкивался и имеет решение данного вопроса?

    Есть конфигурация. В ней есть обработка Обработка1. И есть внешняя обработка Обработка1. Как через пакетный, командный или любой другой режим или способ можно заменить внутреннюю обработку Обработка1 внешней обработкой из файла Обработка1?

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

    Уточнение - НЕ подходит способ с выгрузкой конфигурации в файлы и заменой содержимого папки обработки содержимым выгруженной обработки.

    Самый простой путь - хранилище конфигурации.
    В хранилище помещаете новую версию обработки.
    Потом смотрите в мануале или в конфигурации АвтоматическаяПрверкаКонфигураций, как обновить БД из хранилища. (2)
    А как поместить в хранилище новую версию обработки? У меня ведь внешний файл обработки. (3)
    В этой статье ответа на этот вопрос не нашёл. Там только работа с хранилищем, которая и так описана в справке. Ничего о работе с внешним файлом обработки нет.
    ПараметрыРегистрации:
    Значение элемента Тип элемента Ключ Значение
    КлючИЗначение КлючИЗначение "Успех" Ложь
    КлючИЗначение КлючИЗначение "АдресДанныхОбработки" "e1cib/tempstorage/147ca7cb-43e1-468e-affc-ea3c1ba7a7e8?seanceId=a45aca0a-0f1a-4414-8944-79a445278eab"
    КлючИЗначение КлючИЗначение "ИмяФайла" "ВызовЖурналаРегистрацииИзЛюбогоОбъекта.epf"
    КлючИЗначение КлючИЗначение "ЭтоОтчет" Ложь
    КлючИЗначение КлючИЗначение "ОтключатьПубликацию" Ложь
    КлючИЗначение КлючИЗначение "ОтключатьКонфликтующие" Ложь
    КлючИЗначение КлючИЗначение "Конфликтующие" КлючИЗначение КлючИЗначение "Успех" Ложь
    КлючИЗначение КлючИЗначение "АдресДанныхОбработки" "e1cib/tempstorage/147ca7cb-43e1-468e-affc-ea3c1ba7a7e8?seanceId=a45aca0a-0f1a-4414-8944-79a445278eab"
    КлючИЗначение КлючИЗначение "ИмяФайла" "ВызовЖурналаРегистрацииИзЛюбогоОбъекта.epf"
    КлючИЗначение КлючИЗначение "ЭтоОтчет" Ложь
    КлючИЗначение КлючИЗначение "ОтключатьПубликацию" Ложь
    КлючИЗначение КлючИЗначение "ОтключатьКонфликтующие" Ложь
    КлючИЗначение КлючИЗначение "Конфликтующие"
    +
    Как я понял, надо не заменить элемент справочника ДополнительныеОбработки, а изменить входящий в состав конфигурации отчет, на внешний файл.

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

    Что касается 1С : Предприятия 8, то возникают вопросы :
    Зачищает ли программа буфер клавиатуры перед открытием ?
    Каким образом сымитировать нажатие ПКМ на нужной строке ветки "Обработки" ?

    Да и вопрос к Windows : позволяет ли ОС на компьютере пользователя передавать данные в буфер клавиатуры ?

    Это не ответ на Ваш вопрос, а один из вариантов на проработку.

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

    (10)
    Спасибо за ответ, но это даже не направление на проработать. Сейчас вполне есть всякие кликеры, тот же Кликерманн, если нужно что-то наклацать вместо пользователя - ничего сложного в этом нет. Интересует именно работа через командную строку - как средствами платформы сделать загрузку обработки в конфигурацию без пользователя с мышью? Интересует именно работа через командную строку - как средствами платформы сделать загрузку обработки в конфигурацию без пользователя с мышью?

    Все ключи командной строки документированы и многократно опубликованы (надеюсь, сами сможете найти), "секретных" нет. А если и есть - кто вам их выдаст?

    Поэтому я бы прекратил эти поиски несуществующего, да и небезопасного решения - однажды в результате чьей-то ошибки вместо "правильной" обработки загрузится и запустится какая-нибудь совсем другая, выполнение которой вызовет необратимые изменения в базе - и кто будет виноват?

    Нет уж, пусть программист видит то, что делает.

    (14)
    Спасибо за ваши бесценные бесплатные советы, я обязательно сделаю так, как вы мне сказали!

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

    Но слава Богу, всегда на каждом форуме найдётся такой вот герой, который спасёт базы неопытных программистов от неправильных обработок и необратимых изменений! Низкий вам поклон, благодаря вам я сегодня узнал много нового - что ключи командной строки документированы и многократно опубликованы и что вы сняли с себя ответственность за необратимые изменения в нашей базе!

    Тему закрываю, иду нести вашу незамутнённую мудрость другим тёмным программистам!

    "Видьте, что делаете, глупцы. "

    а вдруг ключи командной строки не документированы и не опубликованы многократно. я сегодня узнал много нового - что ключи командной строки документированы и многократно опубликованы Тему закрываю, иду нести вашу незамутнённую мудрость другим тёмным программистам! Да уж будьте любезны, ступайте, хватит тут сиськи мять. (19)
    Да просто не каждый день попадаешь под такой водопад мудрости! Сижу теперь с отвалившейся челюстью, готов внемлить, может, ещё что-то настолько же мудрое выдадите? По стилистике ведь вижу - мудрец с опытом, бессонные ночи нащёлкивания на клавиатуре бесценных советов)) Можно сказать, Неуловимый Джо в сфере мудрости))

    Интересно, какая ситуация в Вашей работе образовалась, которая потребовала найти такое решение ?
    Как я понимаю, дело в пользователях удалённой конфигурации ?
    Или в необходимости регулярного обновления ?

    В Дополнительные внешние обработки уже получилось, видимо, помещать свою обработку при считывании почты средствами 1С ? Теперь 2-й этап ?

    В Дополнительные внешние обработки уже получилось, видимо, помещать свою обработку при считывании почты средствами 1С ? Теперь 2-й этап ?

    Теперь уже мне интересно стало, что за ситуацию в нашей работе Вы предполагаете под вот эти вопросы))

    это такие сложные процессы, что они должны "наконец-то получиться"?)

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

    Войдите как ученик, чтобы получить доступ к материалам школы

    Создание конфигураций 1С: добавляем обработку

    Автор уроков и преподаватель школы: Владимир Милькин

    Продолжаем изучение азов создания конфигураций на 1С.

    На этом уроке мы вместе создадим новую обработку, а затем напишем для неё команды, которые демонстрируют работу со справочником "Сотрудники".

    Возвращаемся в конфигуратор и открываем дерево конфигурации.


    Добавляем новую обработку

    Правой кнопкой нажимаем на разделе "Обработки" и выбираем пункт "Добавить":


    Открылось окно создания новой обработки. Перейдём на закладку "Основные" и укажем в качестве имени обработки "ОбработкаСправочников":


    Создаём форму для обработки

    Перейдём на закладку "Формы" нажмём на зелёный плюсик, чтобы добавить новую форму (визуальное представление нашей обработки):


    Появился конструктор создания формы. Оставим всё по умолчанию и нажмём "Готово":


    Открылась новая форма:


    Создаём новую команду для формы

    Перейдём на закладку "Команды"->"Команды формы":


    Добавим новую команду (зелёный плюсик):


    И в свойствах новой команды укажем имя "ВыводВсехСотрудников":


    Нажмём в её же свойствах на лупу рядом с полем "Действие", чтобы задать обработчик команды. Выберем вариант создания обработчика "НаКлиенте" и нажмём "ОК":


    Нас перенесло в модуль формы в процедуру-обработчик команды "ВыводВсехСотрудников":


    Пишем код обработчика команды

    Теперь наша задача написать код на внутреннем языке 1С, который будет перебирать все элементы справочника "Сотрудники".

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

    Поэтому давайте допишем в конце модуля процедуру такого вида:


    Обратите внимание, что перед ней я указал признак "&НаСервере". Это означает, что она будет выполняться на сервере, а значит мы можем из неё читать данные справочника.

    Теперь организуем вызов этой процедуры из клиентской "ВыводВсехСотрудников":


    Тут логика такая:

    Это на самом деле несложно. Обход всех справочников в 1С однотипен. А значит научившись это делать сейчас со справочником "Сотрудники", вы сможете делать также и с любыми другими справочниками.

    Для доступа к данным справочника используется менеджер, доступ к которому осуществляется так:

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

    Что представляет из себя менеджер справочника? Менеджер - это ещё не сами данные справочника. Менеджер - это некоторый программный объект (можете представлять его себе в виде чёрного ящика), через который мы можем что-либо делать со справочником.

    Менеджер справочника - это как бы такая прослойка между нашим кодом и данными справочника. И получается, что, если нам требуется прочитать все элементы справочника, то мы не можем этого сделать напрямую. Мы можем только попросить об этом нашу прослойку между нами и справочником, то есть менеджер.

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

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

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

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

    Чтобы получить очередную порцию данных из выборки, необходимо вызвать у выборки встроенный в неё метод "Следующий". Получение порций данных (одна порция соответствует одному элементу справочника) обычно происходит в цикле:

    Когда данные (элементы справочника) в выборке закончатся, метод "Следующий" вернёт Ложь и цикл прекратится.

    После каждого вызова метода "Следующий" (при условии, что он вернул "Истина") выборка будет содержать в себе все поля с данными только считанного элемента справочника, обращаться к которым можно по именам через точку:

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

    Значит код процедуры "ВыводВсехСотрудниковНаСервере" напишем таким образом:


    Превращаем команду в кнопку

    Давайте проверять! Для этого перетащим нашу команду на форму, чтобы она превратилась в кнопку:


    Готово!

    Теперь запустим 1С:Предприятие (меню "Отладка"->"Начать отладку"), откроем нашу обработку (меню "Сервис"->"Обработка справочников") и нажмём кнопку "Вывод всех сотрудников":



    Ну раз такое дело - со следующего урока начинаем создавать более интересные проекты.

    Для учеников

    Обязательно повторяйте все действия, которые мы выполняем на уроках данного модуля. Теория, не подкреплённая практикой - ничего не значит.

    На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .


    Каждый хочет держать под контролем свою жизнь, знать ответы на все вопросы. Так же дела обстоят в части информационных систем. Но здесь все значительно сложнее, так как ваша жизнь зависит от 3-10 человек. А в информационной системе зачастую работают 200 и 1000 сотрудников. И именно в таком потоке информации жизненно важно знать, что изменилось по сути и кто конкретно осуществил эти изменения.
    Эту задачу давно ставили разработчикам 1C и вот, мы обрадованы появлением более или менее работающего механизма. Однако хранение версий в самой базе быстро приводит к ее росту. Устранению этого недостатка посвящена эта статья.
    "



    Версионирование 1С.
    Механизм версионирования объектов используется для аудита изменений объектов информационной базы в разрезе времени и позволяет ответить на вопросы КТО, КОГДА и ЧТО изменил. В качестве версионируемых объектов могут выступать справочники и документы. Настройка механизма выполняется в форме настройки программы и доступна пользователю с ролью «Полные права». Настройка состоит из активизации механизма и настройки режима сбора версий документов и справочников.
    Однако нет худа без добра. Со временем количество измененных записей по объему сопоставимо с основными данными, а потом попросту уходит в «отрыв» и превышает все разумные пределы. Что начинает существенно сказываться на объеме быстродействия системы.
    Для устранения этого недостатка логично изымать эти данные и хранить их отдельно. Это тем более логично, когда информационных систем, которые необходимо подвергать аудиту, более чем одна.
    Для решения этой задачи наша команда разработала программный продукт обладающий следующим функционалом:
    1.Сбор данных об измененных объектах в фоновом режиме согласно расписанию. В рабочей базе остается только последнее изменение, количество «последних» регулируется. Так можно устранить «распухание» базы и одновременно можно в случае чего за секунду вернуть испорченный документ.




    2.Формирование отчетов в части аудита (кто, что, когда изменил). Очень нравится «Безопасникам».




    3.Все что когда либо менялось в системах.И все версии измененных объектов в одном месте в отдельной базе.Система собирает как версии так и журналы регистрации из указанных систем.




    4. Но когда надо провести аудит изменений имеем полную картину.

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


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

    Примеры обработок: выгрузка документа в Excel, загрузка из текстового файла, групповая обработка документов, подбор в документы продажи и т.п.

    Обработки находятся в узле Обработки дерева метаданных:

    Обработка

    Основные настройки обработки указываются на закладках Данные и Формы.

    На закладке Данные можно создать реквизиты и табличные части обработки. К реквизитам обработки и табличным частям можно обращаться по имени в модуле объекта обработки:

    Обработка

    На закладке Формы можно создать форму обработки, с помощью которой можно предоставить интерфейс для взаимодействия с пользователм:

    Обработка

    Внешние обработки

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

    Чтобы создать внешнюю обработку нужно в конфигураторе в верхнем меню выбрать Файл -> Новый (или нажать на кнопку с белым листом ниже):

    Внешняя обработка

    В окне выбора вида документа нужно выделить пункт Внешняя обработка и нажать ОК:

    Внешняя обработка

    Откроется окно с настройками внешней обработки, где также как и для обычной обработки можно создать реквизиты, табличные части и формы обработки:

    Внешняя обработка

    Важно отметить, что у внешней обработки нет модуля менеджера.

    Для сохранения внешней обработки нужно выбрать в верхнем Меню Файл -> Сохранить (или нажать на кнопку с дискетой ниже):

    Внешняя обработка

    Указать путь к файлу, имя файла и нажать Сохранить:

    Внешняя обработка

    Внешняя обработка сохраняется в файле с расширением .epf.

    Для открытия внешней обработки в пользовательском режиме нужно в главном меню выбрать Файл -> Открыть и выбрать сохраненный файл внешней обработки:

    Внешняя обработка

    Внешняя обработка

    Внешняя обработка

    В этом случае текущая обработка будет заменена на внешнюю.

    Внешняя обработка

    Внешняя обработка
    Внешняя обработка

    Программная работа с обработками

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

    Читайте также: