Имя: Пароль:
1C
1C 7.7
v7: Зависает 1С при попытке назначить родителя
0 Melcor
 
23.10.12
12:47
Ситуация такая.
Когда пытаюсь обработкой установить родителя группам справочника номенклатура, то в определенный момент 1С подвисает, после этого убиваю процесс и запускаю тестирование и исправление БД. Получаю след ошибку:
Проверка содержания справочников. Номенклатура. Элемент 02318. Перенесен на 1-й уровень
и почти все группы вываливаются в корень справочника.
Может кто сталкивался с подобным, как лечить?
Выгрузку и загрузку в конфиге делал - не помогло(
1 DGorgoN
 
23.10.12
12:52
Вот только недавно было - зацикленный родитель
2 Melcor
 
23.10.12
12:53
Ап!
3 Melcor
 
23.10.12
12:53
да не, в отладчике смотрю, как попадает на строку назначить родителя, сразу виснет и не отвечает
4 YF
 
23.10.12
12:53
(2) Чего Ап-то логику смотри, тебе же (1) сказал
5 Melcor
 
23.10.12
12:54
Написал выше
6 YF
 
23.10.12
12:57
(5) Хрен с ним, с отладчиком, логика-то в голове
7 Надсмотрщик
 
23.10.12
12:59
(0) А Родитель Кто???
8 Melcor
 
23.10.12
12:59
Родитель группа номенклатуры
9 Надсмотрщик
 
23.10.12
12:59
(8) А ты Уверен?
10 Melcor
 
23.10.12
13:00
Да, на все 100
и зачем-то тестирование и исправление подобным образом почти все группы выкидывает на 1-й уровень справочника
Проверка содержания справочников. Номенклатура. Элемент 02318. Перенесен на 1-й уровень
11 Надсмотрщик
 
23.10.12
13:08
Как выбираешь?
12 Ёпрст
 
23.10.12
13:12
(0) а уровней то хватает хоть, назначать родителей папкам  ?
13 Ёпрст
 
23.10.12
13:12
и это, больше кода.
14 Melcor
 
23.10.12
13:13
КодРод    = Сп.ПолучитьЗначение(2);
           Код      = Сп.ПолучитьЗначение(3);
           Имя        = Сп.ПолучитьЗначение(4);
           Спр  = СоздатьОбъект("Справочник.Номенклатура");
           Если Спр.НайтиПоКоду(Код,0)>0 тогда
               Спр.Родитель = ВернутьРодителя(Код,Имя,КодРод);
               Спр.Записать();
           
           иначе
               Спр.НоваяГруппа();
               
               Спр.Код          = Код;
               Спр.Наименование = Имя;
               Спр.Записать();
               
               Спр.Родитель = ВернутьРодителя(Код,Имя,КодРод);
               Спр.Записать();
           КонецЕсли;

т.е. какето элементы нормально назначаются, а потом бац и завис
15 Melcor
 
23.10.12
13:14
при зависании назначается всего лишь 2-й уровень
16 Ёпрст
 
23.10.12
13:19
(14)
Вася = ВернутьРодителя(Код,Имя,КодРод);
Сообщить(Вася.ЭтоГруппа());
Сообщить(Вася.Уровень());
17 Ёпрст
 
23.10.12
13:21
+
сообщить(метаданные.Справочник(Вася.Вид()).КоличествоУровней );
сообщить(Спр.Уровень());
сообщить(Спр.ЭтоГруппа());
18 Ёпрст
 
23.10.12
13:21
?
19 Ёпрст
 
23.10.12
13:22
Ну и напоследок:

Сообщить(Вася.Вид());
Сообщить(Спр.Вид());
Сообщить(Спр.ТекущийЭлемент());
Сообщить(Вася.ТекущийЭлемент());
20 kiruha
 
23.10.12
13:24
(16)
Все эти ошибки не приводят к вылету
Думаю очередное зацикливание или повреждение
Вон у него даже тест не проходит
21 DGorgoN
 
23.10.12
13:25
(0) Ты папке "ы" хочешь назначить родителя "ы".  Ну или уровней вложенности  у тебя не хватает.
22 inka
 
23.10.12
13:25
Зависает всегда на разных кодах?
23 kiruha
 
23.10.12
13:29
Вот тема была про зацикливание
Зависает 1С при попытке назначить родителя
24 Ёпрст
 
23.10.12
13:31
(23) :)
25 Ёпрст
 
23.10.12
13:33
26 Ёпрст
 
23.10.12
13:34
промазал
27 Melcor
 
23.10.12
13:40
смотрел в отладчике
зависает при попытке назначить родителя, уровней 10, друг друга родителем не назначают.
Зависает на 171 строке текста из которого я получаю данные. удалил эту строку, зависает на следующей
28 Песец
 
23.10.12
13:48
Зависает при записи элемента, после ".родитель="? Родитель записан? Перед глюком вставь

ссс= СоздатьОбъект("Справочник.Проблемный");
Сообщить(ссс.Найти(родитель));
Сообщить(ссс.Найти(элементНаКоторомГлюк));

В попытку заверни, что получится?
29 kiruha
 
23.10.12
13:53
(27)
Даже если ты напишешь в коде
a=1/0;
у тебя не будет вылета. Я даже не знаю какой надо написать код - чтобы 1С вылетела -( может кто знает ?)
База(справочник) неисправен
30 Melcor
 
23.10.12
13:56
Тоже есть подозрение на проблемы с базой, но если тестированием и исправлением не лечится, то даже и не знаю что делать (
31 Melcor
 
23.10.12
13:57
(28) Зависает не при записи, а именно когда .Родитель=
32 kiruha
 
23.10.12
13:59
33 kiruha
 
23.10.12
14:00
Типа этого (простая)
http://infostart.ru/public/85714/
34 НЕА123
 
23.10.12
14:28
(29)
>Я даже не знаю какой надо написать код - чтобы 1С вылетела -( может кто знает ?)

вылетает,

СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение(СЗ);
Сообщить(""+ЗначениеВФайл("22222222222",СЗ,0));

без шума и пыли (с)
35 Ёпрст
 
23.10.12
14:33
(29) так красившее

ЗначениеИзСтрокиВнутр("{}");
36 kiruha
 
23.10.12
14:36
(34)
А без зацикливания и внешних компонент/низкоуровнев функций
37 НЕА123
 
23.10.12
14:39
(35)
ООО!!!
шикарно!
38 Ёпрст
 
23.10.12
14:47
да кода, чтоб завалить 1с вагон и маленькая тележка..

ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.КоличествоКолонок(-1);
39 НЕА123
 
23.10.12
14:51
(36)

была такая. долго.
в 70,75, в первых релизах 77 точно.

если результат функции, метода типом строка не использовался,
то вообще чудеса. подозрение, что затиралась область памяти программы.

поэтому всегда, если результат не нужен писал

Пусто = ВызовФункцииСРезомСтрока().
40 kiruha
 
23.10.12
14:51
(38)
Да, это чистый пример )
41 kiruha
 
23.10.12
15:01
Офигеть, даже гугл не находит этот способ
42 Ёпрст
 
23.10.12
15:08
(41) :)
а гугля про Рупора знает ?

ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("К");
Для Х=1 По 10 Цикл
ТЗ.НоваяСтрока();
ТЗ.К=Формат(Х,"ЧП");
КонецЦикла;                  
ТЗ.Сортировать("К");
ТЗ.КоличествоСтрок(8);  
ТЗ.КоличествоСтрок(4);  
ТЗ.КоличествоСтрок(2);
ТЗ.КоличествоСтрок(1);
ТЗ.ВыбратьСтроку();
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn