Обработка для 1С

Содержание

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

Для начала создадим в конфигураторе внешнюю обработку при помощи меню Файл/Новый. В появившемся окне выберем «Внешняя обработка».

Создание внешней обработки

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

Открытие модуля

Сама процедура должна выглядеть следующим образом:

1С (Код)

1 2 3 4 5 6 7 8 9 Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт; Для каждого СтрокаТабличнойЧасти из Объект Цикл СтрокаТабличнойЧасти.Результат = Окр(СтрокаТабличнойЧасти.Результат); КонецЦикла; КонецПроцедуры

В данном примере нужно было округлить результаты расчета зарплаты в документе «Начисление зарплаты» в ЗУП 2.5. Вы же прописывайте необходимые вам действия с табличной частью документа. Процедура обязательно должна называться «Инициализировать», содержать три параметра и ключевое слово «Экспорт».

После того как прописали то что должна делать обработка, сохраняем её и переходим в режим 1С Предприятия, где регистрируем обработку в справочнике внешних обработок.

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

Обязательно нужно выбрать реквизит вид — «Заполнение табличных частей». В таблицу добавляем строку и заполняем все нужные поля. Представление объекта — это документ, в котором необходимо вызвать нашу обработку. Табличная часть — наименование табличной части, т.к. их может быть несколько в документе. И представление кнопки — это то как будет выглядеть кнопка в меню «Заполнить» над табличной частью.

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

Кнопка в документе

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

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

ОкруглениеЗУП25.epf

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

Отличный пример – групповая обработка документов. Это инструмент, который позволяет провести/изменить/распечатать не один документ, а сразу много, по выбранному списку. Согласитесь – очень удобно.

Для реализации в 1С инструментов для облегчения работы пользователя или администратора базы 1С существует специальный объект конфигурации – обработки 1С. Обработки 1С могут быть частью конфигурации или распространяться как отдельные файлы (тогда обработка называется внешняя обработка 1С).

Обработки 1С позволяют разрабатывать собственные инструменты как для программирования 1С, так и для настройки или управления 1С. Благодаря этому в интернете есть сотни типовых обработок (разработанных в компании 1С) и тысячи любительских обработок в интернете.

Самое время попробовать сделать обработку 1С самостоятельно. Подробности далее.

Что такое обработки 1С и как они используются

Маленькое вступление. Кто уже знаком с обработками 1С – может пропустить этот пункт.

Итак, обработка является инструментом, написанным программистом. Она ничего не умеет делать самостоятельно и не сохраняет данные в базу данных 1С, в отличие например от документа – который сохраняется в базу данных и самостоятельно умеет записываться и проводиться, без дополнительного программирования. Функции обработки 1С целиком зависят от программиста, который ее написал.

По функционалу обработки 1С можно поделить на три вида:

  • Вспомогательные обработки 1С конфигурации
    В каждой типовой конфигурации есть множество обработок. Они используются как дополнительные интерфейсные формы (рабочий стол пользователя, обзор конфигурации), как часть функционала конфигурации (внос начальных остатков, начальное заполнение базы данных, закрытие месяца).
  • Объекты (Классы)
    Кто знает другие языки программирования, уже знаком с понятием объект. Это некий класс, имеющий в своем распоряжении набор «переменных» и «функций». Его прелесть состоит в самодостаточности – то есть в одном классе собрано все, что нужно для выполнения его функций.

    В 1С классы можно создавать с помощью обработки 1С: «переменные» — реквизиты обработки 1С, «функции» — функции в модуле объекта обработки 1С (пометка Экспорт для публичных функций). Удобство состоит как в создании экземпляра такого класса, так и в его перемещении между конфигурациями.

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

    Обратите внимание, что конечно же, такие «классы» не связаны с данными напрямую – их требуется передавать или считывать в «конструкторе».

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

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

Где находятся обработки 1С

Итак, существуют обработки 1С встроенные в конфигурацию и внешние обработки 1С.

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

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

В конфигураторе встроенные в конфигурацию обработки 1С находятся в ветке Обработки.

Внешние обработки 1С открываются и в конфигураторе и в Предприятии с помощью меню Файл/Открыть.

Безопасность. Обратите внимание на порядок выполнения модулей. Модуль объекта обработки 1С выполняется автоматически при открытии обработки 1С в режиме Предприятия. Поэтому, если Вы открываете обработку написанную злоумышленником – она может быть выполнена автоматически без лишних вопросов.

Как сделать обработку 1С самостоятельно

Итак, приступаем к самому интересному – алгоритм создания обработки 1С самостоятельно с нуля.

  • Заходим в конфигуратор
  • Если Вам нужно создать обработку, встроенную в конфигурацию – нажмите правой кнопкой мыши на ветке Обработки и выберите Добавить
  • Если Вам нужно создать внешнюю обработку, выберите Файл/Новый, в списке вариантов файлов выберите Обработка
  • Перед Вами открыт редактор обработки 1С. Две основные детали обработки 1С – это форма и модуль обработки 1С. В зависимости от предназначения этой конкретной обработки 1С, у нее может не быть или формы (если она используется как класс с функциями) или модуля (если она используется как интерфейсное окно, например, рабочий стол пользователя)
  • Добавим несколько реквизитов. Они нам потребуются для размещения на форме нескольких полей
  • Добавим форму. Если Вы работаете в конфигурации для толстого клиента – 1С создаст по умолчанию обычную форму, иначе – управляемую
  • Добавим на форму несколько полей и кнопку. Пример, как это сделать можно посмотреть в уроке по выгрузке файла из 1С
  • В модуле обработки 1С добавим пару функций. Вот так выглядит функция, которую можно будет вызывать позже извне обработки 1С (используя ее как «класс»). Публичные функции (которые будут видны извне обработки 1С) должны быть помечены как Экспорт

    Пример дальнейшего использования обработки 1С как класс:
    обСозданиеДокументов = Обработки.СозданиеДокументов.СоздатьОбработку(); //создаем экземпляр класса, конструктор выполняется неявно с помощью автозапуска, см . далее
    обСозданиеДокументов.СоздатьДокументы(); //вызываем метод
  • Строки кода, указанные в конце модуля объекта обработки 1С будут выполнены автоматически. Их обычно используют как неявный конструктор, инициализируя нужные переменные. Подробную информацию можно посмотреть в уроке про модуль 1С
Последовательный порт на практике служит для подключения к компьютеру считывателей штрих-кодов, электронных весов, а также другого внешнего оборудования. Статья описывает работу с последовательным портом в 1С:Предприятие 7.7 и 8.0. Приведен пример исходного кода внешней компоненты (Delphi 6), которая заменяет типовую компоненту scanopos.dll, и умеет работать с двумя или более сканерами. Автор статьи: romix | Редакторы: Волшебник, Vovan58
Последняя редакция №14 от 06.02.07 |

Ключевые слова: последовательный порт, COM, RS232, четность, кабель, сканер, RS-232, асинхронный, USB, ОбработкаВнешнегоСобытия, внешняя компонента, Delphi, scanopos.dll, TThread, торговое оборудование, связь
Интерфейс RS-232 был разработан в 1969 году рядом крупных промышленных корпораций и опубликован Ассоциацией электронной промышленности США (Electronic Industries Association — EIA). .

Приобретение правильного сканера

Меня очень часто спрашивают: почему не работает сканер штрихкодов в 1С.
Штрихкодовые сканеры различаются интерфейсом подключения. В частности, сканеры USB могут имитировать клавиатуру (это проявляется тем, что штрихкод считывается в блокноте), имитировать интерфейс RS-232 или работать по USB без имитации чего-либо. Все три варианта часто различаются шнуром, который реализует тот или иной интерфейс.
Для 1С наименее всего подходят клавиатурные сканеры: считанный штрихкод не попадет в процедуру ОбработкаВнешнегоСобытия. Поэтому, если есть такая возможность, лучше заменить такой сканер на RS-232 или USB (имитация RS-232). См. также раздел «Поддержка сканеров с клавиатурным интерфейсом» в конце этой статьи. О подключения сканера штрих-кода через COM-порт.
Существуют и более старые (не USB) варианты сканеров, которые подключаются «в разрыв клавиатуры».
Напишу еще раз: приобретения клавиатурных или имитирующих клавиатуру сканеров для работы в 1С следует избегать.

Эмуляция COM-порта при наличии USB-соединения

Имеется возможность представить порт USB «под именем» свободного COM-порта, например, при помощи драйвера (FTDI), и работать с ним как с новым COM-портом.

Стандартные установки последовательного порта

При экспериментах я устанавливал следующие (стандартные) настройки порта: скорость 9600 бит/с, 1 стоповый бит, нет контроля четности, 8 бит/байт). Для своих опытов я использовал кабель для соединения портов COM1 и COM2. Вы можете спаять такой кабель по схеме), или приобрести его на рынке примерно за 70 рублей.

Чувствительность к «горячему» подключению

Следует отметить, что COM и LPT-порты чувствительны к «горячему» подключению — соединяя включенные устройства, вы можете спалить порты (или что-то еще). Поэтому перед подключением устройства я рекомендую отключать их от сети питания, и только потом их выполнять их электрическое соединение.
USB этим недостатком не страдает, и дозволяет «горячее» подключение устройств.

Посылка тестовых данных в COM-порт

Имея тестовый кабель, вы уже можете экспериментировать с внешними компонентами для 1С:Предприятие.
Посылку тестовых данных в порт я производил из пакетного (.BAT) файла MS-DOS. Содержимое моего файла test.bat:
mode com2 baud=9600 parity=n data=8 stop=1 type c:\test.txt >com2
В файле c:\test.txt введите несколько символов (например, 1234567890) и завершите — обязательно! — их символом перевода строки (нажатием Enter).
Программа, подключенная к другому концу кабеля, может быть тестовой программой TestComPort.exe (скачайте комплект, приведенный в конце статьи; в программе надо выбрать порт — в данном случае COM1, нажать Открыть, и уже можно посылать в нее символы при помощи BAT-файла, в большом окне вы увидите принятые текстовые строки), конфигурацией для 1С:Предприятие, приложенной в этом же архиве, или стандартной конфигурацией наподобие «1С:Торговля и Склад», где активизирована работа со сканером, подключенным в последовательный порт (внешняя компонента scanopos.dll).

Получение внешнего события в 1С:Предприятие

Внешнее событие, например, со сканера, с другого внешнего оборудования, или просто сгенерированное программно, приходит в 1С (как 7.7, так и 8.0) в предопределенную процедуру
ОбработкаВнешнегоСобытия().
/////////////////////////////////////////////////////////////////////// Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)//Предопределенная процедура 1С //Глобальный обработчик внешнего события Сообщить(«Внешнее событие: Источник=»+Источник+» Событие=»+Событие+» Данные=»+Данные); КонецПроцедуры
Эта процедура может располагаться в глобальном модуле или модуле формы 1С:Предприятие 7.7 или 8.0. Процедура принимает три входящих параметра: Источник, Событие и Данные. Это три текстовые строки, которые могут принимать произвольные значения — в качестве Источника можно установить имя внешней компоненты, в качестве события — строку-идентификатор события, например, «BarCodeValue», а в качестве данных — данные от устройства, например, считанный штрихкод.

Инициализация внешней компоненты

Код процедуры ПриНачалеРаботыСистемы() в тестовой конфигурации выглядит следующим образом:
/////////////////////////////////////////////////////////////////////// Процедура ПриНачалеРаботыСистемы() //Предопределенная процедура 1С ок=1; Если глЗагрузитьВнешнююКомпоненту(«vk_rs232»)=0 Тогда Сообщить(«Внешняя компонента не была загружена!»,»!»); Иначе rs232=СоздатьОбъект(«AddIn.vk_rs232»); КонецЕсли; ИмяПорта=»»+Константа.ComPort; Сообщить(«Константа.ComPort: «+ИмяПорта); Сообщить(«При считывании кода, который завершается символами #13#10, здесь должны появляться считанные строки.»); //Начинаем слушать порт rs232.ОткрытьПорт(ИмяПорта); КонецПроцедуры
Первый запуск конфигурации необходимо производить под правами администратора или привилегированного пользователя Windows. Это необходимо для любых внешних компонент или OLE-объектов, чтобы компонента (DLL) могла «прописать» себя в системный реестр Windows.

Пример работы с COM-портом

