Имя: Пароль:
1C
1С v8
загрузка данных в регистр сведений
,
0 anisa8310
 
27.05.13
12:27
Доброе!
Никак загнать данные не удается(
Где моя ошибка?
Создала РС "Загрузка " и нужно данные загрузить-скрин во вложении а во втором результат. Почему то последнюю запись только записывает-что с "Период "нужно делать (я уже так к текущей ставлю плюс период чтоб он отличалась от предыдущей )??
Заранее всем благодарю!
http://s017.radikal.ru/i441/1305/69/abb87aa8d027.jpg
http://s019.radikal.ru/i610/1305/e3/ae0eec461bd5.jpg
1 1Сергей
 
27.05.13
12:28
блин, я лупу с собой не взял. помочь не могу
2 zak555
 
27.05.13
12:29
зачем ты читаешь текстовый файл, как эксель ?
3 andreymongol82
 
27.05.13
12:30
1-е что увидел - нет установки отборов для набора записи
4 Maxus43
 
27.05.13
12:30
после создать набор - ставь отбор на измерение сначала
5 User_Agronom
 
27.05.13
12:32
(0) Скопируй текст сюда. Очень сложно разобрать на скрине
6 zak555
 
27.05.13
12:33
у двоих плохо со зрением
7 anisa8310
 
27.05.13
12:35
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
/////////////открытие .csv-документа    
   Док = ПолучитьCOMОбъект(Путь);
   счСтроки = 1;
   день=1;
       
   Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл
   Стр=Док.Sheets(1).Cells(счСтроки,1).Value;
   
          НоваяСтрока=РегистрыСведений.Загрузка.СоздатьНаборЗаписей();
          ЗагрузкаГостиницы=НоваяСтрока.Добавить();
          ЗагрузкаГостиницы.Период=(ТекущаяДата()+(День*24*60*60));
   
             
                   
           Массив = Новый Массив(5);
           Для Сч=1 По 5 Цикл
               
           Позиция = Найти(Стр, "|");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           ЗагрузкаГостиницы.ЗагрузкаНомерногоФондаПроцент=Массив[4];
           ЗагрузкаГостиницы.Дата=ЗагрузкаГостиницы.Период;
           КонецЦикла;
    НоваяСтрока.Записать();
     счСтроки = счСтроки + 1;
   день=день+1;
   КонецЦикла;
   Сообщить("Загрузка в регистр сведений завершена !!!");
//////////закрываем документ
Док.Application.Quit();
   
КонецПроцедуры
8 anisa8310
 
27.05.13
12:36
(2) как массив читаю-вроде б удобно
9 Maxus43
 
27.05.13
12:36
зачем в этом:
          Для Сч=1 По 5 Цикл
ЗагрузкаГостиницы.Дата=ЗагрузкаГостиницы.Период;

меняешь дату?
а после цикла только записываешь, 1 раз причем
10 anisa8310
 
27.05.13
12:36
(4) Измерение одно-"дата " а что за отбор?
11 Maxus43
 
27.05.13
12:37
(10) регистр какой? независимый непериодический? Используй менеджер записи вобще лучше
12 anisa8310
 
27.05.13
12:37
(9) это только эксперимент-тоже не удачный.
13 anisa8310
 
27.05.13
12:38
Независимый с пределах дня (11)
14 anisa8310
 
27.05.13
12:40
(11) менеджер записи-в справке нашла...filling который?
15 anisa8310
 
27.05.13
12:41
стандартная обработка? вообще не умею ей пользоваться.
16 User_Agronom
 
27.05.13
12:48
ЗагрузкаГостиницы.Период=(ТекущаяДата()+(День*24*60*60));
Всегда один и тот же?
ЗагрузкаГостиницы.Дата тоже одна и та же. Затирает  каждая следующая запись предыдущую.
17 anisa8310
 
27.05.13
12:53
счСтроки = счСтроки + 1; (16)
18 anisa8310
 
27.05.13
12:53
(16) куда эту строку надо тогда? в цикл чтоли-сейчас попробую
19 anisa8310
 
27.05.13
12:55
нет блин теперь только первую строку записал и РС занес..вообще не умею В РС данные загружать
20 anisa8310
 
27.05.13
12:55
в документ могу в справочник могу-а в РС не могу
21 Maxus43
 
27.05.13
13:08
МенеджерРС = РегистрСведений.Такойто.СоздатьМенеджерЗаписи();
МенеджерРС.Дата = твоя Дата;
МенеджерРС.Ресурсы = ....
МенеджерРС.Записать();
и всё
22 anisa8310
 
27.05.13
13:12
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
/////////////открытие .csv-документа    
   Док = ПолучитьCOMОбъект(Путь);
   счСтроки = 1;
   день=1;
       
   Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл
   Стр=Док.Sheets(1).Cells(счСтроки,1).Value;
   
          НоваяСтрока=РегистрыСведений.Загрузка.СоздатьНаборЗаписей();
          ЗагрузкаГостиницы=НоваяСтрока.Добавить();
          ЗагрузкаГостиницы.Период=(ТекущаяДата()+(День*24*60*60));
   
             
                   
           Массив = Новый Массив(5);
           Для Сч=1 По 5 Цикл
               
           Позиция = Найти(Стр, "|");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           ЗагрузкаГостиницы.ЗагрузкаНомерногоФондаПроцент=Массив[4];
           ЗагрузкаГостиницы.Дата=ЗагрузкаГостиницы.Период;
           НоваяСтрока.Записать();    
           
         

       КонецЦикла;
        день=день+1;
        счСтроки = счСтроки + 1;
   
       КонецЦикла;
   Сообщить("Загрузка в регистр сведений завершена !!!");
//////////закрываем документ
Док.Application.Quit();
   
КонецПроцедуры
23 anisa8310
 
27.05.13
13:12
(21) ой зря свой код бросила..
24 anisa8310
 
27.05.13
13:13
(21) Сейчас попробую менеджера...
25 Maxus43
 
27.05.13
13:15
тпруууу... периодический в пределах дня, (21) не пойдёт, затупил что-то)
26 anisa8310
 
27.05.13
13:18
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
/////////////открытие .csv-документа    
   Док = ПолучитьCOMОбъект(Путь);
   счСтроки = 1;
   день=1;
       
   Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл
   Стр=Док.Sheets(1).Cells(счСтроки,1).Value;
   
          ЗагрузкаГостиницы=РегистрыСведений.Загрузка.СоздатьМенеджерЗаписи();          
          ЗагрузкаГостиницы.Период = (ТекущаяДата()+(День*24*60*60));
         
                   
                   
           Массив = Новый Массив(5);
           Для Сч=1 По 5 Цикл
               
           Позиция = Найти(Стр, "|");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           ЗагрузкаГостиницы.ЗагрузкаНомерногоФондаПроцент=Массив[4];
           ЗагрузкаГостиницы.Дата=ЗагрузкаГостиницы.Период;
           ЗагрузкаГостиницы.Записать();    
           
         

       КонецЦикла;
        день=день+1;
        счСтроки = счСтроки + 1;
   
       КонецЦикла;
   Сообщить("Загрузка в регистр сведений завершена !!!");
//////////закрываем документ
Док.Application.Quit();
   
КонецПроцедуры
27 anisa8310
 
27.05.13
13:18
(25) нормалек-получилось
28 cw014
 
27.05.13
13:19
ОТБОР
29 anisa8310
 
27.05.13
13:19
а что такого что в пределах дня? пойдет-дату ставит -мне этого и надо только
30 Maxus43
 
27.05.13
13:20
у тебя ЗагрузкаГостиницы.Записать(); в цикле, а создание набора-менеджера за ним, и в цикле нет добавления записей, тут с логикой не так что-то.
31 anisa8310
 
27.05.13
13:21
(28) Отбор....вот сейчас дальше буду условия ставить разные для показателей загрузки-так и не поняла что за отбор...но пока без отбора загрузилось
32 anisa8310
 
27.05.13
13:21
(30) сама не поняла вот результат три строки загрузил в итоге
33 anisa8310
 
27.05.13
13:22
Период    Дата    Макс коэф загрузки    Коэв загр номерного фонда    Коэф загрузки провед мероп    Загрузка номерного фонда процент    Кол провед мероприятий
   28.05.2013    28.05.2013 0:00:00                48,10    
   29.05.2013    29.05.2013 0:00:00                58,57    
   30.05.2013    30.05.2013 0:00:00                60,95
34 Maxus43
 
27.05.13
13:26
(32) лишь бы в радость конечно, но стоит разобраться. ЭТО (26) используй только сама, и только одноразово) и с проверкой потом, чотб не было сюрпризов)
35 anisa8310
 
27.05.13
13:33
(34) Очень в РАдость!!!!!
36 Maxus43
 
27.05.13
13:35
а, хотя я понял почему работает всё таки, но неправильно это с точки зрения программирования...

          ЗагрузкаГостиницы=РегистрыСведений.Загрузка.СоздатьМенеджерЗаписи();          
          ЗагрузкаГостиницы.Период = (ТекущаяДата()+(День*24*60*60));

это в цикл надо загнать тоже по феншую
37 anisa8310
 
27.05.13
13:59
(36) хорошо по фен шую так по фен шую.
теперьслед сравнение:

Массив = Новый Массив(5);
           Для Сч=1 По 5 Цикл
               
           Позиция = Найти(Стр, "|");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           ЗагрузкаГостиницы.ЗагрузкаНомерногоФондаПроцент=Массив[4];
           ЗагрузкаГостиницы.Дата=ЗагрузкаГостиницы.Период;
           Если Число(Массив[4])> 30
               Тогда
               КоэвЗагрНомерногоФонда = 0.1;
               Иначе
               КоэвЗагрНомерногоФонда = 0;
                  Если  Число(Массив[4])> 50
                   Тогда
                   КоэвЗагрНомерногоФонда = 0.3;
                   Иначе
                   КоэвЗагрНомерногоФонда = 0.2;
                         Если  Число(Массив[4])> 70
                          Тогда
                          КоэвЗагрНомерногоФонда = 0.5;
                          Иначе
                          КоэвЗагрНомерногоФонда = 0.4;
                       КонецЕсли;
           КонецЕсли;
           КонецЕсли;

               ЗагрузкаГостиницы.Записать();
38 anisa8310
 
27.05.13
13:59
Короче от загрузки-след показатель сравнить в цикле ещё надо..
39 anisa8310
 
27.05.13
14:00
Число(Массив[4]) но ругается: {Форма.Форма.Форма(24)}: Преобразование значения к типу Число не может быть выполнено
40 anisa8310
 
27.05.13
14:07
написала же тип объявила: Число(Массив[4])
41 hhhh
 
27.05.13
14:15
может пробелы не удалила
42 anisa8310
 
27.05.13
14:24
(41) нет не удалила
43 anisa8310
 
27.05.13
14:26
Символ(34)? так удаляем?
44 hhhh
 
27.05.13
14:26
ну, удали. Ведь понятно, что в числе не должно быть пробелов.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.