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

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 6431 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 Сейчас в теме
угу, так и без работы можно остаться:) поддерживать нечего будет
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)