Имя: Пароль:
1C
1С v8
Регистры расчетов, начало
,
0 Мандалай
 
27.03.17
19:46
Начал изучать регистры расчета.
Изучаю по Чистову, вот такой листинг согласно его лекции должен записать Ресурс "Результат". Согласно отладчику НаборЗаписейРегистра заполняется, поле Результат заполнено. Но после записи в регистр ресурс Результат пустой. Пытался использовать Записать(Истина), но толку никакого.
Поле результат такого же типа как и поле Параметр Число(15,2).

    НаборЗаписейРегистра = РегистрыРасчета.Начисления.СоздатьНаборЗаписей();
    НаборЗаписейРегистра.отбор.Регистратор.Установить(Регистратор);
    НаборЗаписейРегистра.Прочитать();
    
    Для каждого Запись из НаборЗаписейРегистра Цикл
        ВидРасчета = Запись.ВидРасчета;
        Если ВидРасчета = ПланыВидовРасчета.ВидыРасчета.ОкладУпарвленческий Тогда
            Запись.Результат = Запись.Параметр;
        ИначеЕсли ВидРасчета = ПланыВидовРасчета.ВидыРасчета.ПремияПроцентом Тогда
            Ресурсы = Новый Массив;
            Ресурсы.Добавить("Начисления.Результат");
            
            Отбор = Новый Структура;
            Отбор.Вставить("Сотрудник","Начисления.Сотрудник");
            
            ТЗ_База = Запись.ПолучитьБазу(Ресурсы,Отбор);
            База = ТЗ_База[0].Результат;
            
            Запись.Результат = База*Запись.Параметр/100;
        КонецЕсли;
    КонецЦикла;
    
    НаборЗаписейРегистра.Записать(); //вот тут набор записей корректно заполнен

Подскажите в чем может быть проблема?
1 Волшебник
 
модератор
27.03.17
19:49
опечатка в коде ОкладУпарвленческий
2 Мандалай
 
27.03.17
19:51
В предопределенных плана вида расчета такая же ошибка
3 DrShad
 
27.03.17
19:55
Какой-то бред а не код
4 Волшебник
 
модератор
27.03.17
19:55
(2) фу, бля
5 mistеr
 
27.03.17
20:17
(0) Транзакцию не забываешь зафиксировать?
6 Мандалай
 
27.03.17
20:42
(3)Допускаю, видео про расчеты у Чистова датируется 2009 годом. Я пока не отхожу от его уроков. Дальше яснее будет что и как правильно.
(4)Матиться тут нельзя, бан можно словить.
(5)Без транзакции.
Вот собсно ссылка на первый урок.
https://vimeo.com/8283280
7 Мандалай
 
27.03.17
20:45
Вот кстати кусок который предшествует приведенному коду.

    Движения.Начисления.Записывать = Истина;
    
    Для каждого стр из Начисления Цикл
        Запись = Движения.Начисления.Добавить();
        ЗаполнитьЗначенияСвойств(Запись,Стр);
        Запись.ПериодРегистрации = ПериодРегистрации;
        
    КонецЦикла;
    Движения.Начисления.Записать();
    
    Расчет.РасчетНачислений(Ссылка);
8 Волшебник
 
модератор
27.03.17
20:46
(6) Имей смелость отойти от уроков 8 летней давности и обнови релиз. Вероятно, там уже многое исправлено.

Мне тут можно материться. Я человек добродетельный.
9 Мандалай
 
27.03.17
20:50
Конечно то что старовато - это факт. Но я к спецу готовлюсь, а у него целый форум на эту тему.
Можешь подсказать автора который доступным языком объясняет актуальную логику работы регистров расчета?
10 Живой Ископаемый
 
27.03.17
20:57
В коде что ты привел нет ничего специфического только  Регистрам Расчетов. тот же самый код применим к любым регистрам.
11 Мандалай
 
27.03.17
21:02
(10)Это я понимаю, тем более странно что не пишется Результат
12 Сергиус
 
27.03.17
22:13
(0)Возможно в модуле набора записей данного регистра какой то код очищает данное поле.
13 Cyberhawk
 
27.03.17
22:13
"Но после записи в регистр ресурс Результат пустой" // Типы не совпадают, какое-нибудь приведение типов срабатывает
14 Мандалай
 
28.03.17
07:55
(12)Нет там ничего пустой регистр, я сам его сделал.
15 Fedor-1971
 
28.03.17
09:03
(14) ВидРасчета - замени на что нить, выделено как служебное слово
Ты где этот код написал? Судя по Движения.Записать() где-то в проведении документа. Т.е. ты записал движения документа, потом читаешь результат, по сути незафиксированные данные, что-то там делаешь и опять записываешь (можно считать, что угрохал стандартные движения)
16 Fedor-1971
 
28.03.17
09:06
15+ разнеси код по ОбработкаПроведения и ПослеЗаписи - если уж очень нужно поправить движения
17 DrShad
 
28.03.17
09:17
(14) если ты готовишься к спецу, то есть смысл посмотреть типовой ЗУП, там уже давно набор записей это ТЧ документов, а по такому курсу Чистова ты спеца не сдашь
18 Fedor-1971
 
28.03.17
09:33
(17) по ходу, ТС просто пытается вникнуть в смысл работы с периодическими расчётами. Как, что и откуда движется.
В ЗУП (как и в любой типовой) слишком много предусмотрено и поначалу его просто запутает
19 DrShad
 
28.03.17
09:34
(18) но спеца он так не сдаст все равно
а что и как работает в регистрах расчета я когда-то довольно быстро понял прочитав одну маленькую статью в книге знаний
20 DrShad
 
28.03.17
09:36
вот она Книга знаний: Сложные периодические расчеты в 8.0 для чайников

хоть автора здесь не очень обожают, но для общего понимания вполне пригодно
21 Alexandr_U1982
 
28.03.17
09:43
(0) Вот так попробуй
    НаборЗаписейРегистра = РегистрыРасчета.Начисления.СоздатьНаборЗаписей();
    НаборЗаписейРегистра.Записывать = Истина;
    НаборЗаписейРегистра.отбор.Регистратор.Установить(Регистратор);
    НаборЗаписейРегистра.Прочитать();
22 Alexandr_U1982
 
28.03.17
09:44
(0)Если этот код находится в процедуре "ОбработкаПроведения", то попробуй у документа в свойство "Запись движений при проведении" установить значение "Записывать модифицированные".
23 Мандалай
 
29.03.17
15:25
Всем спасибо.
Вот это (22) помогло.
24 Мандалай
 
29.03.17
15:27
Да вы правы я пытаюсь разобраться в самых азах ЗУПа, давным давно я его еще как то знал а сейчас давно уже не трогал. Поэтому решил идти с самого начала.
То что я не сдам по этим видосам спеца это понятно, механизмы платформы и логика решения задач уже 10 раз изменилась. Но видос он тем и ценен что он видос :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший