Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как прописать процедуру для элементов формы в глобальном контексте , Широчайшие возможности платформы          
Gigi Подменю пользователя
сообщение 10.10.19, 10:29
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем опять привет!
Проблема такая ....
Вот код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Объект.Ссылка.Пустая()=Истина Тогда
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Назначить.Видимость=Ложь;
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Очистить.Видимость=Ложь;
    КонецЕсли;
КонецПроцедуры

Думаю любому на этом сайте ясно, какую цель ставит код данной процедуры. И где он обычно пишется. Да, конечно ... в самой форме.
Что нужно... Одной единственное ...
Прописать тоже самое в глобальном контексте. Т.е. на пример для всех форм объекта по всем документам.
Никто не подскажет как это реализовать?
Как это сделать в 1С? ... ВЕЛИКОМ и МОГУЧЕМ! smile.gif
Буду признателен!

andr_andrey Подменю пользователя
сообщение 10.10.19, 13:51
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Gigi @ Сегодня, 11:29 * ,
[необходимо зарегистрироваться для просмотра ссылки]


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Спасибо сказали: Gigi,

Макс1С Подменю пользователя
сообщение 10.10.19, 13:56
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

Gigi @ Сегодня, 11:29 * ,
В типовых(унф, ерп) реализовано достаточно неплохо. Общий модуль, в каждой форме вызов одной и той же процедуры.
Например:
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    
    ПриЧтенииСозданииНаСервере();
    УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);

    МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);

КонецПроцедуры

А в модуле все процедуры изначально пустые. Хочешь, пили прям в модуле события форм всех доков, хочешь - вынеси в расширение и там пили.
#Область ЗаполнениеОбработчиковФормы

// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
//     Форма - форма, из обработчика события которой происходит вызов процедуры.
//    см. справочную информацию по событиям управляемой формы.
//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

КонецПроцедуры

// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
//     Форма - форма, из обработчика события которой происходит вызов процедуры.
//    см. справочную информацию по событиям управляемой формы.
//
Процедура ПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт
    
КонецПроцедуры

// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
//     Форма - форма, из обработчика события которой происходит вызов процедуры.
//    см. справочную информацию по событиям управляемой формы.
//
Процедура ПередЗаписьюНаСервере(Форма, Отказ, ТекущийОбъект, ПараметрыЗаписи)Экспорт
    
КонецПроцедуры

// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
//     Форма - форма, из обработчика события которой происходит вызов процедуры.
//    см. справочную информацию по событиям управляемой формы.
//
Процедура ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи)Экспорт
    
КонецПроцедуры

#КонецОбласти

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 10.10.19, 14:28
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

andr_andrey @ Сегодня, 14:51 * ,
Цитата(andr_andrey @ 10.10.19, 14:51) *
[необходимо зарегистрироваться для просмотра ссылки]

Спасибо но как я понял из статьи, имеется ввиду процедура ПриСозданииНаСервере опять только в самой форме. А о глобальном контексте не сказано. Видимо такого события в глобальном контексте просто нет.
А в остальном не важно прописать так:
Если Объект.Ссылка.Пустая()=Истина Тогда

Или как в статье описано так:
Если Параметры.Ключ.Пустая() Тогда

Нужно один раз прописать код для всех форм. Для того что бы не создавать форму и в событии: ПриСозданииНаСервере по каждому доку не писать одно и то же.
Вот для чего все это.

Gigi @ Сегодня, 15:10 * ,
А это конечно же белиберда ... Но порожденная от безысходности.
Процедура ДокПолучениеФормыОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
Если ВидФормы="ФормаОбъекта" Тогда
ОбъектСсылка=Параметры.Ключ;
Если ОбъектСсылка.Пустая() Тогда  
//================================
    // 1) Определить Метаданные по ссылке - Ладно сделали        
    МетаданныеПолноеИмя=Config_МетаДанные.ОбъектМетаданных(ОбъектСсылка,"ПолноеИмяЕд");  // Функция определения метаданных
//================================
    //Дальше 2-ое
    // 2) Получить форму объекта. И это тут НЕВОЗМОЖНО естественно! Так что до третего дело и не может дойти
//Форма=ПолучитьФорму(МетаданныеПолноеИмя+".ФормаОбъекта", Новый Структура("Ключ",ОбъектСсылка));
//================================        
    // 3) Скрыть кнопри общей команды
    //Форма.Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Назначить.Видимость=Ложь;
    //Да уже какая форма? Какие элементы формы что бы скрыть их. Это ведь тут невозможно
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Короче то, что хотел НИКАК.
А нужно просто скрыть кнопки указанных общих команд для всех доков. ДЛЯ ВСЕХ. И прописать это ОДИН РАЗ. А не многократно для каждой формы. Создавая ее и вставляя одни и тот же для всех код
Вот что хотел...
Ладно если невозможно ... нет так нет.
Но вы извините за иронию... просто меня тоже понять можно.

Цитата(Gigi @ 10.10.19, 15:22) *
В типовых(унф, ерп) реализовано достаточно неплохо. Общий модуль, в каждой форме вызов одной и той же процедуры.
Например:

Тьфу ты .. это пока не прочел ... ладно ща прочту и проверю на деле ... если это то что нужно.. спасибо

andr_andrey Подменю пользователя
сообщение 10.10.19, 14:40
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Цитата(Gigi @ 10.10.19, 15:28) *
И прописать это ОДИН РАЗ. А не многократно для каждой формы. Создавая ее и вставляя одни и тот же для всех код

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


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Gigi Подменю пользователя
сообщение 10.10.19, 15:25
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(Gigi @ 10.10.19, 15:28) *
в каждой форме вызов одной и той же процедуры

В том и дело что опять "в каждой форме"... А я хотел что бы без такой необходимости. Точно так же как в случае с подписью на события: "ОбработкаЗаполнения"
И вот что касается этой подписи на событие оно более чем устраивает. Это без спорно очень круто сделано. Просто указал источник и делай что угодно. И более того... есть там еще и параметр: "ДанныеЗаполнения" ... это уже круто ВДВОЙНЕ. И тут тоже делай что хочешь. И самое главное, что все это можно прописать для всех доков ОДИН РАЗ! Это уже втройне круто.
Так что вот к этому никаких нареканий. Все очень просто.
Нужно тоже самое только для элементов формы. Так же что бы один раз прописал для всех.
Но этого думаю просто нет.
Ладно ... если нет так нет.


Цитата(andr_andrey @ 10.10.19, 15:40) *
Вы многократно даёте советы разработчикам платформы, а сами не осилили процедурное программирование.
Невероятно.

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



Gigi @ Сегодня, 15:56 * ,
А посему .... smile.gif
Принятое решение в следующем: ... только жаль что не в микрофон шас говорю smile.gif Имею ввиду жаль что без рупора smile.gifsmile.gif..
Вот эту процедуру придется вставлять в каждую форму объекта.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Ключ.Пустая().Пустая()=Истина Тогда
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Назначить.Видимость=Ложь;
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Очистить.Видимость=Ложь;
    КонецЕсли;
КонецПроцедуры

Да именно ... этот один и тот же текст... по всем формам... Ибо эти кнопки будут по всем докам, но при этом они не нужны когда новый объект.
Ладно ... нет так нет ... придется вписывать по каждой.
И ничего страшного. Буду видеть то что стакан на половину полный чем то что пустой. Тем более, что он не наполовину, а почти полный.
И то, что именно так все это благодаря возможностям общих команд и подписи на событие: "ПроверкаЗаполнения".
И что касается последнего. Вот тут на самом деле доволен. И вот тут на само деле очень круто.
Так что буду оптимистом!
Ладно! Всем огромное спасибо за помощь и главное терпение smile.gif
Пока!

Макс1С Подменю пользователя
сообщение 15.10.19, 15:43
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

Цитата(Gigi @ 10.10.19, 16:25) *
Вот эту процедуру придется вставлять в каждую форму объекта.

Предлагаю всё же вставить в каждую форму
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       ДопОбщийМодуль.ПриСозданииНаСервере(Элементы,Параметры,Отказ, СтандартнаяОбработка);
КонецПроцедуры

а в общий модуль:
Процедура ПриСозданииНаСервере(Элементы,Параметры,Отказ, СтандартнаяОбработка)
    Если Параметры.Ключ.Пустая().Пустая()=Истина Тогда
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Назначить.Видимость=Ложь;
    Элементы.ФормаКоманднаяПанель.ПодчиненныеЭлементы.ФормаОбщаяКомандаДанныеАвтозаполнения_Очистить.Видимость=Ложь;
    КонецЕсли;
КонецПроцедуры

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

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 15.10.19, 20:40
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(Макс1С @ 15.10.19, 16:43) *
В противном случае при необходимости правки, нужно не забыть прошерстить каждую форму.

Спасибо ... побольше бы таких дельных советов.
А то и вправду, все кодишь... кодишь... аж глаза уже в квадрате smile.gif
И иногда морально так устаешь, что весьма не маловажные мелочи упускаешь из виду..
Спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 4:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!