|
Выгрузка в ТЧ (не изменяются данные) | ☑ | ||
---|---|---|---|---|
0
radonn17
01.04.12
✎
10:17
|
Здравствуйте!У меня тут не большая проблема...Есть справочник в нем создаётся множество других справочников (т.е. они созданы и могут быть как пустые так и заполненные в данные момент)и в их табличные части должны загружаться данные из Excel,но у меня тут какой-то баг выходит данные не заносятся и не изменяются не пойму почему...Заранее благодарен за помощь.
&НаКлиенте Процедура ЗагрузитьИзExcel(Команда) Эксель = Новый COMОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open("C:\Users\Администратор\Downloads\1с"); Лист = Книга.WorkSheets(1); ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Док = Справочники.Журнал.Выбрать(); Пока Док.Следующий() Цикл ТЧ = Док.Ведомость; Для каждого Стр из ТЧ Цикл КонецЦикла; КонецЦикла; Для Строка = 1 По ВсегоСтрок Цикл Для Колонка = 1 По ВсегоКолонок Цикл Студент = Справочники.Студенты.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,Колонка).Value)); Если Студент.Пустая() Тогда Сообщить("В строке "+ Строка+ " введен неверно студент.") Иначе ТЧ.Студент = Студент; КонецЕсли; Попытка ТЧ.Понедельник = Перечисления.Оценки.Получить(Лист.Cells(Строка,2).Value); Исключение КонецПопытки; Попытка ТЧ.Вторник = Перечисления.Оценки.Получить(Лист.Cells(Строка,3).Value); Исключение КонецПопытки; Попытка ТЧ.Среда = Перечисления.Оценки.Получить(Лист.Cells(Строка,4).Value); Исключение КонецПопытки; Попытка ТЧ.Пятница = Перечисления.Оценки.Получить(Лист.Cells(Строка,5).Value); Исключение КонецПопытки; Попытка ТЧ.Суббота = Перечисления.Оценки.Получить(Лист.Cells(Строка,6).Value); Исключение КонецПопытки; Попытка ТЧ.Воскресенье = Перечисления.Оценки.Получить(Лист.Cells(Строка,7).Value); Исключение; КонецПопытки; КонецЦикла; КонецЦикла; Док.Записать(); КонецПроцедуры |
|||
1
wade25
01.04.12
✎
10:18
|
Док = Справочники.Журнал.Выбрать(); А где получить объект?)
|
|||
2
НикДляЗапросов
01.04.12
✎
10:18
|
так на клиенте то... на сервере
|
|||
3
wade25
01.04.12
✎
10:19
|
Студент = Справочники.Студенты.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,Колонка).Value)); Вот тут тоесть
|
|||
4
aleks-id
01.04.12
✎
10:19
|
>>Книга = Эксель.WorkBooks.Open("C:\Users\Администратор\Downloads\1с");
это вроде путь к папке. а где сам файл xls ?? |
|||
5
wade25
01.04.12
✎
10:19
|
А ну да) + на клиенте)
|
|||
6
radonn17
01.04.12
✎
10:40
|
(4) не обязательно помоему писать расширение..
(3) не пойму ничего.... |
|||
7
wade25
01.04.12
✎
10:44
|
(6) В той строчке находит в отладчике справочник? Если находит, то что бы в дальнейшем получить доступ к записи, нужно для начала получить объект.
|
|||
8
radonn17
01.04.12
✎
10:45
|
(7) а как получить объект?
|
|||
9
Мимохожий Однако
01.04.12
✎
11:04
|
Док = Справочники.Журнал.Выбрать();
Пока Док.Следующий() Цикл ТЧ = Док.Ведомость; Для каждого Стр из ТЧ Цикл КонецЦикла; КонецЦикла; Этот кусок лишний. |
|||
10
Мимохожий Однако
01.04.12
✎
11:11
|
Если Студент.Пустая() Тогда
Сообщить("В строке "+ Строка+ " введен неверно студент.") Продолжить; Иначе ТЧ = Док.Ведомость.Добавить(); ТЧ.Студент = Студент; КонецЕсли; |
|||
11
radonn17
01.04.12
✎
11:38
|
(10) лишний?
|
|||
12
Мимохожий Однако
01.04.12
✎
12:08
|
(11)Нет смысла в этих двух циклах, т.к. внутри них ничего не происходит.
|
|||
13
radonn17
01.04.12
✎
12:13
|
(9) получаем справочники перебираем их получаем тч читаем строки и в них записываем...
(11)если я их уберу то как буду загружать в тч |
|||
14
Мимохожий Однако
01.04.12
✎
12:23
|
(13)Смотри внимательнее... второе применение КонецЦикла закрывает твой перебор справочников. Перенести Фрагмент " КонецЦикла;
КонецЦикла; " в самый низ твоего кода, если так задумал. Тогда внутри цикла табличной части справочника будешь перебирать свою таблицу в экселе. Я немного в шоке от этого кода. Но тебе виднее. |
|||
15
radonn17
01.04.12
✎
12:26
|
(14) сильно косячный код?))
|
|||
16
radonn17
01.04.12
✎
12:30
|
(14)куда в конец?после закрытия цикла по справочникам там циклы начинаются по строкам и колонкам..
|
|||
17
Мимохожий Однако
01.04.12
✎
12:30
|
(15) Благодаря этому коду, ты умножаешь количество циклов по экселю на количество строк всех элементов справочника.
|
|||
18
Мимохожий Однако
01.04.12
✎
12:31
|
Включи отладчик и убедишься.
|
|||
19
Мимохожий Однако
01.04.12
✎
12:32
|
Попытайся описать словами, как ты хочешь реализовать свой алгоритм.
|
|||
20
radonn17
01.04.12
✎
13:21
|
(19) при нажатии на кноку у меня автоматически создаются справочники( пустые), в их табличные части должны загружаться данные из экселя. 1 справочник равен одному листу экселя( их количество совпадает)
|
|||
21
Мимохожий Однако
01.04.12
✎
13:38
|
Надо сначала читать данные. Только потом создавать элементы справочника по полученным данным.
|
|||
22
radonn17
01.04.12
✎
13:42
|
(21) Ну как бы система такая..создаю я эти справочники заполняю (частично к примеру) выгружаю их в ексель (процедура есть такая все работает ок) там редактирую и загружаю обратно...т.е я уже делал подобное и оно раотало) ни каких проблем не было, но здесь как бы подругому нужно пройтись по всем справочникам и записать в их табличные части
|
|||
23
radonn17
01.04.12
✎
15:32
|
ни кто не поможет7
|
|||
24
GROOVY
01.04.12
✎
15:38
|
Чем помочь то? Код в (0) бредовый.
Полнейший бред, начиная с директивы компиляции, заканчивая обращением к перечислению... |
|||
25
GROOVY
01.04.12
✎
15:41
|
Для Строка = 1 По ВсегоСтрок Цикл
Для Колонка = 1 По ВсегоКолонок Цикл Студент = Справочники.Студенты.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,Колонка).Value)); Если Студент.Пустая() Тогда Сообщить("В строке "+ Строка+ " введен неверно студент.") То бишь получаем студентов которые должны быть во всех ячейках файла? |
|||
26
radonn17
01.04.12
✎
15:45
|
(24) ну как смог...
(25) ну когда я это писал я хотел чтобы имена студентов совпадали с теми которые в справочники.студенты |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |