helpf.pro
Регистрация

Загрузка из excel, как обойти всё и увидеть количество

bunny
09.09.2010 21:03Прочитано: 7724
Уважаемые знатоки
Нужно загрузить примерно такую конструкцию в документ 1С 8, только колонок и строчек значительно больше. Пока никого нет, кто мог бы это сделать. Пытаюсь сделать сама.

Красный Черный Серый Синий
Высший 1
Сорт1 5 12
Сорт2 3
Сорт3 7
(вообще - это таблица. а тут всё смялось. в некоторых ячейках есть значение - количество)

Но пока совсем новичок, дальше как? Памагите!
Как занести в документ все по всем сортам и цветам?

Код 1C v 8.х
 ДокПлан = Документы.План.ПолучитьФормуНовогоДокумента();

ТЧ = ДокПлан.ДокументОбъект.Модели.Добавить();
Док = ПолучитьCOMОбъект(ПутьКФайлу);

КоличествоСтраниц = 1;
Лист = Док.Sheets(1);
ТекНомер = 1;

Для ТекНомер = 1 По КоличествоСтраниц Цикл
Сорт = Док.Sheets(ТекНомер).Cells(2,1).Value;
ТЧ.Сорт = Справочники.Сорта.НайтиПоНаименованию(Сорт);
Цвет = Док.Sheets(ТекНомер).Cells(2,1).Value;
ТЧ.Цвет = Справочники.Цвета.НайтиПоНаименованию (Цвет);
ТЧ.Количество = Док.Sheets(ТекНомер).Cells(2,2).Value;
КонецЦикла;

ДокПлан.Открыть();

КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
10.09.2010 00:12Ответ № 1
(0) bunny, вот посмотри пример загрузки данных из excel
Попробуй по аналогии сначала просто считывать данные и через Сообщить() вывести!
Как получится это, подскажу как загрузить в документ )
bunny
10.09.2010 10:09Ответ № 2
ДокПлан = Документы. План.ПолучитьФормуНовогоДокумента();
//ТЧ = ДокПлан.ДокументОбъект.Сорта.Добавить();

Док = ПолучитьCOMОбъект(ПутьКФайлу);

НомерСтраницы = 1;
Лист = Док.Sheets(НомерСтраницы);
КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
НомерСтрокиСДанными = 1;

Для чС = (НомерСтрокиСДанными + 1) По КоличествоСтрок Цикл
ТЧ = ДокПлан.ДокументОбъект.Сорта.Добавить();
Сорт = Лист.Cells(чС,1).Value;
ТЧ.Сорт = Справочники. Сорта. НайтиПоНаименованию (Сорт);
ТЧ.Цвет = Справочники.Цвета. НайтиПоНаименованию (Лист.Cells(1,2).Value);
ТЧ.Количество = Лист.Cells(2,4).Value;
КонецЦикла;

ДокПлан.Открыть();

Мне не надо всю таблицу. Только где есть количество. И последняя строка почему-то пустая.
так?)
E_Migachev
10.09.2010 11:49Ответ № 3
Покажи Функцию ПолучитьCOMОбъект(ПутьКФайлу);

пробуй так:
Код 1C v 8.х
 Для чС = (НомерСтрокиСДанными + 1) По КоличествоСтрок Цикл
//Воизбежании ошибок преобразования значения ячейки к числу, сделаем через Попытку
Попытка
//Если равно 0 тогда перейти к следующему(Продолжить;)
Если Число(Лист.Cells(2,4).Value)=0 Тогда Продолжить; КонецЕсли;
Исключение
Продолжить;
КонецПопыки;
Если Число(Лист.Cells(2,4).Value)>0 Тогда
ТЧ = ДокПлан.Сорта.Добавить();
Сорт = Лист.Cells(чС,1).Value;
ТЧ.Сорт = Справочники.Сорта.НайтиПоНаименованию(Сорт);
ТЧ.Цвет = Справочники.Цвета.НайтиПоНаименованию(Лист.Cells(1,2).Value);
ТЧ.Количество = Лист.Cells(2,4).Value;
КонецЦикла;
bunny
10.09.2010 13:38Ответ № 4
спасибо. всё получилось! *06
bunny
10.09.2010 13:43Ответ № 5
Вопрос закрыт!
bunny
10.09.2010 15:41Ответ № 6
bunny
10.09.2010 15:57Ответ № 7
только почему задваивает
E_Migachev
10.09.2010 16:03Ответ № 8
(7) ?
а что ты хочешь сделать?
bunny
10.09.2010 16:10Ответ № 9
Для Сч1 = (НомерСтрокиСДанными + 1) По КоличествоСтрок Цикл
Для Сч2 = (НомерКолонкиСДанными + 1) По КоличествоКолонок Цикл
Если Лист.Cells(Сч1,Сч2).Value = Неопределено Тогда
Продолжить;
КонецЕсли;

