|
Загрузка, отбор загружаемого файла в список значений! | ☑ | ||
---|---|---|---|---|
0
anisa8310
08.08.14
✎
13:21
|
Всем привет!
Процедура ПрочитатьExcelПоставщики() ExcelApplication = NewExcelApplication(); // Открываем соединение, получаем Excel.Application // Проверяем наличие COM объекта Если ExcelApplication = Неопределено Тогда Возврат КонецЕсли; Версия = Лев(ExcelApplication.Version,Найти(ExcelApplication.Version,".")-1); // версия EXCEL Book = ExcelApplication.WorkBooks.Open(ФайлПоставщикиEXCEL); // открываем файл SheetsCount = Book.WorkSheets.Count; // получаем количество листов Sheet = Book.WorkSheets(1); // получаем указанный лист ИмяЛиста = Book.WorkSheets(1).Name; // имя листа // Определяем количество строк и колонок в зависимости от версии Excel Если Версия = "8" Тогда КонечнаяКолонка = Sheet.Cells.CurrentRegion.Columns.Count; КонечнаяСтрока = Sheet.Cells.CurrentRegion.Rows.Count; Иначе КонечнаяКолонка = Sheet.Cells.SpecialCells(11).Column; КонечнаяСтрока = Sheet.Cells.SpecialCells(11).Row; КонецЕсли; НачальнаяСтрока = 3; // Начальная строка НачальнаяКолонка = 1; // Начальная колонка // Проверка заполненности листа Если КонечнаяСтрока <= 1 И КонечнаяКолонка <= 1 Тогда Сообщить(НСтр("ru = 'Лист №1: не содержит данных.'"), СтатусСообщения.Внимание); сзСообщения.Добавить(НСтр("ru = 'Лист №1: не содержит данных.'"), ТекущаяДата()); QuitExcelApplication(ExcelApplication, Book); // закрываем соединение Возврат; // В случае ошибки возвращаем пустую таблицу значений КонецЕсли; // Считываем диапазоны данных с заголовками ДиапазонДанных = Sheet.Range(Sheet.Cells(НачальнаяСтрока, НачальнаяКолонка), Sheet.Cells(КонечнаяСтрока, КонечнаяКолонка)); СтрокДиапазона = ДиапазонДанных.Rows.Count; тзТмпПоставщики = Новый ТаблицаЗначений; // Таблица значений, в которую будут записываться поставщики МассивИменКолонок = Новый Массив; // Массив с именами колонок тзТмпПоставщики.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"), "№", 4); // Добавляем колонку "Номер строки" в таблицу поставщиков // Формируем колонки в таблицах Для Колонка = 1 ПО КонечнаяКолонка Цикл МассивИменКолонок.Добавить(Колонка); // Пропускаем скрытые колонки Если ДиапазонДанных.Columns(Колонка).Hidden Тогда Продолжить; КонецЕсли; ИмяКолонки = "К_" + Колонка; ЗаголовокКолонки = Sheet.Cells(НачальнаяСтрока-1, Колонка).Value; // Заголовок колонки из 1-ой строки тзТмпПоставщики.Колонки.Добавить(ИмяКолонки, , ЗаголовокКолонки); КонецЦикла; // Формируем строки в тзТмпПоставщики ДиапазонДанных = ДиапазонДанных.Value; нСтроки = НачальнаяСтрока - 1; Для НомерСтроки = 1 ПО СтрокДиапазона Цикл нСтроки = нСтроки + 1; НоваяСтрока = тзТмпПоставщики.Добавить(); НоваяСтрока.НомерСтроки = нСтроки; Для НомерКолонки = 1 ПО КонечнаяКолонка Цикл ИмяКолонки = "К_" + МассивИменКолонок[НомерКолонки-1]; Колонка = тзТмпПоставщики.Колонки.Найти(ИмяКолонки); // Если имена скрытых колонок отсутствуют в массиве Если Колонка = Неопределено Тогда Продолжить; КонецЕсли; ЗначениеЯчейки = Формат(ДиапазонДанных.GetValue(НомерКолонки, НомерСтроки), "ЧГ=0"); // Считывание данных в соответствии с их типом Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда НоваяСтрока[ИмяКолонки] = ЗначениеЯчейки; КонецЕсли; КонецЦикла; КонецЦикла; тзПоставщики.Загрузить(тзТмпПоставщики); // Сохраняем получившуюся таблицу в тзПоставщики QuitExcelApplication(ExcelApplication, Book); // Закрываем соединение КонецПроцедуры Но в этом файле есть имя поставщика(контрагента) который имеет реквизит"Освобождать от НДС" -булево, как мне в этой процедуре отбор сделать с тзПоставщики, если в файле только имя контрагента и номер колонки 15, признака освобождения от НДС в файле нет... |
|||
1
User_Agronom
08.08.14
✎
13:22
|
Конструкцию
Если <условие> тогда ... Иначе ... КонецЕсли; не предлагать? |
|||
2
mexanik_96
08.08.14
✎
13:24
|
Перед тзПоставщики.Загрузить(тзТмпПоставщики) проверить в базе по наличию поставщика с отбором по реквизиту
|
|||
3
anisa8310
08.08.14
✎
13:25
|
(2) ПоставщикНДСник=Справочники.Контрагенты.НайтиПоНаименованию("К_15");
ПоставщикНДСник.ОсвобождениеОтНДС; |
|||
4
anisa8310
08.08.14
✎
13:26
|
(1) Предлагать не пойму как найти таких и ещё выгрузить тех токль у кого этот признак ложь.
|
|||
5
anisa8310
08.08.14
✎
13:26
|
Файл весь читает а условие никак не получается
|
|||
6
mexanik_96
08.08.14
✎
13:26
|
признак ложь то где в 1с?
|
|||
7
anisa8310
08.08.14
✎
13:27
|
(2) КАк? вот так?ПоставщикНДСник=Справочники.Контрагенты.НайтиПоНаименованию("К_15");
ПоставщикНДСник.ОсвобождениеОтНДС; |
|||
8
anisa8310
08.08.14
✎
13:27
|
К_15 -содержит имя контрагента
|
|||
9
mexanik_96
08.08.14
✎
13:28
|
ну дык ищи по наименованию не ("К_15") А где К_15 = ЗначениеЯчейки
|
|||
10
anisa8310
08.08.14
✎
13:28
|
(6) тех кто не имеет такой галочки - Освобождать от НДС , чтоб потом документ загрузить а счет фактуру не формировать
|
|||
11
anisa8310
08.08.14
✎
13:30
|
(9) Обработка.Загрузка_данных_FDD_Excel1.Форма.Форма.Форма(859,63)}: Переменная не определена (К_15)
ПоставщикНДСник=Справочники.Контрагенты.НайтиПоНаименованию(<<?>>К_15); (Проверка: Толстый клиент (обычное приложение)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |