Руководства, Инструкции, Бланки

создание внешней обработки 1с 8.3 управляемое приложение инструкция img-1

создание внешней обработки 1с 8.3 управляемое приложение инструкция

Категория: Инструкции

Описание

Обработка заполнения табличной части в 1С 8

Обработка заполнения табличной части 1С 8.3 управляемые формы на примере

Здесь мы научимся создавать внешнюю обработку заполнения табличной части документа в 1С 8.3 (для управляемых форм) с нуля. Рассмотренный пример обработки можно скачать по ссылке .

Возьмем самой простой пример: в табличной части «Материалы» документа «Требование-накладная » присвоим во всех строках количеству значение равное 100.

Подготовка внешней обработки в 1С 8.3

Итак, создаем внешнюю обработку. Сохраняем ее на диск.

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

По кнопке «Действия» переходим в модель объекта, где и создаем функцию:

Поговорим немного о значении полей.

Вид — в зависимости то предназначения обработки может принимать значения:

  • Отчет
  • ЗаполнениеОбъекта
  • Печатная форма
  • Дополнительная обработка
  • СозданиеСвязанныхОбъектов
  • Дополнительный отчет

В нашем случае, для обработки заполнения табличной части, нам необходим вид обработки «ЗаполнениеОбъекта»

Назначение — в этом поле перечисляются документы, для которых эта обработка предназначена (в которых она появится после регистрации в информационной базе). Для перечисления этих документов создадим массив «Назначения» и добавим в него документ «ТребованиеНакладная».

Наименование — это наименование будет отображаться в списке дополнительных обработок.

Версия — версия нашего нового программного продукта.

Информация — этот ключ нашей структуры содержит дополнительную информацию о нашей обработке.

Безопасный режим — принимает значение Истина/Ложь. Мы будем использовать безопасный режим.

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

Немного подробнее остановимся на полях таблицы значений команд.

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

Идентификатор — это внутренний идентификатор команды в пределах нашей обработки

Использование — в зависимости от использования команды может принимать значения:

  • ВызовСерверногоМетода — из модуля обработки вызывается серверная процедура
  • ОткрытиеФормы — используется для открытия формы обработки
  • ВызовКлиентского метода — для вызова клиентской процедуры из модуля обработки
  • СценарийвБезопасномРежиме — серверная процедура в безопасном режиме

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

Получите 267 видеоуроков по 1С бесплатно:

ПоказыватьОповещение — имеет одно из двух значений: Истина/Ложь
Модификатор — дополнительный модификатор команды. Итоговый листинг нашей обработки в модуле объекта приобретает следующий вид:

Создание команды для заполнения табличной части

В поле Форма обработки нажмем линзу, чтобы создать форму:

В форме добавим команду ВыполнитьКоманду

В теле обработки заполнение команды обратимся к данным формы через ВладелецФормы и изменим значение количества в табличной части материалов:

Регистрация внешней обработки в 1С 8.3 и её проверка

Теперь в режиме предприятия 1С зарегистрируем нашу внешнюю обработку для заполнения табличной части:

В списке внешних обработок нажмем кнопку Создать:

В открывшемся бланке новой внешней обработки загрузим из файла внешнюю обработку и впоследствии запишем новую обработку:

Теперь в документе «Требование-накладная» мы можем наблюдать результат регистрации нашей обработки в информационной базе. А по нажатию кнопки «Заполнить документ» можем наблюдать работу нашей обработки по заполнению табличной части.

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00 .

Это будет вам интересно:

Другие статьи

1С обработка табличной части 8

1С обработка табличной части 8.3 с возможностью отладки, скачать

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

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

Но давайте все по порядку, пройдем весь путь от создания до ввода в работу…

Создание обработки табличной части 1С и описание необходимых сведений

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

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

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

Функция СведенияОВнешнейОбработке() в модуле объекта

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

При выполнении команды проверим идентификатор формы и поскольку операция меняет данные, то перед выполнением обработки табличной части зададим вопрос о целесообразности этой процедуры (а то может быть пользователь случайно активировал команду):

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

Всё! Обработка табличной части 1С готова, давайте её тестировать.

Тестирование 1С обработки табличной части

1. Запустим обработку в режиме отладки через Файл-Открыть… В модуле формы ставим точку останова на строчке серверной процедуры ЗаполнитьТЧСервер(). Запускаем обработку на выполнение через команду на форме «Команда 1».

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

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

В реквизите «Размещение» указываем тип изменяемого объекта (в нашем примере это справочник «Спецификации»). Нажимаем записать и закрыть. После этого в форме справочника «Спецификации» появится кнопка «Заполнить» и в ней команда — «Обработка табличной части Состав у справочника Спецификации». При выполнении команды табличная часть «Состав» в форме справочника «Спецификации» очистится. А это значит, что наша 1С обработка табличной части 8.3 отработала корректно.

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

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

Желаю удачи и хорошего настроения!

1С обработка табличной части 8.3 с возможностью отладки, скачать

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

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

Создание внешней обработки в 1С Предприятие 8.2, 8.3

Сам процесс прграммирования в 1С Предприятие ничем не отличается от программирования в других языках ООП.

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

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

Все настройки пользователей 1С хранит в своей ИБ, следовательно очистить настройки можно только в БД.

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

Подробное описание процесса создания внешней обработки в 1С Предприятие 8.2, 8.3 и исходник обработки можно скачать тут: http://master-it.biz/reset-setting-users-1c.html

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

Пример создания обработки для управляемого интерфейса

Пример создания обработки для управляемого интерфейса

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

Для экспериментов возьмем конфигурацию «Бухгалтерия Предприятия 3.0», как довольно актуальную нынче тему :)

Делать будем наипростейшую вещь: заполнение регистра сведений «Счета учета расчетов с контрагентами» значениями по умолчанию (обработка была актуальна еще на релизе 2.0, да и я думаю, будет актуальна, пока в конфигурациях 1С будет сохраняться механизм автоподстановки счетов расчетов)

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

Функция СведенияОВнешнейОбработке () Экспорт

РегистрационныеДанные = Новый Структура ();
РегистрационныеДанные. Вставить ( «Наименование». «Установка счетов учета расчетов с контрагентами» );
РегистрационныеДанные. Вставить ( «БезопасныйРежим». Истина );
РегистрационныеДанные. Вставить ( «Версия». «v 1.0» );
РегистрационныеДанные. Вставить ( «Информация». «Обработка для заполнения регистра сведений счетов учета расчетов с контрагентами» );
РегистрационныеДанные. Вставить ( «Вид». «ДополнительнаяОбработка» );

тз = Новый ТаблицаЗначений ;
тз. Колонки. Добавить ( «Идентификатор» );
тз. Колонки. Добавить ( «Использование» );
тз. Колонки. Добавить ( «Представление» );

НоваяСтрока = тз. Добавить ();
НоваяСтрока. Идентификатор = «ОткрытьОбработку» ;
НоваяСтрока. Использование = «ОткрытиеФормы» ;
НоваяСтрока. Представление = «Открыть обработку заполнения счетов учета расчетов» ;

РегистрационныеДанные. Вставить ( «Команды». тз );

Это самая важная часть для регистрации обработки в конфигурации. Без этой функции обработку можно будет вызвать только через меню Файл — Открыть.

Рассмотрим что здесь к чему.

Как говорилось в предыдущей записи на эту тему. функция формирует данные для записи нового элемента в справочник «ДополнительныеОтчетыИОбработки». Ключи формируемой структуры являются именами реквизитов нового элемента, значения — соответствующими значениями.

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

В одном из мест в модулях видно, что вместо ключа «ВариантЗапуска» (согласно реквизитам табличной части справочника) нужно использовать ключ «Использование»

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

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

Напоминаю, что кнопка командной панели будет не видна, пока ей не будет назначена соответствующая команда:

При создании команды формы, назначим ей новый обработчик — процедуру модуля формы (в нашем случае это будет процедура КомандаВыполнитьЗаписьДанных(Команда)

Листинг модуля формы для выполнения нужных действий (честно, раскрашивать до конца текст кода было жутко лениво)))):

// выполнение действий с объектами базы данных должно производиться на сервере
&НаСервере
Процедура ВыполнитьЗаписьДанныхНаСервере ()

Запрос = Новый Запрос ;
Запрос. Текст =
«ВЫБРАТЬ
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЭтоГруппа = ЛОЖЬ»;
тз = Запрос.Выполнить().Выгрузить();

Для Каждого СтрокаТаблицы Из тз Цикл

тКонтрагент = СтрокаТаблицы. Ссылка ;
Если тКонтрагент. ЭтоГруппа Тогда

