Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
23 Июл 2017, 15:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Загрузка с Excel  (Прочитано 723 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день! Подскажите, нужно загрузить данные с Excel в справочник по условиям:
1) Если Код услуги в справочнике отсутствует то загружаем
2) Если Код услуги в файле одинаковый что и в справочнике И наименования файла отличается от наименования в справочнике то меняем на наименования который в файле

Я сделал так, попробовал сделать второе условие но почему то все равно загружает повторные
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Для запуска обработки необходимо предварительно выбрать файл 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();
КонецПопытки;

Номер=0;
// Последовательное чтение строк с выбранного листа
Для Строка = 1 По ExcelПоследняяСтрока Цикл

// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();

// Добавить данные в табличную часть экранной формы
//Стр=ТаблицаДокумента.Добавить();

Номер = Номер + 1;
//ExcelЛист.Range(ExcelЛист.Cells(Строка,5).MergeArea.Address).Select();
//ExcelЛист.Selection.Merge();

Попытка
Если ПустаяСтрока(ExcelЛист.Cells(Строка, 2).Value) Тогда
Продолжить;
КонецЕсли;
КодУслуги=ExcelЛист.Cells(Строка, 1).Value;
Номенклатура=ExcelЛист.Cells(Строка, 2).Value;
Ценна=ExcelЛист.Cells(Строка, 3).Value;

Если Справочники.Номенклатура.НайтиПоНаименованию(КодУслуги).Пустая() Тогда
НовЭл = Справочники.Номенклатура.СоздатьЭлемент();
НовЭл.КодУслуги=КодУслуги;
НовЭл.Наименование=Номенклатура;
НовЭл.Записать();
Если Не ЗначениеЗаполнено(РегистрыСведений.ТарифыУслуги.ВыбратьПоРегистратору(НовЭл.Ссылка)) и ЗначениеЗаполнено(Ценна) Тогда
Движение = РегистрыСведений.ТарифыУслуги.СоздатьНаборЗаписей();
Движение.Отбор.Услуга.Установить(НовЭл.Ссылка);
Движение.Прочитать();
НоваяЗапись = Движение.Добавить();
НоваяЗапись.Период = ДатаДок;
НоваяЗапись.Услуга=НовЭл.Ссылка;
НоваяЗапись.Тариф=Ценна;
Движение.Записать();
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;

Исключение
// Не редко происходит ошибка конвертации отдельной ячейки документа
Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);

КонецПопытки;
// Отобразить информацию о ходе выполнения обработки
Состояние("Обработка файла Microsoft Excel : "
+ "строка " + Строка + " из " + ExcelПоследняяСтрока);

КонецЦикла;

// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();


Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Загрузка с Excel
« Ответ #1: 05 Фев 2016, 13:26 »
Если Справочники.Номенклатура.НайтиПоНаименованию(КодУслуги).Пустая() Тогда

НовЭл.КодУслуги=КодУслуги;

Обяснить?

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка с Excel
« Ответ #2: 08 Фев 2016, 10:40 »
Если Справочники.Номенклатура.НайтиПоНаименованию(КодУслуги).Пустая() Тогда

НовЭл.КодУслуги=КодУслуги;

Обяснить?
Получаем с файла КодУслуги
Потом проверяем Если Справочники.Номенклатура.НайтиПоНаименованию(КодУслуги).Пустая()

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Загрузка с Excel
« Ответ #3: 08 Фев 2016, 13:11 »
Да кэп, все правильно.
Только код услуги из экселя вы пишите в реквизит КодУслуги, а поиск элемента осуществляете, почему-то, по наименованию...?

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка с Excel
« Ответ #4: 11 Фев 2016, 12:22 »
Да кэп, все правильно.
Только код услуги из экселя вы пишите в реквизит КодУслуги, а поиск элемента осуществляете, почему-то, по наименованию...?
Я исправил на
Если Справочники.Номенклатура.НайтиПоРеквизиту(КодУслуги).Пустая() Тогда 
как проверить 2 пункт?

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Загрузка с Excel
« Ответ #5: 11 Фев 2016, 16:19 »
Сравнить наименования, в случае отличия - получить объект, изменить наименование, записать.

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка с Excel
« Ответ #6: 11 Фев 2016, 16:38 »
Сравнить наименования, в случае отличия - получить объект, изменить наименование, записать.
Покажите на примере как это сделать

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Загрузка с Excel
« Ответ #7: 11 Фев 2016, 16:49 »
Не имею желания.
Ошибки подправить - пожалуйста, а готовый код - за деньги.


Теги:
 

Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 7906
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
загрузка из "клиента банка"

Автор miximlРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2434
Последний ответ 19 Июн 2012, 09:49
от miximl
Загрузка в 1С Управление Торговлей 11.1.5.16 электронных выписок из клиент банка "Альфа-Банк"

Автор regnusРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 10496
Последний ответ 11 Июл 2014, 17:22
от regnus
Проблема с внешней обработкой "Загрузка банк-клиент.erp"

Автор razielРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 1666
Последний ответ 24 Сен 2015, 20:13
от Kironten
Загрузка из "нестандартного" табличного документа (exel) в справочник

Автор uchenichokРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 748
Последний ответ 03 Июн 2016, 07:15
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
105 Сообщений
alex0402
93 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
65 Сообщений
Golickoff Golickoff
49 Сообщений
ilyay ilyay
49 Сообщений
AIFrame
47 Сообщений
ab30ru
38 Сообщений
wise wise
34 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений

* Кто онлайн

  • Точка Гостей: 220
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal