8.х Внешняя обработка для заноса данных из xls

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Vitalik85, 27 фев 2013.

  1. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Помогите мне изучить написание внешних обработок для заноса данных в 1С. С програмиированием я знаком, но 1С для меня новое. Пока не могу понять принципа работы до конца. Хотел бы начать от простого к сложному.
    Например, есть xls документ с двумя столбцами: Артикуль и наименование. Как написать обработку чтобы она перенесла эти данных в 1С в номенклатуру. Интересует именно самописная обработка, а не использование стандартной обрабоки Загрузка данных из табличного документа - тут все ясно.
    Очень надеюсь на вашу помощь. Мне бы с основами разобраться - а дальше все ясно.
    Спасибо!!!
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Код:
    Процедура ЧтениеXLSФайла(Элемент)
    Если ПустаяСтрока(ИмяФайла) Тогда
    Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
    Возврат;
    КонецЕсли;
    Попытка
    // Загрузка Microsoft Excel
    Состояние("Загрузка Microsoft Excel...");
    ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
    Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    Возврат;
    КонецПопытки;
    Попытка
    // Открытие файла Microsoft Excel
    Состояние("Открытие файла Microsoft Excel...");
    ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
    Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    Попытка
    // Обработка файла Microsoft Excel
    Состояние("Обработка файла Microsoft Excel...");
    // Читаем данные первого листа книги
    ExcelЛист = ExcelФайл.Sheets(1);
    // Определить количество строк и колонок выбранного листа книги Excel
    xlCellTypeLastCell = 11;
    ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
    ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
    Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    // Закрыть COM соединение для экономии памяти
    ExcelПриложение.Quit();
    КонецПопытки;
    // Создание описателя типов для таблицы значений
    КЧ = Новый КвалификаторыЧисла(15,2);
    КС = Новый КвалификаторыСтроки(50);
    Массив = Новый Массив;
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
    Массив.Очистить();
    Массив.Добавить(Тип("Число"));
    ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
    // Очистить предыдущие значения
    ТаблицаДокумента.Очистить();
    ТаблицаДокумента.Колонки.Очистить();
    // Создать колонки табличного документа
    ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5);
    ТаблицаДокумента.Колонки.Добавить("Артикул",ОписаниеТиповС,"Артикул",11);
    ТаблицаДокумента.Колонки.Добавить("Описание",ОписаниеТиповС,"Описание",25);
    ТаблицаДокумента.Колонки.Добавить("Цена",ОписаниеТиповЧ,"Цена",6);
    // Последовательное чтение строк с выбранного листа
    Для Строка = 1 По ExcelПоследняяСтрока Цикл
    // Обработка нажатия Ctrl + Break
    ОбработкаПрерыванияПользователя();
    // Добавить данные в табличную часть экранной формы
    Стр=ТаблицаДокумента.Добавить();
    Стр.Номер = Строка;
    Попытка
    Стр.Артикул = ExcelЛист.Cells(Строка, 1).Value;
    Стр.Описание = ExcelЛист.Cells(Строка, 2).Value;
    Стр.Цена = ExcelЛист.Cells(Строка, 3).Value;
    Исключение
    // Не редко происходит ошибка конвертации отдельной ячейки документа
    Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    // Отобразить информацию о ходе выполнения обработки
    Состояние("Обработка файла Microsoft Excel : "
    + "строка " + Строка + " из " + ExcelПоследняяСтрока);
    КонецЦикла;
    // Закрыть COM соединение для экономии памяти
    ExcelПриложение.Quit();
    // Отобразить результаты загрузки в форме элемента
    ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
    ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
    КонецПроцедуры // ЧтениеXLSФайла(Элемент)
  3. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    1. создаете comОбЪект Excel.Application
    2. считываете данные

    Это если кратко. Что конкретно у вас не получается? я так и не поняла вас интерисует создание внешней обработки как таковой, или загрузка из Excel?
  4. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Меня интересует внешняя обработка для загрузки данных из xls файла.
  5. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    nbIpKuH_BaH9I, а epf не могли бы выложить? Я понимаю нужно еще на форме кнопочки для открытия привязывать, поэтому и прошу.
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    открыть файл можно вот так
    Код:
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    ДиалогОткрытияФайла.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel (*.xlsx)|*.xlsx";
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл";
    Выбфайл = Неопределено;
    Если ДиалогОткрытияФайла.Выбрать() Тогда
    ВыбФайл = ДиалогОткрытияФайла.ПолноеИмяФайла;
    КонецЕсли;
    
    этот код можно на отдельную кнопку прикрутить или прямо в эту процедуру добавить
  7. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Очень большая просьба если возможно готовые обработки выложить пока что я не совсем понимаю.
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у меня к сожалению не работает загрузка, потому только код могу предложить (((

    что вам не понятно? Создавайте внешнюю обработку, на форму обработки поместите нужные элементы (вам думаю хватит кнопки и табличного поля). На кнопку повесьте обработчик нажатия (другого нет). В этом обработчике поместите предложенные вам процедуры (загрузку придется под ваш ексель корректировать все равно) На чем вы остановились, что не получается?
  9. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    А процедура как называется?
    Процедура ИмяКаталогаНачалоВыбора(Элемент, СтандартнаяОбработка)

    Тяжело чувствую будет мне. Мне бы какое-нибудь начальное руководство начиная от добавления поля ввода и далее. А так очень многое не понятно.
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    любая книга по конфигурированию (посмотрите Радченко)

    Ваши действия я вам расписала. поместите на форму кнопку и посмотрите в ее свойствах события - не ошибетесь. Нажмите там кнопочку с лупой и откроется вам нужный обработчик, туда надо поместить код. А вообще посмотрите книжечки по конфигурированию, поразбирайте примеры в них.. все поймете, поначалу всем тяжело...
  11. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Я думаю, что у товарища стоит вопрос еще и в том как вообще в принципе создать внешнюю обработку, форму, кнопки и т.д. Если это так, то Вам еще рано заниматься обменом. Янка правильно сказала, начните с Радченко.
  12. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Я создал новую форму. Не могу понять как в основное поле формы добавить поля Надпись и Имя каталога. Создал реквизиты, настроил их, которые в дальнейшем будут к этим кнопочкам привязываться, а тут смотрю и туплю.
    Я пол книги Радченко прочитал...
  13. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вы какое приложение осваиваете - обычное или управляемое?
  14. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    УПП. Добавить страницу есть, подменю тоже можно, а где взять стандартные поля аля Borland(надписи, кля выбора каталога итд?)?

    Я не знаю какое, то которое по умолчанию создается

    Т.е. мне нужно описать поле?
  15. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ответьте на мой вопрос. И еще при чем тут Borland? вы же на 1с пишите?!
  16. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Я не знаю какое приложение: обычное или управляемое. Я зашел в конфигуратор УПП->Новый->Внешняя обработка. В ней создаю форму и хочу чисто понять как добавить текстовое поле. С кодом все ясно.
  17. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Если кто-нибудь может подсказать как добавить эти поля на форму?

    [​IMG]
  18. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Нажмите на кнопку "Добавить элементы управления" и там выберите какой хотите добавить. Ради интереса по менюшкам полазил бы чтоли.
  19. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    когда открыта форма, то как правило внизу на панели есть все элементы. Выбираете нужный - тыкаете на форму и вуаля - вот элемент уже на ней. по крайней мере в Borlande Delphi нечто похожее (раз уж вы про borland заговорили.
  20. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Есть конкретный вопрос. Как в Документе Корректировка Записей регистров создать новый пустой документ?
Похожие темы
  1. OIT
    Ответов:
    1
    Просмотров:
    675
Загрузка...

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