Имя: Пароль:
1C
1C 7.7
v7: ОБработка для путевого листа
0 serg-lom89
 
28.01.13
11:42
Добрый день
одна ситуация по путевым листам
с нового года внесли остатки и показания спидометра не подхватились.
нужно заходить в каждый документ,и перевыбирать автомобиль.


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

скажите пожалуйста,вот делаю одну обработку,для путевых листов,для
1 Ёпрст
 
гуру
28.01.13
11:53
больше кода
2 serg-lom89
 
28.01.13
11:54
(1) очень понятно=)
3 Mikeware
 
28.01.13
11:55
(0) не подхватываются показания спидометра - фигня.
главное - спид не подхвати!
4 Azverin
 
28.01.13
11:56
(2) а нам тем более)))
5 Mikeware
 
28.01.13
11:57
(4) белорусы последний год доставляют изрядно...
похоже, пытаются изгнать чукчей из анекдотов...
6 serg-lom89
 
28.01.13
11:58
у кого то есть какие варианты?подскажите
7 Azverin
 
28.01.13
12:00
(6) покажи свой код - появятся и варианты
8 monsterZE
 
28.01.13
12:05
(0) трава забористей, чем у меня =)
непонятно что с чем ты сравниваешь
реквизит табличной части документа или реквизит шапки
телепатирую - если при открытии документа и повторном выборе реквизита все становится, как должно быть - надо посмотреть процедуру, обрабатывающую выбор реквизита, скопипастить ее в свою обработку и пройтись по всем документам, пересчитывая что-то.. =)
9 serg-lom89
 
28.01.13
12:11
(8) сравниваю шапку
10 serg-lom89
 
28.01.13
12:12
так я имею в виду как открыть сам реквизит в документе и опять его поставить в этот же документ?
11 Ёпрст
 
гуру
28.01.13
12:13
(10) свой код покажи, дурилко, что делаешь и что не получается и что нужно сделать
12 serg-lom89
 
28.01.13
12:16
Перем Сообшение;
Процедура ПриОткрытии()
   НачДата= НачМесяца(РабочаяДата());
   КонДата= КонМесяца(РабочаяДата());
   //Форма.Переч.Видимость(0);
КонецПроцедуры  

Процедура Выполнить()
   НачатьТранзакцию();
   ДокПутЛист=СоздатьОбъект("Документ.ПутевойЛист2Г");    
   ДокПутЛист.ВыбратьДокументы(НачДата,КонДата);
   СправАвто=СоздатьОбъект("Справочник.АвтомобилиПредприятия");
   Пока ДокПутЛист.ПолучитьДокумент()>0 Цикл
       Если    ДокПутЛист.Проведен()=1 Тогда
       Если ДокПутЛист.Автомобиль.Выбран()=1 Тогда
           Авто= ДокПутЛист.Автомобиль;
           Форма.ВыполнитьВыбор(Авто);    
           СправАвто.ВыбратьЭлементы();
           Пока СправАвто.ПолучитьЭлемент()>0 Цикл  
               Если Авто=СправАвто.ТекущийЭлемент() ТОгда
               //    ДокПутЛист.Автомобиль.Новый();
                   //ДокПутЛист.Автомобиль.ВыполнитьВыбор(ДокПутЛист.Автомобиль);    
                   ДокПутЛист.Автомобиль=СправАвто.ТекущийЭлемент();    
                   //ДокПутЛист.Автомобиль.ВыполнитьВыбор(СправАвто.ТекущийЭлемент());    
                   ДокПутЛист.Записать();
               КонецЕсли;    
           КонецЦикла;
       КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   ЗафиксироватьТранзакцию();
Сообщить("Обработка закончена!",);
КонецПроцедуры
13 Ёпрст
 
гуру
28.01.13
12:19
(12) Что написано в формуле реквизита Автомобиль в документе ?
14 Ёпрст
 
гуру
28.01.13
12:19
а так-то, твой код в топку :)
15 Ёпрст
 
гуру
28.01.13
12:21
Должно быть так, примерно:
Процедура Выполнить()
   ДокПутЛист=СоздатьОбъект("Документ.ПутевойЛист2Г");    
   ДокПутЛист.УстановитьФильтр(1,0);
   ДокПутЛист.ВыбратьДокументы(НачДата,КонДата);
   Пока ДокПутЛист.ПолучитьДокумент()>0 Цикл
       Если ПустоеЗначение(ДокПутЛист.Автомобль)=0 Тогда
           глПриВыбореАвтомобиля(ДокПутЛист);
           ДокПутЛист.Записать();
       КонецЕсли;    
   КонецЦикла;
   Сообщить("Обработка закончена!",);
КонецПроцедуры
16 serg-lom89
 
28.01.13
12:29
(13) реквезит справочника АвтомобилиПредприятия
17 serg-lom89
 
28.01.13
12:30
и реквезиты в документе уже заполненны.их надо ппоперебирать
18 Ёпрст
 
гуру
28.01.13
12:31
(16) скриншот покажи что-ли
19 Ёпрст
 
гуру
28.01.13
12:33
Если ты утверждаешь, что при выборе Автомобиля в документе "перезаполняются" остальные реквизиты, то в его в формуле этого реквизита должен быть вызов функции, которая делает это.
Ежели там ничего нет, смотри, что написано в ОбработкаВыбораЗнаячения
20 serg-lom89
 
28.01.13
12:39
да там когда выбираешь авто,естьт процедура ПриВыбореАвто() (19)
21 serg-lom89
 
28.01.13
12:40
и реквезиты все не пересчитываються,а только один реквезит Шапки документа,показания спидометра на начало дня
22 Ёпрст
 
гуру
28.01.13
12:41
(21) Вот теперь открой ПриВыбореАвто и её код скопируй вот сюды:

Если ПустоеЗначение(ДокПутЛист.Автомобль)=0 Тогда
              //вот сюда ....

           ДокПутЛист.Записать();
       КонецЕсли;
23 Ёпрст
 
гуру
28.01.13
12:41
и наслаждайся
24 serg-lom89
 
29.01.13
16:06
(23) Спасибо