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

Как передать сохраненные настройки отборов с формы в регламентное задание

Автор sali, 20 окт 2025, 10:02

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

sali

antoneus, А ЭТО ЖЕ НЕ ПОДОЙДЕТ
настройки они сохраняются да в реквизит, но сами они же не сохраняются в регламент
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

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

КонецЕсли;

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

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

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

Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
ТекущийОбъект.Идентификатор = Задание.УникальныйИдентификатор;

КонецЕсли;

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

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

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

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

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

КонецЕсли;

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

и вид такойСнимок экрана 2025-10-20 165941.png

antoneus

Ну если не сохраняются - чего бы их не сохранить? Засунуть в параметры, в модуле добавить для них параметр.

sali

antoneus, на этот счет говорит, что слишком много фактических параметров

antoneus


sali


antoneus

В сигнатуру процедуры, которую регламент дергает, тупо дописать параметр. Задать ему значение по умолчанию, чтобы не ломалось, если еще откуда будут вызывать.

ПроцедураМодуля(Параметр1, Параметр2, ЕщеОдинМойПараметрСНастройками = Неопределено)

sali

Цитата: antoneus от 20 окт 2025, 15:41ЕщеОдинМойПараметрСНастройками = Неопределено)
запросом тянуть настройки

sali

antoneus, А как в одни настройки запихать до 4 отборов?? предположим я выгружаю оптовую цену (всей номенклатуры что есть в базе ЭДО), остатки по 2 складам и контрагентов . это выглядит такСнимок экрана 2025-10-23 111826.png

если бы это делалось по отдельности  (то есть выбрал что нужно выгрузить - то и выгрузилось ) был бы такой код
Функция ПолучитьКомпоновщикНастроекВыгрузкиТоваров(ХранилищеНастроекВыгрузки)

СхемаВыгрузкиТоваров = РегистрыСведений.ЭДОН_ПараметрыРегламентныхЗаданий.ПолучитьМакет("ШаблонОтбораНоменклатура");

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаВыгрузкиТоваров));

НастройкиКомпоновщикаИзНастройкиОбмена = Неопределено;
Если ЗначениеЗаполнено(ХранилищеНастроекВыгрузки) Тогда
НастройкиКомпоновщикаИзНастройкиОбмена = ХранилищеНастроекВыгрузки.Получить();
КонецЕсли;

Если ЗначениеЗаполнено(НастройкиКомпоновщикаИзНастройкиОбмена) И ЗначениеЗаполнено(НастройкиКомпоновщикаИзНастройкиОбмена) Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновщикаИзНастройкиОбмена);
КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
Иначе
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаВыгрузкиТоваров.НастройкиПоУмолчанию);
КонецЕсли;

Возврат КомпоновщикНастроек;

КонецФункции

но сейчас все махом, все разом, одним регламентом выгружаться должно (ну как пользователь короче настроит) . вопрос, это делать через условия и запрос-пазл?
Если в настройках выгружать товары = истина значит переходим в следующую процедуру где будет браться макет, компоноваться с отбором и возвращаться текст запроса  конец если
и такое делать на каждый параметр? или есть еще лучше вариант?

sali

просто в плане обмена сделан единый запрос с созданием временных таблиц последующем удалением ( там товары, склады, цены и остатки) , а у меня цены и остатки еще делятся по базе - УНФ И БП

antoneus


Теги:

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

Рейтинг@Mail.ru

Поиск