|
замена родителя у справочника | ☑ | ||
---|---|---|---|---|
0
Margo95
08.10.20
✎
15:01
|
Добрый день, помогите разобраться, почему по нажатию кнопки, у меня не срабатывает смена родителя у элементов справочника? ДС.Категория - ДС.Родитель = Колонки в ТЗ(даже если сделать через Для каждого стр из ТЗ Цикл, то все равно не будет заменяться
Пока Выборка.Следующий() Цикл Если ТабДок.Область(а,1).ЦветФона = WebЦвета.БледноЛиловый Тогда поиск = спр.НайтиПоНаименованию(ДС.Категория).ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(ДС.Родитель).ПолучитьОбъект(); поиск.Родитель = поиск1.Ссылка; поиск.Записать(); Иначе Прервать; КонецЕсли; а = а + 1; КонецЦикла; |
|||
1
vicof
08.10.20
✎
15:09
|
Запусти отладку хотя бы. Про код я вообще молчу.
|
|||
2
ГдеСобака Зарыта
08.10.20
✎
15:09
|
Наверно в ТабДоке цвет фона не бледно-лиловый))
|
|||
3
vicof
08.10.20
✎
15:09
|
Ставлю на то, что в выборке нет записей
|
|||
4
vicof
08.10.20
✎
15:10
|
Или категория и родитель не текстовые
|
|||
5
ГдеСобака Зарыта
08.10.20
✎
15:12
|
(4) Тогда б ругнулась на несоответствие типа. Скорее всего дело в цвете.
|
|||
6
Margo95
08.10.20
✎
15:14
|
в Табличном документе цвет фона нужных колонок окрашен и поиск их происходит отлично, в справочнике так же есть все записи, Выборка = Справочники.Номенклатура.Выбрать();
Категория так же указана у всех элементов и родитель так же указан, справочник иерархический, вот только те поля которые находятся, по какой-то причине не меняют родителей на соответствующие их категории и я не понимаю по какой причине( |
|||
7
vicof
08.10.20
✎
15:17
|
(6) Типы разные
|
|||
8
Kigo_Kigo
08.10.20
✎
15:17
|
А если так
поиск = спр.НайтиПоНаименованию(ДС.Категория); ПоискЭл = Поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(ДС.Родитель); поискЭл.Родитель = поиск1;//.Ссылка; поискЭл.Записать(); И кстати , зачем ты получаешь Элемент родитель, его достаточно найти |
|||
9
vicof
08.10.20
✎
15:21
|
И где фотка в профиле?
|
|||
10
Margo95
08.10.20
✎
15:22
|
(8) Думала, что родителя тоже нужно получать, нет, так тоже не работает, допустим если в 5й строке у меня в колонке категория Техника, а Родитель Товары, то по нажатию кнопки, всё остаётся как и было, Категория Техника и Родитель не меняется на Техника
|
|||
11
Margo95
08.10.20
✎
15:23
|
(9) не задумывалась о загрузке фотки в профиль
|
|||
12
Kigo_Kigo
08.10.20
✎
15:29
|
поиск = спр.НайтиПоНаименованию(ДС.Категория);
ПоискЭл = Поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(ДС.Родитель); Если не Поиск1.Этогруппа() Тогда Сообщить("это не группа!") КонецЕсли поискЭл.Родитель = поиск1//.Ссылка; поискЭл.Записать(); а так что скажет? |
|||
13
Margo95
08.10.20
✎
15:34
|
(12) не Сообщает ничего, даже если сделать Если поиск1 ... У меня перед моим кодом идёт добавление в ТЗ, возможно какие-то проблемы изначально с кодом?
Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл ДС = ТЗ.Добавить(); ДС.Наименование = Выборка.Наименование; ДС.ВидНоменклатуры = Выборка.ВидНоменклатуры; ДС.Категория = Выборка.Категория; ДС.Родитель = Выборка.Родитель; КонецЦикла; |
|||
14
Kigo_Kigo
08.10.20
✎
15:39
|
(13) Все ясно, ответ в (4)
поиск = спр.НайтиПоНаименованию(СокрЛП(ДС.Категория.Наименование)); ПоискЭл = Поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(СлкрЛП(ДС.Родитель.Наименование)); Если не Поиск1.Этогруппа() Тогда Сообщить("это не группа!") КонецЕсли поискЭл.Родитель = поиск//.Ссылка; поискЭл.Записать(); |
|||
15
Margo95
08.10.20
✎
15:41
|
Я нашла ошибочку, из-за того, что у меня ТабДок.Область(а,1) у меня происходит проверка 1 раз и после срабатывает Иначе Прервать; После чего цикл заканчивается и код не пробегает по всему Табличному документу
|
|||
16
Margo95
08.10.20
✎
15:42
|
(14) Вылетает ошибка {Обработка.Обработка1.Форма.Форма.Форма(65)}: Ошибка при вызове метода контекста (Записать)
поиск.Записать(); по причине: Зацикливание уровней! по причине: Зацикливание уровней! |
|||
17
Margo95
08.10.20
✎
15:45
|
(14) Вот только не совсем пойму, как сделать цикл так, чтобы зацикливание уровней не происходило, уже часа 4 мучаюсь с этой задачкой
|
|||
18
Kigo_Kigo
08.10.20
✎
15:47
|
(17) А ты точно код и (14) используешь? у меня нет поиск.Записать(); , у меня есть поискЭл.Записать();
|
|||
19
Kigo_Kigo
08.10.20
✎
15:49
|
А зациливание идет, когда родителя в родителя пытаешься записать, самого в себя
|
|||
20
Margo95
08.10.20
✎
15:51
|
(18) да, просто изначально указала поискЭл, после в конце поиск.Записать, сейчас копипаст сделаю даже, для точной проверки
|
|||
21
Margo95
08.10.20
✎
15:55
|
(19) 2 ошибки, Значение не является значением объектного типа (Наименование)
и Метод объекта не обнаружен (Этогруппа) |
|||
22
Kigo_Kigo
08.10.20
✎
15:57
|
(21) УФ? Предупреждать надо
|
|||
23
Margo95
08.10.20
✎
15:59
|
(22) ох, извиняюсь, да это управляемые формы (((
|
|||
24
Kigo_Kigo
08.10.20
✎
16:01
|
(23) Выполняй на сервере тогда
|
|||
25
Margo95
08.10.20
✎
16:02
|
(24) у меня весь код на сервере написан
|
|||
26
Волшебник
08.10.20
✎
16:04
|
"поиск" - это плохое название для переменной, содержащей элемент справочник (ссылку или объект)
|
|||
27
Kigo_Kigo
08.10.20
✎
16:04
|
Тогда не знаю,
поиск = спр.НайтиПоНаименованию(ДС.Категория); ПоискЭл = Поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(ДС.Родитель); поискЭл.Родитель = поиск1;//.Ссылка; поискЭл.Записать(); |
|||
28
Margo95
08.10.20
✎
16:05
|
(24) Исправила малёх ошибку, нашла в чем причина, на Если не поиск.ЭтоГруппа ничего не выводит, просто опять Ошибка при вызове метода контекста (Записать)
|
|||
29
Kigo_Kigo
08.10.20
✎
16:05
|
Уж ЭтоГруппа() 100% должен отрабатывать, не говоря про наименование
|
|||
30
Волшебник
08.10.20
✎
16:07
|
Результатом НайтиПоНаименованию может быть Неопределено, если элемент не найден.
|
|||
31
Margo95
08.10.20
✎
16:08
|
Вот код, который находится после добавление данных в ТЗ из справочника который выдаёт 2 ошибки Значение не является значением объектного типа (Наименование) и Ошибка при вызове метода контекста (Записать) - зацикливание уровней
Пока Выборка.Следующий() Цикл Если ТабДок.Область(а,1).ЦветФона = WebЦвета.Зеленый Тогда поиск = спр.НайтиПоНаименованию(СокрЛП(ДС.Категория.Наименование)); ПоискЭл = поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(СокрЛП(ДС.Родитель.Наименование)); Если не поиск1.ЭтоГруппа Тогда Сообщить("это не группа!") КонецЕсли; ПоискЭл.Родитель = поиск1.Ссылка; ПоискЭл.Записать(); Иначе Прервать; КонецЕсли; а = а + 1; КонецЦикла; |
|||
32
Kigo_Kigo
08.10.20
✎
16:08
|
(30) Хорошо
Если поиск = спр.НайтиПоНаименованию(ДС.Категория) тогда; ПоискЭл = Поиск.ПолучитьОбъект(); поиск1 = спр.НайтиПоНаименованию(ДС.Родитель); поискЭл.Родитель = поиск1//.Ссылка; поискЭл.Записать(); КонецЕсли; |
|||
33
Волшебник
08.10.20
✎
16:09
|
Непонятно сравнение Если ЦветФона = WebЦвета.БледноЛиловый.
Лучше сравнивать числа или значения из ячеек, например, флажки, коды, а не какие-то там цвета |
|||
34
Волшебник
08.10.20
✎
16:10
|
ПоискЭл.Родитель = поиск1.Ссылка;
В "поиск1" уже содержится ссылка (если элемент найден). Лишнее обращение через точку. Если не найден, то будет ошибка. Вместо "поиск1" лучше назвать НовыйРодитель или ДС_Родитель |
|||
35
Kigo_Kigo
08.10.20
✎
16:11
|
(33) Ладно, это можно опустить, сравнение идет и она попадает в тело, почему получается , что она родителя в родителя получается пытается записать?
Эхх, отладчиком бы ее научить пользоваться, а так развлекаловка )))) |
|||
36
Margo95
08.10.20
✎
16:13
|
(33) у меня Табличный документ раскрашен в 3 разных цвета, при разных условиях, решила сделать сравнение по цвету, так просто нужные колонки будут перебираться и так все равно ищет все значения покрашенные в такой цвет
|
|||
37
Волшебник
08.10.20
✎
16:14
|
(36) Всё плохо. Всё надо удалить и написать заново.
|
|||
38
Margo95
08.10.20
✎
16:14
|
(35) у меня тоже такой вопрос, почему идёт зацикливание, пыталась менять название Перем по совету из (34), но все равно родитель в родителя идёт
|
|||
39
Волшебник
08.10.20
✎
16:14
|
ТабличныйДокумент здесь не нужен вообще.
|
|||
40
Kigo_Kigo
08.10.20
✎
16:15
|
поправочка
Если поиск = спр.НайтиПоНаименованию(ДС.Категория) тогда; ПоискЭл = Поиск.ПолучитьОбъект(); поискРодитель = спр.НайтиПоНаименованию(ДС.Родитель); поискЭл.Родитель = поискРодитель;//.Ссылка; поискЭл.Записать(); КонецЕсли; |
|||
41
Kigo_Kigo
08.10.20
✎
16:16
|
Если СПРпоиск = спр.НайтиПоНаименованию(ДС.Категория) тогда;
ПоискЭл = СПРПоиск.ПолучитьОбъект(); поискРодитель = спр.НайтиПоНаименованию(ДС.Родитель); поискЭл.Родитель = поискРодитель//.Ссылка; поискЭл.Записать(); КонецЕсли; |
|||
42
Волшебник
08.10.20
✎
16:16
|
НайтиПоНаименованию ищет по частичному наименованию и находит не то.
Для поиска по точному наименованию есть второй параметр. |
|||
43
Волшебник
08.10.20
✎
16:16
|
(41) Мазила
|
|||
44
Margo95
08.10.20
✎
16:17
|
(39) изначально нужно просто использовать поте Табличного документа, поэтому я использую его
|
|||
45
Kigo_Kigo
08.10.20
✎
16:17
|
(43) Убрал название переменных в пересечении с системными )))
|
|||
46
Margo95
08.10.20
✎
16:24
|
все равно происходит зацикливание, ладненько, всем спасибо за помощь, пойду дальше читать и побольше почитаю про справочники и их методы, надеюсь, что сама найду проблемку, оставлю эту задачу на потом
|
|||
47
Margo95
08.10.20
✎
16:24
|
Спасибо большое еще раз за то, что откликнулись
|
|||
48
Kigo_Kigo
08.10.20
✎
16:28
|
(47) Что то мне подсказывает, не там проблему ищешь
ДС.Категория и ДС.Родитель - это у тебя одно и тоже, вот и зацикливание и этот в (41) код рабочий, если ДС.Категория <> ДС.Родитель, так что лучше почитай лучше как отладчиком пользоваться |
|||
49
Margo95
08.10.20
✎
16:30
|
(48) Не совсем поняла, как у меня это может быть одним и тем же, если у меня Категория(это реквизит в справочнике), а Родитель это у меня обычно указывается папка, в которой находится товар
|
|||
50
Margo95
08.10.20
✎
16:32
|
(48) Как-то найти значения мне нужные возможно по другому? сначала они у меня выводятся в поле табличного документа, после по нажатию кнопки, должны сменяться реквизиты, я просто не понимаю, как мне по-другому тогда искать нужные мне значения
|
|||
51
Kigo_Kigo
08.10.20
✎
16:40
|
Меня смущает вот это
Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл ДС = ТЗ.Добавить(); ДС.Наименование = Выборка.Наименование; ДС.ВидНоменклатуры = Выборка.ВидНоменклатуры; ДС.Категория = Выборка.Категория; ДС.Родитель = Выборка.Родитель; КонецЦикла; Что такое категория, тип значения? |
|||
52
Kigo_Kigo
08.10.20
✎
16:42
|
Поставь точку останова, запусти и смотри все переменные и какие значения там
|
|||
53
lEvGl
гуру
08.10.20
✎
16:45
|
сколько желающих поискать БледноЛиловый в дебрях табдока)
|
|||
54
Margo95
08.10.20
✎
17:06
|
(52) Наименование - наим. товара, ВидНоменклатуры - Товар/Услуга, Категория - Строка. Допустим (Техника), Родитель(ссылка на папку Техника), если родитель не ссылка на папку где находится товар
Поставила точку останова везде, ДС.Категория и Родитель всегда имеют Значение "" , а вот Выборка.Категория/Родитель имеют нужные значения из справочника и так же поставила точку остановка на НайтиПоНаименованию(ДС.Категория/Родитель), тоже Значение "" |
|||
55
Margo95
08.10.20
✎
17:07
|
(53) один из цветов, который используется для покраски не совпадающих колонок)
|
|||
56
Margo95
08.10.20
✎
17:08
|
(54) Не совсем понимаю почему у меня значение на ДС. .. "", если используя для табличного документа подобный вывод, поля тз полностью заполнились всемии значениями
|
|||
57
Margo95
08.10.20
✎
17:23
|
Проверила, у меня дс.Категория и ДС.Родитель получают самое последнее в этих колонках ТЗ значение типа строка
|
|||
58
Kigo_Kigo
09.10.20
✎
07:50
|
Категория - Строка. Допустим (Техника), Родитель(ссылка на папку Техника)
вот теперь думай, почему у тебя зацикливание, короче все мутно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |