Вход | Регистрация


1С:Предприятие ::

Метки:

Позиционирование на документ

Я
   kadr
 
03.03.04 - 06:57
Господа! Я конечно понимаю, что я ничего не понимаю, но мне не раз говорили уже что у меня в обработках нет позиционирования на документ и от этого все мои проблемы. Не будут ли так любезны многоуважаемые со граждане привести несколько примеров с позиционированием на документ (как в циклических обработках, так и нет).
 
 
   povar
 
1 - 03.03.04 - 08:59
Карт=СоздатьОбъект("Документ.Карточка");
   Карт.НайтиДокумент(Автомобиль.Карточка);
Автомобиль - справочник; Автомобиль.Карточка - реквизит справочника тип Документ вид Карточка
   afk
2 - 03.03.04 - 09:01
а поискать описание функции НайтиДокумент(), примеры ее использования, подумать как ее применить - ты не хочешь....
   Vol71
 
3 - 03.03.04 - 09:10
(0)ты бы кусок кода привел, что не получается
   kadr
 
4 - 03.03.04 - 09:11
   Vol71
 
5 - 03.03.04 - 09:17
да, интересно написано
   Vol71
 
6 - 03.03.04 - 09:19
ТекущийДокумент() - действительно не причем
да и выбираешь ты их дважды
   Vol71
 
7 - 03.03.04 - 09:20
тебе не проще ли сменить периодические реквизиты справочника?
   Vol71
 
8 - 03.03.04 - 09:31
а так не пробовал?

Процедура Сформировать()  
    Док  = СоздатьОбъект("Документ.ПриказОПриемеНаРаботу"); 
    Док.ВыбратьДокументы(); 
    Пока Док.ПолучитьДокумент() = 1 Цикл 
        Док.Оклад               = Док.Сотрудник.Оклад.Получить(ТекущаяДата()); 
        Док.Ставка              = Док.Сотрудник.Ставка.Получить(ТекущаяДата()); 
        Док.ПроцентЕжемесПремии = Док.Сотрудник.ПроцентЕжемесПремии.Получить(ТекущаяДата()); 
        Док.ФормаТруда          = Док.Сотрудник.ФормаТруда.Получить(ТекущаяДата()); 
        Док.Должность           = Док.Сотрудник.Должность.Получить(ТекущаяДата()); 
        Док.Подразделение       = Док.Сотрудник.Подразделение.Получить(ТекущаяДата()); 
        Док.ГрафикРаботы        = Док.Сотрудник.ГрафикРаботы.Получить(ТекущаяДата()); 
        Док.Записать(); 
        Док.Провести(); 
    КонецЦикла; 
КонецПроцедуры
   SnarkHunter
 
9 - 03.03.04 - 09:33
Сотрудники = СоздатьОбъект("Справочник.Сотрудники"); 
Документы  = СоздатьОбъект("Документ.ПриказОПриемеНаРаботу"); 
ТекДок = СоздатьОбъект("Документ.ПриказОПриемеНаРаботу"); 

Сотрудники.ВыбратьЭлементы(); 
Сотрудники.ИспользоватьДату(ТекущаяДата());
Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл 
  Если Сотрудники.ЭтоГруппа() = 0 Тогда 
    Документы.ВыбратьДокументы(); 
    Пока Документы.ПолучитьДокумент() = 1 Цикл 
      Если Документы.Сотрудник = Сотрудники.ТекущийЭлемент() Тогда 
        Если ТекДок.НайтиДокумент(Документы.ТекущийДокумент())=1 Тогда
          ТекДок.Оклад = Сотрудники.Оклад; 
          ТекДок.Ставка = Сотрудники.Ставка; 
          ТекДок.ПроцентЕжемесПремии = Сотрудники.ПроцентЕжемесПремии; 
          ТекДок.ФормаТруда = Сотрудники.ФормаТруда; 
          ТекДок.Должность = Сотрудники.Должность; 
          ТекДок.Подразделение = Сотрудники.Подразделение; 
          ТекДок.ГрафикРаботы = Сотрудники.ГрафикРаботы; 
          ТекДок.Записать(); 
          ТекДок.Провести(); 
          Состояние(""+Сотрудники); 
        КонецЕсли;
        Прервать; 
      КонецЕсли; 
    КонецЦикла; 
  КонецЕсли; 
КонецЦикла;
   Vol71
 
10 - 03.03.04 - 09:35
(9)у тебя проще?
 
 
   povar
 
11 - 03.03.04 - 09:36
Используй
Документы.ВыбратьДокументы(ДатаНач,ДатаКон);
   Пока Документы.ПолучитьДокумент()=1 Цикл
       Сотрудники.НайтиЭлемент(Документы.Сотрудник);
        Оклад=Сотрудники.Оклад.Получить(ТекущаяДата()); 
....
   SnarkHunter
 
12 - 03.03.04 - 09:37
Дело не в простоте, а в причесывании исходного кода... У тебя выполняется немного другое...
   Vol71
 
13 - 03.03.04 - 09:41
(12)тут согласен, исходный код интересен
   kadr
 
14 - 03.03.04 - 10:41
Спасибо всем.
(9) Все замечательно работает, но оклад не закачивается...
   Vol71
 
15 - 03.03.04 - 10:43
там должно быть

ТекДок.Оклад = Сотрудники.Оклад.Получить(какая то дата);
   povar
 
16 - 03.03.04 - 10:46
(15) зачем он же использует
Сотрудники.ИспользоватьДату(ТекущаяДата());
   SnarkHunter
 
17 - 03.03.04 - 10:46
(15)А строчку Сотрудники.ИспользоватьДату(ТекущаяДата()); видел?
   SnarkHunter
 
18 - 03.03.04 - 10:48
Просто на ТекущаяДата() оклад нулевой...
   Vol71
 
19 - 03.03.04 - 10:51
(17)извини, просмотрел
   kadr
 
20 - 03.03.04 - 10:55
(18) А вот и не нулевой... Только что проверил
   SnarkHunter
 
21 - 03.03.04 - 10:58
Ненулевой на какую дату?
   kadr
 
22 - 03.03.04 - 11:02
На 03.03.2004, а переставляю на 06.06.2003
   kadr
 
23 - 03.03.04 - 11:08
Мля! Ну ведь все остальное-то работает!!!
   povar
 
24 - 03.03.04 - 11:23
ты где смотришь что оклад не устанавливается в отладчике или в документе в поле оклад ?
   kadr
 
25 - 03.03.04 - 11:27
Что значение есть - через отладчик. А результат в справочнике сотрудники в окне редактирования свойств сотрудника, нажав на кнопку история. Там значение оклада на 06.06.2003 стоит <...>, а на 26.01.2004 - 4000
   povar
 
26 - 03.03.04 - 11:32
(25) при работе твоей процедуры строка Сотрудник.Оклад возвращает какое либо значение ?
   povar
 
27 - 03.03.04 - 11:34
И воще какой тип у реквизита *Оклад* ?
   kadr
 
28 - 03.03.04 - 11:35
(26) Возвращает 4000
(27) Тип неопределенный



Список тем форума
Рекламное место пустует   Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует