Имя: Пароль:
1C
1С v8
Помогите пожалуйста в написании обработки!
0 ozric
 
22.10.16
17:20
Доброе время суток!
Подскажите как написать обработку - Прочитать файл Excel,выбрать только те строки,где есть количество,сумму ячеек количество разделить на 10,
и результат вывести в формате MXL.

Спасибо!
1 Волшебник
 
модератор
22.10.16
17:22
Размести на форме Поле табличного документа, скопируй туда файл Excel, затем в цикле
Количество = ТабДокумент.Область(НомерКолонки, НомерСтроки).Значение;
2 ozric
 
22.10.16
17:29
Вот такая залдача:
// Выбрать файл Excel
// Создать таблицу значений (ТЗ) с колонками как в шапке табличного документа (как в макете)
// Перебирать строки из Excel
// Добавлять в ТЗ строки (не забыть КоличествоКонечныйОстаток разделить на 10)
// Свернуть ТЗ по полям "КодАП,ПроизводительИмпортер    ПроизводительИмпортерИНН    ПроизводительИмпортерКПП","КоличествоКонечныйОстаток"
// Создать табличный документ (ТД) из макета
// Вывести шапку отчета
// Перебираем строки ТЗ и выводим в ТД
// Показываем ТД
Напишите пожалуйста полностью код!!!
3 ozric
 
22.10.16
17:30
Или хотя-бы,что зачем и каким методом!
4 Garykom
 
гуру
22.10.16
17:33
По шагам:
1. Накопить/украсть/заиметь $
2. Найти исполнителя тут или на 1слансер
3. Заказать обработку
4. Оплатить обработку
5. Получить обработку
5 Маленький Мук
 
22.10.16
17:35
Дожили, уже студентам лабораторки делаем
6 ozric
 
22.10.16
17:40
Уважаемые Гуру! Я только учусь,и понимаю Ваш сарказм!Вы сами когда-то начинали...

Если возможно,то хоть какие-нибудь подсказки!!!

Спасибо!
7 Zamestas
 
22.10.16
17:44
(6) Вам, собственно, накуа это нужно?
8 ozric
 
22.10.16
17:49
Дали Домашнее Задание на курсах,пока не получается!
9 Zamestas
 
22.10.16
17:50
(8) Что именно не получается?
10 ozric
 
22.10.16
17:57
Процедура КнопкаВыполнитьНажатие(Кнопка)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
ДиалогВыбораФайла.Фильтр    = "Табличный документ (Лист Excel (.xls)|*.xls|Текстовый документ (.txt)|*.txt|dBase III (*.dbf)|*.dbf|";
Если ДиалогВыбораФайла.Выбрать() Тогда
    ТабличныйДокумент = Новый ТабличныйДокумент;
  ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
  Если нРег(ФайлНаДиске.Расширение) = ".mxl" Тогда
   //ТабличныйДокумент.Прочитать(ДиалогВыбораФайла.ПолноеИмяФайла);  
  ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".xls" Тогда
   ФайлЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
    мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
  ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".txt" Тогда
   //мПрочитатьТабличныйДокументИзТекста(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
  ИначеЕсли нРег(ФайлНаДиске.Расширение) = ".dbf" Тогда
   //мПрочитатьТабличныйДокументИзDBF(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
  КонецЕсли;
  
КонецЕсли;
КонецПроцедуры

Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
    
    xlLastCell = 11;
    
    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;
    
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
        Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;
        
    КонецПопытки;
    
    ТабличныйДокумент.Очистить();
    
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;
    ColumnCount = ActiveCell.Column;
    Для Column = 1 По ColumnCount Цикл
        ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
    КонецЦикла;
    Для Row = 1 По RowCount Цикл
        
        Для Column = 1 По ColumnCount Цикл
            ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Text;
        КонецЦикла;
        
    КонецЦикла;
    
    Excel.WorkBooks.Close();
    Excel = 0;
    
    Возврат Истина;
    
КонецФункции // ()

Пока сделал до сюда,а как дальше? Надо ТЗ но только те сроки в которых есть количество,потом это сложить и сумма разделить на 10 и вывести в MXL
11 Zamestas
 
22.10.16
18:08
(10) Ну дык в чем проблема пройтись по xls файлу, посмотреть где лежат числа и собрать ТЗ по ходу дела?
12 Рэйв
 
22.10.16
18:11
13 ozric
 
22.10.16
18:25
Дык как пройтись? Научите!!!
14 shuhard_серый
 
22.10.16
18:29
(13)  с какого бодуна нам тебя учить  ?
15 Zamestas
 
22.10.16
18:31
(13) У тебя в коде 90% необходимого для перебора уже есть.
16 ozric
 
22.10.16
18:31
Всё равно,спасибо!
17 Маленький Мук
 
22.10.16
18:33
(14) сделай ты за него уроки, чем они тупее растут, тем сытнее и обеспеченнее твоя старость.
18 Garykom
 
гуру
22.10.16
18:53
(17) а еще о своих детях думать приходится... они же тоже кушать хотят
19 Garykom
 
гуру
22.10.16
18:54
(18) Это реально не юмор, дочка в 3-м классе и уже говорит про списывание и что с ней хотят сидеть на уроках ибо отличница.
20 Tolia_2016
 
22.10.16
19:03
Была такая обработка - "Игры с  Excel".
(0) Погугли, там всё подробно разжевано и с комментариями.
21 oslokot
 
22.10.16
19:08
Дети это будущее. Будущее, блеать, под угрозой.
22 Tolia_2016
 
