Имя: Пароль:
1C
1C 7.7
v7: Справочник цены
0 Gera1t
 
30.01.13
23:27
Процедура ЗаполнитьТаблЧасть()
   Если Вопрос("Табличная часть будет очищена. Продолжить?",1) = 1 Тогда
       УдалитьСтроки();
       Счетчик    = 0;
       Для Счетчик = 1 по ВыбДок.РазмерСписка()  Цикл
           ДокЗаявка = ВыбДок.ПолучитьЗначение(Счетчик);
           ДокЗаявка.ВыбратьСтроки();
           Пока ДокЗаявка.ПолучитьСтроку() = 1 Цикл
               НоваяСтрока();
               ВидТМЦ = Перечисление.ВидыТМЦ.ЗначениеПоНомеру(1);
               Номенклатура = ДокЗаявка.Номенклатура;
               Количество = ДокЗаявка.Количество;
               //СпрЦена.ИспользоватьДату(ДатаДок);
               Единица = ДокЗаявка.Единица;
               Коэффициент = ДокЗаявка.Коэффициент;
               СпрЦена.ИспользоватьВладельца(ДокЗаявка.Номенклатура);                
               Если СпрЦена.НайтиПоКоду("00002") = 1 Тогда
                   Цена = СпрЦена.Цена.Получить(ДатаДок);
               КонецЕсли;
               //Цена = ДокЗаявка.Цена;
               Сумма = Количество * Цена;
           КонецЦикла;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры


Не ищет закупочную цену (код 0002).
1 Gera1t
 
30.01.13
23:28
Точнее почему то не присваивает владельца справочнику цен
2 Gera1t
 
30.01.13
23:29
отладчиком смотрел,                СпрЦена.ИспользоватьВладельца(ДокЗаявка.Номенклатура);                

в этой строке не присваивается владелец
3 КонецЦикла
 
30.01.13
23:30
Внутренний голос подсказывает, что тебе нужно найти Тип цены
А цена, которая подчинена номенклатуре, содерджит тип цен и саму цену (периодическую)
4 фобка
 
30.01.13
23:30
СпрЦена.Владелец = ДокЗаявка.Номенклатура
5 фобка
 
30.01.13
23:31
хотя стопэ.. что вообще происходит? НайтиПоКоду() - смотри остальные параметры
6 Gera1t
 
30.01.13
23:32
(5) Дело не в этом, до этой строки даже не доходит, Владелец не присваивается
7 NS
 
30.01.13
23:35
(6) Куда не присваивается? Он не должен присваиваться.
8 Classic
 
30.01.13
23:35
(6)
Давно 7ку не копал. Но в таких случаях я обычно использую ТекущийЭлемент()
9 Gera1t
 
30.01.13
23:37
(7) Ну когда используешь
СпрЦена.ИспользоватьВладельца(ДокЗаявка.Номенклатура);
то переходишь в подчиненный справочник цен, а у меня не перехожит
10 NS
 
30.01.13
23:37
(9) Кто переходит в подчиненый справочник?
11 фобка
 
30.01.13
23:38
(6) спрцена общая переменная в модуле?
12 Gera1t
 
30.01.13
23:38
(3) Мне нужно получить цену на конкретную номенклатуру, а как из типа цен я выйду на цену?
13 Gera1t
 
30.01.13
23:38
(11) да
СпрЦена = СоздатьОбъект("Справочник.Цены");
14 NS
 
30.01.13
23:39
(12) Ты должен выполнить метод использоватьвладельца(), а потом найтипокоду()
15 Gera1t
 
30.01.13
23:39
(14) ну я так и делаю, и почему то использоватьвладельца не работает.
16 NS
 
30.01.13
23:40
(15) Как ты узнал что "не работает"?
17 Gera1t
 
30.01.13
23:41
отладчиком прогоняешь когда, на строке СпрЦена нажимаю вычислить выражение, а там пусто
18 Classic
 
30.01.13
23:41
(15)
попробуй так

СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.НайтиЭлемент(ДокЗаявка.Номенклатура);
СпрЦена.ИспользоватьВладельца(СпрНом.ТекущийЭлемент());
19 NS
 
30.01.13
23:43
(17) Там и должно быть пусто.
выведи в табло в отладчике
спрцена.использоватьвладельца().наименование, и увидишь свою номенклатуру.
20 фобка
 
30.01.13
23:44
проверь есть ли в спр цен элемент с кодом
"0002".. и проверяй параметры метода НайтиПоКоду, там должен быть поиск с учетом иерархии
(17) пока не спозиционировался в первый раз - будет пусто
21 Gera1t
 
30.01.13
23:44
(18) тоже самое пробовал уже
22 NS
 
30.01.13
23:44
(18) Реквизит документа и так имеет тип - текущийэлемент()
23 Gera1t
 
30.01.13
23:46
(19) и правда )
24 Gera1t
 
30.01.13
23:46
т.е. значит не ищет просто, но код я из справочника скопировал
25 фобка
 
30.01.13
23:47
(24) у конкретного элемента проверяй
26 NS
 
30.01.13
23:48
(24) у метода найтипокоду() не один параметр.
27 фобка
 
30.01.13
23:48
+(25) номенклатуры
28 КонецЦикла
 
30.01.13
23:48
(12) Выбрать по реквизиту или просто перебором найти тип цены нужный (используя владельца) и затем уже узнать цену
Обычно так в типовых делается
29 NS
 
30.01.13
23:50
Да, использоватьвладельца, и пербрать проверяя тип цены.
Но что-то мне подсказывает что найтипореквизиту работает в пределах подчинения. Или меня совсем сглючило?
30 фобка
 
30.01.13
23:51
(29) должен работать, платформы нет под рукой
31 Gera1t
 
30.01.13
23:51
заработало)
это просто я херню написал
32 Gera1t
 
30.01.13
23:52
в найтипокоду подставлял код из справочника ТипЦен
33 фобка
 
30.01.13
23:52
(28) перебор если отбора по реквизиту нет.. и вообще типовые конфы не показатель
34 КонецЦикла
 
30.01.13
23:53
(31) О том и речь
(29), (33) Меня тоже глючит, но есть подозрение, что перебрать несколько цен быстрее (почему-то в ТиС так)
Индекс там есть
35 Gera1t
 
30.01.13
23:54
Всем спасибо за помощь!!!
Пойду спать. голова уже болит.
36 Gera1t
 
30.01.13
23:54
Пока сюда не написал 30 минут сидел не мог понять почему не работает :D
37 фобка
 
30.01.13
23:54
на том и порешили)
38 КонецЦикла
 
30.01.13
23:56
(36) См. (3) :)
Я тоже невнимательно читаю, бывает, ответы