Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не проводится документ "ввод в эксплуатацию"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
wmatik
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
при проведении документа "Ввод в эксплуатацию" выдается ошибка:

РазнНУБУ = ?(КвоТМЦОстатки = 0, 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);
{Документ.ВводВЭксплуатацию.Модуль Документа(128)}: Деление на 0

Подскажите где копать, чтобы решить эту проблему


Вот функция в которой расчитывается РазнНУБУ:
Функция РассчитатьСуммуНУ()
        КвоИнвестицийОстатки = 0;
        СуммаИнвестицийОстатки = 0;
        СуммаНУОстатки = 0;
        СчетТМЦ = ТМЦ.Счет;
        СчетТМЦНУ = "Н"+СчетТМЦ;
        
        СписокСчетовИнвестиций = СоздатьОбъект("СписокЗначений");
        СписокСчетовИнвестиций.ДобавитьЗначение(ТМЦ.Счет);
        СписокСчетовИнвестиций.ДобавитьЗначение("Н" + ТМЦ.Счет);
        
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьРазделительУчета(Фирма);
        Ит.ИспользоватьСубконто(ВидыСубконто.Инвестиции, ТМЦ);
        Ит.ВыполнитьЗапрос(ДатаДок,ДатаДок,СписокСчетовИнвестиций,,,,,"СК");
        
        Если Ит.ПолучитьСчет(, СчетТМЦ) = 1 Тогда
            КвоТМЦОстатки = Ит.СКД(3);
            СуммаТМЦОстатки = Ит.СКД(1);
        КонецЕсли;
        Если Ит.ПолучитьСчет(, СчетТМЦНУ) = 1 Тогда
            СуммаНУОстатки = Ит.СКД(1);
        КонецЕсли;
        Если СчетТМЦ.Количественный = 1 Тогда
            РазнНУБУ = ?(КвоТМЦОстатки = 0, 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);
        Иначе
            РазнНУБУ = ?(СуммаБезНДС <> СуммаТМЦОстатки, СуммаБезНДС*СуммаНУОстатки/СуммаТМЦОстатки, СуммаНУОстатки);
        КонецЕсли;
КонецФункции
MATEVI
Цитата(wmatik @ 06.10.11, 10:14) необходимо зарегистрироваться для просмотра ссылки
РазнНУБУ = ?(КвоТМЦОстатки = 0, 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);
{Документ.ВводВЭксплуатацию.Модуль Документа(128)}: Деление на 0


КвоТМЦОстатки не 0 а КвоИнвестиций=0 а так как КвоТМЦОстатки *КвоИнвестиций (0) = 0 выдает ошибку

РазнНУБУ = ?((КвоТМЦОстатки = 0) или (КвоИнвестиций=0), 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);

Или
ПроизвИнвИОст = КвоТМЦОстатки*КвоИнвестиций;
РазнНУБУ = ?(КПроизвИнвИОст = 0, 0, СуммаНУОстатки/ПроизвИнвИОст );
wmatik
КвоИнвестиций не 0, поле заполнено в документе, это КвоТМЦОстатки дает 0, только вот почему
nysysimara
Все-таки КвоИнвестиций=0 проверьте ещё
т.к.
РазнНУБУ = ?(КвоТМЦОстатки = 0, 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);
wmatik
КвоИнвестиций = 1
nysysimara
В отладчике на этой строке КвоИнвестиций=1 и КвоТМЦОстатки<>0?
Если да, тогда парадокс два НЕнулевых числа в произведении дают 0
g789
КвоИнвестиций не причем на него умножается а не делится.

Вставьте в начало в начало функции
   КвоТМЦОстатки = 0;

Проверьте попадаете в
       Если Ит.ПолучитьСчет(, СчетТМЦ) = 1 Тогда
            КвоТМЦОстатки = Ит.СКД(3);      //Сюда!!!!
            СуммаТМЦОстатки = Ит.СКД(1);
        КонецЕсли;
wmatik
КвоТМЦОстатки = 0
КвоИнвестиций=1

это ответ nysysimara, а g789 - сейчас попробую

Цитата
КвоТМЦОстатки = 0;

проверила, все равно КвоТМЦОстатки = 0

но документ провелся! как такое может быть
g789
Цитата(wmatik @ 06.10.11, 11:15) необходимо зарегистрироваться для просмотра ссылки
проверила, все равно КвоТМЦОстатки = 0

но документ провелся! как такое может быть


Скорее всего не отрабатывает
Если Ит.ПолучитьСчет(, СчетТМЦ) = 1 Тогда
            КвоТМЦОстатки = Ит.СКД(3);
            СуммаТМЦОстатки = Ит.СКД(1);
КонецЕсли;

а после инициализации 0 (КвоТМЦОстатки = 0) стал корректно работать
  РазнНУБУ = ?(КвоТМЦОстатки = 0, 0, СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций);

т.е.
Если КвоТМЦОстатки = 0 Тогда
  РазнНУБУ = 0;
Иначе
  РазнНУБУ = СуммаНУОстатки/КвоТМЦОстатки*КвоИнвестиций;
КонецЕсли;
wmatik
понятно
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.