Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 22:39

Настройка реквизитов ПЕРИОД

Автор НикаК, 20 мая 2020, 13:59

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

НикаК

Добрый день! Новичок!)Совсем новичок в 1С!))

1с:Предприятие 8.3(8.3.16.1063). КОРП редакция 2.1

На форме внутреннего документа "Финансы" есть реквизиты тип Дата - "Период выплаты с"
"Период выплаты По"
"Конкретная дата выплаты"
"Разница между план/факт" тип Строка.

Помогите пожалуйста заполнить реквизиты и понять где это вообще прописывается) Если я правильно понимаю то это должно быть в Процедуре При Изменении Элементов Форм? или нет?))

"Период выплаты по" - заполняется автоматически, т.е. + 10 дней от даты "Период выплаты с".
Реквизит "Разница между план/факт" = "Конкретная дата выплаты" - (минус) "Период выплаты с".




таким образом добавила реквизиты:
Функция ПолучитьНастройкиЭлементовРеквизитов_ВнутренниеДокументы(Форма, ВидДокумента

Элементы = Форма.Элементы;

ДобавляемыеРеквизиты = Новый Массив;

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

ДобавляемыеРеквизиты.Добавить(СтруктураНастроекЭлементаРеквизита_ВнутренниеДокументы("ПериодВыплатыС", Элементы.Найти("ФД_ГруппаВнутренниеДокументы_ДополнениеФорм_1")));
ДобавляемыеРеквизиты.Добавить(СтруктураНастроекЭлементаРеквизита_ВнутренниеДокументы("ПериодВыплатыПо", Элементы.Найти("ФД_ГруппаВнутренниеДокументы_ДополнениеФорм_1")));
    ДобавляемыеРеквизиты.Добавить(СтруктураНастроекЭлементаРеквизита_ВнутренниеДокументы("КонкретнаяДатаВыплаты", Элементы.Найти("ФД_ГруппаВнутренниеДокументы_ДополнениеФорм_1")));
ДобавляемыеРеквизиты.Добавить(СтруктураНастроекЭлементаРеквизита_ВнутренниеДокументы("РазницаМеждуПланФакт", Элементы.Найти("ФД_ГруппаВнутренниеДокументы_ДополнениеФорм_1")))     
 
КонецЕсли;






Функция СтруктураНастроекЭлементаРеквизита_ВнутренниеДокументы(ИмяОбъекта, Родитель = Неопределено)
СтруктураДанных = СтруктураНастроекЭлементаРеквизита();
МассивДействийЭлемента = Новый Массив;
МассивДействийЭлемента.Добавить(Новый Структура("ОбработчикСобытия,ИмяПроцедуры", "ПриИзменении","Подключаемый_ПриИзмененииПрограммноСозданногоЭлемента"));

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

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

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

ИначеЕсли ИмяОбъекта = "РазницаМеждуПланФакт" Тогда
СтруктураДанных = ЗаполнитьСтруктуруРеквизита(СтруктураДанных, Ложь, Истина, "Объект.РазницаМеждуПланФакт", "РазницаМеждуПланФакт", "Разница между план/факт", Родитель,
Неопределено, Ложь,, "", "", "", Истина, Ложь, МассивДействийЭлемента,,,, "Разница между план/факт",,,,, Истина);

.....

PahaB

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

НикаК

все настройки реквизитов осуществляются в общем модуле на сервере. свойства не используются

PahaB

Элемент.УстановитьДействие("ПриИзменении", Новый Действие("ВыполнитьДействиеПриИзмененииДанных"));
посмотри тут https://forum.infostart.ru/forum9/topic134751/

LexaK

НикаК,
у вас в коде уже есть задание обработчика
Цитировать
МассивДействийЭлемента = Новый Массив;
МассивДействийЭлемента.Добавить(Новый Структура("ОбработчикСобытия,ИмяПроцедуры", "ПриИзменении","Подключаемый_ПриИзмененииПрограммноСозданногоЭлемента"));

найдите вот эту процедуру - "Подключаемый_ПриИзмененииПрограммноСозданногоЭлемента"
в ней определите имя добавленного элемента и в зависимости от имени сделайте те или иные действия, например
Цитировать
&НаКлиенте
Процедура Подключаемый_ПриИзмененииПрограммноСозданногоЭлемента(Элемент)
   //считаем что имя элемента совпадает с именем реквизита
   ИмяЭлемента = НРег(Элемент.Имя);
   Если ИмяЭлемента = НРег("ПериодВыплатыС") Тогда
      Объект.ПериодВыплатыПо = Объект.ПериодВыплатыC + 10 * 24 * 3500;//+ 10 дней
   ИначеЕсли ИмяЭлемента = НРег("РазницаМеждуПланФакт") Тогда
      //ваша команда?   
   КонецЕсли;
КонецПроцедуры

если помогло нажмите: Спасибо!

НикаК

Спасибо! написала в этом роде) но не выводит автоматически ПериодПо(( и соответственно не пересчитывается при изменении ПериодС...

LexaK

НикаК, так включите отладчик, встаньте на входе этой процедуры Подключаемый_ПриИзмененииПрограммноСозданногоЭлемента
ну и дальше по шагам!
(отладчиком-то умеете пользоваться?)
если помогло нажмите: Спасибо!

НикаК


LexaK

НикаК, если у вас база не очень большая(или сделайте тестовую копию с парой документов), выкладывайте ДТ-шник, так будет проще разобраться
если помогло нажмите: Спасибо!

НикаК


Теги:

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

Рейтинг@Mail.ru

Поиск