Конструктор не найден новый действие

Обновлено: 14.05.2024

Как при открытии формы определить, что создается новый элемент?

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

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

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

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

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


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

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

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

  • при интерактивном создании нового объекта
  • при вводе на основании
  • при выполнении метода объекта Заполнить()

При этом параметр ДанныеЗаполнения , передаваемый в этот обработчик, может иметь различные значения в зависимости от того, каким образом создается новый элемент. Например, он может иметь тип ссылки, если новый объект вводится на основании. Или он может иметь тип Структура , если новый объект создается интерактивной командой из списка, в котором установлен отбор. В этом случае структура будет содержать значения элементов отбора этого списка. Также этот параметр может иметь тип Неопределено , если новый элемент создается интерактивной командой из панели действий. То есть в своем алгоритме начального заполнения полезно анализировать этот параметр.

Подробнее о событии ОбработкаЗаполнения можно прочитать в синтакс-помощнике: ПрикладныеОбъекты - - Объект - События .

Что касается внешнего вида формы нового объекта, то им нужно управлять в обработчике события формы ПриСозданииНаСервере . Это событие возникает и для новых, и для существующих объектов. Поэтому в нем нужно убедиться в том, что открывается форма именно нового объекта. Убедиться в этом можно проанализировав параметр формы Ключ . Если объект новый, в этом параметре будет пустая ссылка. Если это существующий объект – в этом параметре будет ссылка на этот объект:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Параметры.Ключ.Пустая() Тогда

Сообщить("Создается новый объект");

И, наконец, если требуется выполнять какие-то действия в обработчике события формы ПриОткрытии , то в нем ситуация аналогичная, нужно анализировать параметр формы Ключ .

У каждой кнопки типа «Действие» командной панели существует свойство «Доступность», которое позволяет ограничить возможность нажатия пользователем в неподходящий момент, оно доступно на чтение и на запись.

Платформа также автоматически управляет доступностью кнопок, когда не действие не применимо для данной ситуации. Это справедливо для кнопок со стандартным действием, например «Отмена проведения» будет недоступно для не проведенного документа.

Другие стандартные действия приведены на фрагменте интерфейса:

ЭлементПанели

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

Чтобы убедится в причине, открываете свойства кнопки панели и в поле «Действие» нажимаете кнопку открытия («Лупу»). При наличии обработчика, конфигуратор откроет форму, при отсутствии выведет ошибку «Процедура не обнаружена»

ПроцедураНеОбнаружена

Чтобы добавить обработчик очищаете поле, и повторно нажимаете «лупу», система создаст новый обработчик, код которого можно будет задать.

Управление видимостью кнопок

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

Поэтому, если все-таки хотите скрывать «ненужные» кнопки, придется использовать метод «Удалить» кнопок панели, для отображения — «Добавить«.

Удалять кнопки, добавленные системой по флажку «Автозаполнение» формы невозможно.

Пример добавления кнопки

Если вам требуется сохранять положение кнопки в нужной позиции, после добавления воспользуйтесь методом «Сдвинуть«.

«Куда» — это командная панель, в которой требуется внести изменения

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

Пример удаления кнопки

Любые издержки на рекламную кампанию:
— больше, чем может позволить себе клиент;
— меньше, чем ожидали люди из творческого отдела;
— примерно такие, которых с ужасом опасались бухгалтеры.

— Законы Мерфи

Распечатать

Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента? 23
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Номер плаформы какой и номер конфигурации)))

а после посмотрите рекомендуемый номер платформы к конфигурации

Решение ?

Если кто-то разобрался с проблемой - сообщите, пожалуйста.

Чего тут разбираться. Правильный ответ в четвертом посту. Больше десяти лет 1це пишет свой движок и не может выпустить стабильный релиз для восьмерки. Значит нет обратной совместимости с младшими релизами движка. Лучше переходите на семерку. Там такого безобразия давно нет и видимо не будет, если только специально ничего портить не будут.

Суров ты, братец!

Чего тут разбираться. Правильный ответ в четвертом посту. Больше десяти лет 1це пишет свой движок и не может выпустить стабильный релиз для восьмерки. Значит нет обратной совместимости с младшими релизами движка. Лучше переходите на семерку. Там такого безобразия давно нет и видимо не будет, если только специально ничего портить не будут.

Может лучше "полдня потратить, зато потом за 15 минут долететь!"? (цы)
Ты еще предложи с шестеркой совместить ))))
Натулечка сделает что народ просит? Огласит номер релиза платформы, номер релиза конфигурации?

Ну к сожалению не нашел я в своей конфигурации, правда релиз 2.0.46.6, вхождений ЗащищенноеСоединениеOpenSSL. Давай рассказывай, кто приходил, как обновлял? :-)

Ну к сожалению не нашел я в своей конфигурации, правда релиз 2.0.46.6, вхождений ЗащищенноеСоединениеOpenSSL. Давай рассказывай, кто приходил, как обновлял? :-)

Более того, во всём коде конфигурации 2.0.45.4 не упоминается слово ЗащищенноеСоединениеOpenSSL. Так что что-то ТС путает.

ой, блин! Число-то какой сегодня?
Веселишься, Натусик? Вот ужо припомнится. "Я ведь зла не помню, я все записываю!" )))))))

Вот и спасибочки только проблема не решена, надо так же весело исправиь

Исправила, но в другой базе.
Я так понимаю, что это безобразие получается при обновлении конфигурации, а платформа старая.
была 362 последние цифры, а стала 8.2 (8.2.16.368) -
362 и 368 это что за цифры? платформа, версия, конфигурация?
Оно и перестало работать (хотя непонятно почему, можно ж было обновиться в 362?).

Обновила 362 на 368, все ОК.

Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.

Данная статья позволяет снять проблему. НО – до переустановки или обновления платформы!

Столкнулся с проблемой создания COM-соединения на стороне сервера. Обновили версию платформы, но после установки, компонент COM-соединения не регистрировался в системе. Предлагаемая ниже методика позволяет избавиться от описываемой проблемы.


Ниже алгоритм настройки системы, со скрином к каждому действию. Внимание скрины взяты с другого сайта, для общего понимания действий!


Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.



Теперь запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.




Выбираем – Создать приложение



На этом окне – выбираем учетную запись под которой будет запускаться наше приложение. Лучше указать “учетку” с правами Администратора. Я ставил – текущий пользователь т.к., работал под Администратором.




После того как мы создали Приложение, заходим в него, в раздел – Компоненты и создаем новый компонент.



На данном этапе нужно указать где лежит библиотека dll. Как правило библиотека лежит – “С:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll”



Теперь установи права на Приложение. Правой кнопкой на созданном Приложении – Свойства.


Выбираем вкладку – Безопасность и Снимаем галочку – Принудительная проверка доступа для приложений => (Ставим галочку) => Применить политику программных ограничений => Уровень ограничений => Неограниченный.


Далее переходим к самому Компоненту – Выбираем – Свойства, раздел Безопасность.

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