|
v8: как получить цену номенклатуры. | ☑ | ||
---|---|---|---|---|
0
ivansmirnov
22.12.13
✎
12:03
|
Есть печатная форма. Заказа покупателя. Нужно получить тип цен "Розница" у выбранной номенклатуры.
Делаю так |
|||
1
ivansmirnov
22.12.13
✎
12:03
|
ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розница");
РозницаЦена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар,ТипЦен,ТекущаяДата(), , , , ,); ОбластьМакета.Параметры.ПечРозницаЦена =РозницаЦена; |
|||
2
ivansmirnov
22.12.13
✎
12:04
|
Но выводит сообщение при выводе печатной формы.
Не удалось сформировать внешнюю печатную форму! Значение не является значением объектного типа (Рассчитывается) Подскажите. Я не совсем еще разбираюсь в тонкостях 1с. |
|||
3
MKZM
22.12.13
✎
12:05
|
Запросом
|
|||
4
Wobland
22.12.13
✎
12:13
|
(3) будет то же самое
(2) убедись, что тип нашёлся. и потом запросом, да |
|||
5
MKZM
22.12.13
✎
12:18
|
(4) Так по запросу станет ясно, нашел или нет. Без ошибки.
|
|||
6
Wobland
22.12.13
✎
12:19
|
(5) убедил ;)
|
|||
7
ДенисЧ
22.12.13
✎
12:20
|
приведенный код и сообщение об ошибке не кореллируют.
|
|||
8
MKZM
22.12.13
✎
12:21
|
(7) Я тоже так подумал.
|
|||
9
ivansmirnov
22.12.13
✎
12:24
|
Вы можете по подробнее мне сказать что посмотреть. То есть где именно я не правильно пишу. Печатная форма же стандартная, я только добавил в макет параметр и пытаюсь вывести туда розничную цену номенклатуры.
|
|||
10
Wobland
22.12.13
✎
12:25
|
(9) посмотри, что возвращает НайтиПоНаименованию
|
|||
11
Wobland
22.12.13
✎
12:26
|
(7) (8) всё там коррелирует. человек пустую ссылку отдаёт
|
|||
12
ivansmirnov
22.12.13
✎
12:31
|
(11) Скажи, что мне сделать? Как это исправить?
|
|||
13
Wobland
22.12.13
✎
12:32
|
(12) посмотри, что возвращает НайтиПоНаименованию и подумай
|
|||
14
ivansmirnov
22.12.13
✎
12:33
|
Я ставлю точку останова, на строке ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розница");
Но отладчик не останавливается. Выводит сообщение в низу и все. |
|||
15
zmaximka
22.12.13
✎
12:35
|
сделай у обработки форму. добавь реквизит СсылкаНаОбъект нужного типа. В форме вызывай процедуру печать() и отлаживай
|
|||
16
Wobland
22.12.13
✎
12:37
|
бывает, что попытка деления на ноль и остановка об ошибке помогают обойтись без (15)
|
|||
17
zmaximka
22.12.13
✎
12:40
|
ну да. велосипед и костылей тоже иногда ездит
|
|||
18
Tateossian
22.12.13
✎
12:41
|
У тебя нет объекта Рассчитывается - тип цены тут не причем.
|
|||
19
zmaximka
22.12.13
✎
12:43
|
подозреваю что "Расчитывается" это реквизит справочника ТипЦен и ошибка возникает в Ценообразование.ПолучитьЦенуНоменклатуры
т.к. цена по наименованию не найдена |
|||
20
ivansmirnov
22.12.13
✎
13:58
|
(19) Начал отлаживать. Тип цен находит, и значение = Роздничные. Программа находит по наименованию тип цены.
|
|||
21
ivansmirnov
22.12.13
✎
14:02
|
{ОбщийМодуль.Ценообразование.Модуль(667)}: Значение не является значением объектного типа (Рассчитывается)
Если ТипЦен.Рассчитывается Тогда // надо достать цену базового типа и рассчитать по наценке |
|||
22
ivansmirnov
22.12.13
✎
14:03
|
вот какая возникла ошибка.
|
|||
23
ivansmirnov
22.12.13
✎
14:04
|
У меня тип цен не расчетный. Это как-то можно обойти?
|
|||
24
Wobland
22.12.13
✎
14:19
|
(21) а вот бы была такая штука, которая позволила бы узнать значение и тип переменной в момент исполнения. было бы здорово, правда?
|
|||
25
ivansmirnov
22.12.13
✎
14:26
|
Я нашел в чем проблема.
ОбластьМакета.Параметры.ПечРозницаЦена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар,ВыборкаТоваров.ХарактеристикаНоменклатуры,ТипЦен,ТекущаяДата(), ВыборкаТоваров.ЕдиницаИзмерения, Константы.ВалютаРегламентированногоУчета.Получить(), 1, 1, , , ); |
|||
26
ivansmirnov
22.12.13
✎
14:26
|
ВыборкаТоваров.ХарактеристикаНоменклатуры = неопределено.
Но без этого параметра мне кажется ПолучитьЦенуНоменклатуры не работает |
|||
27
Wobland
22.12.13
✎
14:29
|
(26) держусь другого мнения, но тебе там виднее
|
|||
28
Wobland
22.12.13
✎
14:29
|
а теперь посмотри, как взрослые товарищи передают тип цен туда, и сравни со своим способом
|
|||
29
ivansmirnov
22.12.13
✎
14:31
|
(28) Где именно посмотреть? Не воспринимайте мои слова как шутка, я просто неделю как начал изучать 1с
|
|||
30
Wobland
22.12.13
✎
14:33
|
раз:
Ценообразование.ПолучитьЦенуНоменклатуры(Товар,ТипЦен,ТекущаяДата(), , , , ,); два: Ценообразование.ПолучитьЦенуНоменклатуры(Товар,ВыборкаТоваров.ХарактеристикаНоменклатуры,ТипЦен,ТекущаяДата(), ВыборкаТоваров.ЕдиницаИзмерения, Константы.ВалютаРегламентированногоУчета.Получить(), 1, 1, , , ); найди различия |
|||
31
ivansmirnov
22.12.13
✎
14:37
|
И тот и тот мой куски кода, пробовал в слепую. В интернете смотрю как советуют..
|
|||
32
ivansmirnov
22.12.13
✎
14:38
|
Мне бы как правильно узнать.
|
|||
33
Sorm
22.12.13
✎
14:49
|
(0) Запросом к регистру.
|
|||
34
ivansmirnov
22.12.13
✎
14:55
|
Я не понимаю...Как вообще работает эта функция...Одни пишут
Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенЗакупочная); другие Ценообразование.ПолучитьЦенуНоменклатуры(Товар,, ТипЦены, ДатаФормирЦен, ЕдиницаЦены, ВалютаЦены); |
|||
35
ivansmirnov
22.12.13
✎
14:56
|
Ни тоне другое не работает..
У меня передаются все параметры.. Но в итоге ни чего не возвращает кроме 0 |
|||
36
Wobland
22.12.13
✎
15:02
|
а сходить в функцию и посмотреть, как там внутре?
|
|||
37
ivansmirnov
22.12.13
✎
15:04
|
Хреново там:) для меня не понятно
|
|||
38
Wobland
22.12.13
✎
15:07
|
ну тогда ищи разницу
|
|||
39
ivansmirnov
22.12.13
✎
15:07
|
Мне не понятно почему Ценообразование.ПолучитьЦенуНоменклатуры(Товар,,ТипЦен)
Значение выражения = 0 |
|||
40
Wobland
22.12.13
✎
15:08
|
(39) такова природа этой функции, её работа. иногда она говорит 0
|
|||
41
ivansmirnov
22.12.13
✎
15:08
|
(40) получается что всегда
|
|||
42
Sorm
22.12.13
✎
15:09
|
(40) "Такова природа зла..."(с)
|
|||
43
Wobland
22.12.13
✎
15:09
|
(41) не всегда, а при том состоянии БД и комплекта передаваемых параметов, которые ты пробовал
|
|||
44
ivansmirnov
22.12.13
✎
15:11
|
(43) Подскажи, что мне сделать? Как мне все таки получить цену номенклатуры?
|
|||
45
Sorm
22.12.13
✎
15:11
|
(41) Сходи "Операции-РегистрСведений-ЦеныНоменклатуры". Посмотри, если ли там такая цена.
|
|||
46
ivansmirnov
22.12.13
✎
15:12
|
Да, есть.
|
|||
47
ivansmirnov
22.12.13
✎
15:13
|
ОбластьМакета.Параметры.ПечДилерскаяЦена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар,,ТипЦен,ТекущаяДата(),ВыборкаТоваров.ЕдиницаИзмерения,Константы.ВалютаРегламентированногоУчета.Получить());
|
|||
48
Wobland
22.12.13
✎
15:14
|
(44) много думать
(47) поздравлять? |
|||
49
ivansmirnov
22.12.13
✎
15:15
|
Все параметры мне правильно выдает:
Товар = Товар ТипЦен = Розничная ТекущаяДата() = 22.12.2013 ВыборкаТоваров.ЕдиницаИзмерения = шт Константы.ВалютаРегламентированногоУчета.Получить() = руб |
|||
50
ivansmirnov
22.12.13
✎
15:16
|
А в итоге 0
|
|||
51
Wobland
22.12.13
✎
15:17
|
что, шайтан-вьюер будем подключать или до сотни постов одно и то же перетирать?
|
|||
52
ivansmirnov
22.12.13
✎
15:18
|
Я могу обработку скинуть.
|
|||
53
ivansmirnov
22.12.13
✎
15:19
|
Но мне главное самому разобраться.
|
|||
54
Мимохожий Однако
22.12.13
✎
15:21
|
Поставь остановку внутри функции ПолучитьЦенуНоменклатуры() и посмотри как там и что.
|
|||
55
Wobland
22.12.13
✎
15:22
|
у меня даж платформа не стоит. не говоря уж о том, что нет конфигурации с такой функцией
(54) там скрежет зубовный и тьма кромешная |
|||
56
Мимохожий Однако
22.12.13
✎
15:23
|
(55)это не имеет значения. Иногда достаточно увидеть параметры на входе.
|
|||
57
ivansmirnov
22.12.13
✎
15:32
|
(56) Могу и я скинуть печатную форму, потом у что я вообще не понимаю, где мне искать причину по которой не выводится цена.
|
|||
58
Мимохожий Однако
22.12.13
✎
15:36
|
Хочешь научиться сам - научись включать отладчик.
Для старта, чтобы убедиться, что выводится в нужном месте пропиши //ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розница"); //РозницаЦена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар,ТипЦен,ТекущаяДата(), , , , ,); ОбластьМакета.Параметры.ПечРозницаЦена = 10500!;// РозницаЦена; а при успехе вернись к своему коду и найди функцию ПолучитьЦенуНоменклатуры() остальное я уже сказал |
|||
59
ivansmirnov
22.12.13
✎
15:48
|
1) ВЫводится 1050 - значит при выводе все нормально!!!!! Ура!
2) Может нужно использовать ЦеныНоменклатурыСрезПоследних ? |
|||
60
ivansmirnov
22.12.13
✎
15:50
|
2) не это какой-то бред
|
|||
61
Wobland
22.12.13
✎
15:52
|
(59) 1050? должно быть 10500! что-то здесь странное
|
|||
62
ivansmirnov
22.12.13
✎
15:52
|
не дописал просто 10500, все верно вывелось
|
|||
63
Wobland
22.12.13
✎
15:55
|
можно ещё понедельника подождать. набегут те, у кого такая функция есть или те, у кого телепатические способности повышены
|
|||
64
ivansmirnov
22.12.13
✎
15:58
|
Ну что мне сделать? Уже крик души.
У меня есть тип цен..У меня все параметры прописаны, кроме характеристики, и ни чего не получается вывести. Подскажите, как вообще тогда в 1с можно по названию номенклатуры находить его базовую ценую |
|||
65
Мимохожий Однако
22.12.13
✎
15:58
|
функцию нашел? Отладчиков в начало функции встал? Отладчик запустил?
|
|||
66
ivansmirnov
22.12.13
✎
16:00
|
Запускаю
|
|||
67
Sorm
22.12.13
✎
16:01
|
(64) Ещё раз говорю, зайди в регистр цен номенклатуры и глазами посмотреть - есть цена с таким типом цен на дату или нет.
|
|||
68
ivansmirnov
22.12.13
✎
16:01
|
Поставил останово на Функция ПолучитьЦенуНоменклатуры
но после запуска отладчика точка перескочила ниже на Если ЕдиницаИзмерения = Неопределено Тогда ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка(); // для услуг КонецЕсли; Это нормально? |
|||
69
hhhh
22.12.13
✎
16:03
|
бывает. еще раз поставь точку останова
|
|||
70
Мимохожий Однако
22.12.13
✎
16:03
|
Нормально.Встала на ближайшую. Теперь смотри каждый параметр через F9
|
|||
71
ivansmirnov
22.12.13
✎
16:08
|
Номенклатура "Товар" Строка
ХарактеристикаНоменклатуры Неопределено ТипЦен Розничная СправочникСсылка.ТипыЦенНоменклатуры ДатаПараметр 22.12.2013 16:04:39 Дата ЕдиницаИзмерения шт СправочникСсылка.ЕдиницыИзмерения Валюта руб. СправочникСсылка.Валюты Курс 0 Число Кратность 1 Число ПроцентСкидкиНаценки 0 Число ДоговорКонтрагента Неопределено УсловиеПродаж Неопределено Это все параметры..А выглядит функция вот так вот: Функция ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен, ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено, Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено) Экспорт |
|||
72
ivansmirnov
22.12.13
✎
16:10
|
(67) я сделала заказ выбрал номенклатуру цены поставились. значит они есть в регистре.
|
|||
73
Wobland
22.12.13
✎
16:10
|
Номенклатура "Товар" Строка
|
|||
74
Мимохожий Однако
22.12.13
✎
16:10
|
Расшифруй:
Номенклатура "Товар" Строка в параметр Номенклатура должна попадать ссылка на справочник Номенклатура |
|||
75
ivansmirnov
22.12.13
✎
16:12
|
(74) выводит название номенклатуры = Товар
|
|||
76
Wobland
22.12.13
✎
16:12
|
а прикольно, если автор написал Товар="вот этот";
|
|||
77
Wobland
22.12.13
✎
16:13
|
(75) а сам товар куда дел?
|
|||
78
Мимохожий Однако
22.12.13
✎
16:13
|
Вместо Товар ищи переменную, в которой есть тип СправочникСсылка.Номенклатура
|
|||
79
ivansmirnov
22.12.13
✎
16:13
|
не понял..Выводится что-то не то?
|
|||
80
Wobland
22.12.13
✎
16:14
|
(79) да!
|
|||
81
Мимохожий Однако
22.12.13
✎
16:14
|
Повторяю:Ошибка в 1 параметре функции
|
|||
82
Sorm
22.12.13
✎
16:15
|
(80) Может уже ammyy admin?... Так, в порядке бреда...
|
|||
83
ivansmirnov
22.12.13
✎
16:16
|
Вместо Товар ищи переменную, в которой есть тип СправочникСсылка.Номенклатура
Смотрю в отладчике...вообще я не уверен что найду, но попробую |
|||
84
Wobland
22.12.13
✎
16:16
|
(82) я ему уже предложил
|
|||
85
Sorm
22.12.13
✎
16:17
|
(84) Я не понял, честно сказать - он это или она..
|
|||
86
Мимохожий Однако
22.12.13
✎
16:17
|
Искать надо до входа в функцию внутри внешней печатной формы
|
|||
87
Wobland
22.12.13
✎
16:18
|
(85) ну опечатался человек. всего лишь один разок ;)
|
|||
88
Sorm
22.12.13
✎
16:19
|
(83) Коллеги и я тебе предлагают - запусти ammyy admin, если уж "крик души" и не трать зря наши и свои силы...
|
|||
89
ivansmirnov
22.12.13
✎
16:25
|
да бред полный..Я раньше на С программировал. Закончил вуз, город не большой, предложили устроиться программистом 1с, сказали что объектно ориентированный язык, все просто. Но вижу столько же здесь тонкостей.
http://files.mail.ru/69BE8C3420244AF2A04FE5B7BADC99AD Я выложил файл..Буду признателен если поможете. Еще что почитать или где набраться опыта в решении таких задач? |
|||
90
Wobland
22.12.13
✎
16:29
|
Радченко - традиционный букварь
|
|||
91
ivansmirnov
22.12.13
✎
16:31
|
1С:Предприятие 8.2. Практическое пособие разработчика? Хорошо, я посмотрю.
|
|||
92
Wobland
22.12.13
✎
16:32
|
оно, да. давайте уже сотню сделаем, да я пойду
|
|||
93
MKZM
22.12.13
✎
16:36
|
100
|
|||
94
Wobland
22.12.13
✎
16:37
|
101
|
|||
95
Sorm
22.12.13
✎
16:39
|
"Ну что мне сделать? Уже крик души." и "Практическое пособие разработчика? Хорошо, я посмотрю." : видать - отлегло.
|
|||
96
ivansmirnov
22.12.13
✎
16:41
|
(96) нет, сижу разбираюсь.
|
|||
97
ivansmirnov
22.12.13
✎
16:47
|
я просто не думал, что так сложно вывести в печатную форму по умолчанию определенную цену номенклатуры.
|
|||
98
Wobland
22.12.13
✎
16:48
|
4.5 часа. что ж я такого делал за 4.5 часа? вспомнил! 4 экзаменационных билета (как раз на полчаса раньше ушёл). но за качество такой работы мне было бы стыдно, если б не ограничения
|
|||
99
hhhh
22.12.13
✎
16:54
|
(97) получайте цены запросом. У вас же есть запрос там. В него вставить строчки про цены.
А так как вы: для каждой строчки вызываете эту дебильную функцию - это вас сразу надо расстрелять. А то вдруг действительно пролезете в 1с-ники. |
|||
100
Wobland
22.12.13
✎
16:54
|
СТО
|
|||
101
Sorm
22.12.13
✎
16:55
|
(100) Иди домой!(с)
|
|||
102
Мимохожий Однако
22.12.13
✎
17:46
|
Ого, за соточку прыгнули...))
Если не бороться за качество Тогда . (89)РозницаЦена = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаТоваров.ЕдиницаИзмерения.Владелец,ТипЦен,ТекущаяДата(), , , , ,); .......... Но правильнее конечно во втором запросе к таблице товаров добавить левое соединение из регистра сведений ЦеныНоменклатуры.. Но это в следующем уроке. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |