|
Получить ссылки на все элементы определенного Родителя | ☑ | ||
---|---|---|---|---|
0
Marry04
08.06.16
✎
06:54
|
Как получить ссылки на все элементы Родителя под наименованием "КО Теп" справочника "Рабочие центры". В дальнейшем хочу поместить ссылки в регистр сведений. делаю так:
Процедура ЗаполнитьНажатие(Элемент) Запрос = Новый Запрос ( " | ВЫБРАТЬ | РабочиеЦентры.Ссылка |ИЗ | Справочник.РабочиеЦентры КАК РабочиеЦентры |ГДЕ | РабочиеЦентры.Родитель = &Группа |" ); СсылкаНаГруппу= "КО Теп"; Запрос.УстановитьПараметр("Группа", СсылкаНаГруппу); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Сообщить(СсылкаНаГруппу.Ссылка + ":"); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); КонецЦикла; КонецПроцедуры Ошибка: {Форма.Форма.Форма(24)}: Значение не является значением объектного типа (Ссылка) Сообщить(СсылкаНаГруппу.Ссылка + ":"); |
|||
1
birkoFFFF
08.06.16
✎
06:59
|
//СсылкаНаГруппу= "КО Теп";
Что вы тут имели в виду? //СсылкаНаГруппу.Ссылка А тут вы что делаете ? Получить ссылки из строки пытаетесь? Однако... |
|||
2
Zmich
08.06.16
✎
07:04
|
(0). Используй НайтиПоНаименованию
|
|||
3
1dvd
08.06.16
✎
07:09
|
Сообщить("" + СсылкаНаГруппу.Ссылка + ":");
|
|||
4
1dvd
08.06.16
✎
07:09
|
|ГДЕ
| РабочиеЦентры.Родитель В (&Группа) |
|||
5
1dvd
08.06.16
✎
07:10
|
|ГДЕ
| РабочиеЦентры.ССылка = &Группа |
|||
6
1dvd
08.06.16
✎
07:10
|
блин...
|ГДЕ | РабочиеЦентры.ССылка В (&Группа) |
|||
7
Marry04
08.06.16
✎
09:05
|
(1) Я хочу получить ссылку на родителя с данным наименованием "КО Теп",а также на элементы родителя.
|
|||
8
1dvd
08.06.16
✎
09:06
|
(7) тогда В ИЕРАРХИИ
|
|||
9
Marry04
08.06.16
✎
09:06
|
(3) все равно ошибка такая же. не помогло ни Сообщить("" + СсылкаНаГруппу.Ссылка + ":"); ни |ГДЕ
| РабочиеЦентры.ССылка В (&Группа) |
|||
10
Fish
08.06.16
✎
09:07
|
(3) У него СсылкаНаГруппу - это строка.
|
|||
11
1dvd
08.06.16
✎
09:07
|
(9)
//СсылкаНаГруппу= "КО Теп"; СсылкаНаГруппу= Справочники.РабочиеЦентры.НайтиПоНаименованию("КО Теп"); |
|||
12
Marry04
08.06.16
✎
09:25
|
(11) получилось спасибо!именно ссылки на наименования!
теперь хочу загнать эти ссылки(наименования) в регистр сведений "Графики рабочих центров" в поле РабочийЦентр, дата и график работы из справочника "График работы".причем для всех РЦ он равен элемнту справочника=2 смена. Не совсем понимаю как вытащить именно это значение. Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; НоваяЗапись.ГрафикРаботы = Справочники.ГрафикиРаботы.??? КонецЦикла; |
|||
13
Marry04
08.06.16
✎
09:26
|
маленьким запросом может. и найти по наименованию метод тут не подойдет?
|
|||
14
Fish
08.06.16
✎
09:28
|
(13) Тем же запросом и вытаскивай. В чём проблема?
|
|||
15
Marry04
08.06.16
✎
09:33
|
(14) Запрос = Новый Запрос (
" | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.ССылка = "2 смены" |" ); ГрафикиРаботы.ССылка = "2 смены" ругается на данную конструкцию..пишет, что не хватает символа - ). не понимаю зачем он. |
|||
16
Marry04
08.06.16
✎
09:34
|
Ожидается символ ')'
| ГрафикиРаботы.ССылка = "<<?>>2 смены" |
|||
17
Ёпрст
08.06.16
✎
09:36
|
(15) он тебе мягко намекает, что сравнивать ссылку со строкой бессмысленно
|
|||
18
Marry04
08.06.16
✎
09:39
|
(17) исправила на ГрафикиРаботы.Наименование = "2 смены"
тоже самое |
|||
19
Зая Бусечка
08.06.16
✎
09:41
|
(18) ссылку со строкой сравнивать бессмысленно
ну или тупо Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" обрати внимание на кавычки |
|||
20
Fish
08.06.16
✎
09:43
|
(18) "исправила" - Измени пол в личке.
|
|||
21
Marry04
08.06.16
✎
09:48
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; НоваяЗапись.Записать(Истина); КонецЦикла; Вот таким образом сделала. но что-то данные в регистр не записываются |
|||
22
Ёпрст
08.06.16
✎
09:55
|
(21) дык, перебирать надо ВыборкаДетальныеЗаписи1 , для начала.
А так, всё в топку. |
|||
23
Зая Бусечка
08.06.16
✎
09:58
|
А где ВыборкаДетальныеЗаписи1.Следующий() ?
|
|||
24
Marry04
08.06.16
✎
09:59
|
(22) Запрос = Новый Запрос (
" | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; КонецЦикла; НоваяЗапись.Записать(Истина); про это вы? |
|||
25
Marry04
08.06.16
✎
10:02
|
Бесполезно, все равно не хочет заполняться данными регистр. может не так как-то выборка графика все-таки идет или записывать как-то по-другому
вот вроде как полноценный код пока такой. Процедура ЗаполнитьНажатие(Элемент) Запрос = Новый Запрос ( " | ВЫБРАТЬ | РабочиеЦентры.Ссылка |ИЗ | Справочник.РабочиеЦентры КАК РабочиеЦентры |ГДЕ | РабочиеЦентры.ССылка В ИЕРАРХИИ(&Группа) |" ); //СсылкаНаГруппу = Справочники.РабочиеЦентры.ПустаяСсылка(); СсылкаНаГруппу= Справочники.РабочиеЦентры.НайтиПоНаименованию("КО Теп"); Запрос.УстановитьПараметр("Группа", СсылкаНаГруппу); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); //Сообщить("" + СсылкаНаГруппу.Ссылка + ":"); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; КонецЦикла; НоваяЗапись.Записать(Истина); КонецЦикла; КонецПроцедуры |
|||
26
Ёпрст
08.06.16
✎
10:02
|
(24) да, но весь код - в топку
|
|||
27
catena
08.06.16
✎
10:04
|
(25)Хотите, дам рецепт чудесного борща?
|
|||
28
Marry04
08.06.16
✎
10:07
|
(26) почему? что не так?
|
|||
29
Marry04
08.06.16
✎
10:08
|
(27) извините , что задаю тупые вопросы. я- начинающий только..
|
|||
30
Ёпрст
08.06.16
✎
10:08
|
(28) ну, всё
:) А так, занимайтесь, совершенствуйтесь |
|||
31
Marry04
08.06.16
✎
10:09
|
(30) все???может дадите свой какой-то алгоритм. буду очень благодарна вам
|
|||
32
Marry04
08.06.16
✎
10:13
|
все получилось!спасибо всем огромное!
|
|||
33
Feunoir
08.06.16
✎
10:14
|
Вы, самое главное, не спугните девушку. Она отличный кандидат на участие в конкурсе мисс бюст. Если он, когда-нибудь ещё будет проводиться.
https://pp.vk.me/c604417/v604417607/1b2/NMohOB_Ay3g.jpg |
|||
34
Marry04
08.06.16
✎
10:28
|
(33) что вы делаете(((
|
|||
35
catena
08.06.16
✎
10:37
|
(29)Так начинающие книжки читают. Зачем превращать форум в интерактивный СП?
|
|||
36
Feunoir
08.06.16
✎
10:38
|
(34) Фоточки показываю :) Красивая фотка. Динамический диапазон поправить и отлично вообще будет.
|
|||
37
Зая Бусечка
08.06.16
✎
10:44
|
(34) Он завидует. Я тоже.
|
|||
38
Marry04
08.06.16
✎
10:54
|
Теперь аналогичную вещь делаю для справочника ГруппыЗаменяемостиРабочихЦентров. там уже нет иерархии. просто вывести в регистр сведений ссылки на данные РЦ и график работы такой же проставить. Но тут косяк, пишет, что
{Форма.Форма.Форма(41)}: Ошибка при вызове метода контекста (Записать) НоваяЗапись.Записать(Истина); по причине: Запись не верна! Значение поля "Рабочий центр" не может быть пустым!: ГрафикиРабочихЦентров: 08.06.2016, (Регистр сведений: Графики рабочих центров) Вот код Процедура ЗаполнитьРЦНажатие(Элемент) НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГруппыЗаменяемостиРабочихЦентров.Ссылка |ИЗ | Справочник.ГруппыЗаменяемостиРабочихЦентров КАК ГруппыЗаменяемостиРабочихЦентров |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; КонецЦикла; НоваяЗапись.Записать(Истина); КонецПроцедуры |
|||
39
Marry04
08.06.16
✎
10:56
|
При этом при помощи метода Сообщить() я вижу, что ссылки все выводятся на экран.
|
|||
40
Зая Бусечка
08.06.16
✎
10:59
|
Убейте меня и развейте пепел, но не понимаю, зачем для этого использовать менеджер записи... А не набор записей..
|
|||
41
Marry04
08.06.16
✎
11:00
|
(40) чтоб не связываться с отбором))
|
|||
42
Feunoir
08.06.16
✎
11:05
|
(38) (39) А почему запись записывается один раз? Причем после второго цикла?
|
|||
43
Marry04
08.06.16
✎
11:12
|
(42) Процедура ЗаполнитьРЦНажатие(Элемент)
НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГруппыЗаменяемостиРабочихЦентров.Ссылка |ИЗ | Справочник.ГруппыЗаменяемостиРабочихЦентров КАК ГруппыЗаменяемостиРабочихЦентров |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; КонецЦикла; НоваяЗапись.Записать(Истина); КонецЦикла; КонецПроцедуры если так делаю - то только один РЦ по методу сообщить появляется. |
|||
44
Marry04
08.06.16
✎
11:13
|
а потом выдает ошибку ту же
|
|||
45
Feunoir
08.06.16
✎
11:23
|
(44) Да не. Тут нужно понимать что делать. Просто так методом ненаучного тыка не решишь.
Сколько записей выдаётся в первом запросе и сколько во втором? Не может ли быть такое, что в первом запросе последний РЦ - пустой? Хотя вряд-ли. |
|||
46
Marry04
08.06.16
✎
11:24
|
Процедура ЗаполнитьРЦНажатие(Элемент)
Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГруппыЗаменяемостиРабочихЦентров.Ссылка |ИЗ | Справочник.ГруппыЗаменяемостиРабочихЦентров КАК ГруппыЗаменяемостиРабочихЦентров |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(" " + ВыборкаДетальныеЗаписи.Ссылка); НоваяЗапись=РегистрыСведений.ГрафикиРабочихЦентров.СоздатьМенеджерЗаписи(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.РабочийЦентр = ВыборкаДетальныеЗаписи.Ссылка; Запрос = Новый Запрос ( " | ВЫБРАТЬ | ГрафикиРаботы.Ссылка |ИЗ | Справочник.ГрафикиРаботы КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Наименование = ""2 смены"" |" ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл НоваяЗапись.ГрафикРаботы = ВыборкаДетальныеЗаписи1.Ссылка; КонецЦикла; НоваяЗапись.Записать(Истина); КонецЦикла; КонецПроцедуры Изменила чуть, новую запись менеджер делал один раз. в цикл добавила метод. но все равно не работает |
|||
47
Marry04
08.06.16
✎
11:29
|
первая запись только выходит.
|
|||
48
Feunoir
08.06.16
✎
11:37
|
(46) Открыл УПП... Смотри что получается.
Тип реквизита РабочийЦентр в регистре ГрафикиРабочихЦентров - СправочникСсылка.РабочиеЦентры. А ты туда записываешь ссылку на справочник Справочник.ГруппыЗаменяемостиРабочихЦентров. Естественно он туда записаться не хочет и становится пустым. Тебе нужно выбирать не просто ГруппыЗаменяемостиРабочихЦентров, а табличную часть Состав, скорее всего. |
|||
49
Marry04
08.06.16
✎
11:52
|
(48) Таким образом мне нужно обратиться к табличной части Состав, а именно к реквизиту "Рабочий центр"справочника?
|
|||
50
Feunoir
08.06.16
✎
11:58
|
(49) Точно. Первый запрос должен выглядеть примерно так:
Ну и потом писать не
а
Ну, а так-то по хорошему надо всю процедуру переписывать. |
|||
51
Marry04
08.06.16
✎
12:18
|
При раскрытии элемента справочника ГруппыЗаменяемостиРабочихЦентров появляется табличная часть как раз Состав. Но в техноогич.карте прописано наименование элементов, а не один из элементов табл.части. То есть мне нужна как-то ссылка на наименование .а не на табл.часть
|
|||
52
Marry04
08.06.16
✎
12:21
|
я понимаю, что типы данных в регистре и в справочнике должны совпадать..но в техн.карте прописаны наименования именно справочника ГруппыЗаменяемостиРабочихЦентров
|
|||
53
catena
08.06.16
✎
12:42
|
(52)Начните с постановки задачи. У вас в голове каша. Напишите себе четкий текст задания (если его нет) и попробуйте сделать вручную пару записей. Запоминая, откуда и по каким критериям берете данные.
|
|||
54
Marry04
08.06.16
✎
12:47
|
Как установить графики в регистре сведений "график рабочих центров" для элементов справочника "группы заменяемости рабочих центров"?
|
|||
55
catena
08.06.16
✎
12:49
|
(54)Это не задача. Это вопрос. При чем абстрактный, не имеющий никакого практического смысла.
|
|||
56
catena
08.06.16
✎
12:50
|
И ответ к нему можно найти в СП. Даже с примерами.
|
|||
57
Feunoir
08.06.16
✎
12:54
|
(52) (54) Приводить учёт в соответствие с программой или наоборот дорабатывать программу до соответствия с учётом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |