Имя: Пароль:
1C
1C 7.7
v7: Вылетает 1С при повторе процедуры ...
0 Gavrinev
 
14.11.11
14:49
1с77 Предприятие, в глоб. модуле процедура, вылетает при обращении ровно через раз. с ошибкой
appName:1cv7.exe AppVer:7.70.0.27 ModName:dbeng32.dll ModVer:7.70.0.14
offset:00018721
Просьба подскозать в какую сторону копать...
[code]
Процедура СформироватьПрайс() Экспорт
   Перем Спп,Спт,Н;
   Спп=СоздатьОбъект("Справочник.Прайс");
   Спт=СоздатьОбъект("Справочник.Товары");
   // очищаяем значения
   Спп.ПорядокКодов();
   Спп.ВыбратьЭлементы();
   Пока Спп.ПолучитьЭлемент()=1 Цикл
       Спп.Удалить(1);
   КонецЦикла;            
   Н=0;        
   Спт.ПорядокКодов();
   Спт.ВыбратьЭлементыПоРеквизиту("СТ","+",0,0);
   Пока Спт.ПолучитьЭлемент()=1 Цикл
       Н=Н+1;
       Состояние(Н);
       Спп.Новый();
       Спп.Код                = Спт.Код;
       Спп.Наименование    = Спт.Наименование;
       Спп.Изготовитель    = Спт.Изготовитель;
       Спп.СрокГодности    = Спт.СрокГодности;
       Спп.Розн_Цена        = Спт.Розн_Цена;
       Спп.Опт_Цена        = Спт.Опт_Цена;
       Спп.ДатаПрих        = Спт.ДатаПрих;
       Спп.Записать();
   КонецЦикла;
КонецПроцедуры    
[code]
1 Ёпрст
 
14.11.11
14:55
а зачем удалять весь справочник ? Заняться нечем ?
2 Gavrinev
 
14.11.11
14:58
(1) Обновление позиций по кодам, конфа не типовая - Льгота, а вообще вопрос в другом...
3 KishMish
 
14.11.11
15:02
предлагаю вот это
Спп.ПорядокКодов();
   Спп.ВыбратьЭлементы();
   Пока Спп.ПолучитьЭлемент()=1 Цикл
       Спп.Удалить(1);
   КонецЦикла;    
заменить на формирования списка значений и удаленияОБъектов без проверки на ссылки
4 Gavrinev
 
14.11.11
15:02
Попробовал, в справочнике прайс - который после полной очистки начинает заполнятся заново, снять галочки - автонумерация, контроль уникальности, все равно не помогает, ошибка таже ...
5 Ёпрст
 
14.11.11
15:03
для начала, выкинуть порядок кодов и переписать алгоритм без непосредственного удаления объектов
6 Gavrinev
 
14.11.11
15:06
(5) Если написать Спп.Удалить(); // без непосредственного удаления - таже песня ...
7 Ёпрст
 
14.11.11
15:07
(6) ёпта, ты бы читал что ли СП на ночь:
Удалить() = Удалить(1) если че.
8 Sh1ko
 
14.11.11
15:09
Зачем удалять вообще? если можно найти по коду, и обновить всю инфу.
9 Gavrinev
 
14.11.11
15:09
(7) у мя изначально так и было... Сначало Удалить(1), потом поставил Удалить(), и все равно ничего ...
10 Gavrinev
 
14.11.11
15:10
(9) будет много позиций которые должны исключатся из выборки, они не должны создаватся в спр прайс
11 Sh1ko
 
14.11.11
15:10
(9) прочитай (7), вторая строка, 10 раз вслух.
12 Gavrinev
 
14.11.11
15:13
(11) У мя сейчас стоит Спп.Удалить(1)
13 Tatitutu
 
14.11.11
15:13
Спп.Удалить(0);
или выгрузи сначала в список , а потом из списка удаляй
ненарушая выборку
14 Ёпрст
 
14.11.11
15:13
(12) ёпта, еще раз - выкини непосредственное удаление из кода.
15 Gavrinev
 
14.11.11
15:17
ВСЕ. Всем спасибо ...
16 KishMish
 
14.11.11
15:18
а вообще я бы делал прайс документом. и не клепал бы каждый раз справочник
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший