Имя: Пароль:
1C
1С v8
КД. Ошибка в правилах ПередВыгрузкойОбъекта
0 lg2marvel
 
10.02.16
13:07
Добрый день. Подскажите пожалуйста, при выгрузке выдает ошибку:

Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПВД                    =  АктПересортицы
    Объект                 =  Акт пересортицы О0000000008 от 31.01.2016 13:00:00  (Документ объект: Акт пересортицы)
    Обработчик             =  ПередВыгрузкойОбъектаВыборки
    ОписаниеОшибки         =  Преобразование значения к типу Число не может быть выполнено
    ПозицияМодуля          =  (11)
    КСообщенияОбОшибках    =  33

модуль ПВД "Перед выгрузкой", не могу понять в каком месте ошибка:

НомерСтроки = 0;

Для Каждого Строка Из Объект.Товары Цикл
    
    НомерСтроки = Формат(Число(НомерСтроки) + 1,"ЧЦ=3; ЧДЦ=0");
    Если СтрДлина(НомерСтроки)=1 Тогда
        Параметры.Префикс = "П00"+НомерСтроки+"-";
    ИначеЕсли СтрДлина(НомерСтроки)=2 Тогда
        Параметры.Префикс = "П0"+НомерСтроки+"-";
    ИначеЕсли СтрДлина(НомерСтроки)=3 Тогда
        Параметры.Префикс = "П"-НомерСтроки+"-";
    Иначе
        Сообщить("Длина номера строки в документе больше 3, не предусмотрено обработкой!");
        Параметры.Префикс = "err"+"-";
        Продолжить;
    КонецЕсли;
    
    ВходящиеДанные = Новый Структура;
        
    ВходящиеДанные.Вставить("Номер",Параметры.Префикс+Прав(Объект.Номер,6));
    //Сообщить("Номер в ПВД "+Параметры.Префикс+Прав(Объект.Номер,6));
    //Сообщить("Номер строки "+Параметры.Префикс);    
    ВходящиеДанные.Вставить("Дата",Объект.Дата);
    ВходящиеДанные.Вставить("Склад",Объект.Склад);
    ВходящиеДанные.Вставить("Организация",Объект.Фирма.Ссылка);
    ВходящиеДанные.Вставить("Проведен",Объект.Проведен);
    ВходящиеДанные.Вставить("ПометкаУдаления",Объект.ПометкаУдаления);    
    ВходящиеДанные.Вставить("Комментарий","Акт пересортицы №"+Объект.Номер+" от "+Объект.Дата);
        
    //МД_Реквизиты = Объект.Метаданные().Реквизиты;
    //Для Каждого МетаРеквизит Из МД_Реквизиты Цикл
        //Сообщить(МетаРеквизит.Имя + " = " + Объект.[МетаРеквизит.Имя]);
    //КонецЦикла;
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |АктПересортицы.Ссылка,
    |АктПересортицы.Товары.(
    |    Ссылка,
    |    НомерСтроки,
    |    Номенклатура,
    |    НоваяНоменклатура,
    |    Количество,
    |    НоваяКоличество,
    |    ИдентификаторСтроки,
    |)
    |ИЗ
    |Документ.АктПересортицы КАК АктПересортицы
    |ГДЕ
    |    АктПересортицы.Ссылка = &Ссылка И
    |    АктПересортицы.Товары.НомерСтроки = &НомерСтроки
    |";
    

    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    Запрос.УстановитьПараметр("НомерСтроки", Число(НомерСтроки));
    КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();    
    
    //ТабДокумент = Новый ТабличныйДокумент;
    //Построитель = Новый ПостроительОтчета;
    //Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(КоллекцияОбъектов);      
    //Построитель.Вывести(ТабДокумент);
    //ТабДокумент.Показать("Пользователи");
    //Сообщить(КоллекцияОбъектов[0][1][0][0]);
    //Сообщить(КоллекцияОбъектов[0][1][0][1]);
    //Сообщить(КоллекцияОбъектов[0][1][0][2]);       //номенклатура списания
    //Сообщить(КоллекцияОбъектов[0][1][0][3]);       //номенклатура приход
    //Сообщить(КоллекцияОбъектов[0][1][0][4]);       //кол -
    //Сообщить(КоллекцияОбъектов[0][1][0][5]);       //кол +
    //Сообщить(КоллекцияОбъектов[0][1][0][6]);
    //Сообщить("---");
    
    ВходящиеДанные.Вставить("Количество",КоллекцияОбъектов[0][1][0][5]);
    ВходящиеДанные.Вставить("Номенклатура",КоллекцияОбъектов[0][1][0][3]);
    ВходящиеДанные.Вставить("Комплектующие",КоллекцияОбъектов);
    Параметры.КВО = Число(КоллекцияОбъектов[0][1][0][4]);
    Параметры.ТМЦ = КоллекцияОбъектов[0][1][0][2];
    //ВходящиеДанные.Вставить("Количество",Объект.Количество);
    //ВходящиеДанные.Вставить("Количество",Объект.Номенклатура);    
    
    ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт");    
КонецЦикла;
1 mehfk
 
10.02.16
13:14
Считать до 11 умеешь?
2 hhhh
 
10.02.16
13:24
(0) сделай так

ТекстЗапроса =
    "ВЫБРАТЬ
    |АктПересортицы.Ссылка,
    |АктПересортицы.НомерСтроки,
    |АктПересортицы.Номенклатура,
    |АктПересортицы.НоваяНоменклатура,
    |АктПересортицы.Количество,
    |АктПересортицы.НоваяКоличество,
    |АктПересортицы.ИдентификаторСтроки
    |ИЗ
    |Документ.АктПересортицы.Товары КАК АктПересортицы
    |ГДЕ
    |    АктПересортицы.Ссылка = &Ссылка И
    |    АктПересортицы.НомерСтроки = &НомерСтроки
    |";

чего фигнёй страдаешь?
3 lg2marvel
 
10.02.16
13:28
(1) Вроде не жаловался, выходит ошибка в этой строке:
Параметры.Префикс = "П"-НомерСтроки+"-";

(2) Спасибо, учту
4 lg2marvel
 
10.02.16
13:32
НомерСтроки = 0;

Для Каждого Строка Из Объект.Товары Цикл
    
    НомерСтроки = Формат(Число(НомерСтроки) + 1,"ЧЦ=3; ЧДЦ=0");
//    Сообщить("Номер строки: "+НомерСтроки);
    Если СтрДлина(СокрЛП(НомерСтроки))=1 Тогда
        Параметры.Префикс = "П00"+СокрЛП(НомерСтроки)+"-";
    ИначеЕсли СтрДлина(СокрЛП(НомерСтроки))=2 Тогда
        Параметры.Префикс = "П0"+СокрЛП(НомерСтроки)+"-";
    ИначеЕсли СтрДлина(СокрЛП(НомерСтроки))=3 Тогда
        Параметры.Префикс = "П"-СокрЛП(НомерСтроки)+"-";
    Иначе
        Сообщить("Длина номера строки в документе больше 3, не предусмотрено обработкой!");
        Параметры.Префикс = "err-";
        Продолжить;
    КонецЕсли;

Все равно та же ошибка на 12 строку. :-(
5 mehfk
 
10.02.16
13:32
Да ты гонишь
Параметры.Префикс = "П"-СокрЛП(НомерСтроки)+"-";
6 mehfk
 
10.02.16
13:33
У тебя примерно так:
Переменная = "Вася" - "Коля";
7 lg2marvel
 
10.02.16
13:34
(5) Да, заметил, спасибо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший