|
Ошибка в номенклатуре при поиске товара по цене | ☑ | ||
---|---|---|---|---|
0
pnamik
05.04.15
✎
16:12
|
8.0.18.2, самописная конфа
В номенклатуре после поиска по цене открывается форма http://prntscr.com/6pu19y После нажатия "закрыть" или нажатия на верхнем углу этой формы крестика поялвется ошибка http://prntscr.com/6pu1u9 {Справочник.Номенклатура.Форма.ФормаСписка(338)}: Значение не является значением объектного типа (Пустая) Если спрН.Пустая() = Ложь Тогда код Процедура кнПоискПоЦенеНажатие(Элемент) ПараметрПередачи = "Поиск товара по цене"; Обработка = Обработки.ДиалогВводаЦены.ПолучитьФорму("Форма"); Обработка.ОткрытьМодально(); ВыбЦена = ПараметрПередачи; ПараметрПередачи = ВыбЦена; Обработка = Обработки.ТоварыПоЦене.ПолучитьФорму("Форма"); Обработка.ОткрытьМодально(); спрН = ПараметрПередачи; ПараметрПередачи = ""; Если спрН.Пустая() = Ложь Тогда ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; КонецПроцедуры Подскажите, подалуйста, как лечить? |
|||
1
ДенисЧ
05.04.15
✎
16:24
|
А с каких пор у строки появились методы, вызываемые через точку?
|
|||
2
ДенисЧ
05.04.15
✎
16:24
|
ВыбЦена = ПараметрПередачи;
ПараметрПередачи = ВыбЦена; А это вообще гениально... Прямо как в Одесе на Привозе... |
|||
3
pnamik
05.04.15
✎
16:28
|
(2) слова и музыка не мои. я бы "не осмелился" на такое.
А подсказка? |
|||
4
ДенисЧ
05.04.15
✎
16:29
|
(3) Подказываю - пробуди в себе самосознание русского программиста и перепиши всё с нуля.
|
|||
5
pnamik
05.04.15
✎
16:31
|
(4) это очень долго. Просил помощь в решении конкретной проблемы
|
|||
6
pnamik
05.04.15
✎
16:35
|
так можно всю конфу переписать. у каждого программиста свой взгляд. тот, кто писал эту ... может был начинающий, или прыгнулна 8 с 7.7
|
|||
7
Kookish
05.04.15
✎
17:41
|
(5) В решении одной конкретной проблемы помощь попросишь, потом другой, потом третья вылезет... Не быстрее ли будет самому уже научиться. Думаешь, после таких перлов одним косяком дело ограничится?
|
|||
8
D_E_S_131
05.04.15
✎
17:49
|
"я бы "не осмелился" на такое." — судя по вопросу, очень сомнительно, что это не твой код.
|
|||
9
mehfk
05.04.15
✎
17:51
|
>> может был начинающий, или прыгнулна 8 с 7.7
Скорее всего он был полный "0". |
|||
10
pnamik
05.04.15
✎
18:05
|
(8) я писать пока не умею
|
|||
11
pnamik
05.04.15
✎
18:06
|
(9) ты погорячился. нулевой не мог писать вполне работающую конфу
|
|||
12
D_E_S_131
05.04.15
✎
18:09
|
(10) Эээ, а тогда почему тебя попросили решить этот вопрос? Или теперь суть IT-специалиста сводится к тому, что бы найти нужный форум и на нем обозначить задачу?
|
|||
13
pnamik
05.04.15
✎
18:11
|
(7) я бы с большим удовольствием. времени не могу уделить полноценно. и не могу найти учебный курс. есть по инету курсы разные, выбирать среди них не могу, не хочу на полпути остановиться из-за неправильной подачи материала в середине курса, например.
ну что, по поводу помощи? Есть смелые и отзывчивые? |
|||
14
pnamik
05.04.15
✎
18:11
|
(10) потому что нет специалиста, очень просто
|
|||
15
pnamik
05.04.15
✎
18:12
|
(14) перенаправить к (12)
|
|||
16
pnamik
05.04.15
✎
18:13
|
(12) это мелкие ошибки которые иногда вылезает, и остались в наследство от программиста. серьезные дела (отчеты, обработки) естестсвенно, делается по-другому
|
|||
17
mehfk
05.04.15
✎
19:05
|
(14) Накопи денег и пригласи.
|
|||
18
pnamik
05.04.15
✎
19:41
|
(17) какой ты умный
|
|||
19
D_E_S_131
05.04.15
✎
19:46
|
(14) Так надо его усиленно искать, а не на форумах сидеть.
|
|||
20
pnamik
05.04.15
✎
19:59
|
(19) из-за мелкой ошибки держать 1С программера???
|
|||
21
pnamik
05.04.15
✎
20:00
|
(19) на форумах не сижу. а вот, ты точно сидишь
|
|||
22
pnamik
05.04.15
✎
20:09
|
(19) вместо того чтобы помочь
|
|||
23
DmitriyDI
05.04.15
✎
20:11
|
(22) да ты просто не понимаешь! в (0) написана ересь, она не может в принципе работать) вот поэтому тебе и говорят, что делать!
|
|||
24
mehfk
05.04.15
✎
20:12
|
||||
25
pnamik
05.04.15
✎
20:22
|
(24) кто уполномочил тебя?
|
|||
26
pnamik
05.04.15
✎
20:23
|
(23) поиск прекрасно работает, просто при закрытии формы дает вышеуказанную ошибку, которая никак не влияет на работу поиска. ошибка раздражает, потому и прошу помочь.
|
|||
27
DmitriyDI
05.04.15
✎
21:17
|
(26) Если спрН.Пустая() = Ложь Тогда
ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; закомментируй используя // |
|||
28
pnamik
05.04.15
✎
21:24
|
(27) закомментировал
Если спрН.Пустая() = Ложь Тогда ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; ошибка соответственно исчезла, но поиск по цене находит товары, например по 390 руб, список появляется, но среди появившиеся товаров невозможно выбирать нужный товар (бездействие) http://prntscr.com/6pxzo7 |
|||
29
DmitriyDI
05.04.15
✎
21:27
|
(28) попробуй тогда вместо спрН.Пустая() = Ложь, ЗначениеЗаполнено(СпрН)
|
|||
30
pnamik
05.04.15
✎
21:31
|
(29) у меня 8.0.18.2, такие функции не проходят.
|
|||
31
DmitriyDI
05.04.15
✎
21:38
|
(30) я понял
ТипЗначения = ТипЗнч(спрН); // тут смотришь какой тип значения при ошибке (в отладчике), если нул или неопределено то сразу без типа значения проверку на них Если ТипЗначения = Тип("") Тогда // тут проверяешь если не тот тип, выходим, иначе идем дальше возврат; КонецЕсли; Если спрН.Пустая() = Ложь Тогда ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; |
|||
32
pnamik
05.04.15
✎
21:38
|
Добавил в общую модуль функцию ЗначениеЗаполнено, и по совету (29) заменил, появилась новая ошибка
{Справочник.Номенклатура.Форма.ФормаСписка(339)}: Значение не является значением объектного типа (Ссылка) ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; |
|||
33
ДенисЧ
05.04.15
✎
21:41
|
ЗначениеНеЗаполнено() для 8.0 вроде как.
Да и вообще - через попытку ещё пока не сажают... |
|||
34
pnamik
05.04.15
✎
21:42
|
(33) я так и делал конечно функция ЗначениеНеЗаполнено(), но ошибка
|
|||
35
DmitriyDI
05.04.15
✎
21:44
|
попробуй так, я просто хз что там принимает спрН, наверное строку
ТипЗначения = ТипЗнч(спрН); Если ТипЗначения = Тип("Строка") Тогда возврат; КонецЕсли; Если спрН.Пустая() = Ложь Тогда ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; |
|||
36
pnamik
05.04.15
✎
21:48
|
(35) ошибка
{Справочник.Номенклатура.Форма.ФормаСписка(346)}: Значение не является значением объектного типа (Пустая) Если спрН.Пустая() = Ложь Тогда |
|||
37
pnamik
05.04.15
✎
21:49
|
Может в этом направлении подумать
Попытка Рез = ПараметрПередачи.ВыбЦена; Исключение КонецПопытки; |
|||
38
pnamik
05.04.15
✎
21:50
|
(37) также ошибка
{Справочник.Номенклатура.Форма.ФормаСписка(344)}: Значение не является значением объектного типа (Пустая) Если спрН.Пустая() = Ложь Тогда |
|||
39
ccskn
05.04.15
✎
21:50
|
ВыбЦена = ПараметрПередачи;
ПараметрПередачи = ВыбЦена; Гениально :))) Автор, у вас строка, а вы в строке ссылку ищите... |
|||
40
DmitriyDI
05.04.15
✎
21:52
|
(39) там не строка)
Попытка Если спрН.Пустая() = Ложь Тогда ЭлементыФормы.СправочникСписок.ТекущаяСтрока = спрН.Ссылка; Иначе Предупреждение("Товар с ценой "+Строка(ВыбЦена)+" не найден!"); КонецЕсли; Исключение КонецПопытки; не правильно конечно) но если отладчиком пользоваться не умеем) |
|||
41
pnamik
05.04.15
✎
21:53
|
(39) подскажите, как по другому? и кстати, я не автор.
|
|||
42
hhhh
05.04.15
✎
21:53
|
ПараметрПередачи = Обработка.ОткрытьМодально()
|
|||
43
ccskn
05.04.15
✎
21:55
|
как это не строка, когда "спрН =ПараметрПередачи"
Строка со значением "Поиск товара по цене" там будет... |
|||
44
DmitriyDI
05.04.15
✎
21:57
|
(43) тогда почему код из (35) не работает?
|
|||
45
pnamik
05.04.15
✎
22:01
|
в (35) в отладчике (останавливаться по ошибке) выдает ошибку
ошибка времени выполнения на строке 344 Если спрН.Пустая() = Ложь Тогда |
|||
46
DmitriyDI
05.04.15
✎
22:01
|
да сделай как в (40) написано
|
|||
47
pnamik
05.04.15
✎
22:05
|
(40) и (46) ошибка исчезла, и находит товары и переходит в номенклатуру в нужную позицию как и раньше
|
|||
48
pnamik
05.04.15
✎
22:06
|
(46) спасибо за реальную помощь. Здоровья тебе и семье!
|
|||
49
ccskn
05.04.15
✎
22:09
|
(46) а чем это от простого комментирования строк отличается?)))
Он же не зря, видимо формы модально открывает, только вот полученное значение никуда не присваивает... А оно по видимому как раз в переменную спрН должно попасть :) |
|||
50
pnamik
05.04.15
✎
22:19
|
(49) не знаю почему сам (40) говорит, что это неправильно, но это работает, и это не равно закоммент, см. (28)
|
|||
51
Ma3eIIa
05.04.15
✎
22:21
|
(49) может где открываем форму заполняем этот параметр. есть такие умельцы.
|
|||
52
DmitriyDI
05.04.15
✎
22:24
|
(49) да я тоже так думал но тут глобальная переменная видимо задействована
кстати при открыть модально, если не выбираем то он по моему "неопределенно" возвращает (соответсвенно проверку на него и делать), проще всего посмотреть в отладчике на что проверять, так как я не могу посмотреть, используем попытку, в случае выбора код должен отрабатывать, так как в спрН - ссылка, ну а в случае закрытия ничего не делать. |
|||
53
ccskn
05.04.15
✎
22:27
|
Там явно напрашивается в обоих случаях ПараметрПередачи = обработка.открытьмодально()
Но это уже выше вроде написали... :) Мне всё равно теперь будет снится ВыбЦена = ПараметрПередачи; ПараметрПередачи = ВыбЦена; |
|||
54
ccskn
05.04.15
✎
22:27
|
'СнитЬся
|
|||
55
pnamik
05.04.15
✎
22:56
|
(53) обе случаи какие?
эти два ВыбЦена = ПараметрПередачи; ПараметрПередачи = ВыбЦена; предлагаете заменить одной строкой ПараметрПередачи = Обработка.ОткрытьМодально()? |
|||
56
Ma3eIIa
05.04.15
✎
23:13
|
нет. ПараметрПередачи где объявление ? она глобальная ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |