08.05.19 — 14:09
Ошибка выдается вот на эту строку
Справочники.Номенклатура.НайтиПоНаименованию(«Хлеб»,1)
Из за чего это?
1 — 08.05.19 — 14:10
дык та же написано что за ошибка, хотя и так видно, что кривой второй параметр
2 — 08.05.19 — 14:13
(1) Второй параметр, истина или 1 может же быть?!
3 — 08.05.19 — 14:14
(2) CTRL+F1
4 — 08.05.19 — 14:20
(3) И что там? Всегдя так пользовался.
Разбираюсь. Гружу большой файл.
5 — 08.05.19 — 14:22
(4) вместо булево число пихал?
6 — 08.05.19 — 14:23
(4) ты бы хоть описание ошибки озвучил, там же все написано
7 — 08.05.19 — 14:23
(5) Булево эквивалент 1, 0
8 — 08.05.19 — 14:24
(6) не тот индекс сувал видимо, гружу далее
9 — 08.05.19 — 14:26
(7) Если сигнатура метода предполагает определенный тип переменной, то он должен быть именно таким.
Не надо искать какие-то другие доводы.
10 — 08.05.19 — 14:27
Реально ругается!!!! То находит то нет!!!!!!
11 — 08.05.19 — 14:28
(9) На это такая же ошибка!!!
Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(МассивКолонок[4], Истина)
12 — 08.05.19 — 14:29
(9) а чему будет равно (не 1)
А (не 0) ?
13 — 08.05.19 — 14:29
(11) похоже не строка в наименование идет?
14 — 08.05.19 — 14:30
Остановка по ошибке все как надо показывает?
15 — 08.05.19 — 14:31
Вот проверяю
НайденнаяБазоваяЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(МассивКолонок[4], 1);
Все находит. И идет строка «шт»
И находится элемент. Но на одном месте ломается ((((
Отладчик показывает что так же идет строка «шт»
И там, на родителе тоже.
16 — 08.05.19 — 14:32
(12) Есть сигнатура метода. Лучше придерживаться её.
17 — 08.05.19 — 14:32
сборище телепатов
18 — 08.05.19 — 14:33
(16) Не имеет значения. Дело не в этом. Если писать истина, такая же ошибка.
Я пытаюсь понять в чем причина?!
19 — 08.05.19 — 14:37
(18) такая же, это какая? скрин давайте сюда
20 — 08.05.19 — 14:38
(19) не спугни, пусть найдет
21 — 08.05.19 — 14:38
(15) кроме как неограниченной строки не могу ничего предположить
22 — 08.05.19 — 14:41
Гружу файл. Просмотрел как грузятся проблемные места все нормально.
Находятся элементы и прописываются.
Отлавливаю проблему.
Когда функция просто не отрабатывает, поиска по наименованию (((
Хотя так же все нормально передается туда для поиска.
23 — 08.05.19 — 14:42
Потому что может быть не «хлеб»
А «хлеб »
Визуально одно и тоже, но при поиске по полному соответствию это не одно и то же.
Вариантов невидимых символов достаточно много, причем некоторые могут крашить сеанс
24 — 08.05.19 — 14:44
(23) Я их отлавливаю. Должно быть все нормально, без пробелов!
25 — 08.05.19 — 14:45
Вот сломалось, —
МассивКолонок[4] = «шт» — как и всегда
Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(МассивКолонок[4], 1) = Ошибка при вызове метода контекста (НайтиПоНаименованию)
Почему? И на родителе так же.
26 — 08.05.19 — 14:45
А может быть что часть символов не в том языке.
Постоянно такое с буквой с
27 — 08.05.19 — 14:46
(26) Ну так найдена была бы пустая ссылка, но не ошибка.
То работает то нет. Так же строка передается!
28 — 08.05.19 — 14:47
(27) а там для подчинённых справочников разве не надо владельца указывать?
29 — 08.05.19 — 14:48
БазовыеЕдиницыИзмерения — независимый справочник!
30 — 08.05.19 — 14:49
И тут ошибка
Если МассивКолонок[23] <> «» Тогда
ЭлементНоменклатуры.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(МассивКолонок[23], 1);
КонецЕсли;
МассивКолонок[23] = «СЫР» , все должно работать. Или находит элемент или пустую ссылку.
Веть до работало.
А на 2991 элементе ломается!
31 — 08.05.19 — 14:49
Глупый вопрос: зачем тогда для каждой строки делать поиск для справочника?
Сделай соответствие символьного представления и ссылки
32 — 08.05.19 — 14:50
(31) Это перегрузка. Для каждой строки свои данные. Вопрос не в этом.
33 — 08.05.19 — 14:51
(24) все же сомнения терзают, там не пробел будет, а нечитаемый неправильный вызывающий ошибку символ, который СОКРЛП не отловит и СТРЗаменить
34 — 08.05.19 — 14:52
На этой строке ломается. Ну и что тут не так?
«Эл.»,»00000968″,»Набор для приготовления Адыгейского сыра»,»»,»шт»,»0″,»Товар (пр. ТМЦ)»,»»,»0″,»0″,»»,»шт»,»»,»Набор для приготовления Адыгейского сыра»,»Без НДС»,»Без налога»,»»,»»,»»,»0″,»»,»»,»0″,»СЫР»,»00000975″
35 — 08.05.19 — 14:52
Все как нужно!
36 — 08.05.19 — 14:52
(33) «шт» — тут какой может быть пробел?
37 — 08.05.19 — 14:53
(32) Да посрать что это)
Один раз шт. создал, во второй ее точно создавать не будешь. Ну и закешируй.
Это хотя бы с точки зрения оптимизации очевидное решение.
А так как телепатические митохондрии на сегодня у меня устали могу сказать одно.
Или делай устойчивый пример с ошибкой, которую можно воспроизвести на демо, или иди на v8@1c.ru
38 — 08.05.19 — 14:54
(34) Да понятия не имею.
Без кода, без возможности воспроизвести — это шоу «Экстрасенсы»
39 — 08.05.19 — 14:54
надо больше восклицательных знаков и меньше рассказывать о проблеме!!!
40 — 08.05.19 — 14:55
(38)
Если МассивКолонок[4] <> «» Тогда
НайденнаяБазоваяЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(МассивКолонок[4], 1);
Если НайденнаяБазоваяЕдиницаИзмерения <> Справочники.БазовыеЕдиницыИзмерения.ПустаяСсылка() Тогда
ЭлементНоменклатуры.ЕдиницаИзмерения = НайденнаяБазоваяЕдиницаИзмерения;
КонецЕсли;
КонецЕсли;
41 — 08.05.19 — 14:57
а мне нравится ветка. настоящая пятница.
42 — 08.05.19 — 14:57
(40) И что?
Может У тебя СТРРАЗДЕЛИТЬ(Строка,»,»,Истина)
43 — 08.05.19 — 14:58
(37) Шт есть в справочнике, не создавал, а просто нахожу
44 — 08.05.19 — 14:58
(42) Ой Может У тебя СТРРАЗДЕЛИТЬ(Строка,»,»,ЛОЖЬ)
Баз кода полного и нормального примера иди на v8@1c.ru
45 — 08.05.19 — 14:59
(44) Сейчас отлаживаю эту процедуру, по нажатию кнопке. Ошибки в ней.
&НаСервере
Процедура ЗагрузитьНоменклатуруНаСервере()
СчЭл = 1;
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайлаЗагрузкиНоменклатуры);
НачатьТранзакцию();
Для НомерСтроки = 1 по Текст.КоличествоСтрок() Цикл
Строка = Текст.ПолучитьСтроку(НомерСтроки);
МассивКолонок = РазложитьСтрокуВМассивПодстрок(Строка, Разделитель);
//
Для Индекс = 0 По МассивКолонок.Количество() — 1 Цикл
МассивКолонок[Индекс] = СтрЗаменить( МассивКолонок[Индекс], «»»», «» );
КонецЦикла;
//
Если МассивКолонок[0] = «Гр.» Тогда
//
// Группа // 1. [0]
// Код // 2. [1]
// Наименование // 3. [2]
//
// Артикул // 4. [3]
// БазоваяЕдиница // 5. [4]
// Весовой // 6. [5]
// ВидНоменклатуры // 7. [6]
// Комментарий // 8. [7]
// МинОстаток // 9. [8]
// НеВключатьВпрайс // 10. [9]
// НомерГТД // 11. [10]
// ОсновнаяЕдиница // 12. [11]
// ОсновноеСвойство // 13. [12]
// ПолнНаименование // 14. [13]
// СтавкаНДС // 15. [14]
// СтавкаНП // 16. [15]
// СтранаПроисхождения // 17. [16]
// Производитель // 18. [17]
// Импортер // 19. [18]
// АлкогольнаяПродукция // 20. [19]
// ВидПродукции // 21. [20]
// ВидЛицензии // 22. [21]
// КоэффПересчетаДал // 23. [22]
//
// Родитель.Наименование // 24. [23]
// Родитель.Код // 25. [24]
//
НайденнаяГруппа = Справочники.Номенклатура.НайтиПоНаименованию(МассивКолонок[2],1);
Если НайденнаяГруппа = Справочники.Номенклатура.ПустаяСсылка() Тогда
ГруппаНоменклатуры = Справочники.Номенклатура.СоздатьГруппу();
ГруппаНоменклатуры.Наименование = МассивКолонок[2];
//ГруппаКонтрагентов.НаименованиеПолное = МассивКолонок[2];
//ГруппаНоменклатуры.Наименование = СтрЗаменить( МассивКолонок[2], «»»», «» );
Если МассивКолонок[11] <> «» Тогда
ГруппаНоменклатуры.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(МассивКолонок[23], 1);
КонецЕсли;
ГруппаНоменклатуры.Записать();
Сообщить(«Создана группа » + ГруппаНоменклатуры.Наименование);
Иначе
Сообщить(«Пропущена группа » + МассивКолонок[2]);
КонецЕсли;
ИначеЕсли МассивКолонок[0] = «Эл.» Тогда
//
// Элемент // 1. [0]
// Код // 2. [1]
// Наименование // 3. [2]
//
// Артикул // 4. [3]
// БазоваяЕдиница // 5. [4]
// Весовой // 6. [5]
// ВидНоменклатуры // 7. [6]
// Комментарий // 8. [7]
// МинОстаток // 9. [8]
// НеВключатьВпрайс // 10. [9]
// НомерГТД // 11. [10]
// ОсновнаяЕдиница // 12. [11]
// ОсновноеСвойство // 13. [12]
// ПолнНаименование // 14. [13]
// СтавкаНДС // 15. [14]
// СтавкаНП // 16. [15]
// СтранаПроисхождения // 17. [16]
// Производитель // 18. [17]
// Импортер // 19. [18]
// АлкогольнаяПродукция // 20. [19]
// ВидПродукции // 21. [20]
// ВидЛицензии // 22. [21]
// КоэффПересчетаДал // 23. [22]
//
// Родитель.Наименование // 24. [23]
// Родитель.Код // 25. [24]
//
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(МассивКолонок[2],1);
Если НайденныйЭлемент = Справочники.Номенклатура.ПустаяСсылка() Тогда
ЭлементНоменклатуры = Справочники.Номенклатура.СоздатьЭлемент();
// Наименование // 3. [2]
ЭлементНоменклатуры.Наименование = МассивКолонок[2];
// Артикул // 4. [3]
Если МассивКолонок[3] <> «» Тогда
ЭлементНоменклатуры.Артикул = МассивКолонок[3];
КонецЕсли;
// БазоваяЕдиница // 5. [4]
Если МассивКолонок[4] <> «» Тогда
НайденнаяБазоваяЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(МассивКолонок[4], 1);
Если НайденнаяБазоваяЕдиницаИзмерения <> Справочники.БазовыеЕдиницыИзмерения.ПустаяСсылка() Тогда
ЭлементНоменклатуры.ЕдиницаИзмерения = НайденнаяБазоваяЕдиницаИзмерения;
КонецЕсли;
КонецЕсли;
// Весовой // 6. [5]
Если МассивКолонок[5] <> «» Тогда
Если МассивКолонок[5] = «Истина» или МассивКолонок[5] = «1» Тогда
ЭлементНоменклатуры.Весовой = Истина;
Иначе
ЭлементНоменклатуры.Весовой = Ложь;
КонецЕсли;
КонецЕсли;
// ВидНоменклатуры // 7. [6]
Если МассивКолонок[6] <> «» Тогда
НайденныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(МассивКолонок[6], 1);
Если НайденныйВидНоменклатуры <> Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
ЭлементНоменклатуры.ВидНоменклатуры = НайденныйВидНоменклатуры;
КонецЕсли;
КонецЕсли;
// Комментарий // 8. [7]
//Если МассивКолонок[7] <> «»»»»» и МассивКолонок[7] <> «»»0″»» Тогда
// ЭлементНоменклатуры.Комментарий = МассивКолонок[7];
//КонецЕсли;
// МинОстаток // 9. [8]
// НеВключатьВпрайс // 10. [9]
// НомерГТД // 11. [10]
// ОсновнаяЕдиница // 12. [11]
//Если МассивКолонок[11] <> «»»»»» Тогда
// ЭлементНоменклатуры. = МассивКолонок[11];
//КонецЕсли;
// ОсновноеСвойство // 13. [12]
// ПолнНаименование // 14. [13]
Если МассивКолонок[13] <> «» Тогда
ЭлементНоменклатуры.НаименованиеПолное = МассивКолонок[13];
КонецЕсли;
// СтавкаНДС // 15. [14]
Если МассивКолонок[14] <> «» Тогда
Если МассивКолонок[14] = «Без НДС» Тогда
ЭлементНоменклатуры.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
ИначеЕсли МассивКолонок[14] = «НДС 18» Тогда
ЭлементНоменклатуры.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
ИначеЕсли МассивКолонок[14] = «НДС 20» Тогда
ЭлементНоменклатуры.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
КонецЕсли;
КонецЕсли;
// СтавкаНП // 16. [15]
// СтранаПроисхождения // 17. [16]
Если МассивКолонок[16] <> «» Тогда
НайденнаяСтранаПроисхождения = Справочники.СтраныМира.НайтиПоНаименованию(МассивКолонок[16], 1);
Если НайденнаяСтранаПроисхождения <> Справочники.СтраныМира.ПустаяСсылка() Тогда
ЭлементНоменклатуры.СтранаПроисхождения = НайденнаяСтранаПроисхождения;
КонецЕсли;
КонецЕсли;
// Производитель // 18. [17]
Если МассивКолонок[17] <> «» Тогда
НайденныйПроизводитель = Справочники.Контрагенты.НайтиПоНаименованию(МассивКолонок[17], 1);
Если НайденныйПроизводитель <> Справочники.Контрагенты.ПустаяСсылка() Тогда
ЭлементНоменклатуры.Производитель = НайденныйПроизводитель;
КонецЕсли;
КонецЕсли;
// Импортер // 19. [18]
// АлкогольнаяПродукция // 20. [19]
Если МассивКолонок[19] <> «» Тогда
Если МассивКолонок[19] = «Истина» Тогда
ЭлементНоменклатуры.АлкогольнаяПродукция = Истина;
Иначе
ЭлементНоменклатуры.АлкогольнаяПродукция = Ложь;
КонецЕсли;
КонецЕсли;
// ВидПродукции // 21. [20]
Если МассивКолонок[20] <> «» Тогда
НайденныйВидАлкПродукции = Справочники.ВидыАлкогольнойПродукции.НайтиПоНаименованию(МассивКолонок[20], 1);
Если НайденныйВидАлкПродукции <> Справочники.ВидыАлкогольнойПродукции.ПустаяСсылка() Тогда
ЭлементНоменклатуры.ВидАлкогольнойПродукцииЕГАИС = МассивКолонок[20];
КонецЕсли;
КонецЕсли;
// ВидЛицензии // 22. [21]
// КоэффПересчетаДал // 23. [22]
//
// Родитель.Наименование // 24. [23]
Если МассивКолонок[23] <> «» Тогда
ЭлементНоменклатуры.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(МассивКолонок[23], 1);
КонецЕсли;
// Родитель.Код // 25. [24]
//
ЭлементНоменклатуры.Записать();
Сообщить(«Создан элемент » + ЭлементНоменклатуры.Наименование);
Иначе
Сообщить(«Пропущен элемент » + МассивКолонок[2]);
КонецЕсли;
КонецЕсли;
СчЭл = СчЭл + 1;
КонецЦикла;
ЗафиксироватьТранзакцию();
Сообщить(«Загружено: » + СТРОКА(СчЭл) + » элементов.»);
КонецПроцедуры
//
46 — 08.05.19 — 15:00
(44) не, надо сразув Кремль писать )
47 — 08.05.19 — 15:02
Вот. Все работает. Но иногда идет эта ошибка и все, на таких же данны!
http://joxi.ru/Vm6GePvf4jOba2
48 — 08.05.19 — 15:04
отладка — останавливать по ошибке
49 — 08.05.19 — 15:04
вангую, есть попытка в функции РазложитьСтрокуВМассивПодстрок()
50 — 08.05.19 — 15:04
Ты ведь это делал да
51 — 08.05.19 — 15:04
Если МассивКолонок[4] <> «» Тогда
поменять на
Если ТипЗнч(МассивКолонок[4]) = Тип(«Строка») И НЕ ПустаяСтрока(МассивКолонок[4]) Тогда
52 — 08.05.19 — 15:05
(47) Добавить в условие проверку на Неопределено
53 — 08.05.19 — 15:11
(48) я так и останавливаюсь на строке 2000 с лишним
(51)(52) Да можно многого добавить, но я же смотрю в отладчике, в функцию передаются верные данные, а идет ошибка.
Добавлю конечно проверки.
54 — 08.05.19 — 15:12
а ну и тестирование исправление, кэш и прочая фигня
55 — 08.05.19 — 15:13
(54) Даже для пустой базы? Я туда ни разу ещё не загрузил эти элементы номенклатуры.
56 — 08.05.19 — 15:15
(55) не знаю. у меня правило, если происходит неведомая херня, нужно сначала делать это, а потом только лезть за бубном
57 — 08.05.19 — 15:16
(56) Обычно, сколько кэш не чистил не помогало (
58 — 08.05.19 — 15:18
(57) ну тогда вперед к админам за снастью если своей нет и вызывать помощника.
59 — 08.05.19 — 15:19
(47) Точно останова явно не на ошибке.
60 — 08.05.19 — 15:21
(59) кстати да
61 — 08.05.19 — 15:21
Кэш почищу сейчас догрузится.
Стоит галка останавливаться по ошибке.
Ошибка видимо возникает при записи элемента.
Я смотрю что там в нем, вижу проблему в единицах измерения и родителе.
Но из за чего не пойму.
62 — 08.05.19 — 15:23
(61) чё мля
63 — 08.05.19 — 15:23
иди накуй…
64 — 08.05.19 — 15:24
(61) платформенная проверка какая то.
Сделай обменДанными.загрузка = истина.
Потом глазами увидишь
65 — 08.05.19 — 15:24
Стоит галка при отладке останавливаться по ошибке. Вот на ней и вылетает.
66 — 08.05.19 — 15:24
(64) А это где сделать?
67 — 08.05.19 — 15:25
Спр = создать элемент или ПолучитьОбъект
Спр.обменДанными.загрузка = истина
Спр.записать()
68 — 08.05.19 — 15:26
Ход такой
69 — 08.05.19 — 15:26
(67) А что именно это даст?
70 — 08.05.19 — 15:26
(69) отключит платформенные проверки
71 — 08.05.19 — 15:27
У тебя ошибка не в найти по наименованию, а некорректная обработка исключения ранее
72 — 08.05.19 — 15:28
Или ошибка заполнения обязательных на уровне платформы полей: наименование, владелец (если справочник подчинённый) и тд
73 — 08.05.19 — 15:28
(71) У меня же нет попытки исключения?
Да ранее я вижу что в родителе и единицах измерения.
Но туда идут нормальные данные. Буду разбираться.
Видимо энергия ушла.
74 — 08.05.19 — 15:29
(72) Единицу измерения обязательно заполнять, выдавать ошибку стоит.
75 — 08.05.19 — 15:29
(74) это не валило бы в исключение
76 — 08.05.19 — 15:32
(74) технически это отказ=истина в процедуре ПроверкаЗаполнения, но не исключение
77 — 08.05.19 — 15:34
78 — 08.05.19 — 15:38
(77)
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = «,»)
МассивСтрок = Новый Массив();
Если Разделитель = » » Тогда
Стр = СокрЛП(Стр);
Пока Истина Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина(Разделитель);
Пока Истина Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла;
КонецЕсли;
КонецФункции
79 — 08.05.19 — 15:54
80 — 08.05.19 — 15:55
Я ж говорю — платформенные проверки
81 — 08.05.19 — 16:01
(79) наверно в поле группа фигачишь элемент. Такое 1с не прощает.
82 — 08.05.19 — 16:19
Это какая-то Санта-Барбара…
83 — 08.05.19 — 16:33
(81) В родителя всмысле??????
84 — 08.05.19 — 16:39
(83) в общем пройдись по справочнику номенклатуры где-то есть одинаковое наименование у элемента и группы. Или если самому лень, посади за проверку девочку-восьмиклассницу, пусть проштудирует справочник от и до.
85 — 08.05.19 — 16:41
(81) Не должно такого быть.
(84) Гружу структуру из другой базы. Я пока не могу записать ни одного элемента. Так как грузится в транзакции.
Мне не лень. Я пытаюсь разобраться. Но такого не могло в принципе быть. Надеюсь докапаться до проблемы.
86 — 08.05.19 — 16:43
(84) смотрю в файле не нахожу.
Поставил останавливаться по ошибке.
Остановка же будет на проблемном элементе?
Ну вот, пока я в отладчеке не увидел там проблемы.
87 — 08.05.19 — 16:44
(82) +100500 серия )
88 — 08.05.19 — 16:46
(87) Хорошо, у вас в 1с все всегда хорошо работает!
89 — 08.05.19 — 16:48
(88) да, как то загрузки из текстовых файлов с одного прохода отладки работают
90 — 08.05.19 — 16:49
(85) ну, грузи без транзакции, ну ты чудик.
91 — 08.05.19 — 16:49
а ветка больше на бложек похожа
92 — 08.05.19 — 16:50
(90) Ошибку нужно отловить. Мне нужно что бы все хорошо грузилось. Пока первичные данные.
Потом остальное ещё цеплять.
И так долго грузится. Без транзакции ещё дольше будет.
Я же отлаживаю.
93 — 08.05.19 — 16:51
«И так долго грузится.» — сделай примеры покороче, делов то
94 — 08.05.19 — 16:53
Лучше день потерять — зато потом за пять минут долететь (С)
95 — 08.05.19 — 16:54
(92) без запросов в цикле еще быстрее
96 — 08.05.19 — 16:54
(9) привычка писать 1 вместо «истина» выдает «клюшечника» со стажем
97 — 08.05.19 — 16:55
вот не находится группа сыр и идет ошибка
ошибка из за ошибки что выдает функция, а она должна либо находить элемент или возвращать пустую ссылку
http://joxi.ru/gmvaZ43tqv5b5r
98 — 08.05.19 — 16:55
(96) Это никакого значения не имеет.
99 — 08.05.19 — 16:56
Что с этим (97) делать. Реально не вижу в чем проблема?!!!
100 — 08.05.19 — 16:59
(97) а полностью ошибка вероятно звучит так
Ошибка при вызове метода контекста (НайтиПоНаименованию): В данной транзакции уже происходили ошибки!
https://downloads.v8.1c.ru/content/Conversion/ErrConversion_2_0_24_1.htm
Используется кусок кода(про убиться об стену за поиск — не надо): в результате: Ошибка при выполнении обработчика — ‘ОбработкаЗаполнения’ по причине: {Документ.ПоступлениеТоваровУслуг.МодульОбъекта(6020)}: Ошибка при вызове метода контекста (НайтиПоНаименованию) по причине: Несоответствие типов (параметр номер ‘2’) читаю СП: ПланСчетовМенеджер.<Имя плана счетов> (ChartOfAccountsManager.<Имя плана счетов>) НайтиПоНаименованию (FindByDescription) Синтаксис: НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>) Параметры: Тип: Строка. Строка, содержащая искомое наименование. Тип: Булево. Определяет режим поиска по полному соответствию. Поиск будет успешным, если строка поиска: в случае значения параметра Ложь — будет соответствовать левой части наименования; в случае значения параметра Истина — будет полностью совпадать с наименованием (за исключением «хвостовых» пробелов в наименовании). Значение по умолчанию: Ложь <Родитель> (необязательный) Тип: ПланСчетовСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться по всем счетам. Что же я делаю не так?
да, так получается но сам факт интересен 
Жесть… Про предопределенные элементы когда-нибудь слышали?
епт, ну прочитай первую строку… я переписываю то что досталось, вот и наткнулся
может потому..что внутри искомого значения используются скобки — (от поставщиков)? может попробовать как то убрать их?
+6 а хотя..вообще какое то странное наименование Плана счетов.. Нельзя ли вручную как то его откорректировать?
Пиши в 1Ц. Родитель обязателен, не верь СП. Указывай родителя и заработает. Вот так работает: ПланыСчетов.Хозрасчетный.НайтиПоНаименованию(«Товары в пути от поставщи»,Ложь, ПланыСчетов.Хозрасчетный.ПустаяСсылка)
тогда не понятен посыл на параметр 2
Он не указан, т.е. Неопределено. А 1С ссылку ждет.
по СП 2 параметр — точное соответствие и также как и 3 — необязателен я все таки читаю иногда СП и стараюсь ему верить 
Что курил? «Точное соответствие» — это про первый параметр.
неа, еще нет 
НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>) счет идет с нуля?
Байты с нуля, ножки с единицы. Перепутал. Но не важно — Неопределено и Булево — разные типы, как ни крути
ВСЕ 3 параметра обязательны в текущем (11м) релизе платформы, это баг, одицказлы. Тебе написал как сделать чтобы работало. Что еще нужно?
Тэги:
Комментарии доступны только авторизированным пользователям
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
-
Всем доброго времени суток!
Платформа: 1С:Предприятие 8.3 (8.3.6.2390)
Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.106)Пытаюсь создать новую номенклатуру:
НоваяНоменклатураСпр = Справочники.Номенклатура.СоздатьЭлемент(); НоваяНоменклатураСпр.Родитель = ГруппаНоменклатуры; НоваяНоменклатураСпр.ВидНоменклатуры = ВидТовараМассив[Число(ТоварСтрока.ВидНоменклатуры)]; НоваяНоменклатураСпр.СтавкаНДС = СтавкиНДССоответствие.Получить(ТоварСтрока.КоэффициентСтавкиНДС); НоваяНоменклатураСпр.Наименование = СокрЛП(ТоварСтрока.Наименование); НоваяНоменклатураСпр.НаименованиеПолное = СокрЛП(ТоварСтрока.Наименование); Если НоваяНоменклатураСпр.ВидНоменклатуры = АлкогольТовар Тогда НоваяНоменклатураСпр.ВидАлкогольнойПродукции = Справочники.ВидыАлкогольнойПродукции.НайтиПоНаименованию("АлкогольЗагруженный"); НоваяНоменклатураСпр.ОбъемДАЛ = Число(1); КонецЕсли; Попытка СозданоНовыхЭлементов = СозданоНовыхЭлементов+1; НоваяНоменклатураСпр.Записать()А в ответ получаю:
{Форма.Форма.Форма(244)}: Ошибка при вызове метода контекста (Записать) НоваяНоменклатураСпр.Записать(); по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {Справочник.Номенклатура.МодульМенеджера(991)}: Преобразование значения к типу Булево не может быть выполнено И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") ТогдаМне как-то, при создании номенклатуры, надо указать ДрагМатериал это или нет, так?
Если да то как? -
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.590
- Симпатии:
- 998
- Баллы:
- 204
Не стесняйтесь пользоваться отладкой.
Проверяется значение реквизита элемента справочника «ВидНоменклатуры», возвращает значение НЕ типа Булево о чем вам сообщается в тексте ошибки. -
Вы всё «полезнее» и «полезнее» даёте ответы. И не лень писать бесполезный (пустой ответ)? Или вам за это какие-то балы дают, на форуме?
Я просто не очень понимаю, если неохота отвечать или вопрос считаете через чур «банальным», зачем тратить своё время на пустой и бесполезный ответ и моё время, на прочтение этого ответа?P.S.
Отладчиком я пользоваться умею и прежде чем сюда писать, я им уже воспользовался.
В отладчике, упав в функцию :ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") Тогда
увидел следующее: Результат Null
-
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.590
- Симпатии:
- 998
- Баллы:
- 204
Из ваших слов, отладчиком вы пользуетесь как-то странно на мой взгляд.
результат = NULL и что дальше? по какой причине такой результат? что нужно сделать, чтобы результат был отличный от NULL? вас эти вопросы не беспокоят вообще или вы не задавались этими вопросами?
Можете, конечно, дальше сидеть и удивлятся тому факту, что результат работы функции — NULL……
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.261
- Симпатии:
- 101
- Баллы:
- 104
На самом деле ответ про отладку действительно полезный.
А вы ожидали, что вам скажут — «в строке 14387 замени букву ‘а’ на букву ‘б’ «?
За вас в код никто разбираться не полезет, а если вы сами в нем разберетесь с помощью отладчика, то завтра вместо того, чтобы потратить 4 часа ожидая ответа на форуме найдете ответ сами за 15 минут.Функция вам вернула Null, вы провалились отладчиком в функцию и поняли, почему она вернула NULL?
Или просто всплеснули руками и опубликовали очередное сообщение на форуме?Запустите глобальный поиск по конфигурации и посмотрите где еще вызывается эта функция, с какими параметрами и что возвращает в других случаях.
— Объединение сообщений, 4 мар 2016 —
Другое дело, если у вас отладчик туда не заходит — такое каждый день тут спрашивают
-
Offline
bajiepka
Профессионал в 1С- Регистрация:
- 26 сен 2014
- Сообщения:
- 460
- Симпатии:
- 31
- Баллы:
- 54
у вас запись идёт в попытке. выведите в какое-то поле на форме или в сообщение на клиенте результат функции ОписаниеОшибки() в исключении попытки. там вам и напишет про поле, которое не удаётся записать (изменить)
-
Всё оказалось просто — ВидНоменклатуры я получал через НайтиПоНаименованию, а в моём случае имя группы совпадало с наименованием, в итоге Вид Номенклатуры ЭтоГруппа,
что и приводило к ошибке.
Всем спасибо -
Offline
LordMaverick
Профессионал в 1С- Регистрация:
- 17 мар 2014
- Сообщения:
- 3.975
- Симпатии:
- 465
- Баллы:
- 104
ну на признак группы тоже надо проверять
хотя лучше не делать совпадающих названий
|
AndreiSchreider 1 / 1 / 0 Регистрация: 30.09.2019 Сообщений: 103 |
||||||||
|
1 |
||||||||
|
1C 8.x Метод объекта не обнаружен (НайтиПоНаименованию)31.01.2020, 10:16. Показов 3548. Ответов 4 Метки нет (Все метки)
Здравствуйте!
Но при загрузке данных из файла MS Excel выскакивает ошибка:
Помогите исправить эту ошибку.
0 |
|
polax 1879 / 1284 / 460 Регистрация: 16.01.2015 Сообщений: 5,625 |
||||
|
31.01.2020, 10:59 |
2 |
|||
|
НоваяСтрока.Владелец = Справочники.НайтиПоНаименованию(ЗонаПарка); Нет имени справочника.
Функция НайтиПоНаименованию(ЗонаПарка) Это вообще бред, просто удалите.
0 |
|
AndreiSchreider 1 / 1 / 0 Регистрация: 30.09.2019 Сообщений: 103 |
||||
|
04.02.2020, 18:23 [ТС] |
3 |
|||
|
Не помогает. Удалив Функция НайтиПоНаименованию(ЗонаПарка), выдаёт ошибку
.
0 |
|
polax 1879 / 1284 / 460 Регистрация: 16.01.2015 Сообщений: 5,625 |
||||
|
04.02.2020, 21:09 |
4 |
|||
|
Поле объекта не обнаружено (ИмяСправочника) Шедеврально! ))) ИмяСправочника здесь — просто указание, что должно стоять конкретное имя вашего справочника. Т.е.
0 |
|
1188 / 727 / 211 Регистрация: 22.04.2013 Сообщений: 5,356 Записей в блоге: 1 |
|
|
04.02.2020, 22:55 |
5 |
|
рукалицо
0 |

