8.х Типы данных. Надо разобраться

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DDRON, 13 сен 2008.

  1. TopicStarter Overlay
    DDRON
    Offline

    DDRON Опытный в 1С

    Регистрация:
    26 авг 2008
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер.

    Вопрос 1.
    Экспортирую информацию из Экселя в справочник 1С. Одно из полей справочника - ИНН. Берётся из соответствующей колонки Экселя. Проблема в том что в 1С оно вставляется в виде (например) 765 456 765 98. То есть 1С считает его числом! А мне надо что бы считал строкой: 76545676598.

    Делаю так:

    Код:
    Процедура Кнопка1Нажатие(Элемент)
    НашExcel = Новый COMОбъект("Excel.Application");
    Книга = НашExcel.WorkBooks.Open("E:\######\Customers.xls");	
    Лист = Книга.WorkSheets(1);	
    НашExcel.Visible = 1;	
    
    ЭлементСправочника = Справочники.Контрагенты.СоздатьЭлемент();
    ЭлементСправочника.УстановитьНовыйКод();
    
    ЭлементСправочника.ИНН = Строка(Лист.Cells(стр, 3).Value);
    
    ЭлементСправочника.Записать();
    КонецПроцедуры
    
    Вот эта строка:
    Код:
    ЭлементСправочника.ИНН = Строка(Лист.Cells(стр, 3).Value);
    
    Обратите внимание, я принудительно преобразую Лист.Cells(стр, 3).Value в строковый тип. И тем не менее...(пробовал и не преобразовывать - результат тот же)
    Если сделать поиск пробелов по этой строке, то ничего найдено не будет. Хотя пример "числа-строки" я привожил выше.

    Из ситуации я выход нашёл. Но очень кривой. В экселе устанвавливает тип ячеек в нужной колонке, как "Text", и ТОЛЬКО ПОТОМ копипастим туда ИНН. Тогда всё будет ок.
    Однако это метод по очевидным причинам очень не удобен.

    Меня же интересует что не так в моём коде.

    Вопрос 2.
    Я не нашёл как в самом интерфейсе удалить группу элементов справочника.
    Поэтому была изменена конфигурация и добавлена кнопка со след кодом:

    Код:
    Процедура Кнопка2Нажатие(Элемент)
    
    спрБ = Справочники.Контрагенты;
    нули = "000000";	
    Для н = 100 по 999 цикл
    НомерЭлемента = Строка(нули + н);	
    ккк = спрБ.НайтиПоКоду(НомерЭлемента);
    ккк = ккк.ПолучитьОбъект();
    ккк.Удалить();
    конеццикла;	
    КонецПроцедуры
    
    
    Код является девятизначным. Поэтому пришлось "НомерЭлемента" Составлять таким образом.
    В моём коде есть приблема.
    Если нули = "00000", а (например) н = 1100, то в результате НомерЭлемента = "000001 100". И в результате ничего найдено не будет.
    Этот вопрос схож с моим первым.
    То есть при этом коде я ограничен удалением трёхзначных позиций.
    Так для удаления номера 000001100 пришлось бы писать нули = "000001", н = 100.
    Как исправить?
    Манипуляции с "Строка(НомерЭлемента)" не помогают. Всё равно пробел вылезает.
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29

Поделиться этой страницей