У меня есть документ ПеремещениеТСИОборудования и переодический регистр сведений МестонахождениеТС. Надо чтоб при выборе Транспортного средства и оборудования в документе ПеремещениеТСИОборудования автоматически подтягивалась информация о водителе(СправочникСсылка.Сотрудники) и бортовом номере (Строка).
Я решил сделать так :
1)На ФормеДокумента Перемещение вынес табличную часть с нужными реквизитами.
2)Проведение по регистрам сведений водителя и бортовой .
3) И в реквизите на форме ТС и Оборудование пишу событие при изменении . Хочу вытащить данные через срез последних.
ТСНомерТС - ТС и Оборудование.
Код:
Но не получаеться. Сам пока новичок и трудно пока писать код.
Я решил сделать так :
1)На ФормеДокумента Перемещение вынес табличную часть с нужными реквизитами.
2)Проведение по регистрам сведений водителя и бортовой .
3) И в реквизите на форме ТС и Оборудование пишу событие при изменении . Хочу вытащить данные через срез последних.
ТСНомерТС - ТС и Оборудование.
Код:
Процедура ТСНомерТСПриИзменении(Элемент)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водитель",Объект.ТС.Водитель));
Для каждого Элемент Из Сведения Цикл
Если Элемент.Ключ="Водитель" Тогда
Продолжить;
КонецЕсли;
Объект[Элемент.Ключ]=Элемент.Значение;
КонецЦикла;
Но не получаеться. Сам пока новичок и трудно пока писать код.
По теме из базы знаний
- В помощь по подготовке к экзамену Специалист 8.* по платформе (решение задач)
- Подготовка к аттестации «Специалист» по платформе: шаблон решения задач по бизнес-процессам
- Кейсы решения задач на СКД
- Платформа для решения задач по программированию на языке 1С
- Аналитик – птица гордая, пока не пнешь – не полетит. Как вырастить сотрудника, готового к самостоятельному решению задач, используя план индивидуального развития
Найденные решения
(34)Как я понимаю должно быть:
Остановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
&НаКлиенте
Процедура ТСТСПриИзменении(Элемент)
ПриИзмененииТСТСнаСервере(Элемент);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииТСТСнаСервере(Элемент);
//Выполняешь требуемые действия
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
Структура("Организация,ТС",Объект.Организация,Элемент.ТекущиеДанные.ТС));
Элемент.ТекущиеДанные.Водитель = Сведения[0].Водитель;
Элемент.ТекущиеДанные.БортНомер = Сведения[0].БортНомер;
КонецПроцедуры
ПоказатьОстановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
УАТ)
Вы, наверное, не правильно обращаетесь к регистру сведений, в "Элемент" регистр вряд ли будет. А там бог его знает.
Я всегда через запрос обращаюсь, примерно так:
Вы, наверное, не правильно обращаетесь к регистру сведений, в "Элемент" регистр вряд ли будет. А там бог его знает.
Я всегда через запрос обращаюсь, примерно так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| уатМестонахождениеТССрезПоследних.ТС,
| уатМестонахождениеТССрезПоследних.Колонна
|ИЗ
| РегистрСведений.уатМестонахождениеТС.СрезПоследних(&Дата, ТС.Водитель = &Водитель) КАК уатМестонахождениеТССрезПоследних";
Запрос.УстановитьПараметр("Водитель", Объект.ТС.Водитель);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Ваш код для обхода
КонецЦикла;
Показать
А через срез последних можно ли ? Сам понимаю что не через элемент
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водій",Объект.ТС.Водій));
Но так ругаеться компилятор :
Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма(176,13)}:Переменная не определена (РегистрыСведений)
Сведения = <<?>>РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водитель",Объект.ТС.Водитель));
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водій",Объект.ТС.Водій));
Но так ругаеться компилятор :
Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма(176,13)}:Переменная не определена (РегистрыСведений)
Сведения = <<?>>РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Водитель",Объект.ТС.Водитель));
БортовойНомер прибить к справочнику ТранспортногоСредства. Однозначно.
Текущий водитель из Регистра сведений по любому брать через
&НаСервере
Хоть через запрос, хоть через РегистрыСведений.уатМестонахождениеТС.СрезПоследних(КонечнаяДата,ОтборСтруктура)
Возвращает ТаблицуЗначений, если есть записи.
Текущий водитель из Регистра сведений по любому брать через
&НаСервере
Хоть через запрос, хоть через РегистрыСведений.уатМестонахождениеТС.СрезПоследних(КонечнаяДата,ОтборСтруктура)
Возвращает ТаблицуЗначений, если есть записи.
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
Водитель=ПолучитьВодителя(ТранспортноеСредство);
КонецПроцедуры
&НаСервере
Функция ПолучитьВодителя(ТранспортноеСредство)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних(ТекущаяДата()), Новый Структура("ТранспортноеСредство",ТранспортноеСредство);
Если Сведения.КУоличество()>0 Тогда
Водитель=Сведения.Водитель;
Иначе
Водитель=Неопределено;
КонецЕсли;
Возврат Водитель;
КонецФункции
Показать
Прописал код + в СрезПоследних в Новый Структура прописал "Организация" так как это измерение а Водитель - ресурс :
Но все равно не подтягивает данные. Кто знает почему так?
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Организация",Объект.ТС.Водитель));
Для каждого Элемент Из Сведения Цикл
Если Элемент.Ключ="Наименование" Тогда
Продолжить;
КонецЕсли;
Объект[Элемент.Ключ]=Элемент.Значение;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
ПриИзмененииТСНомерТСнаСервере(Элемент);
КонецПроцедуры
ПоказатьНо все равно не подтягивает данные. Кто знает почему так?
(11)
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
Структура("Организация",Объект.ТС.Водитель));
Для каждого Элемент Из Сведения Цикл
Если Элемент.Ключ="Наименование" Тогда
Продолжить;
КонецЕсли;
Объект[Элемент.Ключ]=Элемент.Значение;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
КонецПроцедуры
&НаСервере
ПриИзмененииТСНомерТСнаСервере(Элемент);
КонецПроцедуры
Показать
Какая-то у вас каша.
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
Структура("Организация",Объект.ТС.Водитель));
Для каждого Элемент Из Сведения Цикл
Если Элемент.Ключ="Наименование" Тогда
Продолжить;
КонецЕсли;
Объект[Элемент.Ключ]=Элемент.Значение;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
КонецПроцедуры
&НаСервере
ПриИзмененииТСНомерТСнаСервере(Элемент);
КонецПроцедуры
Какая-то у вас каша.
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент)
Сведения = Элемент.РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
Структура("Организация, Водитель", Объект.Организация, Объект.ТС.Водитель));
БортовойНомер = Сведения[0].БортовойНомер;
КонецПроцедуры
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент);
КонецПроцедуры
Показать
(23)
1)Нужно взять это значение из ТекущихДанных на клиенте
Процедура ТСТСПриИзменении(Элемент)
ТСТСПриИзмененииНаСервере();
ТекСтрока = Элементы.ТС.ТекущиеДанные;
КонецПроцедуры
2)передать на сервер в параметрах процедуры. Это так?
&НаСервере
Процедура ОбновитьНомерТСвТЧ( ТекСтрока = Неопределено)
ИмяТЧ = "ТС";
ТекСтрока = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
КонецПроцедуры
1)Нужно взять это значение из ТекущихДанных на клиенте
Процедура ТСТСПриИзменении(Элемент)
ТСТСПриИзмененииНаСервере();
ТекСтрока = Элементы.ТС.ТекущиеДанные;
КонецПроцедуры
2)передать на сервер в параметрах процедуры. Это так?
&НаСервере
Процедура ОбновитьНомерТСвТЧ( ТекСтрока = Неопределено)
ИмяТЧ = "ТС";
ТекСтрока = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
КонецПроцедуры
(32)Как-то так:
&НаКлиенте
Процедура ТСНомерТСПриИзменении(Элемент)
ПриИзмененииТСНомерТСнаСервере(Элемент, Водитель, БортНомер);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииТСНомерТСнаСервере(Элемент, Водитель, БортНомер);
//Выполняешь требуемые действия
КонецПроцедуры
Показать
(33)Есть еще вопрос
по СрезПоследних
У меня в регистре сведений уатМестонахождениеТС измерения : ТС и Организация.
В документе Перемещения Организация- реквизит а ТС - табл.часть
Мой код по срезу:
Понимаю что передавать так нельзя Объект.ТС и Объект.ТС.ТС тоже)
Но как правильно предать объект из табл.части?
по СрезПоследних
У меня в регистре сведений уатМестонахождениеТС измерения : ТС и Организация.
В документе Перемещения Организация- реквизит а ТС - табл.часть
Мой код по срезу:
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый Структура("Организация,ТС",Объект.Организация,Объект.ТС));
Понимаю что передавать так нельзя Объект.ТС и Объект.ТС.ТС тоже)
Но как правильно предать объект из табл.части?
(34)Как я понимаю должно быть:
Остановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
&НаКлиенте
Процедура ТСТСПриИзменении(Элемент)
ПриИзмененииТСТСнаСервере(Элемент);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииТСТСнаСервере(Элемент);
//Выполняешь требуемые действия
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних((ТекущаяДата()), Новый
Структура("Организация,ТС",Объект.Организация,Элемент.ТекущиеДанные.ТС));
Элемент.ТекущиеДанные.Водитель = Сведения[0].Водитель;
Элемент.ТекущиеДанные.БортНомер = Сведения[0].БортНомер;
КонецПроцедуры
ПоказатьОстановку в отладчике поставьте на этой строке и посмотрите:Элемент.ТекущиеДанные.ТС. Есть ли он и чему равен.
Очень нужна помощь !!!! Немного переделал и надо подтянуть организацию и подазделение
Как вытащить данные из регистра? Но при добавлении в 1с : Поле об`єкту не виявлено (Организация)
Ав.Организация = Сведения.Организация; :
Делаю так
&НаСервере
Процедура ТСТСПриИзмененииНаСервере(Ав)
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));
КонецПроцедуры
Процедура ТСТСПриИзменении(Элемент)
ТекСтрока = Элементы.ТС.ТекущиеДанные;
Ав = ТекСтрока.ТС;
ТСТСПриИзмененииНаСервере(Ав);
КонецПроцедуры
ПоказатьКак вытащить данные из регистра? Но при добавлении в 1с : Поле об`єкту не виявлено (Организация)
Ав.Организация = Сведения.Организация; :
Делаю так
&НаСервере
Процедура ТСТСПриИзмененииНаСервере(Ав)
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));
Ав.Организация = Сведения[0].Организация;
Ав.Подразделение = Сведения[0].Подразделение;
КонецПроцедуры
(36) Ав = Элемент.ТС.ТекущиеДанные; это данные строки(Элемент, а не Элементы).
В строке есть колонка Организация? В РегистрыСведений.уатМестонахождениеТС есть Подразделение?
Ав.Организация = Сведения[0].Организация;
Ав.Подразделение = Сведения[0].Подразделение;
В строке есть колонка Организация? В РегистрыСведений.уатМестонахождениеТС есть Подразделение?
Получился СрезПоследних. Как вытащить данные со среза.Пробую через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр но ругаеться компилятор :
Сведения = <<? >> ЗначениеИзСтрокиВнутр (стр) (Проверка: Тонкий клиент)
{Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма (458,13)}: Процедура или функция с указанным именем не определена (ЗначениеИзСтрокиВнутр)
Код:
Сведения = <<? >> ЗначениеИзСтрокиВнутр (стр) (Проверка: Тонкий клиент)
{Документ.уатПеремещениеТСиОборудования.Форма.ФормаДокумента.Форма (458,13)}: Процедура или функция с указанным именем не определена (ЗначениеИзСтрокиВнутр)
Код:
&НаСервере
Функция ТСТСПриИзмененииНаСервере(Ав)
Сведения = РегистрыСведений.уатМестонахождениеТС.СрезПоследних(, Новый Структура("Организация,ТС",Объект.Организация,Ав));
Возврат ЗначениеВСтрокуВнутр(Сведения);
КонецФункции
&НаКлиенте
Процедура ТСТСПриИзменении(Элемент)
ТекСтрока = Элементы.ТС.ТекущиеДанные;
Ав = ТекСтрока.ТС;
Стр = ТСТСПриИзмененииНаСервере(Ав);
Сведения = ЗначениеИзСтрокиВнутр(Стр);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот