|
Обход результата запроса к справочнику и создание недостающих элементов из эксел | ☑ | ||
---|---|---|---|---|
0
alexander-117
04.05.16
✎
15:04
|
Привет!
подскажите пожалуйста в БГУ есть справочник к примеру Контрагенты, и есть файл эекселевский с фио сотрудников (фамилия имя отчество). Как мне загрузить недостающие элементы ???? подскажите пожалуйста. Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка, | Контрагенты.Код, | Контрагенты.Наименование, | Контрагенты.ВидКонтрагента, | Контрагенты.ИНН, | Контрагенты.КПП, | Контрагенты.Фамилия, | Контрагенты.Имя, | Контрагенты.Отчество |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ВидКонтрагента = ЗНАЧЕНИЕ(Перечисление.ВидыКонтрагентов.ФизЛицо) | И Контрагенты.ЭтоГруппа = ЛОЖЬ | И Контрагенты.Фамилия ЕСТЬ НЕ NULL | И НЕ Контрагенты.Фамилия = """""; Выборка = Запрос.Выполнить().Выбрать(); //Сообщить("Количество элементов "+Выборка.Количество()); Пока Выборка.Следующий() Цикл КонецЦикла; КонецПроцедуры |
|||
1
alexander-117
04.05.16
✎
15:07
|
Подскажите пример как начать ? а дальше я сам)
|
|||
2
RomaH
naïve
04.05.16
✎
15:09
|
ексель в ТЗ
ТЗ в запросе соединить слева со справочником |
|||
3
salvator
04.05.16
✎
15:10
|
(1)
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтрагент.Наименование = ... |
|||
4
Timon1405
04.05.16
✎
15:10
|
Вызов специалиста решит проблему
|
|||
5
Fish
04.05.16
✎
15:10
|
(0) Только по ФИО будешь искать? А если полные однофамильцы попадутся?
|
|||
6
alexander-117
04.05.16
✎
15:11
|
а как обойти файл эксель ?
|
|||
7
salvator
04.05.16
✎
15:11
|
(6) Загрузить в таблицу значений.
|
|||
8
RomaH
naïve
04.05.16
✎
15:11
|
(5) " к примеру "
|
|||
9
zbv
04.05.16
✎
15:11
|
(1)
1. Прочитай данные из Excel в таблицу значений. (как поищи по форуму). 2. Контрагенты, которые есть в базе, загрузи в другую таблицу значений. 3. Перебирай таблицу значений полученную из Excel, ищи совпадения с таблицой контрагентов полученной из базы, если такой записи нет, создавай контрагента. |
|||
10
alexander-117
04.05.16
✎
15:13
|
как можно загрузить файл эксель в тз ?
|
|||
11
RomaH
naïve
04.05.16
✎
15:13
|
Попытка
Ексель = Новый COMОбъект("Excel.Application"); Книги = Ексель.Workbooks; Док = Книги.Open(ИмяФайлаНомерника); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; АлгоритмСтруктуры = Объект.АлгоритмЗагрузки; СтруктураЗагрузки = Новый Структура(); Выполнить(АлгоритмСтруктуры); Попытка НомерКолонки = Неопределено; Объект.СписокЗастрахованых.Очистить(); Для Каждого ТекЛист Из Док.WorkSheets Цикл СтруктураЗагрузки.Вставить("ПоследняяСтрока" ,ТекЛист.Cells.SpecialCells(11).Row); СтруктураЗагрузки.Вставить("ПоследнийСтолбец" ,ТекЛист.Cells.SpecialCells(11).Column); Если СтруктураЗагрузки.ПоследнийСтолбец < 3 ИЛИ СтруктураЗагрузки.ПоследняяСтрока < 5 Тогда Сообщить("Выбранный файл содержит лист без данных"); Продолжить; КонецЕсли; ОкончаниеСтрокиСостояния = " из " + (СтруктураЗагрузки.ПоследняяСтрока - СтруктураЗагрузки.НачальнаяСтрока + 1) ; CSAМассив= ТекЛист.Range(ТекЛист.Cells(СтруктураЗагрузки.НачальнаяСтрока, 1), ТекЛист.Cells(СтруктураЗагрузки.ПоследняяСтрока, СтруктураЗагрузки.ПоследнийСтолбец)).Value; МассивКолонок = CSAМассив.Выгрузить(); ОбщееКоличествоКолонок = CSAМассив.GetUpperBound(0); ОбщееКоличествоСтрок = CSAМассив.GetUpperBound(1); |
|||
12
RomaH
naïve
04.05.16
✎
15:14
|
МассивКолонок = CSAМассив.Выгрузить();
это ТЗ |
|||
13
RomaH
naïve
04.05.16
✎
15:14
|
только для запроса её "типизировать" надо, наверное
ВЫБРАТЬ * ПОМЕСТИТЬ втТЗ ИЗ &ТЗ |
|||
14
mikecool
04.05.16
✎
15:33
|
(10) файл можно прочитать объектом ТабличныйДокумент, а его уже пихать в ТЗ построчно
|
|||
15
RomaH
naïve
05.05.16
✎
07:06
|
а нет, вру - МассивКолонок - это именно массив колонок
в каждом элементе массива - массив "ячеек" по строкам |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |