|
Ошибка при вызове метода контекста (Записать) | ☑ | ||
---|---|---|---|---|
0
AnyBaz
12.09.13
✎
13:07
|
Полное описание ошибки:
{Форма.Загрузка.Форма(102)}: Ошибка при вызове метода контекста (Записать) СтрСпр.Записать(); по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {Справочник.Номенклатура.МодульОбъекта(123)}: Поле "Рабочее наименование" не заполнено СтрСпр.Записать(); по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {Справочник.Номенклатура.МодульОбъекта(123)}: Поле "Рабочее наименование" не заполнено {Справочник.Номенклатура.МодульОбъекта(123)}: Поле "Рабочее наименование" не заполнено ВызватьИсключение ТекстИсключения; Задача: Необходимо записать Excel-файл в справочник НОМЕНКЛАТУРА. Код: &НаКлиенте Процедура ВыбратьФайл(Команда) // ОТКРЫВАЕМ ФАЙЛ ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Фильтр = "Файлы Microsoft Office Excel 97-2003 (*.xls)|*.xls"; ДиалогВыбораФайла.Заголовок = "Выберите файл"; ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь; ДиалогВыбораФайла.ИндексФильтра = 0; ДиалогВыбораФайла.ПолноеИмяФайла = ""; Если ДиалогВыбораФайла.Выбрать() Тогда ЗагружаемыйФайл = ДиалогВыбораФайла.ПолноеИмяФайла; КонецЕсли; Объект.ЗагружаемыйФайл=ЗагружаемыйФайл; Сообщить ("Файл выбран"); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьВыбранныйФайл(Команда,ЗагружаемыйФайл,стр) СтруктураКолонок = Новый Структура; СтруктураКолонок.Вставить("Код",2); СтруктураКолонок.Вставить("Артикул",3); СтруктураКолонок.Вставить("Наименование",4); СтруктураКолонок.Вставить("ПолноеНаименование",5); СтруктураКолонок.Вставить("ВидНоменклатуры",6); СтруктураКолонок.Вставить("БазоваяЕдиницаИзмерения",7); СтруктураКолонок.Вставить("ЕдиницаХраненияОстатков",8); СтруктураКолонок.Вставить("НомерГТД",9); СтруктураКолонок.Вставить("СтранаПроисхождения",10); СтруктураКолонок.Вставить("СтавкаНДС",11); СтруктураКолонок.Вставить("НоменклатурнаяГруппа",12); СтруктураКолонок.Вставить("ЦеноваяГруппа",13); СтруктураКолонок.Вставить("Комментарий",14); СозданиеПодключения(стр,ЗагружаемыйФайл,СтруктураКолонок); КонецПроцедуры &НаСервере Процедура СозданиеПодключения(стр,ЗагружаемыйФайл,СтруктураКолонок,Знач НачСтрока = 0, Знач КонСтрока = 0) ЗагружаемыйФайл = Объект.ЗагружаемыйФайл; // ЗАПОЛНЯЕМ ГРУППУ МАТЕРИАЛОВ Если НЕ ЗначениеЗаполнено(Объект.ГруппаМатериалов) Тогда Сообщить ("не заполнено наименование группы справочника"); КонецЕсли; Лист = Объект.ЛистExcel; // УСТАНОВКА СОЕДИНЕНИЯ Connection = Новый COMОбъект("ADODB.Connection"); Попытка Connection.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ЗагружаемыйФайл+";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""); Сообщить ("Соединение установлено"); Исключение Сообщить("Не удалось открыть файл->"+ЗагружаемыйФайл+" Проверьте путь и тип файла"); возврат; КонецПопытки; // СОЗДАНИЕ КАТАЛОГА CATL=Новый COMОбъект ("ADOX.Catalog"); CATL.ActiveConnection = Connection; ИмяПервойСтраницы=CATL.Tables.Item(0).Name; Сообщить ("Каталог организован"); //ИмяПервойСтраницы="ОБ ДР$"; // РЕЖИМ ЗАПИСИ RecSet = Новый COMОбъект ("ADODB.Recordset"); RecSetSTR = "select * from ["+ИмяПервойСтраницы+"]"; RecSet.Open (RecSetSTR, Connection, 2, 3);//adOpenDynamic(определяет динамический курсор), adLockOptimistic(оптимистическая блокировка) Сообщить ("Объект готов к записи"); // СПРАВОЧНИК НовыйОбъектСправочника = Справочники.Номенклатура.СоздатьГруппу(); НовыйОбъектСправочника.Наименование = Объект.ГруппаМатериалов; НовыйОбъектСправочника.Записать(); СтрСпр = Справочники.Номенклатура.СоздатьЭлемент(); СтрСпр.Родитель = НовыйОбъектСправочника.Ссылка; //НовыйОбъектСправочника.Записать(); // ЗАПИСЬ Пока НЕ RecSet.EOF() Цикл Если СокрЛП(Строка(RecSet.Fields(RecSet.Fields.Item(0).Name).Value))<>"" Тогда //СтрСпр = Справочники.Номенклатура.СоздатьЭлемент(); СтрСпр.Код=СокрЛП(Строка(RecSet.Fields(RecSet.Fields.Item(2).Name).Value)); СтрСпр.Артикул=Строка(RecSet.Fields(RecSet.Fields.Item(3).Name).Value); СтрСпр.Наименование = Справочники.Номенклатура.НайтиПоНаименованию(Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).Value)); СтрСпр.НаименованиеПолное = Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).Value); СтрСпр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент(); СтрСпр.ВидНоменклатуры.Наименование = Строка(RecSet.Fields(RecSet.Fields.Item(5).Name).Value); КонецЕсли; RecSet.MoveNext(); КонецЦикла; RecSet.Close(); Connection.Close(); НовыйОбъектСправочника.Записать(); СтрСпр.Записать(); КонецПроцедуры P.S. Помогите пожалуйста, я новичок. Долблюсь уже 2ю неделю... |
|||
1
Галахад
гуру
12.09.13
✎
13:09
|
Вроде по русски:
Поле "Рабочее наименование" не заполнено |
|||
2
Fish
12.09.13
✎
13:09
|
(0) Так заполни поле "Рабочее наименование"
|
|||
3
Тролль главный
12.09.13
✎
13:10
|
наверное потому что "Рабочее наименование" не заполнено ))
|
|||
4
an_str
12.09.13
✎
13:10
|
как минимум надо "рабочее наименование" заполнить)
СтрСпр.РабочееНаименование = ... |
|||
5
le_
12.09.13
✎
13:10
|
(0) Вторую неделю пытаешься осознать суть ошибки, о которой говорится? )
|
|||
6
AnyBaz
12.09.13
✎
13:11
|
Как? Рабочее наименование это всего лишь заголовок в форме это просто Наименование, я его вроде заполняю. или вручную заполнить надо?
|
|||
7
Тролль главный
12.09.13
✎
13:11
|
и где фото?
|
|||
8
AnyBaz
12.09.13
✎
13:11
|
нет, 2ю неделю, пишу загрузку файла в справочник.
|
|||
9
Тролль главный
12.09.13
✎
13:11
|
отсюда конечно не видно что там происходит в модуле объекта ПередЗаписью
|
|||
10
le_
12.09.13
✎
13:13
|
(6) Справочник.Номенклатура.МодульОбъекта, строка 123 - что там?
|
|||
11
AnyBaz
12.09.13
✎
13:14
|
вот 123 строка
ВызватьИсключение ТекстИсключения; |
|||
12
Euguln
12.09.13
✎
13:14
|
(0) СтрСпр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
Это что??? Попробуй СтрСпр.ОбменДанными.Загрузка = Истина; перед записью. Ну или СтрСпр.РабочееНаименование = СтрСпр.Наименование; |
|||
13
AnyBaz
12.09.13
✎
13:14
|
Если НЕ ЗначениеЗаполнено(Наименование) Тогда
ТекстИсключения = НСтр("ru='Поле ""Рабочее наименование"" не заполнено'"); ВызватьИсключение ТекстИсключения; Отказ = Истина; КонецЕсли; КонтролироватьРабочееНаименование = Константы.КонтролироватьУникальностьРабочегоНаименованияНоменклатурыИХарактеристик.Получить() И НЕ (ДополнительныеСвойства.Свойство("РабочееНаименованиеПроверено")); |
|||
14
le_
12.09.13
✎
13:15
|
(11) При выполнении какого условия вызывается это исключение?
|
|||
15
Fish
12.09.13
✎
13:15
|
(13) Ошибка в строке:
СтрСпр.Наименование = Справочники.Номенклатура.НайтиПоНаименованию(Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).Value)); |
|||
16
an_str
12.09.13
✎
13:16
|
СтрСпр.Наименование = Справочники.Номенклатура.НайтиПоНаименованию(Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).....
зачем "НайтиПоНаименованию"??? |
|||
17
Тролль главный
12.09.13
✎
13:17
|
+(15) согласен, что это бред
|
|||
18
an_str
12.09.13
✎
13:18
|
+(17)
|
|||
19
Euguln
12.09.13
✎
13:18
|
(17) там половина кода - бред
|
|||
20
le_
12.09.13
✎
13:18
|
+(15) Это тоже как-то не айс:
СтрСпр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент(); |
|||
21
Fish
12.09.13
✎
13:23
|
(20) Да и то, если это исправить, то при таком цикле запишется всего один элемент справочника. Тут без (7) явно не обойтись :)
|
|||
22
Euguln
12.09.13
✎
13:28
|
(7) (21) Да, присоединяюсь
// ЗАПИСЬ Пока НЕ RecSet.EOF() Цикл Если СокрЛП(Строка(RecSet.Fields(RecSet.Fields.Item(0).Name).Value))<>"" Тогда Наименование =Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).Value); НайденныйЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(Наименование); Если НайденныйЭлемент.Пустая() Тогда СтрСпр = Справочники.Номенклатура.СоздатьЭлемент(); Иначе СтрСпр = НайденныйЭлемент.ПолучитьОбъект(); КонецЕсли; СтрСпр.Родитель = НовыйОбъектСправочника.Ссылка; //СтрСпр = Справочники.Номенклатура.СоздатьЭлемент(); СтрСпр.Код=СокрЛП(Строка(RecSet.Fields(RecSet.Fields.Item(2).Name).Value)); СтрСпр.Артикул=Строка(RecSet.Fields(RecSet.Fields.Item(3).Name).Value); СтрСпр.Наименование = Наименование; СтрСпр.НаименованиеПолное = Строка(RecSet.Fields(RecSet.Fields.Item(4).Name).Value); НайденныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(Строка(RecSet.Fields(RecSet.Fields.Item(5).Name).Value)); Если НайденныйВидНоменклатуры.Пустая() Тогда НайденныйВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент(); НайденныйВидНоменклатуры.Наименование = Строка(RecSet.Fields(RecSet.Fields.Item(5).Name).Value); НайденныйВидНоменклатуры.Записать(); КонецЕсли; СтрСпр.ВидНоменклатуры = НайденныйВидНоменклатуры.Ссылка; Попытка СтрСпр.Записать(); Исключение Сообщить("Не удалось записать элемент справочника. " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; RecSet.MoveNext(); КонецЦикла; RecSet.Close(); Connection.Close(); |
|||
23
AnyBaz
12.09.13
✎
13:33
|
Euguln спасибо!
|
|||
24
Euguln
12.09.13
✎
13:46
|
(23) фотка где?
|
|||
25
AnyBaz
12.09.13
✎
13:47
|
фотка чего?
|
|||
26
Fish
12.09.13
✎
13:49
|
(25) Теперь, после того, как тебе помогли, участникам форума хотелось бы увидеть твоё фото в личной карточке.
|
|||
27
ДенисЧ
12.09.13
✎
13:49
|
(25) Народ так думает, что им интересна ваша внешность. И они желают видеть её в стиле ню :-)
|
|||
28
AnyBaz
12.09.13
✎
13:50
|
вечером загружу, завтра увидите. щас не могу - на работе
|
|||
29
AnyBaz
12.09.13
✎
13:51
|
ага, щас
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |