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С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Приглашаем на
бесплатный вебинар!
06 июня в 11:00 мск
1 час
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

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

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

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

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
|
AndreiSchreider 1 / 1 / 0 Регистрация: 30.09.2019 Сообщений: 103 |
||||||||
|
1 |
||||||||
|
1C 8.x Метод объекта не обнаружен (НайтиПоНаименованию)31.01.2020, 10:16. Показов 3522. Ответов 4 Метки нет (Все метки)
Здравствуйте!
Но при загрузке данных из файла MS Excel выскакивает ошибка:
Помогите исправить эту ошибку.
0 |
|
polax 1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
||||
|
31.01.2020, 10:59 |
2 |
|||
|
НоваяСтрока.Владелец = Справочники.НайтиПоНаименованию(ЗонаПарка); Нет имени справочника.
Функция НайтиПоНаименованию(ЗонаПарка) Это вообще бред, просто удалите.
0 |
|
AndreiSchreider 1 / 1 / 0 Регистрация: 30.09.2019 Сообщений: 103 |
||||
|
04.02.2020, 18:23 [ТС] |
3 |
|||
|
Не помогает. Удалив Функция НайтиПоНаименованию(ЗонаПарка), выдаёт ошибку
.
0 |
|
polax 1876 / 1281 / 460 Регистрация: 16.01.2015 Сообщений: 5,606 |
||||
|
04.02.2020, 21:09 |
4 |
|||
|
Поле объекта не обнаружено (ИмяСправочника) Шедеврально! ))) ИмяСправочника здесь — просто указание, что должно стоять конкретное имя вашего справочника. Т.е.
0 |
|
1186 / 725 / 211 Регистрация: 22.04.2013 Сообщений: 5,347 Записей в блоге: 1 |
|
|
04.02.2020, 22:55 |
5 |
|
рукалицо
0 |
|
|
|
|
Правила раздела:
- Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
- Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
- Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.
Высказать своё мнение о модераторах раздела можно здесь: evGenius
Бух 3.0 ПКО
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Создаю документ ПКО с ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка Добавлено 11.01.18, 12:00 Теперь другая ошибка появилась: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НовыйДок.Контрагент = Справочники.Склады.НайтиПоРеквизиту(«Комментарий»,ЭксельФН) ; по причине: Неверно указан реквизит Добавлено 11.01.18, 12:20 |
|
lastlogic |
|
|
Через запрос с ВЫРАЗИТЬ можно… |
^D^ima |
|
|
Why? ЭксельДата = «2017.12.22» НовыйДок.Дата = Дата(ЭксельДата+» 0:00:01″); Дата документа должна быть не ранее 2000 года |
kosten |
|
|
^D^ima, читай СП дт = Дата(«20171222»); Разницу видишь? Цитата Литералы: ГГГГ — четыре цифры года (включая тысячелетие и век); Сообщение отредактировано: kosten — 11.01.18, 13:21 |
^D^ima |
|
|
ок |
^D^ima |
|
|
Не могу понять по какой причине не формируются проводки при проведении? Вродебы как и ошибок не выдает и проводок не создает. Забыл скорее всего какой-то реквизит заполнить. Сообщить(«Создаем документ ПКО»); НовыйДок = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); НовыйДок.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию(«руб.»); НовыйДок.Организация =Справочники.Организации.ОрганизацияПоУмолчанию(Пользователи.ТекущийПользователь()); НовыйДок.Дата =Дата(ЭксельДата); НовыйДок.ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка; НовыйДок.СчетКасса = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«50.01»); НовыйДок.СуммаДокумента = Число(ЭксельСумма); СкладЗапрос = новый Запрос; СкладЗапрос.Текст= «ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Наименование КАК Наименование |ИЗ | Справочник.Склады КАК Склады |ГДЕ | Склады.Комментарий ПОДОБНО &Комментарий»; СкладЗапрос.УстановитьПараметр(«Комментарий»,ЭксельФН); Выборка = СкладЗапрос.Выполнить().Выбрать(); Выборка.Следующий(); НовыйДок.Контрагент = Выборка.Ссылка; НовыйДок.ПринятоОт = строка(Выборка.Наименование); //НовыйДок.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйТовар = НовыйДок.РасшифровкаПлатежа.Добавить(); НовыйТовар.СуммаПлатежа = Число(ЭксельСумма); НовыйТовар.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйТовар.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйДок.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйДок.Записать(РежимЗаписиДокумента.Запись); Добавлено 30.01.18, 21:10 НовыйДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«90.01.1»); НовыйДок.СубконтоКт1 = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(«Основная номенклатурная группа»); НовыйДок.СубконтоКт2 = Перечисления.СтавкиНДС.БезНДС; НовыйДок.СубконтоКт3 = «»; НовыйДок.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(«Основное подразделение»);
|
^D^ima |
|
|
Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? |
kosten |
|
|
Цитата ^D^ima @ 30.01.18, 20:16 НовыйДок.Записать(РежимЗаписиДокумента.Запись); Разве запись формирует проводки? Попробуй не Записать,а Провести. |
^D^ima |
|
|
Цитата kosten @ 31.01.18, 06:25 Разве запись формирует проводки? Попробуй не Записать,а Провести. нет конечно. но мне не надо проводить сразу документ, вначале его проверяет бухгалтер. |
|
evGenius |
|
|
Цитата ^D^ima @ 31.01.18, 06:16 Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? Скачай «Инструменты разработчика». Замечательная штука, набор инструментов. Среди них есть редактор реквизитов любого объекта. |
^D^ima |
|
|
evGenius |
|
evGenius |
|
|
Цитата ^D^ima @ 19.02.18, 14:38 имеется в виду 1C:Enterprise Development Tools? Нет, вот это. |
^D^ima |
|
|
evGenius А то получается какая-то шляпа: |
^D^ima |
|
|
Ещё не понятно где новая подсистема из расширения. Расширение применилось, а новая подсистема не появилась |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- 1С: Проблемы и решения
- Следующая тема
[ Script execution time: 0,0467 ] [ 21 queries used ] [ Generated: 3.06.23, 16:46 GMT ]






____________________.png (8,64 Кбайт, скачиваний: 726)

