Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2025, 01:58

Взаимосвязанная форма

Автор Daniil77, 30 мая 2025, 09:32

0 Пользователей и 1 гость просматривают эту тему.

Daniil77

Всем добрый день! Столкнулся с проблемой, есть справочник отвечающий за договора, при создание договора открывается форма "Новая форма", в договоре можно сформировать допник, и при формирование допника открывается таже самая форма "Новая форма". Задача в том , чтобы при открывание допника не были видны некоторые объекты, но если я делаю кодом Видимость = ложь, то исчезает там и там , как можно обыграть? Впервые сталкиваюсь с таким, если не сложно, то могли бы подсказать.

antoneus

Код открытия формы какой?

Daniil77

antoneus, &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
    ЕдиницаИзмеренияТонна = Справочники.ЕдиницыИзмеренияЗавод.НайтиПоНаименованию("тн");     
    ЕдиницаИзмеренияКубы = Справочники.ЕдиницыИзмеренияЗавод.НайтиПоНаименованию("м3"); 
    СтавкаНДС20 = Справочники.СтавкиНДС.НайтиПоНаименованию("20");
    ОбработатьВходящиеПараметры();   
   
    Если Параметры.Свойство("ЭтоДопСоглашение") Тогда
        ЭтоДопСоглашение = Параметры.ЭтоДопСоглашение;       
    Иначе   
        ЭтоДопСоглашение = ЗначениеЗаполнено(Объект.Основание);   
    КонецЕсли;
   
    СПРаботаСФормамиСервер.ДополнитьФормуЭлементамиПоНаправлению(ЭтаФорма, ЭтоДопСоглашение);       
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ДопСоглашенияПрочее,"Основание",Объект.Ссылка,ВидСравненияКомпоновкиДанных.Равно,,истина,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ДопСоглашенияПротоколыРазногласий,"Основание",Объект.Ссылка,ВидСравненияКомпоновкиДанных.Равно,,истина,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
    УстановитьКнопкиВпередНазад();
    УстановитьДоступностьЭлементовФормы();
    ЗаполнитьПредопределенныеПоля();
       
КонецПроцедуры 




&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
    СПРаботаСФормамиКлиент.УстановитьЗависимостиЭлементовПоНаправлениям(ЭтаФорма); 
   
    //аас+
    //задача "4661" от 03.07.2023г.
    Если Параметры.Ключ.Пустая() И ЗначениеЗаполнено(ЭтаФорма.Объект.Основание) И НаправлениеДоговора = "Авто" Тогда
        Если ЭтаФорма.Автопредприятие = "Асфальт" Тогда
            ЗаполнитьСтавки(ЭтаФорма.Команды.Найти("ЗаполнитьСтавки"));
        ИначеЕсли ЭтаФорма.Автопредприятие = "ТощийБетон" Тогда   
            ЗаполнитьСтавки(ЭтаФорма.Команды.Найти("ЗаполнитьСтав"));
        Иначе   
            ЗаполнитьСтавкиАвто(ЭтаФорма.Команды.Найти("ЗаполнитьСтавки"));
        КонецЕсли;
    КонецЕсли;
    //аас-
       
    Если Элементы.Найти("ВариантРасчетаНДС") <> Неопределено Тогда
        Если не ЗначениеЗаполнено(Объект.ВариантРасчетаНДС) тогда
            Элементы.ТоварыЦенаСБезНДС.Заголовок = "Цена (...)";
            Элементы.ТоварыАдресаЦенаСБезНДС.Заголовок = "Цена (...)";
        ИначеЕсли Объект.ВариантРасчетаНДС = ПредопределенноеЗначение("Перечисление.ВариантыРасчетаНДС.НДСВСумме") тогда
            Элементы.ТоварыЦенаСБезНДС.Заголовок = "Цена (НДС в сумме)";
            Элементы.ТоварыАдресаЦенаСБезНДС.Заголовок = "Цена (НДС в сумме)";
        ИначеЕсли Объект.ВариантРасчетаНДС = ПредопределенноеЗначение("Перечисление.ВариантыРасчетаНДС.НДССверху") тогда
            Элементы.ТоварыЦенаСБезНДС.Заголовок = "Цена (НДС сверху)";
            Элементы.ТоварыАдресаЦенаСБезНДС.Заголовок = "Цена (НДС сверху)";
        //аас(5187 БезНДС)
        ИначеЕсли Объект.ВариантРасчетаНДС = ПредопределенноеЗначение("Перечисление.ВариантыРасчетаНДС.БезНДС") Тогда
            Элементы.ТоварыЦенаСБезНДС.Заголовок = "Цена (Без НДС)";
            Элементы.ТоварыАдресаЦенаСБезНДС.Заголовок = "Цена (Без НДС)";
        КонецЕсли; 
    КонецЕсли;
   
    Если Объект.ВыбранноСостояние Тогда
        Элементы.Назад.Видимость        = Ложь;
        Элементы.Вперед.Видимость        = Ложь;
    Иначе   
        Элементы.Назад.Видимость        = Истина;
        Элементы.Вперед.Видимость        = Истина;
    КонецЕсли;
    //Манохин 05.07.2023 - 4714
    Если ЗначениеЗаполнено(Объект.Основание) Тогда           
        Элементы.СтраницаДопСоглашения.Видимость = Ложь;
        //аас(5533 от 12.10.2023
        Если Параметры.Ключ.Пустая() Тогда
            Если Универсальные.ПроверитьГосконтракт(Объект.Основание) Тогда   
                Элементы.ГосконтрактИГК.Видимость = Истина;
            Иначе
                Элементы.ГосконтрактИГК.Видимость = Ложь;
            КонецЕсли;
        Иначе
            Если Универсальные.ПроверитьГосконтракт(Объект.Ссылка) Тогда   
                Элементы.ГосконтрактИГК.Видимость = Истина;
            Иначе
                Элементы.ГосконтрактИГК.Видимость = Ложь;
            КонецЕсли;
        КонецЕсли;   
    Иначе
        Если Не Параметры.Ключ.Пустая() И Универсальные.ПроверитьГосконтракт(Объект.Ссылка) Тогда   
            Элементы.ГосконтрактИГК.Видимость = Истина;
        Иначе
            Элементы.ГосконтрактИГК.Видимость = Ложь;
        КонецЕсли;
        //аас)
    КонецЕсли;

&НаКлиенте
Процедура ДопСоглашенияЦеныВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    // Вставить содержимое обработчика.   
    СтандартнаяОбработка = Ложь;
    ОткрытьФорму("Справочник.Лиды.Форма.ФормаЭлементаНовая",Новый Структура("Ключ",ВыбраннаяСтрока));
КонецПроцедуры   



Daniil77

antoneus,    Если Строка(Объект.Родитель) = "Нерудные материалы: ответственное хранение" Тогда
   
Элементы.СтраницаДопСоглашенияПротоколыРазногласий.Видимость = Ложь; 
Элементы.ДопСоглашенияПротоколыРазногласий.Видимость         = Ложь;
Элементы.ДобавитьДопСоглашениеПротоколы.Доступность = Ложь;

КонецЕсли;

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

antoneus

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

Daniil77

antoneus, ну а если при создание не только для данного договора ? Их 5-6 штук к одному привязаны , а мне нужно для определенного договора допустим НерудныеМатериалы: Хранение

antoneus

Ну так и я об чем.

ПриСозданииНаСервере

Если Строка(Объект.Родитель) = "Нерудные материалы: ответственное хранение" и Параметры.Свойство("ЭтоДопник") Тогда
   
     Элементы.СтраницаДопСоглашенияПротоколыРазногласий.Видимость = Ложь; 
     Элементы.ДопСоглашенияПротоколыРазногласий.Видимость         = Ложь;
     Элементы.ДобавитьДопСоглашениеПротоколы.Доступность = Ложь;
   
КонецЕсли;

и ранее

ОткрытьФорму("Справочник.Лиды.Форма.ФормаЭлементаНовая",Новый Структура("Ключ, ЭтоДопник",ВыбраннаяСтрока, Истина));
И вот это Строка(Родитель) - такое себе. Хотя бы к Родитель.Код привяжитесь.

Daniil77

antoneus, Спасибо , но все равно не помогло , попробовал сделать через Если не ЗначениеЗаполнено(Объект.ОснованиеПерехода) Тогда, так как при создание нового допника данное поле не заполняется , но все равно там и там исчезает...

      

Afinogen

 B) а что  мешает сделать еще одну форму и вызывать ее? то есть все эти "Если" запихивать не в процедуру присоздании открываемой формы а в процедуру которая вызыввется из  владельца  ипроверять если = то и то тогда открывать одну форму елси другое то другую и не парится?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск