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

заполнить доп параметры

Автор sali, 29 янв 2026, 12:15

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

sali

как заполнить параметры метаданных? если сами метаданные заполняются так
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок);   
ПараметрыЗадания.Вставить("МетаданныеКлюч", КлючРегламента);
ПараметрыЗадания.Вставить("Использование", Истина);
ПараметрыЗадания.Вставить("Наименование", ИмяРегламента);   
ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 10);
ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3);
ПараметрыЗадания.Вставить("Ключ", КлючРегламента); 
ПараметрыЗадания.Вставить("Расписание", РасписаниеРегламентногоЗадания); 

мне нужно записать данные для Задание.Метаданные.Ключ, но чет пока не получается

Максим75

sali,
скорее всего ничего не получится, потому как у метаданных под ключом понимают либо его гуид (именно объекта метаданного) либо ссылку на справочник УникальныхИдетнитификаторовОбъекта.

sali

Максим75, ну йопт. это был мой шанс получения ключа программного регламента :kmtu:
а вот Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок - это регламент созданный в основной конфе, возможно ли записать что-то в него или изменить, например количество повторов при аварийном завершении?

sali

Цитата: Максим75 от 29 янв 2026, 12:43либо его гуид (именно объекта метаданного) либо ссылку на справочник УникальныхИдетнитификаторовОбъекта.
но он пустой , как тогда определяется?

sali

или есть другой способ определить регламент?
создаю программно регламент
 &НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

ЗаписьОбъект = ПроверитьЗаполненостьРегламента(ТекущийОбъект);

Если ЗначениеЗаполнено(ТекущийОбъект.ПолноеНаименование) и НЕ ТекущийОбъект.Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
Если параметры.ключ.пустой() Тогда
Сообщить("Уже существует настройка с таким именем. Сохранение невозможно.");
Отказ = Истина;
Возврат; 
КонецЕсли;

КонецЕсли;

Если ТекущийОбъект.ИспользоватьРегламентныеЗадания Тогда
УстановитьПривилегированныйРежим(Истина);
Набор = РегистрыСведений.ЭДОН_ПараметрыРегламентныхЗаданий.СоздатьНаборЗаписей();
Задание = Набор.ПолучитьРегламентноеЗадание(ТекущийОбъект);
Если Задание = НеОпределено Тогда
ИмяРегламента = Строка("РегламентЭДО: " + ТекущийОбъект.ПолноеНаименование);
КлючРегламента = Строка(Новый УникальныйИдентификатор);

ПараметрыЗадания = Новый Структура;               
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок); 
ПараметрыЗадания.Вставить("МетаданныеКлюч", КлючРегламента);
ПараметрыЗадания.Вставить("Использование", Истина);
ПараметрыЗадания.Вставить("Наименование", ИмяРегламента);   
ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 10);
ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3);
ПараметрыЗадания.Вставить("Ключ", КлючРегламента); 
ПараметрыЗадания.Вставить("Расписание", РасписаниеРегламентногоЗадания); 

МассивПараметров = Новый Массив;   
МассивПараметров.Добавить(Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка());
МассивПараметров.Добавить(Запись.РегламентноеЗадание);

ПараметрыЗадания.Вставить("Параметры", МассивПараметров);

Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);     
ТекущийОбъект.РегламентноеЗадание = КлючРегламента; // Перечисления.ЭДОН_РегламентныеЗаданиеРасширение.РегламентПоВыгрузкеЗагрузке;
ТекущийОбъект.Идентификатор = Задание.УникальныйИдентификатор;
ТекущийОбъект.Идентификаторр = Задание.УникальныйИдентификатор;
            ТекущийОбъект.Ключ = Задание.Ключ;

КонецЕсли;

//Задание.Расписание = РасписаниеРегламентногоЗадания;   
Задание.Записать();

УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;

Если ЭтоАдресВременногоХранилища(АдресНастроекРегламента) тогда
НастройкиОбмена = ПолучитьИзВременногоХранилища(АдресНастроекРегламента);

ТекущийОбъект.СохраненныеНастройки = Новый ХранилищеЗначения(НастройкиОбмена);

КонецЕсли;

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

добавляю об.модуль "Дополнительные отчеты и обработки" в расширение и ее процедуру
#Область СлужебныеПроцедурыИФункции         

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

Если РегламентВРегистре.Количество() Тогда
ЭДОН_РегламентныеЗадания.ВыгрузитьНоменклатуруИХарактеристику(РегламентВРегистре[0]);
КонецЕсли;

КонецЦикла;
КонецЕсли; 
КонецПроцедуры

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

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

sali

Максим75, а такой вопрос
вот я нашел где записывал значение для идентификатора команды
Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);     
ТекущийОбъект.РегламентноеЗадание = ТекущаяДатаСеанса(); // Перечисления.ЭДОН_РегламентныеЗаданиеРасширение.РегламентПоВыгрузкеЗагрузке;
я пробовал записать гуид , дату , но любое из значений берет начальное значение то бишь нулевое. если я записывал гуид и это была сформировавшаяся строка , то при определении в процедуре  я видел 32 нуля. с датой тоже самое, записываю сегодняшнее число - он выдает 01.01.0001 00:00:01
почему?(процедура выполнения регл заданий с директивой После)

Теги:

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

Рейтинг@Mail.ru

Поиск