Получить модуль формы 1с
И вот здесь необходимо вызвать процедуру модуля формы этого документа. Можно ли это сделать вообще?
(1) нельзя, если форма не создается, то какой же модуль формы может быть?Если появляется такая необходимость, это говорит о том, что в идеологии что-то не так. (1) Roman004, После проведения документа пишем:
Форма = НовДок.ПолучитьФорму("ФормаДокумента"); Дальше - отладчик в помощь - смотрим, что там есть и что можно с этим делать.
Если стоит формекс, то можно поступить вот так:
оСистема = СоздатьОбъект("Система");
Д = СоздатьОбъект("Документ.ГТД");
Пока Запрос.Группировка(1) = 1 Цикл
Д.НайтиДокумент(Запрос.ГТД);
ОткрытьФорму(Д.ТекущийДокумент(), Конт,0);
Конт.СуммаПеревозка = 0;
Сп = СоздатьОбъект("СписокЗначений");
Сп.ДобавитьЗначение(2);
Сервис.ВыполнитьПроцедуру(Конт, "ИзмСуммаУслуг", Сп);
оСистема.StartBatch(Конт);
Конт.Провести();
оСистема.EndBatch(Конт);
оСистема.ЗакрытьФорму(Конт);
КонецЦикла;
Если стоит формекс, то можно поступить вот так:
оСистема = СоздатьОбъект("Система");
Д = СоздатьОбъект("Документ.ГТД");
Пока Запрос.Группировка(1) = 1 Цикл
Д.НайтиДокумент(Запрос.ГТД);
ОткрытьФорму(Д.ТекущийДокумент(), Конт,0);
Конт.СуммаПеревозка = 0;
Сп = СоздатьОбъект("СписокЗначений");
Сп.ДобавитьЗначение(2);
Сервис.ВыполнитьПроцедуру(Конт, "ИзмСуммаУслуг", Сп);
оСистема.StartBatch(Конт);
Конт.Провести();
оСистема.EndBatch(Конт);
оСистема.ЗакрытьФорму(Конт);
КонецЦикла;
Объект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
Объект.ВыполнитьДействияДокумента(); (4) создается объект "документ". А объект "форма документа" не создается. Это разные объекты. Документ вообще-то объект информационной базы - он информацию хранит, а форма всего лишь объект интерфейса, чтобы смотреть на данные удобнее было. У документа может быть произвольное количество форм, в том числе и ни одной. В таком виде, у документа нет формы. она появляется когда вы ее открываете.
а до это есть только объект.
Объект.ВыполнитьДействияДокумента();
может быть вызвана процедура
ВыполнитьДействияДокумента() - если она находится в модуле объекта с флагом Экспорт.
попробуйте после записи документа:
Всем спасибо. Не знаю, может у кого и получится, но из модуля формы процедуру достать не получилось(чего только не перепробовал). Из модуля объекта отлично достается. Еще раз всем спасибо(11)
Напрямую из другого объекта нельзя обратится к процедурам модуля формы - этот вопрос был еще лет 6-7 назад в профессионале по платформе.
Однако, можно поступить как описано в (10) и (14), главное чтобы в самой процедуре не было обращения к элементам формы и т.п.
(15) главное чтобы в самой процедуре не было обращения к элементам формы и т.п.
интерес продолжился :), и я засунул код по созданию документа в обработку:
В документе в модуле формы пишу:
Номер из документа:000000007
Дата из документа: 20.01.2012 20:27:16
Дата из обработки: 20.01.2012 20:27:16
Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.
Также модуль объекта можно открыть из контекстного меню объекта:
Или из меню Действия:
Модуль объекта выполняется при создании объекта. В нем можно объявлять переменные модуля. Экспортные процедуры и функции можно вызывать у созданных программных объектов. К экспортным переменным можно обращаться как к свойствам программных объектов. В модуле есть прямой доступ к реквизитам и табличным частям объекта.
Вызов методов модуля объекта
В модуле объекта напишем следующий код:
Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура . ОбщийОстаток = ОбъектНоменклатура . ОбщийОстаток ( ) ;Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.
Теперь поменяем код в модуле формы обработки на следующий:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура . ПолноеНаименование = ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименование ) ; //ошибкаЗдесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.
Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.
Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ) ; //опять ошибка
Теперь вставим в форму обработки такой код и откроем обработку:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ;Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.
В результате в базе данных будет создан новый элемент, у которого заполнен артикул и добавлены 2 строки в табличную часть:
В методе ЗаполнитьРеквизиты() мы обращались напрямую к реквизитам объекта, после чего записали его методом Записать(). Значения реквизитов сохранились в базе данных.
Обработчики событий
В результате откроется список возможных событий:
Рассмотрим основные события модуля объекта:
Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:
Здравствуйте. Есть функция в Модуле объекта документа. Мне нужно это функцию вызвать в модуле на форме этого же документа. Прилагаю код из модуля объекта:
А вот модуль в "форме документ", в котором мне нужно этой функцией воспользоваться:
Ошибка вот такая:: Процедура или функция с указанным именем не определена (ТабличнаяЧасть1Реквизит1ПриИзмененииНаСервере) __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Обращение к реквизиту на форме документа из модуля менеджера
Здравствуйте! База УТ 11.2, платформа 8.3., Документ "коммерческое предложение клиенту", добавлен.
Обратиться к реквизитам Документа из Модуля этого документа
Привет всем. У меня проблема вот с чем: в процедуре обработки документа нужно обратиться к.
Вызвать процедуру модуля объекта из модуля формы
Добрый день! Подскажите, есть модуль формы документа, из которого вызывается процедура.
Проведение документа из модуля формы документа
Столкнулся с такой проблемой. Нужно провести документ из формы документа. Побывал на многих сайтах.
Для Каждого Элемент. замени Элемент на любое другое имя, например Стр. Элемент - забронировал языком 1с. Ты имеешь в виду одно а программа понимает другое
Добавлено через 1 минуту
Это первое. Второе. Если нужна просто сумма документа, то цикл вообще не нужен. Смотри Итоги по колонке табличкой части
Добавлено через 5 минут
Да. И код не буду писать. Компа под рукой сегодня нет, только смартфон. Набирать побуквенно. Да ну.
polax, получается можно просто вот так сделать одной процедурой?
Только здесь всё равно не определена переменная "Цена". Пробовал без скобок, пробовал с кавычками, не ищет. У меня в подвал выводится сумма. Можете подсказать, пожалуйста? Хоть убей не понимаю логикуРешение
колонку писать с типом Строка (т.е. в кавычках ТЧ.Итог("Цена")). Есть Синтакс помощник, жмешь смотришь как использовать методpolax, я писал с кавычками, но у меня программа все равно не включает "видимость" элемента У меня ещё не работает отладчик с точками останова, не знаю почему. Точки-то ставятся, а построчно проверять код нет возможности. кнопок просто нету
Добавлено через 7 минут
polax, работает, спасибо. процедура-то была не привязана к изменению цены. Я её поставил при измении цены и она начала работать. спасибо за помощь!
Открытие присоединенной рамки объекта в форме с чертежом в форме по кнопке
Здравствуйте, в форме имеется поле ole выведенное через присоединенную рамку объекта. по щелчку на.
Получить форму документа из Общего модуля
Всем добрый день! Хочу получить форму программно созданного документа в Общем модуле. При.
как можно обратиться к реквизиту справочника из модуля документа?
я пытаюсь вот таким образом: &НаКлиенте Процедура ПробегПриИзменении(Элемент).
Программные модули в "1С:Предприятии 8"
Программный модуль представляет собой текст на встроенном языке "1С:Предприятия 8", расположенный в определенном месте конфигурации.
В соответствии с этим различают следующие виды программных модулей:
На следующем рисунке показано расположение всех этих модулей:
Разделы программного модуля
Любой программный модуль, за исключением общих модулей, состоит из следующих разделов:
- раздел объявления переменных,
- раздел процедур и функций,
- раздел основной программы.
Внимание! У общих модулей есть только раздел процедур и функций.
Контекст
Контекст — очень важное понятие при программировании на любом языке. В "1С:Предприятии 8" контекст обозначает окружение модуля, т. е. какие ему будут доступны переменные, объекты, свойства, методы и события.
Можно выделить следующие виды контекстов, существующих в "1С:Предприятии 8":
Глобальный контекст , доступный во всех остальных контекстах, состоит из следующих частей:
- свойства, методы и события глобального контекста (например, свойство РабочаяДата ),
- системные перечисления и системные наборы значений (например, КодВозвратаДиалога и Символы ).
В контексте модуля приложения (или модуля внешнего соединения) доступны экспортируемые процедуры и функции общих модулей.
В контексте общего модуля доступны экспортируемые процедуры и функции других общих модулей. В этом контексте недоступны экспортируемые переменные, процедуры и функции модуля приложения.
В контексте модуля прикладного объекта есть доступ к реквизитам и табличным частям объекта, а также его методам и событиям. Например, в модуле документа РасходнаяНакладная доступны реквизиты документа и его табличные части, можно вызывать методы документа и обрабатывать события.
В контексте модуля формы доступны реквизиты формы, а также ее свойства, методы и события. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита, а также экспортируемые переменные, процедуры и функции модуля этого прикладного объекта.
Необходимо помнить правила видимости экспортируемых переменных, процедур и функций различных модулей:
- В общем модуле недоступны экспортируемые переменные, процедуры и функции модуля приложения (модуля внешнего соединения).
- В модуле приложения (модуле внешнего соединения) доступны экспортируемые процедуры и функции общих модулей.
- В общих модулях доступны экспортируемые процедуры и функции других общих модулей.
- В модулях прикладных объектов и модулях форм доступны экспортируемые переменные, процедуры и функции модуля приложения (модуля внешнего соединения), а также экспортируемые процедуры и функции общих модулей.
- Если у формы назначен основной реквизит, то контекст модуля формы содержит дополнительные свойства и методы, связанные с основным реквизитом. Например, в модуле формы элемента справочника Номенклатура доступны свойства и методы объекта СправочникОбъект.Номенклатура .
Проиллюстрируем применение первых четырех правил на следующей схеме:
Стрелки на схеме обозначают, что модуль предоставляет другим модулям возможность обращаться к своим экспортируемым переменным, процедурам и функциям. Напомним, что в общих модулях не может быть объявления переменных.
Читайте также: