Имя: Пароль:
1C
1С v8
Ошибка в процедуре
, ,
0 sovsemnovichek
 
23.08.13
09:33
Подскажите, пожалуйста, в чем ошибка...
{Форма.Форма.Форма(78)}: Значение не является значением объектного типа (НомерСтроки)
Для НомерСтроки = Шаблон.НомерСтроки По КоличествоСтрок Цикл
1 Wobland
 
23.08.13
09:34
в Шаблоне. следующий
2 ДенисЧ
 
23.08.13
09:34
Для НомерСтроки = Шаблон.НомерСтроки

Тут ошибка не в процедуре...
3 Wobland
 
23.08.13
09:35
(2) а что такого?
4 sovsemnovichek
 
23.08.13
09:35
Т.е. надо Шаблон поправлять?
5 Wobland
 
23.08.13
09:36
(4) этого нам знать не дано
6 ДенисЧ
 
23.08.13
09:36
(3) не такого, а такой... dna - есть такая аббревиатура...
7 ДенисЧ
 
23.08.13
09:36
(4) шаблон уже поздно править. Править нужно запись в трудовой..
8 sovsemnovichek
 
23.08.13
09:37
(7) К чему эта запись?
9 sovsemnovichek
 
23.08.13
09:38
Приходишь за помощью, получаешь...
10 Wobland
 
23.08.13
09:38
да, мне тоже интересно, какую запись и как предлагает изменить ДенисЧ ;)
11 Wobland
 
23.08.13
09:39
(9) прежде чем ходить за помощью, приведи себя в состояние "я сам ну никак не могу справиться"
12 Trotter
 
23.08.13
09:40
(0)И код наверное лучше весь давать, а то по ошибке мало чего понятно
13 Rie
 
23.08.13
09:40
(9) Ответ - в (1).
Сворее всего, у Вас переменной Шаблон ничего не присвоено.
Или присвоено не то, что нужно.
14 Wobland
 
23.08.13
09:40
(12) не надо. мы обожаем загадки
15 sovsemnovichek
 
23.08.13
09:47
Ошибка посылает меня в это место:
Именно на первую строчку, где начинается цикл
Для Каждого Колонка Из Шаблон.Колонки Цикл
        Если Колонка.ВидДанных = Перечисления.ВидыДанных.НомерПоПорядку Тогда
            КолонкаНомерПоПорядку = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Артикул Тогда
            КолонкаАртикул = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Наименование Тогда
            КолонкаНаименование = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.АртикулНаименование Тогда
            КолонкаАртикулНаименование = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.ЕдиницаИзмерения Тогда
            КолонкаЕдиницаИзмерения = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.КодОКЕИ Тогда
            КолонкаКодОКЕИ = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Количество Тогда
            КолонкаКоличество = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Цена Тогда
            КолонкаЦена = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Сумма Тогда
            КолонкаСумма = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.СтавкаНДС Тогда
            КолонкаСтавкаНДС = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.СуммаНДС Тогда
            КолонкаСуммаНДС = Колонка.НомерКолонки;
        КонецЕсли;
    КонецЦикла;
16 sovsemnovichek
 
23.08.13
09:48
Для Каждого Колонка Из Шаблон.Колонки Цикл
        Если Колонка.ВидДанных = Перечисления.ВидыДанных.НомерПоПорядку Тогда
            КолонкаНомерПоПорядку = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Артикул Тогда
            КолонкаАртикул = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Наименование Тогда
            КолонкаНаименование = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.АртикулНаименование Тогда
            КолонкаАртикулНаименование = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.ЕдиницаИзмерения Тогда
            КолонкаЕдиницаИзмерения = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.КодОКЕИ Тогда
            КолонкаКодОКЕИ = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Количество Тогда
            КолонкаКоличество = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Цена Тогда
            КолонкаЦена = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.Сумма Тогда
            КолонкаСумма = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.СтавкаНДС Тогда
            КолонкаСтавкаНДС = Колонка.НомерКолонки;
        ИначеЕсли Колонка.ВидДанных = Перечисления.ВидыДанных.СуммаНДС Тогда
            КолонкаСуммаНДС = Колонка.НомерКолонки;
        КонецЕсли;
    КонецЦикла;

Блин, извиняюсь
17 Галахад
 
гуру
23.08.13
09:49
Ты про "Шаблон" лучше расскажи.
18 sovsemnovichek
 
23.08.13
09:49
Да че за фигня....
Сюда вот
Для Каждого Колонка Из Шаблон.Колонки Цикл
19 sovsemnovichek
 
23.08.13
09:50
Шаблон это справочник "ШаблоныЗагрузокИзExcel"
20 Rie
 
23.08.13
09:52
(19) Покажи оператор, которым переменной Шаблон присваивается значение.
21 Ёпрст
 
23.08.13
09:54
(19) теперь подумай, что есть Шаблон.НомерСтроки у тебя..
и может придёт оно, просветление.
22 sovsemnovichek
 
23.08.13
09:56
Я тут подумал и решил, что может ну его этот шаблон... Как мне данные поместить в новую табличную часть?
23 roman52
 
23.08.13
09:59
для начала приведи весь код процедуры (или функции)
24 sovsemnovichek
 
23.08.13
09:59
Вот я пытаюсь определить количество колонок и строк в файле
    Попытка
        Состояние( "Загрузка Microsoft Excel..." );
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = ExcelФайл.Sheets(1);
        xlCellTypeLastCell = 11;
        КоличествоСтрок = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        КоличествоКолонк = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
    Если КоличествоСтрок < 2 И КоличествоКолонк < 10 Тогда
        Сообщить("Неверный формат данных!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецЕсли;
И хочу построить новую табличную часть, помогите это сделать, пожалуйста, о опытнейшие люди
25 roman52
 
23.08.13
10:02
(24) построить новую табличную часть в Excel-е или добавить новую таб.часть в справочнике 1С "ШаблоныЗагрузокИзExcel"??

приведи ВЕСЬ код процедуры, в которой есть этот злосчастный [Для Каждого Колонка Из Шаблон.Колонки Цикл]
26 Rie
 
23.08.13
10:04
(22) Ответь на вопрос (20)
27 sovsemnovichek
 
23.08.13
10:05
Попытка
        Состояние( "Загрузка Microsoft Excel..." );
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = ExcelФайл.Sheets(1);
        xlCellTypeLastCell = 11;
        КоличествоСтрок = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        КоличествоКолонк = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
    Если КоличествоСтрок < 2 И КоличествоКолонк < 10 Тогда
        Сообщить("Неверный формат данных!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецЕсли;

    КолонкаНомерПоПорядку        = 0;
    КолонкаАртикул                 = 0;
    КолонкаНаименование             = 0;
    КолонкаАртикулНаименование     = 0;
    КолонкаЕдиницаИзмерения        = 0;
    КолонкаКодОКЕИ                 = 0;
    КолонкаКоличество             = 0;
    КолонкаЦена                     = 0;
    КолонкаСумма                 = 0;
    КолонкаСтавкаНДС             = 0;
    КолонкаСуммаНДС                 = 0;
    
    ТабличноеПоле.Очистить();
    
        
    СтарыйНомерПоПорядку = 0;
    Для НомерСтроки = Шаблон.НомерСтроки По КоличествоСтрок Цикл
        Если Не КолонкаНомерПоПорядку = 0 Тогда
            Попытка
                НомерПоПорядку = Число(ExcelЛист.Cells(НомерСтроки, КолонкаНомерПоПорядку).Value);
            Исключение
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если СтарыйНомерПоПорядку > НомерПоПорядку Тогда
            Продолжить;
        КонецЕсли;
        Если Не КолонкаАртикул = 0 Тогда
            Попытка
                Артикул = СокрЛП(ExcelЛист.Cells(НомерСтроки, КолонкаАртикул).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаАртикул + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если Не КолонкаНаименование = 0 Тогда
            Попытка
                Наименование = СокрЛП(ExcelЛист.Cells(НомерСтроки, КолонкаНаименование).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаНаименование + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если Не КолонкаАртикулНаименование = 0 Тогда
            Попытка
                Строка = ExcelЛист.Cells(НомерСтроки, КолонкаАртикулНаименование).Value;
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаАртикулНаименование + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
            НомерПозиции = Найти(Строка, "/");
            Если НомерПозиции = 0 Тогда
                Наименование = СокрЛП(Строка);
            Иначе
                Артикул = СокрЛП(Сред(Строка, 1, НомерПозиции - 1));
                Наименование = СокрЛП(Сред(Строка, НомерПозиции + 1));
            КонецЕсли;
        КонецЕсли;
        Если Не КолонкаЕдиницаИзмерения = 0 Тогда
            Попытка
                ЕдиницаИзмерения = СокрЛП(ExcelЛист.Cells(НомерСтроки, КолонкаЕдиницаИзмерения).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаЕдиницаИзмерения + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;    
        КонецЕсли;
        Если Не КолонкаКодОКЕИ = 0 Тогда
            Попытка
                КодОКЕИ = СокрЛП(ExcelЛист.Cells(НомерСтроки, КолонкаКодОКЕИ).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаКодОКЕИ + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;    
        КонецЕсли;
        Если Не КолонкаКоличество = 0 Тогда
            Попытка
                Количество = Число(ExcelЛист.Cells(НомерСтроки, КолонкаКоличество).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаКоличество + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если Не КолонкаЦена = 0 Тогда
            Попытка
                Цена = Число(ExcelЛист.Cells(НомерСтроки, КолонкаЦена).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаЦена + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;    
        КонецЕсли;
        Если Не КолонкаСумма = 0 Тогда
            Попытка
                Сумма = Число(ExcelЛист.Cells(НомерСтроки, КолонкаСумма).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаСумма + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если Не КолонкаСтавкаНДС = 0 Тогда
            Попытка
                СтавкаНДС = СокрЛП(ExcelЛист.Cells(НомерСтроки, КолонкаСтавкаНДС).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаСтавкаНДС + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        Если Не КолонкаСуммаНДС = 0 Тогда
            Попытка
                СуммаНДС = Число(ExcelЛист.Cells(НомерСтроки, КолонкаСуммаНДС).Value);
            Исключение
                Сообщить("Неверный формат данных ячейки строка: " + НомерСтроки + ", колонка: " + КолонкаСуммаНДС + "" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                Продолжить;
            КонецПопытки;
        КонецЕсли;
        
        
        Строка = ТабличноеПоле.Добавить();
        Строка.НомерПоПорядку    = НомерПоПорядку;
        Строка.Артикул            = Артикул;
        Строка.Наименование        = Наименование;
        Строка.ЕдиницаИзмерения    = ЕдиницаИзмерения;
        Строка.КодОКЕИ            = КодОКЕИ;
        Строка.Количество        = Количество;
        Строка.Цена                = Цена;
        Строка.Сумма            = Сумма;
        Строка.СтавкаНДС        = СтавкаНДС;
        Строка.СуммаНДС            = СуммаНДС;
        
        СтарыйНомерПоПорядку = НомерПоПорядку;
    КонецЦикла;
28 Rie
 
модератор
23.08.13
10:11
(27) Ты можешь показать, где у тебя переменной Шаблон значение присваивается?
Если НИГДЕ - то вот и получи ошибку из (0) и не морочь людям голову.
29 sovsemnovichek
 
23.08.13
10:17
Код не я писал, мне дали задание его поправить... Поэтому плаваю... Извините... Может поможете отделаться от шаблона и в новую ТабЧасть все загнать?
30 Aprobator
 
23.08.13
10:23
Шаблон - ТЗ и к гадалке не ходи. И у шаблона нет номера строки.
Пора уж с 7 ки то уходить мышлением то.
В 8 ке это делается так:

Для каждого СтрокаШаблона из Шаблон Цикл
.....
КонецЦикла;
31 Aprobator
 
23.08.13
10:25
впрочем тут вообще фиг знает что делается.
32 sovsemnovichek
 
23.08.13
10:26
и на этом спасибо
33 Aprobator
 
23.08.13
10:26
но НомерСтроки - реквизит конкретной строки ТЗ, а не ТЗ в целом.
34 Aprobator
 
23.08.13
10:27
Отладчик, кстати, хорошая вещь. Рекомендую для использования.
35 Rie
 
23.08.13
10:27
(29) Сколько?
36 Aprobator
 
23.08.13
10:28
(35) я бы не рискнул ни за какие деньги )
37 ptiz
 
23.08.13
10:31
(32) Шаблон - это у тебя нечто, у чего отсутствует свойство "НомерСтроки".
38 sovsemnovichek
 
23.08.13
10:37
Ну меня тут (36) не спросили... Дали... Делай, разбирайся как хочешь...
39 Aprobator
 
23.08.13
10:38
(38) я не про то немного. На данном этапе вашего развития, я бы с вами связываться не рискнул.
40 Aprobator
 
23.08.13
10:39
+(39) в (35) то имеется ввиду - сколько заплатишь?
41 sovsemnovichek
 
23.08.13
10:47
я бы тоже с собой не связался=) потому, что я ученик, еще глупый студент...
42 sovsemnovichek
 
23.08.13
10:48
Это т.е. вам от меня деньги нужны
43 Ёпрст
 
23.08.13
10:49
(41) поставь нужный драйвер и всё заработает само
44 ptiz
 
23.08.13
10:54
(41) Ты хочешь обойти строки Екселя. Так?
Начиная с определенной строки.
Судя по коду, предполагается, что номер начальной строки хранится в объекте "Шаблон" в реквизите "НомерСтроки".
1С тебе говорит, что у "Шаблон" - нет такого реквизита.
Дальше продолжишь размышления?
45 Wobland
 
23.08.13
11:02
человек взял штатную загрузку из ТабДокумента и не может заставить её работать что ли?
46 GANR
 
23.08.13
11:08
(0) А синтаксис-помощник и отладчик что показывают?
47 Aprobator
 
23.08.13
11:08
(42) мне нет.
48 sovsemnovichek
 
23.08.13
11:13
А как создать новую ТЧ и загнать в нее данные из файла Excel
49 Wobland
 
23.08.13
11:15
(48) добавить ТЧ, добавить реквизитов, получить объект, в цикле читая из екселя создавать новые строки ТЧ и присваивать им что-нибудь
50 Rie
 
23.08.13
11:15
(48) Никак не создать новую _ТЧ_ :-(
Это - такая штука, которая дана свыше.

Не фантазируйте! Найдите ошибку для начала!
51 Rie
 
модератор
23.08.13
11:20
И вообще... Был в (0) задан конкретный вопрос - в этой ветке о нём и речь.
Насчёт создания ТЧ, ремонта гусеничных тракторов и выращивания гортензий - создаются другие ветки.
52 sovsemnovichek
 
23.08.13
11:21
Ок) ищу ошибку
53 Csar
 
23.08.13
11:35
(52) вместо "Шаблон.НомерСтроки" укажи 10.
А вообще вместо "Шаблон.НомерСтроки" надо указать номер строки в экселе, с которой начинаются строки с нужными данными, т.е. первая строка после шапки экселевской таблицы.
54 Aprobator
 
23.08.13
14:31
(52) про ошибку я тебе еще в (33) сказал.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.