Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > Компьютеры и Интернет > Скорая помощь

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 18.02.2008, 08:31   #1
Новичок
 
Пол:Женский
Регистрация: 10.12.2007
Сообщений: 6
Репутация: 0
Exclamation Ошибка в 1С !

Добрый день.

Помогите ради бога! Прошу прощения у модераторов, если не верно выбрал место для размещения объявления.

Написал обработку для справочника материалов...
Она должна производить массовый перенос из одной папки справочника в другую (из одной группы в другую)...
вобщем некая сортировка элементов справочника...

и вот, когда добрался до конечной точки, а именно смена Родителя элемента происходит следущее:

Материал.Родитель = НовыйРодитель;
{Обработка.СортировкаМатериалов.Форма.Модуль(78)}: Объект не может быть перепозиционирован!


неужели никак нельзя обрабатывать элементы справочника программно (в частности "перенос" элементов)!
ezk вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: хонор 16 пропроекты домов в стиле барнхаусdiscord интеграциипескоструйная кабина ps-bМагазин бытовой техники: kin 865se0 - переходи на сайт ТАЙМТВ!


Старый 18.02.2008, 11:36   #2
axlwor
Постоялец
 
Пол:Мужской
Регистрация: 07.10.2005
Сообщений: 760
Репутация: 166
По умолчанию Ответ: Ошибка в 1С !

Такая конструкция работоспособна впринципе.
Но скорее всего лучше
Код:
Материал = СоздатьОбъект("Справочник.Материалы")
МатериалРод = СоздатьОбъект("Справочник.Материалы")
МатериалРод.НайтиЭлемент(Группа)
Пока ВсеПравда цикл
   Материал.НайтиЭлемент(Мат)
   Материал.Родитель = МатериалРод.ТекущийЭлемент()
   Материал.Записать()
КонецЦикла
axlwor вне форума
 
Ответить с цитированием Вверх
Старый 19.01.2009, 14:05   #3
Nik_84
Неактивный пользователь
 
Регистрация: 07.01.2008
Сообщений: 9
Репутация: 0
По умолчанию Re: Ошибка в 1С !

а цикл-тотут причем?
условие должно быть
Nik_84 вне форума
 
Ответить с цитированием Вверх
Старый 20.01.2009, 16:16   #4
sskkru
Ветеран
 
Аватар для sskkru
 
Пол:Мужской
Регистрация: 19.10.2005
Сообщений: 3,092
Репутация: 2226
По умолчанию Re: Ошибка в 1С !

ezk, напрашивается вывод, что НовыйРодитель - недопустимое значение или несуществующее. Пробовал выводить в окно сообщений значение для отладки?
А через УстановитьАтрибут пробовал?
sskkru вне форума
 
Ответить с цитированием Вверх
Старый 21.01.2009, 11:38   #5
tray
Пользователь
 
Пол:Мужской
Регистрация: 27.01.2006
Сообщений: 39
Репутация: 37
По умолчанию Re: Ошибка в 1С !

Скорее всег ты пытаешься изменить родителя элемента во время выбокки элементов по справочнику.
Попробуй сделать выборку запросом, а потом уже менять родителя у выбранных элементов

Материал = СоздатьОбъект("Справочник.Материалы")
Материал.НайтиЭлемент(ЭлементРезультатаЗапроса);
Материал.Родитель = НовыйРодитель;
Материал.Записать();
tray вне форума
 
Ответить с цитированием Вверх
Старый 21.01.2009, 15:21   #6
SergeyST
Пользователь
 
Пол:Мужской
Регистрация: 10.05.2008
Сообщений: 59
Репутация: 21
По умолчанию Re: Ошибка в 1С !

Используй "промежуточное хранилище данных". Таблицу значений, например (ТЗ).
Если код элемента уникален для всего справочника, то в первую колонку ТЗ вноси код элемента которому ты потом будешь менять родителя. А во вторую колонку - код нового родителя:


тз=СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("КодЭлемента","Число",...,...);
тз.НоваяКолонка("КодРодителя","Число",...,...);
//кодновогородителя = код каталога в который ты переносишь элементы

...
//Твои условия заполнения таблицы значений
//значениями справочника (назовём его "спр")
...
тз.НоваяСтрока();
тз.КодЭлемента=спр.Код;
тз.КодРодителя=кодновогородителя; //кодновогородителя - код нового родителя
...


Затем с помощью "НайтиПоКоду()" позиционируешься на каждом отдельном элементе ТЗ и меняешь его родителя:


спр_кодрод=СоздатьОбъект("Справочник.Материалы");
спр_эл=СоздатьОбъект("Справочник.Материалы");
тз.ВыбратьСтроки();
Пока тз.ПолучитьСтроку() = 1 Цикл
спр_кодрод.НайтиПоКоду(тз.КодРодителя);
спр_эл.НайтиПоКоду(тз.КодЭлемента);
спр_эл.Родитель=спр_кодрод.ТекущийЭлемент();
спр_эл.Записать();
КонецЦикла;


Основной принцип - не использовать при смене родителя для справочника
перебор элементов этого же справочника конструкцией ВыбратьЭлементы() и ПолучитьЭлемент()
Пример:
спр.ВыбратьЭлементы()
Пока спр.ПолучитьЭлемент() = 1 Цикл
спр.Родитель = ......//Новое значения.
КонецЦикла;

При таком подходе 1С ругается.
SergeyST вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка roman_ Скорая помощь 3 26.07.2009 22:15
Ошибка кучка Архив 5 04.03.2006 21:28
Ошибка CRC porokh Архив 5 16.02.2006 20:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:24. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.05138 секунды с 13 запросами