22.10.16
19:14
ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
ExcelЛист = ExcelФайл.Sheets(1);
        xlCellTypeLastCell = 11;
        ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;

Для  Сч=1 по ExcelПоследняяСтрока  Цикл
    Количество = ExcelЛист.Cells(Сч,2).Value;
Если ...
<тут пишешь чо надо>
КонецЕсли;
КонецЦикла;
23 Tolia_2016
 
22.10.16
19:14
ExcelПриложение = Новый COMОбъект("Excel.Application");
24 iceman2112
 
22.10.16
19:27
Вот так и плодим "кадры" 1с и имидж "1с программисты - не программисты"
25 Cyberhawk
 
22.10.16
21:10
Если речь только об xlsx, то Я всегда за метод "Native XLSX", без всяких ком-объектов
26 Tolia_2016
 
22.10.16
21:26
(24) Но но! Сразу в эцих что ли? Может он будущий гений! А вы чморите на корню.
Мелкософт за xlsx застрелить нужно! На кой ;%: спрашивается? Что изменилось для конечного пользователя кроме гемороя "А мне прислали файл, а он не открывается!"?
Приходится ипацца со всякими пакетами совместимости 03-07 и прочее уг.
27 Tolia_2016
 
22.10.16
21:36
Есть под Андроид программка, не скажу какая ибо рекламу не приемлю ни в каких видах, для учета личных финансов в общем(не одинэсовское уг - поставил, проблевался, удалил).
Она умеет экспорт в xlsx. Ок! xlsx так xlsx!
Написал загрузку в 1ц:деньги из файлика этого, заранее! И обломался!
xlsx этот умеет открывать только бесплатный "офис" в маркете скачанный. На компе - нет! Неверный формат файла! Что только не делал - везде неверный формат файла!
Приходится конвертить на смартфоне в старый добрый xls и потом уже взлетает всё(загрузку переписывать пришлось).
28 Garykom
 
гуру
22.10.16
21:42
(26)(27) А пробовал на низком уровне работать с office binary file format (xls) ?
Оно разрабатывалось в те года когда нужны была скорость и максимальное сжатие а не удобство для программистов и куча фич.

В результате переход был совершенно логичен.
29 Garykom
 
гуру
22.10.16
21:44
(27) >xlsx этот умеет открывать только бесплатный "офис" в маркете скачанный. На компе - нет! Неверный формат файла!

Это говорит кое что плохое об авторе этой "под Андроид программка" а никак об формате xlsx...
Дятел даже приличный фреймворк не смог прикрутить типа Apache POI
30 Mauser
 
22.10.16
21:47
(27) Вот так вот Майкрософт влияет на степень криворукости двух разработчиков - одного на Андроиде, второго на 1С. Доколе мегакорпорации будут диктовать нам как жить?
31 Tolia_2016
 
22.10.16
21:52
(30) Не передергивай, Эпл вспомни.
Вот там действительно диктаторство как жить. Не понимаю "яблочников".
Вспоминается GIF-ка, два парня стоят перед эмблемой Эппл на стене и др..ат на неё. Не смог найти сейчас - яндекс порнуху выдает дибильную.
МОнтаж конечно, но ярко отражающий сущность яблодр..ров.
32 Garykom
 
гуру
22.10.16
21:54
(31) А что тогда говорить про тех кто ипался с linux когда это еще не было мейнстримом?
33 Tolia_2016
 
22.10.16
21:54
(32) А причем тут потребители? Я же про производителей!
34 Mauser
 
22.10.16
21:55
(31) Причем тут Эппл? У тебя с ним тоже не получается?
35 Tolia_2016
 
22.10.16
21:57
(34) Где у меня что не получается? Чего пристал то? Иди спать.
Я не люблю когда меня учат как жить. А некоторые жрут что дают и не давятся даже, под прикрытием прогресса.
А маркетологи хитро пожимают свои вонючие ручки.
36 Cyberhawk
 
22.10.16
22:00
(35) "А некоторые жрут что дают и не давятся даже, под прикрытием прогресса" // По-твоему описанное в (27) лучше? :D
37 Mauser
 
22.10.16
22:00
(35) Так что у тебя с Майкрософтом и xlsx - то? Что-то личное?
38 Garykom
 
гуру
22.10.16
22:01
(33) Производители гениальны... недаром в США mp3 плееры все называют "айподами"
39 DailyLookingOnA Sunse
 
22.10.16
22:04
У табличного документа есть метод Прочитать, который читает Excel. Доступно с версии 8.3.6.
40 Tolia_2016
 
22.10.16
22:05
(37) У меня ничего личного. Так или иначе я решил проблему несовместимости. У юзеров проблемы, а расхлебывать - мне.
41 DailyLookingOnA Sunse
 
22.10.16
22:05
В файловой версии точно читает
42 Garykom
 
гуру
22.10.16
22:05
(39) кста когда уже можно будет по листам отдельным читать то?
43 DailyLookingOnA Sunse
 
22.10.16
22:14
(42)
Ado, Adox
44 Garykom
 
гуру
22.10.16
22:16
(43) нафига если умею более удобными и кроссплатформенными способами?

просто хочется то нативно из платформы...
45 Tolia_2016
 
22.10.16
22:20
(44) В 8.3 вам нативно. Программное создание реквизитов даже, ожидаем полиморфизм!
А всё ради чего? Ради опер/бух/кадрового учета!
Или Квэйк будем соображать на платформе 1с?
46 Garykom
 
гуру
22.10.16
22:33
(45) Люблю зеленых которые даже читать не умеют ))
Независимо от того, куда вы едете — это в гору и против ветра!