Рассмотренные ниже примеры работы с последовательным (COM-) портом будут использовать средства Windows API (системные функции CreateFile и т.д.). Для компиляции примеров потребуется Delphi версии 6 (впрочем, вы легко сможете переделать примеры под любой язык программирования, который поддерживает вызовы Windows API).
В конце статьи приведена ссылка, по которой вы можете скачать работающие примеры кода внешней компоненты (vk_rs232.dll) и упрощенного тестового примера (TestComPort.exe, который содержит 120 строк тестового кода). Рассмотренная в качестве примера внешняя компонента для 1С:Предприятие
умеет читать текстовые строки из последовательного порта, и представлять их как событие считывания штрихкода «BarCodeValue». Поэтому компоненту можно без изменений использовать, например, в конфигурации «Торговля и Склад» в качестве замены для штатной компоненты для считывания штрихкодов. Также компонента умеет записывать «встречные» данные в последовательный порт, если это необходимо для работы с устройствами (для сканеров штрих-кодов это не нужно).
Пример расчитан на передачу в устройство или из устройства текстовых строк, разделенных символами 13,10, что характерно, например, для сканеров штрихкодов. Я использую фиксированные настройки (скорость — 9600, один стоп-бит, без бита четности, 8 бит в одном байте), а также фиксированные настройки таймаута (чтение «отваливается» через относительно короткий промежуток времени, чтобы избежать зависания). Вы можете переделать эти умолчания под ваше оборудование и требования к программному обеспечению.

Настройка сканера

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

Общая идеология работы с RS-232 в системе Windows