Если Число(Лист.Cells(Сч1,Сч2).Value) > 0 Тогда
ТЧ = ДокПлан.Сорта.Добавить();
Сорт = Лист.Cells(Сч1,1).Value;
ТЧ.Сорт = Справочники.Сорта.НайтиПоНаименованию(Сорт);
ТЧ.Цвет = Справочники.Цвета. НайтиПоНаименованию(Лист.Cells(1,Сч2).Value);
ТЧ.Количество = Лист.Cells(Сч1,Сч2).Value;
КонецЕсли;
КонецЦикла;
КонецЦикла;

что не так?
E_Migachev
10.09.2010 16:12Ответ № 10
потому что получатеся что для кадой строчки ты созаешь столько строчек - сколько колонок!

для чего тебе перебок Колонок?
bunny
10.09.2010 16:18Ответ № 11
у меня вот такая табл. которую надо Скачивать файлы может только зарегистрированный пользователь!
bunny
10.09.2010 16:19Ответ № 12
....которую надо загрузить в табличную часть документа
E_Migachev
10.09.2010 16:23Ответ № 13
так удобнее(При вставке картинок жми на картинку с деревом):
title

А у чтебя всегда 4 цвета - или может быть больше?
E_Migachev
10.09.2010 16:24Ответ № 14
Вот туся по картинке, для Сорта1 - должно создаться 2 строчки?
Черный 15
Синий 12
Так?
bunny
10.09.2010 16:25Ответ № 15
хорошо.
может быть больше
bunny
10.09.2010 16:29Ответ № 16
Вот туся по картинке, для Сорта1 - должно создаться 2 строчки?
Черный 15
Синий 12
Так?

да
bunny
10.09.2010 16:30Ответ № 17
их и создается две.
в третьей они суммируются по сорту
E_Migachev
10.09.2010 16:34Ответ № 18
покажи весь код
E_Migachev
10.09.2010 16:40Ответ № 19
(17) кода суммирования у тебя нет!
а в екселе нет колоки суммированной?
как получаешь НомерКолонкиСДанными и КоличествоКолонок?
bunny
10.09.2010 16:46Ответ № 20
а это он весь и есть

Код 1C v 8.х
 Лист = Док.Sheets(НомерСтраницы);
КоличествоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
КоличествоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
НомерСтрокиСДанными = 1;
НомерКолонкиСДанными = 1;

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

Если Число(Лист.Cells(Сч1,Сч2).Value) > 0 Тогда
ТЧ = ДокПлан.Сорта.Добавить();
Сорт = Лист.Cells(Сч1,1).Value;
ТЧ.Сорт = Справочники.Сорта.НайтиПоНаименованию(Сорт);
ТЧ.Цвет = Справочники.Цвета. НайтиПоНаименованию(Лист.Cells(1,Сч2).Value);
ТЧ.Количество = Лист.Cells(Сч1,Сч2).Value;
КонецЕсли;
КонецЦикла;
КонецЦикла;
bunny
10.09.2010 16:48Ответ № 21
а в екселе нет колоки суммированной?

она была скрыта!!! простите. не заметила)
bunny
10.09.2010 16:49Ответ № 22
вы мне очень помогли!) спасибо)
E_Migachev
10.09.2010 16:53Ответ № 23
Пожалуйста *06
bunny
13.09.2010 07:49Ответ № 24
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.