|
Ошибка кода. Где? | ☑ | ||
---|---|---|---|---|
0
Tanis
18.04.13
✎
12:27
|
ИначеЕсли СокрЛП(СтрДерева.ТЧПриемник) = "Табличная часть" Тогда
Если НЕ ПустаяСтрока(СтрДерева.ИдИсточник) Тогда для Каждого стрТчИсточник из ДокИсточник[СтрДерева.ИдИсточник] Цикл //цикл по строкам таб части СтрТчПриемник = ДокПриемник[СтрДерева.ИдПриемник].Добавить(); для Каждого стрТч из СтрДерева.Строки Цикл //цикл по метаданным строки Если стрТч.ВведеноЗначение Тогда СтрТчПриемник[стрТч.ИдПриемник] = стрТч.Источник; ИначеЕсли не ПустаяСтрока(стрТч.формула) Тогда Попытка ОбъектИсточник = ДокИсточник; ДанныеСтроки = стрТчИсточник; Результат = ""; Выполнить(стрТч.формула); СтрТчПриемник[стрТч.ИдПриемник] = Результат; //ДокПриемник[стрТч.ИдПриемник] = Результат; Исключение сообщить("Не удалось выполнить формулу для реквизита :"+СтрДерева.ИдПриемник+" табличной части:"+СтрДерева.ТЧПриемник); КонецПопытки; Иначе Если НЕ ПустаяСтрока(стрТч.ИдИсточник) Тогда СтрТчПриемник[стрТч.ИдПриемник] = стрТчИсточник[стрТч.ИдИсточник]; КонецЕсли; КонецЕсли; КонецЦикла; //цикл по метаданным строки Где здесь ошибка? |
|||
1
salvator
18.04.13
✎
12:28
|
Ищи сам
|
|||
2
ДенисЧ
18.04.13
✎
12:28
|
в ДНК?
|
|||
3
YF
18.04.13
✎
12:28
|
Пожалуй соглашусь с (2)
|
|||
4
Wobland
18.04.13
✎
12:28
|
ОбъектИсточник = ДокИсточник;
угадал? |
|||
5
palpetrovich
18.04.13
✎
12:28
|
это тест?
|
|||
6
YF
18.04.13
✎
12:29
|
(4) А не факт, может так и задумано
|
|||
7
Wobland
18.04.13
✎
12:29
|
(6) может. подождём, когда автор сообщит правильный ответ
|
|||
8
Tanis
18.04.13
✎
12:32
|
Автор был в 2011г, а мне надо заставить это работать...
|
|||
9
YF
18.04.13
✎
12:32
|
(8) Гениально
|
|||
10
SanGvin
18.04.13
✎
12:32
|
вырвано из контекста... что за ошибка возникает?
|
|||
11
mikecool
18.04.13
✎
12:33
|
(8) так с 2011 работало - не трожь!
|
|||
12
Wobland
18.04.13
✎
12:33
|
(8) а что ты для этого сделал?
|
|||
13
SanGvin
18.04.13
✎
12:34
|
скорее всего "Выполнить(стрТч.формула);" вызывает бредовый код из стрТч.формула
|
|||
14
Tanis
18.04.13
✎
12:37
|
(12) В некоторых местах исправил СтрДерево на СтрТч, а то вообще формулу не видел.
(13) Может и бредовый, но какой тогда будет не бредовый? (10) Ошибка, что не заполняет. Формулу пишу уже вообще напрямую: Результат=Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура); |
|||
15
Tanis
18.04.13
✎
12:37
|
(11) работало ли тогда не знаю.
|
|||
16
zak555
18.04.13
✎
12:38
|
перепиши это -- сделай по-нормальному
|
|||
17
Wobland
18.04.13
✎
12:38
|
(14) то есть, даже текст ошибки не анализировал?
|
|||
18
Tanis
18.04.13
✎
12:38
|
(12) убил день и ночь... около 150 проб, но не удачных. :-(
|
|||
19
Tanis
18.04.13
✎
12:39
|
Так там ошибка: сообщить("Не удалось выполнить формулу для реквизита :"+СтрДерева.ИдПриемник+" табличной части:"+СтрДерева.ТЧПриемник);
А почему формулу не считает, не знаю. |
|||
20
Tanis
18.04.13
✎
12:40
|
формулу писал во внешней обработке, все работает.
|
|||
21
1Сергей
18.04.13
✎
12:40
|
(18) тяжело быть тобой
|
|||
22
samozvanec
18.04.13
✎
12:40
|
(19) Сообщить(ПодробноеОписаниеОшибки());
|
|||
23
Wobland
18.04.13
✎
12:40
|
(19) это из-за попытки. можно выключить попытку и посмотреть, а можно в исключении говорить описание ошибки
|
|||
24
SanGvin
18.04.13
✎
12:42
|
(10) сделай как в (22) написано и скопипасть результат сюда. Твое "Ошибка что не заполняет" ни о чем не говорит, надо текст проанализировать.
|
|||
25
Wobland
18.04.13
✎
12:43
|
(24) да там уже всё ясно будет, автор вроде не мистодятел ;)
|
|||
26
Tanis
18.04.13
✎
12:49
|
Поле объекта не обнаружено (Номенклатура)
Где он его не обнаружевает... По идеи, должно в Приемник вставляться найденное значение из справочника... |
|||
27
Tanis
18.04.13
✎
12:51
|
Для загрузки из таб дока, все нормально проходит через вычислять. Здесь же не хочет....
|
|||
28
1Сергей
18.04.13
✎
12:52
|
(27) ну, а в момент ошибки что в стрТч.формула ?
|
|||
29
palpetrovich
18.04.13
✎
12:53
|
(26) а глянуть в отладчике не судьба?, должно быть что-то типа
НайтиПоНаименованию("Болт с левой резьбой"); |
|||
30
Tanis
18.04.13
✎
12:55
|
Выполнить (Результат=Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура);)
СтрТчПриемник[стрТч.ИдПриемник] = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура); Вот такая ситуация в отладчике |
|||
31
Wobland
18.04.13
✎
12:55
|
(30) выполнить строку принимает
|
|||
32
cincout
18.04.13
✎
12:55
|
(0) верни всё как было
|
|||
33
palpetrovich
18.04.13
✎
12:56
|
(30) а в "Номенклатура" что? ...может там ссылка
|
|||
34
Tanis
18.04.13
✎
12:58
|
(31) да, строка.
(33) номенклатура = наименование (то которое есть и ищется поиском) |
|||
35
Tanis
18.04.13
✎
12:59
|
Если оставить только
Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура); То ошибка такая Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Неопознанный оператор |
|||
36
palpetrovich
18.04.13
✎
13:00
|
(35) а тупо Выполнить(ТутСтрокаИзОтладчика) - получается?
|
|||
37
Tanis
18.04.13
✎
13:23
|
Если вот так:
Выполнить( Строка(Справочники.Номенклатура.НайтиПоНаименованию("Номенклатура"))) То при выделении полностью, и вычислить выражение, то пишет ожидается выражение. Если выделить без выполнить, и вычислить выражение, то выводит Номеклатура тип строка |
|||
38
samozvanec
18.04.13
✎
13:31
|
(37) про такое Выполнить очень хочется что-то сказать, но слово никак не подберу... ты серьезно?
|
|||
39
Tanis
18.04.13
✎
13:31
|
Эта обработка была под 8.1, сконвертировал под 8.2, без ошибок.
Может весь код выложить, если он что-то даст? |
|||
40
samozvanec
18.04.13
✎
13:31
|
остановку по ошибке пробуй, посмотришь, что там
|
|||
41
Лефмихалыч
18.04.13
✎
13:32
|
(39) NNOOOOOOOOO
|
|||
42
Tanis
18.04.13
✎
13:33
|
(38) Тогда скажи как надо?
Я уже не знаю что там еще и где написать... Говорю, при загрузке из таб дока, все что писал (формулы) все проходили. И объекты новые, и данные из строк в реквизиты, и поиск и подстановка. Здесь же что-то формулу не получается написать. |
|||
43
Tanis
18.04.13
✎
13:34
|
(40) данные из отладчика в (30)
|
|||
44
Tanis
18.04.13
✎
13:38
|
ДокПриемник[стрТч.ИдПриемник] Вот это определяется как "Номенклатура" тип строка
|
|||
45
samozvanec
18.04.13
✎
13:40
|
Выполнить( Строка(Справочники.Номенклатура.НайтиПоНаименованию("Номенклатура")))
вот это - бред голимый. ищешь номенклатуру, которая называется "Номенклатура" и берешь представление. ты наверняка хотел Выполнить("Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура)"); |
|||
46
Tanis
18.04.13
✎
13:41
|
Могу скинуть обработку и поковыряете этот ребус
|
|||
47
samozvanec
18.04.13
✎
13:41
|
и ; там нахер не нужна вроде
|
|||
48
samozvanec
18.04.13
✎
13:42
|
(46) я сейчас такой ребус ковыряю, хоть самому в окно скинуться
|
|||
49
mistеr
18.04.13
✎
13:47
|
(46) Давно бы уже автора нашел.
|
|||
50
Tanis
18.04.13
✎
13:47
|
(45) если Выполнить("Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура)");
то пишет ожидается выражение |
|||
51
Tanis
18.04.13
✎
13:47
|
не находится...
|
|||
52
1Сергей
18.04.13
✎
13:51
|
(50) ну, дык, ссылку на номенклатуру надо ж чему-то присвоить
|
|||
53
Tanis
18.04.13
✎
13:56
|
(52) И чему?
|
|||
54
1Сергей
18.04.13
✎
13:58
|
(53) например, переменной Результат
Выполнить("Результат = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура)"); |
|||
55
Infsams654
18.04.13
✎
14:01
|
(53) выражение языка 1С в полученном Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура) - это что-то
|
|||
56
Tanis
18.04.13
✎
14:04
|
Весело....
(54) написал так, и ничего не изменилось |
|||
57
Tanis
18.04.13
✎
14:04
|
(55) а как не что-то?
|
|||
58
Tanis
18.04.13
✎
14:06
|
(55) в (0) кусок кода, вот напиши СтрТч.Формула, чтоб работала?!
Простую без всяких заковырок. Просто найти по наименованию. |
|||
59
1Сергей
18.04.13
✎
14:07
|
(58) Всё-таки в переменной номенклатура у тебя что?
|
|||
60
Tanis
18.04.13
✎
14:08
|
Это я просто написал здесь, а так там наименование написано.
Пусть будет кран. вместо номенклатура |
|||
61
palpetrovich
18.04.13
✎
14:11
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Перем НайденнаяСсылка; Выполнить(СтрокаКода); сообщить("НайденнаяСсылка" + НайденнаяСсылка + " Тип " + ТипЗнч(НайденнаяСсылка)); КонецПроцедуры НаименованиеНоменклатуры = """Арматура 10 А-3"""; // тут свое наименование СтрокаКода = "НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию("+НаименованиеНоменклатуры+");" |
|||
62
ЧеловекДуши
18.04.13
✎
14:11
|
Класс... и ни одной попытки отправить автора в отладчик :)
|
|||
63
samozvanec
18.04.13
✎
14:12
|
(62) он оттуда ни с чем возвратился)
|
|||
64
1Сергей
18.04.13
✎
14:30
|
у меня вот такой код работает "на ура":
Результат = ""; Номенклатура = "Медицинская страховка"; Выполнить("Результат = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура)"); Сообщить(Результат); |
|||
65
Tanis
18.04.13
✎
14:34
|
(61) Если таким вариантом, то выходит нормально.
Если Меняю на Результат = Справочники.Номенклатура.НайтиПоНаименованию("+""Моя ном-ра""+"); То выводит только тип Номенклатура. Ссылку нет. |
|||
66
1Сергей
18.04.13
✎
14:36
|
(65) значит не находит по такому наименованию
|
|||
67
Tanis
18.04.13
✎
14:39
|
ага, а по коду из (61) находит.
|
|||
68
1Сергей
18.04.13
✎
14:40
|
(67) а так?
Выполнить("Результат = Справочники.Номенклатура.НайтиПоНаименованию(""Моя ном-ра"");"); |
|||
69
Tanis
18.04.13
✎
14:42
|
С одной "" находит
|
|||
70
palpetrovich
18.04.13
✎
15:05
|
все дело в кавычках ;)
|
|||
71
Tanis
18.04.13
✎
15:30
|
Всем СПАСИБО!!!
Теперь дальше буду формулу дописывать. |
|||
72
Tanis
18.04.13
✎
15:32
|
Все таки были ошибки в обработке
|
|||
73
Tanis
18.04.13
✎
15:41
|
Формула готова. :-)))
Номен = ДанныеСтроки.ОсновноеСредство.ПолучитьОбъект(); Ном = Номен.Наименование; Результат = Справочники.Номенклатура.НайтиПоНаименованию(Ном); Все таки дело было в обработке, 4 пункта изменил. |
|||
74
hhhh
18.04.13
✎
16:12
|
(73) что за глупые понты? Пиши по-человечески
Ном = ДанныеСтроки.ОсновноеСредство.Наименование; |
|||
75
palpetrovich
18.04.13
✎
16:16
|
(73) Объект-то тебе зачем? :)
|
|||
76
Tanis
18.04.13
✎
16:23
|
Хорошо, изменю.
А еще проблема возникла, в некоторых наименованиях, пробелы лишние, в середине наименования. Как-нибудь можно это учесть? если ставить %наименование% то он только по бокам отсечет? |
|||
77
1Сергей
18.04.13
✎
16:24
|
Пока Найти(ном, " ")>0 Цикл
ном = СтрЗаменить(ном, " ", " "); КонецЦикла; |
|||
78
palpetrovich
18.04.13
✎
16:27
|
(76) что значит "пробелы лишние"? это кто решил что они лишние?
да и вообще - искать по наименованию - моветон, только в крайнем случае можно |
|||
79
Tanis
18.04.13
✎
16:28
|
Это заменит, все пробелы больше 1, на 1.
Так? А если их и должны быть 2, то.... |
|||
80
Tanis
18.04.13
✎
16:29
|
(78) А там больше не найдешь, так как имеем ОС, а найти надо ном-ру.
|
|||
81
samozvanec
18.04.13
✎
16:30
|
Результат = Справочники.Номенклатура.НайтиПоНаименованию(ДанныеСтроки.ОсновноеСредство.Наименование);
в одну строку ваще пиши все, так круче |
|||
82
Tanis
18.04.13
✎
16:33
|
(81) ;-)))
Можно и так. Теперь с неправильным наименованием осталось решить. |
|||
83
Tanis
18.04.13
✎
16:39
|
кладовщики..... Слов нет...
Нет чтоб копировать название из карточки ОС, они его вручную вбивали, теперь с пробелами накосячили... Привычка у них, вместо 1 два ставить. |
|||
84
Tanis
18.04.13
✎
17:00
|
Текст = "Номенклатура 1 слово Слово 2";
Результат = Найти(Текст, "Каждое значение строки текст"); Если Результат > 0 Тогда Сообщить(Результат); КонецЕсли; Как можно это использовать? Нужно разбить строку на подстроки, но и перебрать каждое значение, но количество подстрок не известно... |
|||
85
Tanis
18.04.13
✎
17:40
|
Почему в УПП происходит задвоение добавления из таб. дока.
Док = Справочники.Номенклатура.СоздатьЭлемент(); Док.Наименование = ТекстыЯчеек[2]; Док.НаименованиеПолное = ТекстыЯчеек[2]; Док.Записать(); //Док.ПолучитьФорму().Открыть(); Результат = Док.Ссылка; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |