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

Планировщик - передача Измерения в создаваемый документ

Автор iskurt, 09 фев 2022, 23:36

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

iskurt

Добрый день.
Помогите решить задачу новичку в 1С.

Есть документ ЗаказНаряд с реквизитами Дата, Начало, Конец, Мастер.

В планировщике есть Измерения "Мастер" которое заполняется сл. образом
#Область Заполнение_мастеров

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Наименование КАК Мастер,
| Сотрудники.Ссылка КАК Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники";

ВыборкаМастеров = Запрос.Выполнить().Выбрать();
// Создание измерения Мастера
ИзмерениеМастера = ИзмеренияПланировщика.Добавить("Мастер");

Пока ВыборкаМастеров.Следующий() Цикл

// Заполнение измерений Мастеров
НовыйМастер = ИзмерениеМастера.Элементы.Добавить(ВыборкаМастеров.Ссылка);
НовыйМастер.Текст = ВыборкаМастеров.Мастер;

КонецЦикла;

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

При создании новой записи в планировщике, создается новый ЗаказНаряд и заполняется Дата, НАчало, Конец.... а вот Мастер не передается.
&НаКлиенте
Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, Мастер, ЗначенияИзмерений, Текст, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

ПараметрыФормы = Новый Структура();
// заполняем параметры для передачи в Заказ Наряд *******
ПараметрыФормы.Вставить("Дата", Начало);
ПараметрыФормы.Вставить("НачалоРабот", Начало);
ПараметрыФормы.Вставить("ОкончаниеРабот", Конец);

Сообщить(Планировщик.Элементы[0].ЗначенияИзмерений["Мастер"]);

ПараметрыФормы.Вставить("Мастер", Планировщик.Элементы[0].ЗначенияИзмерений["Мастер"]); 

ОткрытьФорму("Документ.ЗаказНаряд.ФормаОбъекта", ПараметрыФормы);
// скрываем контектсное меню
Элементы.ПланировщикКонтекстноеМеню.Видимость   = Ложь;

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

Объясните, как правильно передавать выбранное ИзмерениеПланировщика
ПараметрыФормы.Вставить("Мастер", Планировщик.Элементы[0].ЗначенияИзмерений["Мастер"]);  Так работать не хочет  :dfbsdfbsdf:

Остальное в планировщике работает.



iskurt



Стандартная обработка каким-то чудом выводит это измерение.

LexaK

iskurt,
у вас такой вызов процедуры

&НаКлиенте
Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, !!Мастер!!, ЗначенияИзмерений, Текст, СтандартнаяОбработка)

в параметрах явно указан/задан Мастер - попробуйте как раз его использовать

вот это уберите,

//Сообщить(Планировщик.Элементы[0].ЗначенияИзмерений["Мастер"]);   
//ПараметрыФормы.Вставить("Мастер", Планировщик.Элементы[0].ЗначенияИзмерений["Мастер"]); 

попробуйте такие команды

Сообщить("Мастер: " + Мастер);   
ПараметрыФормы.Вставить("Мастер", Мастер); 




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

iskurt


LexaK

соответствие....
получается может быть несколько мастеров, а как внутри процедуры выбрать одного из нескольких?
можно взять первого, тогда попробуйте такой код
Сообщить("Количество Мастеров: " + Мастер.Количество());   
Для каждого лкЭлемент Из Мастер Цикл
ПараметрыФормы.Вставить("Мастер", лкЭлемент.Значение);
Прервать;
КонецЦикла;
если помогло нажмите: Спасибо!

iskurt

LexaK, СУУУППЕЕЕРРРР!!!!!!!!!

Результат тот что нужен, только я не до конца понял логики, почему же без цикла не получалось обратиться к Знчению?
Можно чуть подробнее?

LexaK

iskurt, Результат тот что нужен, только я не до конца понял логики, почему же без цикла не получалось обратиться к Знчению?
Можно чуть подробнее?

эээ, почитайте как Соответствие работает, в конфигураторе есть справка Синтаксис Помощник называется, откройте его, там наберите Соответствие,
там расписаны методы и свойства этого объекта. 
получить значение из Соответстия можно зная его Ключ (я не знаю ключа, поэтому воспользовался перебором) 
посмотрите под отладчиком, как построено соответствие Мастер! какой там ключ? если постоянный тогда можете исправить код программы для получения значения соответствия по ключу
если помогло нажмите: Спасибо!

iskurt

LexaK, Спасибо. Все оказалось просто. К сожалению, из СП я так и не понял как я должен был получить ИзмерениеПланировщика. Но у меня получилось методом "научного тыка". Значение этого измерения у меня заполняется по ключу "Мастер". Я тупо решил обратиться напрямую и получилось благодаря тому, что вы мне указали Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, !!Мастер!!, ЗначенияИзмерений, Текст, СтандартнаяОбработка)

Вот решение моей проблемы.
ПараметрыФормы.Вставить("Мастер", Мастер["Мастер"]);

Теги:

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

Рейтинг@Mail.ru

Поиск