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

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

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
Просмотров: 7389
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
загрузка из "клиента банка"

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
alex0402
128 Сообщений
MuI_I_Ika MuI_I_Ika
55 Сообщений
Norfolk
52 Сообщений
LexaK
51 Сообщений
alexandr_ll
25 Сообщений
друган
20 Сообщений
ef0din
19 Сообщений
AsadRoman
18 Сообщений
Константин5825
18 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal