1с выполнить процедуру другой формы

Вызов процедуры модуля формы

Здравствуйте. Заранее спасибо. Программно создается новый документ
НовДок = Документы. СоздатьДокумент();
.
НовДок.Записать(РежимЗаписиДокументов.Проведение);

И вот здесь необходимо вызвать процедуру модуля формы этого документа. Можно ли это сделать вообще?

Если стоит формекс, то можно поступить вот так:

оСистема = СоздатьОбъект(«Система»);
Д = СоздатьОбъект(«Документ.ГТД»);
Пока Запрос.Группировка(1) = 1 Цикл
Д.НайтиДокумент(Запрос.ГТД);
ОткрытьФорму(Д.ТекущийДокумент(), Конт,0);
Конт.СуммаПеревозка = 0;
Сп = СоздатьОбъект(«СписокЗначений»);
Сп.ДобавитьЗначение(2);
Сервис.ВыполнитьПроцедуру(Конт, «ИзмСуммаУслуг», Сп);
оСистема.StartBatch(Конт);
Конт.Провести();
оСистема.EndBatch(Конт);
оСистема.ЗакрытьФорму(Конт);
КонецЦикла;

Если стоит формекс, то можно поступить вот так:

оСистема = СоздатьОбъект(«Система»);
Д = СоздатьОбъект(«Документ.ГТД»);
Пока Запрос.Группировка(1) = 1 Цикл
Д.НайтиДокумент(Запрос.ГТД);
ОткрытьФорму(Д.ТекущийДокумент(), Конт,0);
Конт.СуммаПеревозка = 0;
Сп = СоздатьОбъект(«СписокЗначений»);
Сп.ДобавитьЗначение(2);
Сервис.ВыполнитьПроцедуру(Конт, «ИзмСуммаУслуг», Сп);
оСистема.StartBatch(Конт);
Конт.Провести();
оСистема.EndBatch(Конт);
оСистема.ЗакрытьФорму(Конт);
КонецЦикла;

попробуйте после записи документа:

Однако, можно поступить как описано в (10) и (14), главное чтобы в самой процедуре не было обращения к элементам формы и т.п.

(15) главное чтобы в самой процедуре не было обращения к элементам формы и т.п.

интерес продолжился :), и я засунул код по созданию документа в обработку:

В документе в модуле формы пишу:

В итоге, выполняя обработку, получаю сообщения:

Номер из документа:000000007
Дата из документа: 20.01.2012 20:27:16
Дата из обработки: 20.01.2012 20:27:16

Источник

v8. Выполнить процедуру из формы документа, вызвав её из модуля документа

snfr1c 12.11.2010 14:51
Прочитано: 31096
00
Здравствуйте!
Подскажите, как выполнить процедуру или функцию из формы документа, вызвав её из модуля этого же документа?
Процедура в форме, например ПриИзмененииКонтрагента() Экспорт
при попытке выполнения ЭтотОбъект.ПриИзмененииКонтрагента() выдаётся ошибка «Метод не обнаружен»
Yandex
Возможно, вас также заинтересует
rekl150103
snfr1c 12.11.2010 15:18
Ответ № 1
00
Поясню. Обратится можно
Согласно 1С: «Можно ли обращаться к переменным, процедурам и функциям модуля снаружи объекта?

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

Например:
Код 1C v 8.х
После этого к таким переменным, процедурам и функциям можно обращаться так же, как и к системным свойствам и методам объектов.

Источник

Как выполнить экспортируемую процедуру объекта, находясь в его форме?

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

image001

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

Выполним контекстный серверный вызов. На сервере преобразуем основной реквизит формы в прикладной объект, выполним экспортируемую функцию этого объекта и преобразуем объект обратно в основной реквизит формы.

image002

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

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

Контекстная серверная функция ПересчитатьЦеныНаСервере() будет выглядеть следующим образом:

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

Источник

Процедуры в языке 1С 8.3, 8.2 (в примерах)

Как выполнить процедуру другой формы в 1С 8.3, 8.2

Вызываем процедуру другой формы

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

Процедуры в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

2017-12-18T22:02:53+00:00 Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

lessonСм. урок #1 для начинающих по процедурам в 1С
lessonСм. урок #2 для начинающих по процедурам в 1С
zipСкачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
videoСмотреть видео с демонстрацией выполнения кода

Полный синтаксис (нажмите, чтобы раскрыть)

Модуль объекта

Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.

У справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, планов обмена, бизнес-процессов и задач он называется Модуль объекта. У константы — Модуль менеджера значения. У последовательностей, регистров сведений, регистров накопления, регистров бухгалтерии, регистров расчета и перерасчетов — Модуль набора записей.

Чтобы открыть модуль объекта нужно в окне свойств объекта на закладке «Прочее» нажать кнопку «Модуль объекта»

%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C %D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0 1

Также модуль объекта можно открыть из контекстного меню объекта:

modul objekta

Или из меню Действия:

modul objekta 1

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

Все о компьютерных технологиях, игры, серверные и клиентские ОС, программы, железо и т.д.

Выбор, установка, настройка, решение проблем с операционными системами.

Опции форума:

Статистика раздела:

Все о компьютерных играх и вокруг них.

Опции форума:

Статистика раздела:

Delphi, CC++, Python, Assembler …

Опции форума:

Статистика раздела:

Программное обеспечение компьютеров.

Опции форума:

Статистика раздела:

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

Опции форума:

Статистика раздела:

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

Опции форума:

Статистика раздела:

Обсуждение цифровой видео и фото техники.

Опции форума:

Статистика раздела:

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

Опции форума:

Статистика раздела:

Поиск данных к старым программам и скриптам, не поддерживаемых разработчиками

Опции форума:

Статистика раздела:

Общие разговоры. Взлом и защита. Хак, трояны, вирусы и все остальное в мире андеграунда обсуждаем тут.

Опции форума:

Статистика раздела:

Обсуждение мобильных средств связи и операторов

Опции форума:

Статистика раздела:

Рингтоны, игры, музыка, картинки, обсуждения и ссылки

Опции форума:

Статистика раздела:

Процедура

Кто на сайте

birthdayСегодня день рождения у

forum statsСтатистика Forum.RuBoard.Ru – передовые новости it технологий

Приветствуем нового пользователя, Анна05

legendСписок иконок

Источник

Управляемые формы. Как программно выполнить процедуры и обработ. событий формы?

Здравствуйте Уважаемые коллеги. Столкнулся с задачей выполнить процедуру управляемой формы, но что-то как-то не получается.
Коротко: в УТ11 создается программно элементы справочника вид цен. И все бы хорошо, только вот этот вид цен работать не будет до тех пор, пока элемент не откроешь в программе вручную, а затем нажмешь «Записать и закрыть».
Объекты создаются на сервере.
Проверял в отладчике, события формы элемента естественно не выполняются(при создании и записи).
Пробывал создовать объекты на сервере, затем по ссылке открывать формы на клиенте, все равно обработчики событий не срабатывают!

&НаКлиенте
Процедура ЗагрузитьНаКлиенте()

Для Каждого Строка Из МассивСсылок Цикл

ПараметрыОткрытия = Новый Структура(«Ключ», Строка);

ФормаОбъекта = ПолучитьФорму(«Справочник.ВидыЦен.Форма.ФормаЭлемента», ПараметрыОткрытия);

ФормаОбъекта.Открыть();
//ОЗ = ДанныеФормыВЗначение(Объект, Тип(«Справочник.ВидыЦен.Форма.ФормаЭлемента»));
ЭтаФорма.ОбновитьОтображениеДанных();
ФормаОбъекта.Закрыть();

На сервере создаются так:

&НаСервере
Процедура СоздатьВидЦен(КоллекцияАтрибутов, БазовыйВидЦен = Неопределено)

НовыйВидЦен.Заполнить(Неопределено);
НовыйВидЦен.Наименование = КоллекцияАтрибутов.ПолучитьИменованныйЭлемент(«Наименование»).Значение;

// недопустимо пустое наименование
Если Не ЗначениеЗаполнено(НовыйВидЦен.Наименование) Тогда
НовыйВидЦен.Наименование = Новый УникальныйИдентификатор();
КонецЕсли;

// не допустимы не уникальные идентификаторо относительно всех видов цен
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«Идентификатор», НовыйВидЦен.Идентификатор);
Запрос.Текст = «ВЫБРАТЬ
| ВидыЦен.Ссылка
|ИЗ
| Справочник.ВидыЦен КАК ВидыЦен
|ГДЕ
| ВидыЦен.Идентификатор = &Идентификатор»;
РезультатВыполнения = Запрос.Выполнить();

Если Не РезультатВыполнения.Пустой() Тогда

НовоеНаименование = НовыйВидЦен.Наименование + «_» + Новый УникальныйИдентификатор();

Если КоллекцияАтрибутов.ПолучитьИменованныйЭлемент(«ЦенаВключаетНДС»).Значение = «1» Тогда
НовыйВидЦен.ЦенаВключаетНДС = Истина;
КонецЕсли;

НовыйВидЦен.ИспользоватьПриПродаже = Истина;
НовыйВидЦен.ИспользоватьПриПередачеМеждуОрганизациями = Истина;

// проверим, если валюту не нашли отменяем создание вида цены
Если Не ЗначениеЗаполнено(НовыйВидЦен.ВалютаЦены) Тогда
Сообщить («Не удалось создать вид цен: » + НовыйВидЦен.Наименование + «. Причина: не найдена валюта цены с кодом: [» + КоллекцияАтрибутов.ПолучитьИменованныйЭлемент(«Валюта»).Значение + «]»);
Возврат;
КонецЕсли;

// Определимся, вдруг расчитывается на основании базовой цены
Если ЗначениеЗаполнено(БазовыйВидЦен) Тогда
НовыйВидЦен.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.РассчитыватьПоДругимВидамЦен;
ПроцентнаяСтавка = КоллекцияАтрибутов.ПолучитьИменованныйЭлемент(«Процент»).Значение;
Если Число(ПроцентнаяСтавка) >= 0 Тогда
НовыйВидЦен.АлгоритмРасчетаЦены = «[» + БазовыйВидЦен.Идентификатор + «] * ((100 + » + Строка(ПроцентнаяСтавка) + «) / 100)»;
Иначе
НовыйВидЦен.АлгоритмРасчетаЦены = «[» + БазовыйВидЦен.Идентификатор + «] * ((100 » + Строка(ПроцентнаяСтавка) + «) / 100)»;
КонецЕсли;
Иначе
НовыйВидЦен.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.Вручную;
КонецЕсли;

Вообще это все пишется для обработки переноса данных из писаной-переписанной семерки в УТ11. Так сказать, одноразовая обработка, лишь бы перебросить данные ))))

Вопрос: как программно эмулировать открытие формы и нажатие кнопки «Записать и закрыть» в управляемом приложении, так что бы выполнились все стандартные обработчики соответствующих событий формы? Желательно, что бы пользователь не наблюдал открытия и закрытия формы, но необязательно.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с выполнить под полными правами
  • 1с выплата зарплаты на лицевые счета