В MS-DOS (и ранних версиях Windows, включая 95 и 98), работа с последовательными портами часто производилась напрямую через порты ввода-вывода командами Ассемблера IN и OUT. Этот способ не поддерживают современные операционные системы, начиная с Windows NT. В них остается (надо сказать, довольно древняя) возможность работы с этими портами как с файлами.
Например, достаточно открыть файл с именем «COM1», чтобы можно было писать в него данные для внешнего устройства, и читать из него данные от этого устройства (входной и выходной поток данных не пересекаются).
hCom:=CreateFile(«COM2», … ); ok:=WriteFile( //uses Windows hCom, //Файл Buff, //Буфер откуда пишем nBytes, //Число байтов для считывания wr_cnt, //Число записанных байтов nil ); ok:=ReadFile( //uses Windows hCom, //Файл Buff, //Буфер куда считываем 100, //Число байтов для считывания rd_cnt, //Число считанных байтов nil ); CloseHandle(hCom);
Настройки параметров и таймаутов COM-порта производятся при помощи функций SetCommState и SetCommTimeOuts соответственно. Ссылка на работающий пример кода, который показывает эту идею более развернуто, приведена в конце статьи.
Конечно, есть возможность работать с COM-портом и «более простыми средствами» — вплоть до открытия файла с именем «COM2», записи строк в этот файл и чтения встречных данных от устройства из этого же файла.
Внешняя компонента, по сравнению с этим «простым» решением, добавляет возможность генерировать события считывания данных (например, штрихкодов со сканера) в асинхронном режиме, когда 1С не «замирает» до очередного считывания штрихкода, и не «крутится» в бесконечном цикле чтения, а получает внешние события, и реагирует на них в предопределенной процедуре ОбработкаВнешнегоСобытия(). Это удобно для пользователя, и не заставляет его нажимать на клавиатуре лишние клавиши перед считыванием штрихкода.

MSDN

В качестве официальной справки по различным функциям Windows используйте MSDN, который можно приобрести на DVD или на 3-х CD. В качестве «источника и составной части» он входит в комплект средств разработки от Microsoft, или приобретается отдельно. Кроме того, MSDN выложен в интернете, и как правило, находится в первых строках запросов в поисковике Google по контрастному запросу наподобие «SetCommState».

Поддержка двух или более сканеров (08.03.2006)

Компонента теперь использует потоки (объект TThread) вместо таймера. Компонента содержит тестовый пример для работы с двумя объектами (например, двумя сканерами).

Настройка конца строки (12.07.2006)

Компонента понимает свойство КонецСтроки (в англоязычном написании — EOL).
По умолчанию — Симв(13)+Симв(10) в качестве последовательности, которая отделяет один штрихкод от другого.

Поддержка сканеров с клавиатурным интерфейсом (20.09.2006)

Компонента поддерживает перехват событий клавиатуры.
rs232.ПерехватКлавиатуры(1);
Это позволяет использовать сканеры с клавиатурным интерфейсом. Однако, нажатия на клавиши не подавляются. Строка очищается при каждой паузе между нажатиями на клавиши длительностью более 1 секунды. Событие генерируется по нажатию на клавишу Enter.
(есть другой способ подключения сканера штрих-кода в разрыв клавиатуры.

Глубина буфера событий

Компонента позволяет выставить глубину буфера событий (свойство ГлубинаБуфераСобытий).
Это значит, что если компьютер занят рассчетами, а в это время приходят новые события, то они будут накапливаться только в пределах этого буфера (последующие события будут потеряны).
iEvent := nil;
pConnection.QueryInterface(IID_IAsyncEvent,iEvent);
iEvent.SetEventBufferDepth(300); //глубина буфера событий

Мы рассмотрели работу с последовательным портом RS-232 из 1С:Предприятие. Различие между версиями 1С:Предприятие 7.7 и 8.0 в данном случае несущественно — внешние компоненты совместимы и могут использоваться в обеих версиях системы. Вы можете посылать данные в порт или считывать их из порта, чтобы управлять внешним устройством или принимать данные от него по протоколу RS-232. При помощи тестового кабеля, который соединяет два COM-порта, вы можете имитировать работу с оборудованием, даже не имея самого устройства в наличии.

Печать (Ctrl+P)

Отчеты и обработки

Любая система автоматизации учета только тогда выполняет свои функции, когда она имеет средства обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. Как правило, для решения подобных задач в системе автоматизации учета существует возможность формирования отчетов. Конфигуратор позволяет формировать набор различных отчетов, достаточных для удовлетворения потребности пользователей системы в достоверной и подробной выходной информации.
Для получения отчетной информации в системе «1С:Предприятие» используются объекты конфигурации, расположенные в ветви Отчеты дерева конфигурации. Каждый объект этого типа может содержать алгоритм формирования «бумажного» или «электронного» отчета на внутреннем языке системы «1С:Предприятие» или схему компоновки данных, на основании которой система «1С:Предприятие» может автоматически выполнить отчет . Отчет может содержать одну или несколько форм, с помощью которых, при необходимости, можно организовать ввод каких-либо параметров, влияющих на ход алгоритма. Для вывода результатов выполнения алгоритма на экран и принтер отчет может иметь созданные с помощью конструктора макетов описания печатных форм (макеты).
Редактирование свойств объектов типа Отчет и Обработка и создание подчиненных объектов выполняются в окне редактирования.
Для выполнения различных действий над информацией в системе «1С:Предприятие» используются объекты конфигурации, расположенные в ветви Обработки дерева конфигурации. Например, с их помощью можно выполнять удаление из системы устаревших данных, импорт информации из других систем и многое другое. Характер выполняемых в этом случае действий отражает название объекта конфигурации – Обработка, так как в результате информация, хранящаяся в системе, претерпевает какие-либо изменения.
Обработка может содержать одну или несколько форм, с помощью которых, при необходимости, можно организовать ввод каких-либо параметров, влияющих на ход алгоритма. Вывод результатов выполнения алгоритма на экран и принтер осуществляется с помощью конструктора макетов описания печатных форм (макеты).
Основное отличие отчета от обработки заключается в возможности использования схемы компоновки данных. В остальном обработка не отличается от отчета.
Существует возможность для нескольких (или всех) отчетов прикладного решения использовать единые формы отчета, настроек или варианта отчета.
Для этого необходимо использовать общие формы. В общем случае можно выделить следующие варианты использования:
● Для всех отчетов прикладного решения используется единый набор форм работы с отчетами. В этом случае нужно создать необходимые формы и указать их в свойствах конфигурации (см. здесь). Тогда в самих отчетах формы разрабатывать не нужно, т. к. будут использоваться общие формы.
● Можно выделить наборы отчетов, для каждого из которых необходимо разработать свои формы работы с отчетом. В этом случае создаются общие формы работы с отчетами, которые указываются для каждого отчета «своей» группы. Так можно сделать особый набор форм, например, для бухгалтерских отчетов или для отчетов аналитиков.
Примечание. Если у нескольких отчетов в качестве основной формы указана одна общая форма, то в толстом клиенте (в обычном режиме) одновременно можно будет открыть только один из этих отчетов.
Если в форме отчета используется стандартная команда Открыть новое окно, то следует помнить о том, что в новое окно не передаются те параметры, которые были переданы в форму, из которой использована стандартная команда.

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

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

Внешним отчетом в системе «1С:Предприятие» называется отчет, хранящийся вне конфигурации, в отдельном файле внешнего отчета. Внешний отчет
служит для решения тех же задач, что и объекты конфигурации типа Отчет.
Основное назначение внешнего обработки (отчета) заключается в возможности реализовывать, поставлять и обновлять некоторые возможности отдельно от конфигурации.
Внешние обработки и отчеты могут храниться в двух разных форматах:
● Двоичные файлы, имеющие расширение .epf и .erf соответственно. Эти файлы могут использоваться как для редактирования в конфигураторе, так и для использования в режиме 1С:Предприятия. Имеется возможность разработки и отладки в процессе работы системы «1С:Предприятие». В этом случае разработка и отладка обработки (отчета) значительно ускоряются: редактирование и сохранение внешней обработки (отчета) выполняются в режиме Конфигуратор, без сохранения конфигурации в целом, а запуск – в режиме 1С:Предприятие. Для выполнения внешняя обработка (отчет) загружается при помощи пункта Файл – Открыть и работает так же, как и любая другая обработка (отчет) конфигурации.
● XML-файлы в формате, соответствующим файлам, которые используются при выгрузке/загрузке конфигурации в файлы. При использовании этого формата поддерживается только редактирование внешней обработки (отчета) в режиме Конфигуратора. Для использования в режиме 1С:Предприятия внешнюю обработку (отчет) необходимо сохранить в двоичном формате .erf/.epf. Для работы используется формат версии
2.0.
ПРИМЕЧАНИЕ. Внешняя обработка (отчет), открываемые с помощью меню Файл – Открыть, будут исполняться в безопасном режиме, если у пользователя отсутствуют административные права доступа.

Любой объект конфигурации типа Обработка или Отчет может быть сохранен в файл внешней обработки (отчета), и наоборот – существующий объект конфигурации может быть заменен внешней обработкой (отчетом). Для внешней обработки (отчета) может быть создана справочная информация, как и для других объектов конфигурации.
СОВЕТ. Для обеспечения целостности конфигурации внешние обработки (отчеты) рекомендуется использовать в основном в отладочных целях.
После отладки алгоритма формирования обработки (отчета) необходимо включить внешнюю обработку в конфигурацию.
Сохранение внешней обработки (отчета) в XML-формате можно использовать в том случае, если предполагается хранить эту обработку (отчет) во внешней системе контроля версий. XML-формат для этого более удобен, чем двоичный формат .epf (.erf). Конфигуратор позволяет открывать для редактирования внешние обработки (отчеты) в любом формате. При этом запись по умолчанию выполняется ровно в том же формате, в котором внешняя обработка (отчет) была открыта в конфигураторе. Для смены формата хранения необходимо выполнить команду Файл – Сохранить как… или
Файл – Сохранить копию… и в открывшемся диалоге выбрать нужный формат сохранения.

Создание внешней обработки (отчета)

Для создания внешней обработки (отчета) необходимо выбрать пункт Файл – Новый и в выданном на экран запросе выбрать строку Внешняя обработка или Внешний отчет.

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

Использование внешних обработок (отчетов)

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

АдресХранилища = «”;
Результат = ПоместитьФайл(АдресХранилища, «ВнешОбработка.epf”, , Ложь);

// На сервере подключаем обработку из созданного ранее
// временного хранилища.
ИмяОбработки = ВнешниеОбработки.Подключить(АдресВременногоХранилища);
В переменную ИмяОбработки будет помещено имя внешней обработки, которое в дальнейшем будет использоваться для обращения к подключенной
внешней обработке. Например, при открытии формы обработки:

// Откроем форму подключенной внешней обработки
ОткрытьФорму(«ВнешняяОбработка.”+ ИмяОбработки +”.Форма”);

Внешняя обработка (отчет) может быть подключена в безопасном режиме (см. здесь). Для этого следует использовать параметр БезопасныйРежим методов подключения Подключить() и Создать(). Режим подключения внешней обработки (отчета) будет зависеть от значения этого параметра:
● Параметр имеет значение Истина: внешняя обработка (отчет) подключаются в безопасном режиме;
● Параметр имеет значение Ложь: внешняя обработка (отчет) подключаются в не безопасном (опасном) режиме;
● В качестве значения параметра указано имя профиля безопасности :
● Имя не указано: внешняя обработка (отчет) подключается в безопасном режиме;
● Имя профиля указано, и для этого профиля параметр Профиль безопасности безопасного режима установлен в значение Истина: внешняя обработка (отчет) будет подключена, но работать будет под управлением профиля безопасности с указанным именем;
● Имя профиля указано, и для этого профиля параметр Профиль безопасности безопасного режима установлен в значение Ложь: внешняя обработка (отчет) будет подключена, но работать будет под управлением профиля безопасности по умолчанию;
● Профиль безопасности с указанным именем отсутствует на сервере «1С:Предприятия»: внешняя обработка (отчет) подключается в безопасном режиме.

Для программной работы внешняя обработка (отчет) может быть расположена:

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

ПРИМЕЧАНИЕ. При работе внешних обработок (отчетов) в толстом клиенте следует учитывать, что при работе в режиме управляемого приложения
возможно открытие только управляемых форм, при работе в обычном режиме – только обычных форм.
При использовании внешних обработок (отчетов) нужно иметь в виду следующие особенности:

● если подключена новая обработка (отчет) с таким же именем, как и подключенная обработка (отчет), то открытые формы от «старой» обработки
(отчета) перестают работать (генерируется ошибка);
● при подключении внешней обработки (отчета), если подключаемая обработка (отчет) двоично идентична уже подключенной и совпадает признак безопасного режима, реального переподключения не происходит, ошибки при этом не выдается. В противном случае ранее подключенная внешняя обработка (отчет) отключается и выполняется новое подключение внешней обработки (отчета);
● при выполнении метода Создать(), параметр метода БезопасныйРежим игнорируется, если ранее было выполнено подключение внешней обработки
(отчета) с помощью метода Подключить(). Если подключение ранее не выполнялось, то будет выполнено подключение внешней обработки (отчета) с
использованием параметра БезопасныйРежим из метода Создать();
● при получении формы для внешней обработки (отчета) будет найдена открытая форма независимо от того, открыта она для подключенной сейчас
обработки или для той, которая была подключена ранее (с тем же именем);
● при открытии обработки (отчета) с помощью команды главного меню Файл – Открыть, форма обработки (отчета) открывается методом ОткрытьФорму() с параметром Уникальность, равным значению Истина, чтобы можно было открыть новую форму обработки в случае ее изменения.
● если явно не указано, то все вышеописанные особенности в равной степени применяются как для внешней обработки (отчета) открытой интерактивно, так и программно.

Редактирование внешней обработки (отчета)

Редактирование внешней обработки (отчета) выполняется в конфигураторе. Чтобы открыть существующую внешнюю обработку (отчет), следует выбрать пункт Файл – Открыть. В выданном на экран стандартном диалоге выбрать тип файла, соответствующий формату сохранения внешней обработки (отчета) и указать имя открываемого файла.
При открытии внешней обработки (отчета) в конфигураторе автоматически открывается окно редактирования объекта. В отличие от других объектов конфигурации, отладка внешней обработки (отчета) может производиться без перезапуска системы «1С:Предприятие». Достаточно после сохранения обработки (отчета) конфигуратором заново вызвать ее на выполнение в режиме 1С:Предприятие (только для обработки (отчета), сохраненной в формате .epf/.erf).
В диалоге редактирования внешней обработки (отчета) имеется возможность сделать копию внешней обработки (отчета) не изменяя собственно редактируемый объект. Для этого необходимо выполнить команды Действия – Выгрузить в файлы. При этом кроме создания копии внешней обработки (отчета) имеет возможность выбрать формат выгрузки. Во время этой операции система по умолчанию предлагает формат выгрузки,
отличный от текущего формата. Т.е. если редактируется внешняя обработка (отчет) в формате .epf/.erf, то будет предложен формат XML и наоборот.
Имеется возможность заместить редактируемую внешнюю обработку (отчет) на другую внешнюю обработку (отчет), которая находится в файле (в любом из поддерживаемых форматов).
При выгрузке/загрузки внешней обработки (отчета) в/из файла предоставляется возможность изменять вид объекта, не меняя его у редактируемого объекта. Например, можно выгрузить редактируемую внешнюю обработку как внешний отчет или наоборот, при этом редактируемый объект останется того вида, каким он был до выполнения операции.

Справочная информация

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

Внешние обработки (отчеты) и объекты конфигурации

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

Копирование обработки (отчета) во внешнюю обработку (отчет)

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

Замена обработки (отчета) на внешнюю обработку (отчет)

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

Добавление внешней обработки (отчета) в структуру конфигурации

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

Сравнение и объединение внешних обработок (отчетов)

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

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

Печать (Ctrl+P)

1С:Предприятие 8.3.14. Документация
Глава 7. Формы

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

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

● имеется справочник Товары с иерархией групп и элементов;

● имеется справочник Аналоги с реквизитом ВыбранныйТовар типа СправочникСсылка.Товары;

● оба справочника имеют формы элементов.

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

● как происходит использование стандартных параметров формы;

● каким образом их использует сама система;

● как их может использовать разработчик.

Добавим дополнительный параметр, который будет управлять закрытием формы выбора после выбора элемента. Назовем этот параметр ЗакрыватьПослеВыбора (тип Булево). Добавим его в качестве параметра формы ФормаВыбора справочника Товары.

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

&НаКлиенте
Процедура ВыбранныйТоварНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить(«РежимВыбора», Истина);
СтруктураПараметров.Вставить(«ВыборГруппИЭлементов», ИспользованиеГруппИЭлементов.Элементы);
СтруктураПараметров.Вставить(«РазрешитьВыборКорня», Ложь);
СтруктураПараметров.Вставить(«ТекущаяСтрока», Объект.ВыбранныйТовар);
СтруктураПараметров.Вставить(«ЗакрыватьПослеВыбора», Ложь);
ОткрытьФорму(«Справочник.Товары.ФормаВыбора», СтруктураПараметров, Элементы.ВыбранныйТовар);
КонецПроцедуры

Следует отдельно остановиться на третьем параметре метода ОткрытьФорму(). Этот параметр определяет, кто будет владельцем формы выбора и кому будет приходить оповещение о сделанном выборе. В данном случае мы указали владельцем формы выбора сам элемент формы, но также мы можем указать этим параметром и саму форму. В этом случае будет необходимо реализовывать обработчик ОбработкаВыбора модуля формы и в нем решать, в какой реквизит формы помещать выбранные данные.

ПРИМЕЧАНИЕ. Если мы не будем реализовывать обработчик события НачалоВыбора, то его действия выполнит сама система. Это справедливо и для всех дальнейших обработчиков, которые использованы в примере.

Теперь необходимо обработать переданные параметры в форме выбора. Сделаем это в обработчике ПриСозданииНаСервере() модуля формы выбора.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов;
Элементы.Список.РазрешитьВыборКорня = Параметры.РазрешитьВыборКорня;
Элементы.Список.ТекущаяСтрока = Параметры.ТекущаяСтрока;
ЗакрыватьПриВыборе = Параметры.ЗакрыватьПослеВыбора;
КонецПроцедуры

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

ПРИМЕЧАНИЕ. Если у таблицы Список, отображающей список товаров, свойство РежимВыбора не будет установлено в значение Истина, то выбор товаров будет недоступен.

Теперь нам необходимо обработать выбор желаемого элемента в форме выбора. Для этого нужно определить обработчик события ВыборЗначения таблицы формы.

&НаКлиенте Процедура СписокВыборЗначения(Элемент, СтандартнаяОбработка, Значение) СтандартнаяОбработка = Ложь; ОповеститьОВыборе(Значение); КонецПроцедуры

Нам осталось реализовать обработку выбора элемента в самом поле ввода. Для этого необходимо обработать событие ОбработкаВыбора нашего поля ввода ВыбранныйТовар.

Мы самостоятельно реализовали системный механизм выбора значения в поле ввода на форме.

&НаКлиенте
Процедура СписокВыборЗначения(Элемент, СтандартнаяОбработка, Значение)
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(Значение);
КонецПроцедуры

ВНИМАНИЕ! Данный пример не является законченным. Его единственным назначением является демонстрация механизмов работы с параметрами формы.

Если при создании параметров (обработчик ВыбранныйТоварНачалоВыбора()) заменить строку:

ПараметрыВыбора.Вставить(«ЗакрыватьПослеВыбора», Истина);

на строку:

ПараметрыВыбора.Вставить(«ЗакрыватьПослеВыбора», Ложь);

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *