Имя: Пароль:
1C
1С v8
Самописная конфигурация "Списки"
,
0 kisobol
 
19.03.15
05:25
Есть огромное желание попрактиковаться в создании конфигурации с нуля для собственных нужд.

Задача:
Каждую неделю приходят файлы xls c данными людей (один xls - один человек), каждый файл открывается и из него копируется нужна информация "ФИО" и адрес в wordовский документ и отправляется по почте.
Сейчас файлы хранятся по адресам в папочках, и это дело довольно сложно обрабатывать получать дополнительную информацию.

Как планирую это дело автоматизировать:

1. Создать справочник "ЛЮДИ" в него внести реквизиты соответствующие данным из xls файла.
2. Обработкой загружать xls файлы - создавая элементы справочника, данные которые загруженные например 01.01.2015 будут в реквизите записаны что 10 человек от такого числа.
3. Создать документ в нем выбирать группу людей соответствующию заданному числу, распечатывать бланк + сохранять его в excel.
4. Написать отчеты которые будут нужны для анализа данных.


Сейчас реализовал копирование из xls средствами вба, но нет анализа данных.
Как можно доработать эту схему?
1 hawksib
 
19.03.15
05:50
"например 01.01.2015 будут в реквизите записаны что 10 человек от такого числа"
че-то не понял, а не проще сделать 1 элемент - 1 человек, и наименование элемента ну пусть - фио?
2 kisobol
 
19.03.15
07:10
Да 1 человек - 1 элемент. Пцц шуганты написал, сам не понял.
У элемента будет реквизит число по которому будет определятся принадлежность к группе.
3 kosts
 
19.03.15
07:43
Мало понятно.
4 ДенисЧ
 
19.03.15
07:44
Нельзя с утра так напиваться...
5 patria0muerte
 
19.03.15
07:52
(1) А че хочешь автоматизировать то? Хранение людей? Морг чтоль автоматизируешь?

А по делу - да, справочник "ФизическиеЛица", документ "КакойТоДокумент" у которого дата = дате прихода файла... и прочую информацию из файла запихиваешь в документ. Ну и там в регистр какой все это писать, чтобы все как у людей было....
6 Адский плющ
 
19.03.15
07:56
Стандартная картина. Вместо четкого представления о функциональности будущей программы в голове сумбур. И с этим сумбуром сразу лезем в проектирование структуры БД.

Впрочем, все так начинали. А некоторые успешно продолжают.
7 hawksib
 
19.03.15
08:08
(5) вообще ниче не хочу автоматизировать, не знаю даже какая отчетность нужна, а автору темы, уже зная какие ему отчеты надо, мог бы, возможно, че нибудь со структурой БД подсказать, а так у (5) в принципе правильная мысль
8 patria0muerte
 
19.03.15
08:23
(7) Блин, (5) к (0) было... ) Но суть не меняется:

"Нужно больше информации" (с)
9 kisobol
 
19.03.15
08:51
Главное это автоматическое формирование печатной формы документа со списком людей, а остальное это побочка.

Например отчет - Нужны данные по конкретному городу откуда человек.

  patria0muerte, а зачем информацию из файла запихивать к документ, если нам нужно создавать
10 kisobol
 
19.03.15
08:57
Или заместо обработки загрузки использовать документ для загрузки списков?
11 vicof
 
19.03.15
09:17
(0) Прочитал как "Самописная конфигурация "Сиськи"
12 patria0muerte
 
19.03.15
09:26
(9) Ну так тебя и спрашивают, что вообще за информация то? Если информация о физлицах в файлах статичная и неизменяемая, тогда документ нафиг не упал. Если же по каждому физлицу в файле информация всегда разная, т.е. изменяемая в течении времени, то нужен документ, который будет фиксировать данные изменения.

Т.е. если к тебе в каждом документе приходит:
Вася, Рязань
и из этой Рязани наш Вася никуда деваться не собирается, то пихай Рязань (тобишь Город) в реквизит справочника "Физические лица"
Ежели Вася, и прочие лица - путешественники и файлы приходят типа:
Вася, Рязань
Вася, Мариуполь
Вася, БаденБаден
,то Вася у тебя остается в справочнике ФизЛиц, а Рязань с БаденБаденом/Мариуполем пихаешь в документ, который тебе и зафиксирует, что 01.01.2014 Вася был в Рязани, а потом 05.05.2014 свалил в Мариуполь нафиг от такой жизни...

Вот как-то так.
13 Dmitriy_76
 
19.03.15
09:29
регистр еще не предлагали ?
14 kisobol
 
19.03.15
09:48
Инфа по физлицам всегда статическая и не повторяется.

Получается оптимально записывать физлиц в справочник, и создавать документом печатную форму, чтобы было удобно просматривать по датам документы и при необходимости печатать вновь.
15 kosts
 
19.03.15
09:55
(14) Статичную информацию пиши в справочник. Изменяемую в регистр. Изменения в регистр вноси документом через движения.
Печать отчетов на основе регистров.
16 hawksib
 
19.03.15
13:24
(14) записывай информацию в справочник, и создавай печатную форму обработкой, (15) он жеж вроде только что сказал, что инфа статическая
17 DexterMorgan
 
19.03.15
13:32
Создать справочник "ЛЮДИ"

КрасавчEг!
18 DexterMorgan
 
19.03.15
13:32
Может лучше "ЧЕЛОВЕКИ"?
19 13_Mult
 
19.03.15
13:35
(11) Гыыы, мне тоже глаз "замылило". ))
20 kisobol
 
20.03.15
05:01
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
        СтандартнаяОбработка = Ложь;
        Режим = РежимДиалогаВыбораФайла.Открытие;
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
        ДиалогОткрытияФайла.МножественныйВыбор = Истина;
        ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
        Если ДиалогОткрытияФайла.Выбрать() Тогда
            МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
            Для Каждого ИмяФайла Из МассивФайлов Цикл
        
                ВыбФайл = Новый Файл(ИмяФайла);
                
                Сообщить(ИмяФайла
                    + НСтр("ru = '; Размер = '; en = '; Size = '")
                    + ВыбФайл.Размер());
                    
            КонецЦикла;
        Иначе
            Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
        КонецЕсли;

    
КонецПроцедуры


&НаКлиенте
Процедура ЗагрузитьСоотечественников(Команда)
    
    ЗаполнениеСправочника();

КонецПроцедуры

&НаСервере
Процедура ЗаполнениеСправочника()

    COMОбъект = ПолучитьCOMОбъект(ПутьКФайлу);
    
    ЕКСЕЛЬНомерАнкеты = COMОбъект.Sheets(1).Cells(5,2).Value;
    ЕКСЕЛЬФамилия = COMОбъект.Sheets(1).Cells(7,2).Value;
    ЕКСЕЛЬИмя = COMОбъект.Sheets(1).Cells(9,2).Value;
    ЕКСЕЛЬОтчество = COMОбъект.Sheets(1).Cells(10,2).Value;
    
    СправочникОбъект = Справочники.Соотечественники.СоздатьЭлемент();
    СправочникОбъект.НоменАнкеты     = ЕКСЕЛЬНомерАнкеты;
    СправочникОбъект.Фамилия         = ЕКСЕЛЬФамилия;
    СправочникОбъект.Имя             = ЕКСЕЛЬИмя;
    СправочникОбъект.Отчество         = ЕКСЕЛЬОтчество;    
    СправочникОбъект.Наименование     = СправочникОбъект.Фамилия + " "     
    + СправочникОбъект.Имя  + " " + СправочникОбъект.Отчество;
    
    СправочникОбъект.Записать();

КонецПроцедуры




Не могу понять как в цикле забирать данные из ячеек екселя и формировать новые записи справчоника, гуру помогите жлст %)
21 kisobol
 
20.03.15
05:03
Получилось в другой обработке с единичной загрузкой ексель файла.
22 kisobol
 
20.03.15
07:38
Вот так получилось.

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)   ЭКСПОРТ
    
        СтандартнаяОбработка = Ложь;
        Режим = РежимДиалогаВыбораФайла.Открытие;
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
        ДиалогОткрытияФайла.МножественныйВыбор = Истина;
        ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
        Если ДиалогОткрытияФайла.Выбрать() Тогда
            МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
            
            Режим = РежимДиалогаВопрос.ДаНет;
            Ответ = Вопрос(НСтр("ru = 'Добавить выбранные анкеты в справочник?'"), Режим, 0);
            Если Ответ = КодВозвратаДиалога.Нет Тогда
                Возврат;
            Иначе
                КонецЕсли;
                    
            Для Каждого ИмяФайла Из МассивФайлов Цикл
                ВыбФайл = Новый Файл(ИмяФайла);
                ПутьКФайлу = ВыбФайл.ПолноеИмя;
            
                ЗаполнениеСправочника();
                                                
            КонецЦикла;
        Иначе
            Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
        КонецЕсли;

КонецПроцедуры



&НаСервере
Процедура ЗаполнениеСправочника()
        
        COMОбъект = ПолучитьCOMОбъект(ПутьКФайлу);
        
        ЕКСЕЛЬНомерАнкеты = COMОбъект.Sheets(1).Cells(5,2).Value;
        ЕКСЕЛЬФамилия = COMОбъект.Sheets(1).Cells(7,2).Value;
        ЕКСЕЛЬИмя = COMОбъект.Sheets(1).Cells(9,2).Value;
        ЕКСЕЛЬОтчество = COMОбъект.Sheets(1).Cells(10,2).Value;
        
        СправочникОбъект = Справочники.Соотечественники.СоздатьЭлемент();
        СправочникОбъект.НоменАнкеты     = ЕКСЕЛЬНомерАнкеты;
        СправочникОбъект.Фамилия         = ЕКСЕЛЬФамилия;
        СправочникОбъект.Имя             = ЕКСЕЛЬИмя;
        СправочникОбъект.Отчество         = ЕКСЕЛЬОтчество;    
        СправочникОбъект.Наименование     = СправочникОбъект.Фамилия + " "     
        + СправочникОбъект.Имя  + " " + СправочникОбъект.Отчество;
        
        СправочникОбъект.Записать();  
    
КонецПроцедуры
23 фобка
 
20.03.15
07:47
(22) где цикл?
24 kisobol
 
20.03.15
08:50
фобка

Для Каждого ИмяФайла Из МассивФайлов Цикл
          ВыбФайл = Новый Файл(ИмяФайла);
          ПутьКФайлу = ВыбФайл.ПолноеИмя;
            
          ЗаполнениеСправочника();
                                                
КонецЦикла;




Другая темка как заполнить табличную часть документа?


&НаКлиенте
Процедура Заполнпо2(Команда)
    Заполнпо2НаСервере();
КонецПроцедуры


&НаСервере
Процедура Заполнпо2НаСервере()
      Выборка = Справочники.Соотечественники.Выбрать();
      Пока Выборка.Следующий() Цикл
//тут я проверяю соответствует ли реквизит ДАТА поступления
      Если ДатаПриходаАнкет = Выборка.ДатаПоступления Тогда
    
//а вот так заполнить из этой выборки справочника табличную часть документа этого?
//Сообщить(Выборка);
        
      КонецЕсли;
      
      КонецЦикла;
КонецПроцедуры
25 Deon
 
20.03.15
09:00
(11) Запишусь в бета-тестеры
26 kisobol
 
20.03.15
09:03
Deon выпиваешь с утра?
27 anatoly
 
20.03.15
09:45
(6) в любом случае опыт будет полезный. но конечно надо для начала все расписать на бумаге.

я пару лет назад (полгода не работал) писал чисто для себя конфу с нуля. вроде все продумал - но все равно в процессе 2 раза серьезно переделывал структуру. считаю что опыт хороший приобрел. и этой конфой до сих пор пользуюсь.