Заполнить табличную часть на основании реквизита
Здравствуйте, есть реквизит Подразделение на форме документа ОценкаЗначимостиРиска с типом Справочник.Услуги
Так вот, я выбираю подразделение и на основании этого подразделения надо заполнить реквизит Риск Табличной Части Оценка Документа ОценкаЗщначимостиРиска .
Структура справочника немного странная:
Примерно так.
Я выбираю подразделение Группа2 допустим и реквизит табличной части должен заполняться элементом1 из этой группы.
Сделал так: но не работает
Так вот, я выбираю подразделение и на основании этого подразделения надо заполнить реквизит Риск Табличной Части Оценка Документа ОценкаЗщначимостиРиска .
Структура справочника немного странная:
Наименование Родитель
Группа1
Группа1.1 Группа1
Элемент1 Группа1.1
Группа1.2 Группа1
Элемент1 Группа1.2
Группа2
Группа2.1 Группа2
Элемент1 Группа2.1
Группа2.2 Группа2
Элемент1 Группа2.2
ПоказатьПримерно так.
Я выбираю подразделение Группа2 допустим и реквизит табличной части должен заполняться элементом1 из этой группы.
Сделал так: но не работает
&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере()
Для Каждого Строка из Объект.Оценка Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Наименование
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Родитель = &Подразделение";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Заполнение табличной части документов из файла Excel (для 1С 7.7 бухгалтерский учет, ред. 4.5)
- Табличная часть из дополнительных реквизитов с обработкой событий в расширении
- Универсальное заполнение табличных частей
- Заполнение табличных частей документов одного вида из табличных частей списка документов другого вида (альтернатива ввода на основании)
- Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0
Найденные решения
(18)
&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере()
Объект.Оценка.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Ссылка
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
НоваяСтрока.Риск = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Исходя из постановки задачи и примера могу предположить следующее:
1. в запросе Вы выбираете наименование, а надо ссылку;
2. элемент имеет уровень вложенности 3, параметр &Подразделение - группа уровня 1, а вы проверяете родителя уровня 2. Скорее надо как-то так:
3. нет в условии проверки "ЭтоГруппа = Ложь";
1. в запросе Вы выбираете наименование, а надо ссылку;
2. элемент имеет уровень вложенности 3, параметр &Подразделение - группа уровня 1, а вы проверяете родителя уровня 2. Скорее надо как-то так:
...
ГДЕ
Услуги.Родитель.Родитель = &Подразделение // если элементы всегда на 3-ем уровне, а подразделение - на первом
...
ГДЕ
Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) // если элементы и подразделение могут оказаться на любом уровне
3. нет в условии проверки "ЭтоГруппа = Ложь";
(3)Элементы могут быть на любом уровне, написал
А как быть с тем что я заполняю одну колонку(Риск) табличной части?
ГДЕ
Услуги.Ссылка В ИЕРАРХИИ(&Подразделение)
А как быть с тем что я заполняю одну колонку(Риск) табличной части?
Для Каждого Строка из Объект.Оценка Цикл //Тут я заполняю всю ТЧ
А мне надо заполнять Объект.Оценка.Риск //Одну колонку ТЧ
При этом возникает ошибка что поле объекта не обнаружено
(2)а какой другой?
по моей логике я выбираю элементы у которых родитель = подразделение.
Вид иерархии: Иерархия групп и элементов
Может проблема в том что я заполняю все реквизиты табличной части?
Мне надо заполнить в табличной части реквизит(колонку) Риск.
Пишу Для Каждого Строка Из Объект.Оценка(НазваниеТабличнойЧасти).Риск(названиеРеквизита)
Пишет Что поле объекта Риск не обнаружено
по моей логике я выбираю элементы у которых родитель = подразделение.
Вид иерархии: Иерархия групп и элементов
Может проблема в том что я заполняю все реквизиты табличной части?
Мне надо заполнить в табличной части реквизит(колонку) Риск.
Пишу Для Каждого Строка Из Объект.Оценка(НазваниеТабличнойЧасти).Риск(названиеРеквизита)
Пишет Что поле объекта Риск не обнаружено
(7)
Ну реквизит ТЧ есть, Называется Риск, но я не знаю как к нему обратиться
?
Вот все что связано с данной темой вопроса
Ну реквизит ТЧ есть, Называется Риск, но я не знаю как к нему обратиться
?
Вот все что связано с данной темой вопроса
&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере()
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого Строка из Объект.Оценка Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Наименование
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
КонецЦикла;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ПодразделениеПриИзмененииНаСервере();
КонецПроцедуры
Показать
(18)
&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере()
Объект.Оценка.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Ссылка
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
НоваяСтрока.Риск = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
Показать
Вот так попробуйте
&НаСервере
Процедура ПодразделениеПриИзмененииНаСервере()
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого Строка из Объект.Оценка Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Наименование КАК Риск
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;
КонецЦикла;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры
Показать
(12)Да есть у меня этот реквизит, есть.
Из запроса надо взять элемент у которого родитель = Подразделение, и заполнить этими элементами реквизит Риск.
Я исправил НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;
На Это НоваяСтрока.Риск = ВыборкаДетальныЕЗаписИ.Риск;
Ошибок нет, но данные все равно не заполняются
Из запроса надо взять элемент у которого родитель = Подразделение, и заполнить этими элементами реквизит Риск.
Я исправил НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;
На Это НоваяСтрока.Риск = ВыборкаДетальныЕЗаписИ.Риск;
Ошибок нет, но данные все равно не заполняются
(22)
Вот, все как Вы сказали, все равно не работает.
Для Каждого Строка из Объект.Оценка Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Услуги.Ссылка КАК Риск
|ИЗ
| Справочник.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Объект.Оценка.Добавить();
НоваяСтрока.Риск = ВыборкаДетальныеЗаписи.Риск;
КонецЦикла;
КонецЦикла;
ПоказатьВот, все как Вы сказали, все равно не работает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот