Как написать внешнюю обработку в 1с 77

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

    Специальные предложения

    Electronic Software Distribution

    Интеграция 1С с системой Меркурий

    Алкогольная декларация

    Готовые переносы данных

    54-ФЗ

    Управление проектом на Инфостарте

    Траектория обучения 1С-разработчика

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

    Просмотры 10080

    Загрузки 8

    Рейтинг 2

    Создание 01.02.15 14:58

    Обновление 01.02.15 14:58

    № Публикации 327058

    Тип файла Архив с данными

    Конфигурация Конфигурации 1cv7

    Операционная система Windows

    Вид учета Не имеет значения

    Доступ к файлу Абонемент ($m)

    Код открыт Не указано

    См. также

    Планировщик v1.1.11- оригинальная обработка для автоматизации выполнения задач по расписанию Промо

    . представляю вашему вниманию простой и достаточно дубовый способ:

    1. Создаём в списке пользователей специальное имя, например АвтоEmail, набор прав минимальный – лишь бы хватило открыть общую внешнюю обработку.

    2. В Глобальном модуле в процедуре ПриНачалеРаботыСистемы() описываем вызов отработки и завершение работы системы:

    Если, например в торговле, обработка будет использовать значения по умолчанию пользователя, то вставку делаем после слов

    глПользователь = Спр . ТекущийЭлемент ();

    // Вызов и завершение работы

    Если ИмяПользователя() = "АвтоEmail" Тогда
    СтатусВозврата( 0 );
    ОткрытьФорму( "Отчет" , "АвтоEmail" , КаталогИБ() + "ExtForms\ПродажиОстатки.ert" );
    Возврат;
    КонецЕсли;

    3. В самой обработке при открытии выполняем все нужные действия.

    4. Далее собираем команду запуска 1С с параметрами:

    Пример: "C:\Program Files\1Cv77\BIN\1cv7.exe" ENTERPRISE /D"D:\DataBase\Db\" /N"АвтоEmail" /P"123"

    5. Осталось лишь Создать задачу в Планировщике заданий windows, указать команду запуска в действии и расписание.

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


    Процедура ПриОткрытии ()
    // Какой нибудь Запрос
    Таб = СоздатьОбъект( "Таблица" );
    Таб . ВывестиСекцию ( "Шапка" );
    Пока Запрос . Группировка ( 1 ) = 1 Цикл
    Таб . ВывестиСекцию ( "Строка" );
    КонецЦикла;
    Таб . ВывестиСекцию ( "Подвал" );
    Таб . Записать (КаталогИБ()+ "ExtForms\Остатки.xls" , 1 );

    Компонента ROM-Mail.dll бесплатная и легко пробивается в яндексе.

    Возможная проблема или «запишу, чтоб не забыть».

    Планировщик Windows 2008 ошибка 2147943645

    Планировщику заданий не удается запустить задачу "такую-то" для пользователя "такого-то". Дополнительные сведения: значение ошибки: 2147943645.

    Предлагаемое решение – выставить вышеописанную галку и до кучи поставить галку "Выполнить с наивысшими правами", расположенную там же – мне лично сразу помогло.

    binnnn --> binnnn



    Просмотр профиля Pepe --> Pepe



    Просмотр профиля 1. Существует много разных обработок работы с ДБФ. Можно поискать, например, здеся.
    2. 1С рассчитана на работу со сканером, надо знать конфигурацию, какой сканер, как подключается, надо ли драйвера, надо ли дорабатывать саму конфу. Вопросов много, однозначного ответа нет.
    3. Обработки устанавливаются как внутренние и как внешние. Для первых надо знать как вставить в конфигуратор, для второго случая просто запустить. binnnn --> binnnn



    Просмотр профиля 1. Существует много разных обработок работы с ДБФ. Можно поискать, например, [необходимо зарегистрироваться для просмотра ссылки]
    2. 1С рассчитана на работу со сканером, надо знать конфигурацию, какой сканер, как подключается, надо ли драйвера, надо ли дорабатывать саму конфу. Вопросов много, однозначного ответа нет.
    3. Обработки устанавливаются как внутренние и как внешние. Для первых надо знать как вставить в конфигуратор, для второго случая просто запустить.

    Вы можете дать описание загрузки обработак в 1с?

    Pepe --> Pepe



    Просмотр профиля
    Давать ничего не надо. Надо знать. Внешняя обработка - меню "Файл-Открыть" или "Ctrl-O" или пиктограмма на панели стандартная "открыть" (вторая). Указываешь файл (расширение .ERT), обработка загружается и далее все зависит как она работает, или ждет твоего указание, или просто выполняется.
    Та-же обработка может быть вмонтирована в конфигурацию как внутренняя. Для этого надо через конфигуратор ее подключить, создать для нее пункт меню и будет она вызываться через этот пунктик меню. На работу обработки режим запуска не влияет, внутренняя запускается сразу, внешнюю надо указать где она. binnnn --> binnnn



    Просмотр профиля Давать ничего не надо. Надо знать. Внешняя обработка - меню "Файл-Открыть" или "Ctrl-O" или пиктограмма на панели стандартная "открыть" (вторая). Указываешь файл (расширение .ERT), обработка загружается и далее все зависит как она работает, или ждет твоего указание, или просто выполняется.
    Та-же обработка может быть вмонтирована в конфигурацию как внутренняя. Для этого надо через конфигуратор ее подключить, создать для нее пункт меню и будет она вызываться через этот пунктик меню. На работу обработки режим запуска не влияет, внутренняя запускается сразу, внешнюю надо указать где она.

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

    Pepe --> Pepe



    Просмотр профиля Врядли найдется 100% работающая обработка. Как-правило, любую сложную обработку надо подгонять под конфигурацию (у тебя не типовая конфигурация). Надо сопоставлять поля ДБФ и внутренние переменные или реквизиты документа (в твоем случае). Дело усложняется тем, что не известно как и откуда была выгружена накладная. sarius --> sarius



    Просмотр профиля Лучший совет, наверное, будет такой: бери по-быстренькому учебничек по 1С 7.7 (для начала хотя бы с Миста.Ру), начинай учить.
    Конечно, объяснить бы руководству, что механик ну никак не может заменить пилота, но на практике это ну очень тяжело бывает. binnnn --> binnnn



    Просмотр профиля Ребята может тут кто очень хорошо разбираеться, сможет ли кто то за деньги написать нужную програмку для загрузки накладных в 1с? Все что надо будет мы предоставим Ardi --> Ardi



    Просмотр профиля Ребята может тут кто очень хорошо разбираеться, сможет ли кто то за деньги написать нужную програмку для загрузки накладных в 1с? Все что надо будет мы предоставим sarius --> sarius



    Просмотр профиля Ребята может тут кто очень хорошо разбираеться, сможет ли кто то за деньги написать нужную програмку для загрузки накладных в 1с? Все что надо будет мы предоставим
    Все, что нужно - файлик md в архиве + dbf.
    любого випа дергай - если по цене договоришься, напишет Batchir --> Batchir



    Просмотр профиля Ребята может тут кто очень хорошо разбираеться, сможет ли кто то за деньги написать нужную програмку для загрузки накладных в 1с? Все что надо будет мы предоставим

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

    binnnn --> binnnn



    Просмотр профиля

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