Глюк в платформе и как с ним бороться?

1. PeRom 51 30.06.08 17:23 Сейчас в теме
Ситуёвина следующая:
в модуле формы документа идёт расчёт и заполнение второй табличной части, есть переменная локальная П в модуле(объявлена в начале модуля):
П = ?(П = 0, 1, П); //защита от нуля
В следующей строке деление на П - всё нормально.

Через несколько строк (расчёт и запись в тз, никаких обращений в другие процедуры и функции нет), при получении очередного значения опять идёт деление на эту переменную и 1с ругается на эту строку(деление на 0). :(

Что может быть и что с этим делать?
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Shaman100M 1150 30.06.08 18:09 Сейчас в теме
1. Посмотри, может П меняется в функции, вызываемой из текста на форме
2. В выражении не одна операция деления
3. Запустить отладчик, "условный" останов, или "Сообщить()" в пред. строке
3. PeRom 51 30.06.08 18:14 Сейчас в теме
>2. В выражении не одна операция деления
Так и есть, а на что это может повлиять и как от этого избавиься?

Можно ли с этого места поподробней.......?
4. O-Planet 6432 30.06.08 18:20 Сейчас в теме
Прикольно, что тема названа "Глюк в платформе"...
5. PeRom 51 30.06.08 19:28 Сейчас в теме
>Прикольно, что тема названа "Глюк в платформе"...
Так а как это ещё назвать? насчёт "В выражении не одна операция деления" я даже и предположить не мог...
Или это из серии "Теория ошибок" http://infostart.ru/blogs/453/ : Никогда не испpавляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопpоводительной документации как особенность пpогpаммы.
:)
6. poppy 30.06.08 22:57 Сейчас в теме
>>Прикольно, что тема названа "Глюк в платформе"...
> Так а как это ещё назвать?

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

Выложи свою конфигурацию или хотя-бы опубликуй код. А мы посмотрим.
7. PeRom 51 01.07.08 10:14 Сейчас в теме
Код
//....................
Пока тзВторая.ПолучитьСтроку() = 1 Цикл
   П=?(П=0,1,П);  
   тзВторая.Количество   =?(тзВторая.Использованный=0,0,Цел(тзВторая.Использованный/П)+1);
   тзВторая.Исходящий  =(П*тзВторая.Количество)-тзВторая.Использованный;
      
   тзВторая.Входящий   =тзВторая.Исходящий;
      
   ПолныйРесурс   =тзВторая.Использованный+тзОснастки.ИспользованныйПоТекущей;
      
   ПолноеЧисло   =Цел(ПолныйРесурс/П)+?(Цел(ПолныйРесурс/П)=ПолныйРесурс/П,0,1); //Ругается на эту строку
   //.................
КонецЦикла;
//............
Показать полностью

И что самое интересное - ругается второй раз за полгода, хотя документов, где этот код используется, за это время прошло около 500 шт.
Как обойти в данном алгоритме я понял, сейчас пробую. Но всё-таки хотелось бы знать в каких случаях появляется такая ошибка???
8. PeRom 51 02.07.08 15:53 Сейчас в теме
Так почему-же нельзя в выражении 2 раза использовать деление?????
9. maloi_a 02.07.08 16:42 Сейчас в теме
Это не глюк.
Скорее всего локальной переменной П вообще не присваивалось
значения, первое деление не выполняется из-за тзВторая.Использованный=0,
а следующее деление происходит не на 0, а на пустое значение.
То есть ошибку надо искать где-то выше.

Код
Перем П;
Процедура Выполнить()
   //П=0; Если ничего не присваивается
   Сообщить(ПустоеЗначение(П));
   ПолныйРесурс=12345;
   П=?(П=0,1,П); // пустое П не изменяется, заменить на следующий оператор: 
//   П=?(Число(П)=0,1,П);  // и тогда все сработает без ошибок
   ПолноеЧисло   =Цел(ПолныйРесурс/П)+?(Цел(ПолныйРесурс/П)=ПолныйРесурс/П,0,1); 
КонецПроцедуры
Показать полностью

10. WiseSnake 1519 02.07.08 16:42 Сейчас в теме
А П до цикла как присваивается?
Возможно ему до цикла присваивается значение переменной которая используется в цикле
и ИЗМЕНЯЮЩЕЕСЯ в этом цикле например тзВторая.Количество.
Если П это не отдельная переменная не новая копия в памяти от тзВторая.Количество то оно тоже измениться
11. PeRom 51 02.07.08 20:28 Сейчас в теме
maloi_a большое спасибо, заставили прозреть спепого дурака.
Действительно переменная объявляется в начале модуля но не определяется, всего-то нужно было:
Код
п = ?(ЧИСЛО(п)=0,1,п);
Показать полностью
12. kitt 323 03.07.08 06:19 Сейчас в теме
Вот такие глюки еще остались в платформе:)
13. poppy 03.07.08 10:00 Сейчас в теме
> Вот такие глюки еще остались в платформе

Точно! Платформу пока не научили работать с "кривыми руками"... ;)
14. Abadonna 3958 04.07.08 02:31 Сейчас в теме
Глюк в платформе может быть только в одном случае: написал программу, а она сразу и заработала, да еще правильно.
Вот это несомненный глюк :)
15. kitt 323 04.07.08 09:17 Сейчас в теме
угу, так и без работы можно остаться:) поддерживать нечего будет
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот