Имя: Пароль:
1C
1С v8
таблицаЗначений!
0 uuu_ggg
 
08.03.12
11:11
у меня есть таблица значений

тзДвиженийОсн = НЗОсн.Выгрузить();
далее цикл

Для каждого рег из  тзДвиженийОсн цикл
..
..
..
тут я делаю что мне надо и потом одно из значений мне нужно заменить в этой ТЗ,подскажите как это сделать ?
1 uuu_ggg
 
08.03.12
11:13
могу весь код добавить,он простой и маленький)
2 Rie
 
08.03.12
11:13
(0) Оператор присваивания - спасёт прогрессивное человечество.
В чём именно у Вас проблема?
3 uuu_ggg
 
08.03.12
11:15
НЗОсн = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей();
   Регистратор=Документы.ПереносДанных.НайтиПоНомеру("НЗР-0901");
   ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00001");
НЗОсн.Отбор.Регистратор.Установить(Регистратор);
НЗОсн.Прочитать();
тзДвиженийОсн = НЗОсн.Выгрузить();


НЗДоп = РегистрыСведений.мойРегистр.СоздатьНаборЗаписей();

НЗДоп.Прочитать();
тзДвиженийДоп = НЗДоп.Выгрузить();

Для каждого рег из  тзДвиженийОсн цикл
   Если рег.ВидРасчета = ВидРасчета тогда
       Отбор = Новый Структура();
       Отбор.Вставить("Сотрудник", рег.Сотрудник);
       Отбор.Вставить("Дата", рег.ПериодРегистрации);
       НайденнаяСтрока = тзДвиженийДоп.НайтиСтроки(Отбор);
           Для НомерСтроки=0 по НайденнаяСтрока.Количество()-1 цикл
                 Сообщить(НайденнаяСтрока[НомерСтроки].Сумма);
               если (НайденнаяСтрока[НомерСтроки].Сумма = 29.4 ) и
                   (   День(рег.ПериодДействияКонец) =   День(КонецМесяца(рег.ПериодДействияКонец)) )
                               Тогда Сообщить (рег.Сотрудник )    
                           иначеесли  НайденнаяСтрока[НомерСтроки].Сумма <> 29.4 тогда
                           Дни = (НайденнаяСтрока[НомерСтроки].Сумма * День(КонецМесяца(рег.ПериодДействияКонец))/29.4);
                           ДниРаб = Окр(Дни,0) ;
                           год = Год (рег.ПериодДействияКонец);
                           месяц =Месяц (рег.ПериодДействияКонец);
                           рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);
                           Сообщить ( Дата (год,месяц,ДниРаб,23,59,59))  ;
                   конецесли
           КонецЦикла;
       конецесли;
4 ДенисЧ
 
08.03.12
11:16
(2) а что, сразу не видно, где именно у него проблема?
5 uuu_ggg
 
08.03.12
11:16
тут мне нужно чтоб реквизит  рег.ПериодДействияКонец,заменился на то значение которое я написала

рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);
6 Rie
 
08.03.12
11:24
НайденнаяСтрока[НомерСтроки].ПериодДействияКонец = ЧегоТамВамНадо;
7 uuu_ggg
 
08.03.12
11:26
мне не туда надо)
а вот сюда
рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);
но он почему то не меняет,может еще что-то нужно написать...
8 ДенисЧ
 
08.03.12
11:27
ой... А я таки был прав...
9 uuu_ggg
 
08.03.12
11:28
(8)и где?)
10 ДенисЧ
 
08.03.12
11:29
(9) there are many bugs in DNA...
11 uuu_ggg
 
08.03.12
11:30
что такое DNA..
12 ДенисЧ
 
08.03.12
11:31
ооооооо!!!...

Это Deoxyribonucleic acid...
13 uuu_ggg
 
08.03.12
11:37
блин,подскажите лучше как сделать
14 DrShad
 
08.03.12
11:40
(13) в прошлой ветке я тебе уже писал про быдлокод, и теперь нет желания читать конструкции [ Для НомерСтроки=0 по НайденнаяСтрока.Количество()-1 цикл]
15 uuu_ggg
 
08.03.12
11:41
(14)да это я исправлю...
16 DrShad
 
08.03.12
11:42
и это [рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);] тоже
17 uuu_ggg
 
08.03.12
11:46
а тут я не знаю на что исправить...
18 ОбычныйЧеловек
 
08.03.12
11:53
(0)

ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00001");

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

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

Отбор=Новый Структура();
Для каждого рег из НЗДоп цикл
   Если рег.ВидРасчета = ВидРасчета тогда
       Отбор.Вставить("Сотрудник", рег.Сотрудник);
       Отбор.Вставить("Дата", рег.ПериодРегистрации);
       МассивСтрок=тзДвиженийДоп.НайтиСтроки(Отбор);
       
       Для Каждого СтрокаМассива Из МассивСтрок цикл
           текСумма=СтрокаМассива.Сумма;
           Сообщить(текСумма);
           Если текСумма=29.4 ) и (День(рег.ПериодДействияКонец)=День(КонецМесяца(рег.ПериодДействияКонец))) Тогда
               Сообщить (рег.Сотрудник )    
           иначеесли  текСумма <> 29.4 тогда
               Дни = (текСумма * День(КонецМесяца(рег.ПериодДействияКонец))/29.4);
               ДниРаб = Окр(Дни,0) ;
               год = Год (рег.ПериодДействияКонец);
               месяц =Месяц (рег.ПериодДействияКонец);
               рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);
               Сообщить ( Дата (год,месяц,ДниРаб,23,59,59))  ;
           конецесли
       КонецЦикла;
   конецесли;
КонецЦикла;
НЗДоп.Записать();
19 DrShad
 
08.03.12
11:55
тогда уж и в первый цикл заменить на строки найденные по виду расчета
20 ОбычныйЧеловек
 
08.03.12
11:56
Регистратор=Документы.ПереносДанных.НайтиПоНомеру("НЗР-0901");
ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00001");

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

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

Отбор=Новый Структура();
Для каждого рег из НЗОсн цикл
   Если рег.ВидРасчета = ВидРасчета тогда
       Отбор.Вставить("Сотрудник", рег.Сотрудник);
       Отбор.Вставить("Дата", рег.ПериодРегистрации);
       МассивСтрок=тзДвиженийДоп.НайтиСтроки(Отбор);
       
       Для Каждого СтрокаМассива Из МассивСтрок цикл
           текСумма=СтрокаМассива.Сумма;
           Сообщить(текСумма);
           Если текСумма=29.4 ) и (День(рег.ПериодДействияКонец)=День(КонецМесяца(рег.ПериодДействияКонец))) Тогда
               Сообщить (рег.Сотрудник )    
           иначеесли  текСумма <> 29.4 тогда
               Дни = (текСумма * День(КонецМесяца(рег.ПериодДействияКонец))/29.4);
               ДниРаб = Окр(Дни,0) ;
               год = Год (рег.ПериодДействияКонец);
               месяц =Месяц (рег.ПериодДействияКонец);
               рег.ПериодДействияКонец = Дата (год,месяц,ДниРаб,23,59,59);
               Сообщить ( Дата (год,месяц,ДниРаб,23,59,59))  ;
           конецесли
       КонецЦикла;
   конецесли;
КонецЦикла;    
НЗОсн.Записать();

млин наплодил Осн\Доп...не запутаться не возможно :) код конечно из разряда "мама не горюй"
21 uuu_ggg
 
08.03.12
11:58
а чем плохой код?)))
22 ОбычныйЧеловек
 
08.03.12
12:00
(21) сори, я не сразу заметил, что "пол=женский" - в данном случае тогда код пойдет :)
23 uuu_ggg
 
08.03.12
12:01
(22)
)))))))))))))))
только он мне почему то всё равно в этом регистре расчета не заменяет значение.......
блин
24 ОбычныйЧеловек
 
08.03.12
12:03
(23) не верю (с)
25 uuu_ggg
 
08.03.12
12:05
ну а как я могу доказать?)
26 ОбычныйЧеловек
 
08.03.12
12:07
(25) аська+амми\тимвиер
27 uuu_ggg
 
08.03.12
12:08
о,вроде заменил
я закрыла документ потом зашла)
спасибо..
ну все таки скажите,почему код плохой?)
он же работает правильно,просто коряво написан?
28 ОбычныйЧеловек
 
08.03.12
12:12
(27) >>он же работает правильно,просто коряво написан?
смотри какая маладец - ведь сама же все понимаешь :)
29 uuu_ggg
 
08.03.12
12:21
а если мне не надо сохранять изменений,то мне надо
НЗОсн.Записать();
убрать?)
30 ОбычныйЧеловек
 
08.03.12
12:23
(29) логично :)
31 uuu_ggg
 
08.03.12
13:13
а если мне надо в регистре ,у определенного вида расчета заменить дату
32 uuu_ggg
 
08.03.12
13:14
Регистратор=Документы.ПереносДанных.НайтиПоНомеру("СП000000023");
ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("10026");

НЗОсн=РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей();
НЗОсн.Отбор.Регистратор.Установить(Регистратор);
НЗОсн.Прочитать();
Для каждого рег из НЗОсн цикл
   Если (рег.ВидРасчета = ВидРасчета)и (рег.ПериодРегистрации = "01.01.2011 0:00:00") тогда
               День = День(НачалоМесяца(рег.ПериодДействияКонец)) ;
               год = Год (рег.ПериодДействияКонец);
               месяц =Месяц (рег.ПериодДействияКонец);
               рег.ПериодДействияКонец = Дата (год,месяц,День,00,00,00);
               Сообщить ( рег.Сотрудник)  ;
               Сообщить (Дата (год,месяц,День,0,00,00));

             
           конецесли
       КонецЦикла;
 
НЗОсн.Записать();
33 uuu_ggg
 
08.03.12
13:14
так?)
34 uuu_ggg
 
08.03.12
13:16
не записывает почему то снова)
35 ОбычныйЧеловек
 
08.03.12
13:41
(32) в "рег.ПериодДействияКонец" Дата хранится или что? ты почему с ней как со строкой работаешь? там реально тип строка?
36 uuu_ggg
 
08.03.12
13:45
(35)уже исправила
там дата
рег.ПериодРегистрации =Дата(2009,02,01,0,00,00 )
37 medved_kot
 
08.03.12
18:34
День = День(НачалоМесяца(рег.ПериодДействияКонец)) ;

Это разве не
День = 1;
38 experimentator76
 
09.03.12
11:46
(0) пешиесчо :))
39 experimentator76
 
09.03.12
11:48
некрасивый код по определению не будет корректно работать
некрасивый код - следствие каши в голове прога
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший