Имя: Пароль:
1C
1С v8
Обход результата запроса к справочнику и создание недостающих элементов из эксел
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
а нет, вру - МассивКолонок - это именно массив колонок
в каждом элементе массива - массив "ячеек" по строкам
AdBlock убивает бесплатный контент. 1Сергей