Имя: Пароль:
1C
1С v8
Не делается запись в Регистре Сведений(ГрафикиРаботыПоВидамВремени) ЗУП 2,5
0 Jupiter
 
30.10.14
16:26
Делаю обработку, которая по графику из  файла заполняет соответствующий график в ЗУПе. Но полученная запись регистра не добавляется в регистр?

Код на запись в регистр. Кто-нибудь сталкивался с такой проблемой?

НаборЗаписей = РегистрыСведений.ГрафикиРаботыПоВидамВремени.СоздатьНаборЗаписей();
            
            НаборЗаписей.Отбор.ГрафикРаботы.Установить(Справ.Ссылка);
            НаборЗаписей.Отбор.Месяц.Установить(Дата(Стр.Месяц));
            НаборЗаписей.Отбор.План.Установить(Истина);
            НаборЗаписей.Отбор.ВидУчетаВремени.Установить(Перечисления.ВидыУчетаВремени.ПоДням);
            НаборЗаписей.Отбор.Дата.Установить(Дата(число1));
Запись = НаборЗаписей.Добавить();

            Запись.ГрафикРаботы = Справ.Ссылка;
            Запись.Месяц = Дата(Стр.Месяц);
            Запись.План = Истина;
            Запись.ВидУчетаВремени = Перечисления.ВидыУчетаВремени.ПоДням;
            Запись.Дата = Дата(число1);
            Если Стр.Режим01 <> "" Тогда Запись.ОсновноеЗначение = 1 Иначе Запись.ОсновноеЗначение = 0 КонецЕсли;
            Если Стр.Режим01 <> "" Тогда Запись.ДополнительноеЗначение = Стр.Часы01 Иначе Запись.ДополнительноеЗначение = 0 КонецЕсли;
            СтрокаКаледаря = ПроизводственныйКалендарь.Найти(Дата(число1),"ДатаКалендаря");
            Запись.ПроизводственныйКалендарьПятидневка = СтрокаКаледаря.Пятидневка;
            Если Запись.ПроизводственныйКалендарьПятидневка <> 0 Тогда Запись.ПроизводственныйКалендарьПятидневкаЧасы = 8 Иначе  Запись.ПроизводственныйКалендарьПятидневкаЧасы = 0 КонецЕсли;
            Запись.ПроизводственныйКалендарьШестидневка = СтрокаКаледаря.Шестидневка;
            Запись.ПроизводственныйКалендарьКалендарныеДни = СтрокаКаледаря.КалендарныеДни;
            Запись.ОсновноеЗначениеНорма = Запись.ОсновноеЗначение;
            Запись.ДополнительноеЗначениеНорма = Запись.ДополнительноеЗначение;
НаборЗаписей.Записать(Истина);
1 pessok
 
30.10.14
16:27
все таки сначала надо набор поместить в память, сиречь Прочитать()
2 Jupiter
 
30.10.14
16:50
(1) Насколько я понимаю, это не обязательно. Так как меня не интересуют данные которые уже могут быть введены. Я их просто перезаписываю, если они есть.
3 Jupiter
 
30.10.14
17:39
вверх
4 Euguln
 
30.10.14
17:42
(2) и все же (1)
5 Jupiter
 
30.10.14
17:51
Один выдал ошибку, о присутствии записи с такими измерениями. Что делать дальше?
6 Jupiter
 
31.10.14
10:36
Дорогие форумчане помогите. Добавил Прочитать, все равно не добавляет запись. Что еще может быть?
7 hhhh
 
31.10.14
10:47
что такое

           НаборЗаписей.Отбор.Месяц.Установить(Дата(Стр.Месяц));

что там в Стр.Месяц и в число1?
8 pavig
 
31.10.14
10:49
(5) значит, такие данные уже есть.
Ты либо их замещай полностью по указанному набору измерений, либо как-то обрабатывай.
Но, скорее всего, тебе достаточно будет после "Прочитать()" еще указать "Очистить()", чтобы в записываемый набор не попали старые записи. Тут кстати мне становится не совсем понятным - почему вообще требуется его сначала считывать, чтобы потом очищать. Всё же скорее всего не нужно Прочитать, в (2) - прав.
Проблема в (0) - в другом.
9 Jupiter
 
31.10.14
10:49
(7) там 20140101
10 pavig
 
31.10.14
10:50
(0) "Но полученная запись регистра не добавляется в регистр"
а на что ругается?
Что сообщает?
11 pavig
 
31.10.14
10:50
может, просто ты в форме списка эту запись не видишь? Заработался, бывает..
12 Jupiter
 
31.10.14
10:51
(10) Вообще не ругается. И никаких сообщений. Запись просто не добавляется.
13 Jupiter
 
31.10.14
10:52
Я регистр потом просматриваю, там данной записи нет.
14 pavig
 
31.10.14
10:56
вот такой код 100% рабочий

    НЗ = РегистрыСведений.НумераторСпецификаций.СоздатьНаборЗаписей();
    НЗ.Отбор.Договор.Установить(Справочники.Договоры.НайтиПоКоду("000000000073291"));
    НЗ.Отбор.НомерПриложения.Установить(1);
    НЗ.Отбор.НомерСпецификации.Установить(2);
    НЗ.Отбор.НомерДопСоглашения.Установить(3);
    
    НС = НЗ.Добавить();
    НС.Договор = Справочники.Договоры.НайтиПоКоду("000000000073291");
    НС.НомерПриложения = 1;
    НС.НомерСпецификации = 2;
    НС.НомерДопСоглашения = 3;
    
    НЗ.Записать();


в регистре - четыре измерения, по которым устанавливается отбор.

Может у тебя какие-то подписки есть?
Пройди отладчиком момент записи. Еще замером произиодительности - увидишь, что еще выполняется после инструкции Записать()
15 Зеленый пень
 
31.10.14
10:58
(0) см. ПередЗаписью в модуле регистра
16 Jupiter
 
31.10.14
11:01
(14) А почему ты ресурсам значения не устанавливаешь или их нет?

(14) (15) Проходился отладчиком, нигде в отказ не уходит.


(15) Только там может быть?
17 pavig
 
31.10.14
11:05
(16) "А почему ты ресурсам значения не устанавливаешь или их нет?" устанавливай какие хочешь, это не важно
"Проходился отладчиком, нигде в отказ не уходит"
у тебя не уходит в отказ, у тебя где-то набор записей очищается, либо твой код в чем-то кривой и в (0) - не весь код, нет самого интересного.
Попробуй тогда тестово просто выполнить что-то наподобие (14), проверь себя
"Только там может быть?"
нет, не только там.
установи точку останова на "Записать()", нажми "замер производительности", потом F5, потом "отожми" замер производительности, разверни окно, сделай скрин, отправь прямо сюда, посмотрим, что утебя выполняется ПОСЛЕ команды запись набора
18 pavig
 
31.10.14
11:11
А, еще вариант: попробуй в режиме обмена данными загрузить, может поможет как-то локализовать очищение:

НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
19 Jupiter
 
31.10.14
11:15
(17) Как добавлять сюда картинки?
20 Jupiter
 
31.10.14
11:19
(18) Аналогично. что и без обмена.
21 pavig
 
31.10.14
11:19
(19) да просто ссылку на картинку скопируй и отправь
22 pavig
 
31.10.14
11:20
а можешь вообще всю обработку отправить и файл загрузки (ну первые 3-4 строки), я на месте посмотрю
23 pavig
 
31.10.14
11:20
это лучший вариант
24 Jupiter
 
31.10.14
11:36
25 pavig
 
31.10.14
14:25
(24)

а ты отладкой проходил?

у тебя скорее всего вот это не проходит:
Если Стр.НаименованиеГрафика = Справочники.ГрафикиРаботы.НайтиПоНаименованию(Стр.НаименованиеГрафика).Наименование Тогда

то есть нет таких графиков работ, которые ты пытаешься загрузить из файла
перепроверь

другого больше ничего не вижу
26 Jupiter
 
31.10.14
14:43
Не в этом проблема. С графиками все хорошо.
Проблема как мне кажется в отборе. Попробовал, через МенеджерЗаписи добавить строку. Получилось. Я думаю либо нужно сразу весь регистр записывать например по измерению Графика, Либо чутка уменьшить до Измерений График, Месяц и ВидУчетаВремени.
27 Jupiter
 
31.10.14
14:45
Вот только не пойму отбор, сделан чтобы изменить одну запись регистра, а значит должен Действовать как Менеджер.
28 pavig
 
31.10.14
15:07
(26), (27)
на моей базе обработка отрабатывает как надо, записи появляются.
29 Jupiter
 
31.10.14
15:12
(28) спасибо. Буду думать.
30 Jupiter
 
31.10.14
15:32
Решил. Оказалась не там искал ошибку. В обработке забыл закрыть Com-объект от этого и проблемы. Всем спасибо, особенно pavig.