КонецЕсли ;
МенеджерЗаписи = РегистрыСведений. СчетаУчетаРасчетовСКонтрагентами. СоздатьМенеджерЗаписи ();
МенеджерЗаписи. Контрагент = тКонтрагент ;
МенеджерЗаписи. Организация = Организация ;
МенеджерЗаписи. Прочитать ();
МенеджерЗаписи. Активность = Истина ;
МенеджерЗаписи. Организация = Организация ;
МенеджерЗаписи. Контрагент = тКонтрагент ;
МенеджерЗаписи. ВидРасчетовПоДоговору = Перечисления. ВидыРасчетовПоДоговорам. РасчетыВВалютеРегламентированногоУчета ;
МенеджерЗаписи. СчетУчетаАвансовВыданных = ПланыСчетов. Хозрасчетный. НайтиПоКоду («60.02»);
МенеджерЗаписи. СчетУчетаАвансовПолученных = ПланыСчетов. Хозрасчетный. НайтиПоКоду («62.02»);
МенеджерЗаписи. СчетУчетаРасчетовСПокупателем = ПланыСчетов. Хозрасчетный. НайтиПоКоду («62.01»);
МенеджерЗаписи. СчетУчетаРасчетовСПоставщиком = ПланыСчетов. Хозрасчетный. НайтиПоКоду («60.01»);
МенеджерЗаписи. Записать ( Истина );

// обработчик команды делает только одно действие:
// вызывает серверную процедуру обработки данных (выше по коду)
&НаКлиенте
Процедура КомандаВыполнитьЗаписьДанных ( Команда )

ВыполнитьЗаписьДанныхНаСервере ();
Предупреждение( «Обработка завершена!» );

Теперь идем в режим Предприятия, и добавляем обработку в список внешних обработок:

Что и как заполнять при привязке новой обработки:

Публикация должна быть установлена в «Использование», Размещение — указано в каком разделе (подсистеме) будет доступна обработка, Команда — заполняется по данным сведений о регистрации обработки из функции «СведенияОВнешнейОбработке()», раздел Дополнительная информация — оттуда же.

Остался один важный момент: в табличной части Команды есть колонка Быстрый доступ. Она определяет пользователей, которым будет доступен вызов обработки. Если в вашей базе нет пользователей, то выглядеть это будет примерно так:

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

Как это выглядит в использовании:

Собственно, сама обработка, для работы патологоанатомов и вивсекции:

Навигация по записям

Создание обработки 1С в управляемом приложении

Наряду с обычным режимом работы, в 1С:Предприятие версии 8.2 и 8.3 существует режим управляемого приложения, где используется механизм управляемых форм.

Чтобы создать обработку в управляемом приложении 1С, нужно вместо обычной формы создать управляемую. Покажем этапы создания обработки на примере простой задачи. Предположим, есть строка текста (поле «Текст»). По кнопке «Выполнить» нужно рассчитать её длину.

Первые 4 шага будут такими же, как при создании обычной обработки: http://life1c.ru/post/1687 .

1. Выбираем информационную базу из списка, заходим в режим конфигуратора 1С. В качестве базы будет выбрана демо база 1С:Бухгалтерия 3.0.


2. В конфигураторе выбираем пункт меню Файл – Новый…


3. Выбираем из списка вид объекта – Внешняя обработка.


4. Задаём имя обработки. В данном случае имя нашей обработки будет «РассчитатьДлинуСтроки».


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




6. Создаём пользовательскую форму обработки. Тип формы: Управляемая.



7. Определяем обработчик нажатия на кнопку «Выполнить» с помощью команд формы. Для этого добавляем новую команду и называем её «ДействиеВыполнить».


8. В модуле формы определяем соответствующую процедуру для исполнения. Для создания обработчика в сплывающем окне выбираем пункт «Создать на клиенте».



9. Прописываем соответствующий код для управляемого приложения.


10. На форме создаём кнопку «Выполнить» для команды формы «ДействиеВыполнить».




11. Сохраняем файл обработки на диске.


12. Заходим в режим управляемого приложения 1С:Предприятие. Для примера работоспособности внешней обработки будем использовать демо базу 1С:Бухгалтерия 3.0 с интерфейсом «Такси».


13. Открываем обработку созданную нами обработку. Выбираем пункт меню Файл – Открыть…


14. В управляемой форме обработки набираем произвольное сообщение в поле «Текст» и нажимаем кнопку «Выполнить». Внизу окна появится результат выполнения обработки – количество символов написанного сообщения.


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

Пример готовой внешней обработки можно скачать ниже по ссылке .

P.S. Остались вопросы? Спрашивайте в комментариях!

Нравится статья? Подпишитесь прямо сейчас и получайте обновления на свой E-Mail: