Имя: Пароль:
1C
1С v8
заполнение регистра сведений из общего модуля
0 SerGo-116
 
19.02.16
10:02
Всем доброго времени суток!

Третий день пытаюсь заполнить регистр сведений из общего модуля.
Пробовал запускать общий модуль регламентной задачей, пробовал запускать из процедуры ПриНачалеРаботы в модуле управляемого приложения - РЕЗУЛЬТАТ НИКАКОЙ...

Задача очень простая - ежедневно загружать курсы валют с сайта ЦБР, принудительно при выполнении команды из формы списка регистра сведений все работает, а из общего модуля нет... Регламентная задача отрабатывается (прописывается в журнале регистрации), процедура ПриНачалеРаботы тоже отрабатывается.

Складывается впечатление, что из общего модуля нельзя делать записи в регистр сведений...

Может кто сталкивался с подобной проблемой как решил???

Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси("http://web.cbr.ru/";, "DailyInfo", "DailyInfoSoap");
    ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("GetCursOnDate";);
    WSПараметр       = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
    WSПараметр.On_Date    = ТекущаяДата();
    КурсыВалют = Прокси.GetCursOnDate(WSПараметр);
    НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл
        НаборЗаписей.Отбор.Период.Установить(ТекущаяДата());
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Период = ТекущаяДата();
        НоваяЗапись.СимвольныйКод = Элемент.VChCode;
        НоваяЗапись.НазваниеВалюты = Элемент.Vname;
        НоваяЗапись.Номинал = Элемент.Vnom;
        НоваяЗапись.ЦифровойКод = Элемент.Vcode;
        НоваяЗапись.КурсВалюты = Элемент.Vcurs;
    КонецЦикла;
    НаборЗаписей.Записать();
1 Ma3eIIa
 
19.02.16
10:04
/// Как работать с набором записей регистра сведений в 1с 8.3, 8.2

Процедура РаботаСНаборомЗаписейРегистраСведений()

    НаборКурсов = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    //НаборКурсов.Отбор.Валюта.Установить(СсылкаНаВалюту);
    НаборКурсов.Отбор.Период.Установить(ТекущаяДата());
    НаборКурсов.Прочитать();

    Если НаборКурсов.Количество() = 0 Тогда
        НовыйКурс = НаборКурсов.Добавить();
        //НовыйКурс.Валюта = СсылкаНаВалюту;
        НовыйКурс.Период = ТекущаяДата();
    ИначеЕсли НаборКурсов.Количество() = 1 Тогда
        НовыйКурс = НаборКурсов[0];
    КонецЕсли;

    НовыйКурс.Курс = 0;
    НовыйКурс.Кратность = 1;

    НаборКурсов.Записать();

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

И смотрим внимательно что не так
2 vicof
 
19.02.16
10:05
Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
...
НаборЗаписей.Прочитать();    
...
НаборЗаписей.Записать();    

КонецЦикла;
3 mikecool
 
19.02.16
10:06
(1) а зачем набор записей для одной записи?
4 Ma3eIIa
 
19.02.16
10:08
(3) Это не мой код. это пример на просторах интернета :)
5 SerGo-116
 
19.02.16
10:19
(1) (2) НаборЗаписей.Прочитать() - добавил результат тот же (3) Там не одна запись, а все валюты которые есть в ЦБР
(4) Этот код действительно не мой просто решил прикрутить его к своей самописной базе, автору кода огромное СПАСИБО
6 vicof
 
19.02.16
10:20
(5) невнимательно читаешь
7 SerGo-116
 
19.02.16
11:31
Разобрался... :)
Спасибо, что навели на умные мысли :)