Имя: Пароль:
1C
1C 7.7
v7: Делаю выгрузку данных из ТиС 7.7 в бухгалтерию 7.7
0 Sj74
 
07.06.16
12:12
Делаю выгрузку из ТиС 7.7 в бухгалтерию 7.7 за апрель, возникает ошибка:
Коэффициент=КолвоПоДвижению / Количество;
{Обработка.XMLВыгрузкаДанныхВБухгалтерию.Форма.Модуль(5922)}: Деление на 0
В Отладчике задаю остановку по условию на "Количество" условие 0.
Не останавливается, пролетает...
Кто поможет советом?
1 Sj74
 
07.06.16
12:13
Данная тема поднималась уже, только решения я так и не понял.
2 Mikeware
 
07.06.16
12:19
Ну так и найди, гле количество нулевое.
или строка пустая.
3 Злопчинский
 
07.06.16
12:19
ну впихни перед этим оператором
Сообщить("Количество= "+Количество+", "+ТипЗначенияСтр(Количество));
4 Sj74
 
07.06.16
12:24
(3) Спасибо, работает, надо еще понять как найти привязку этого 0 к документу(((
5 Mikeware
 
07.06.16
12:25
(4) отладчик
6 Злопчинский
 
07.06.16
12:29
(4) где-то чуть выше по коду должна быть ссылка на документ, посмотри вставь в сообщить - он тебе и выведет номер
7 Злопчинский
 
07.06.16
12:30
такая хрень может получиться когда в документе количество не заполнено, например, или возможно не заполнена единица измерения
8 Sj74
 
07.06.16
12:33
(6) Спасибо, сейчас отработаю... Кол-во во всех доках за это число посмотрел, нет нулей а вот единицы измерения не глядел. Посмотрю, отпишусь.
9 Sj74
 
07.06.16
12:34
(5) Да в отлидчике если честно я дуб, дубом, писал же в (0) что ставил условие, но он его проскакивает.
10 Sj74
 
07.06.16
13:04
(7) Все, отловил, действительно это было не кол-во, а ед. измерения!
Оставлю тут часть кода для будущего поколения)))

Сообщить("Док="+Док+","+ТипЗначенияСтр(Док)); // Выводим документ
Сообщить("Товар="+Товар+","+ТипЗначенияСтр(Товар)); // Выводим позицию номенклатуры
Сообщить("Количество= "+Количество+", "+ТипЗначенияСтр(Количество)); // Выводим кол-во
Коэффициент = КолвоПоДвижению / Количество;
11 Sj74
 
07.06.16
13:05
Спасибо огромное всем!!! А отдельное (3)
12 Sj74
 
07.06.16
13:12
Вот код исправления группового, вдруг кому нить надо)))
//*******************************************
Процедура Сформировать()
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(Дата(2016,4,8), Дата(2016,4,8)); // поставить нужную дату
    Пока Док.ПолучитьДокумент()=1 Цикл
        Док.ВыбратьСтроки();
        Сообщить("Обработка " + Док.Вид() + " №" + Док.НомерДок + " от " + Док.ДатаДок);
        НомерСтроки = 1;  
        НадоЗаписатьДокумент = 0;
        Пока Док.ПолучитьСтроку()=1 Цикл
            Попытка
                Если ПустоеЗначение(Док.Единица)=1 Тогда
                    Сообщить("В строке " + НомерСтроки + " не заполнена единица.");
                    Док.Единица = Док.Номенклатура.БазоваяЕдиница;
                    НадоЗаписатьДокумент = 1;
                КонецЕсли;
            Исключение  
                Сообщить("Нет поля 'Единица' у документа");
                Прервать;
            КонецПопытки;
            НомерСтроки = НомерСтроки + 1;
        КонецЦикла;                          
        Если НадоЗаписатьДокумент = 1 Тогда
            Док.Записать();
            Если Док.Проведен() =1 Тогда
                Док.Провести();
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;                      
КонецПроцедуры
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.