Имя: Пароль:
1C
1С v8
Помогите найти ошибку в коде
0 fleur
 
29.11.12
22:41
Использую обработку "загрузка данных из табличных документов" и нашла в интернете такую инструкцию, все у меня замечательно грузится, но при этом надо заходить в каждый свежесозданный элемент номенклатуры и нажимать ctrl+s, при этом создается новый элемент в справочнике ЕдиницыИзмерения. Как можно избежать этой "увлекательной" работы?

Инструкция:

Чтобы в Вашем файле загрузить новые элементы в справочник "Номенклатура" необходимо сделать следующее:
1. Поставить флаги загрузки наименования, артикула и полного наименования. Режим загрузки - искать.
2. Для реквизита "Вид продукции" поставить флаг обработки и выбрать режим загрузки "Устанавливать" и значение по умолчанию заполнить в значение "Товар".
3. Для базовой единицы поставить флаг обработки, режим искать.
4. Нажать кнопку "События..." верхней командной панели и в событии "Перед записью объекта" прописать следующий код:
Цитата:
Если НЕ Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстыЯчеек[3])).Пустая() Тогда
Отказ = Истина;
КонецЕсли;
Объект.УстановитьНовыйКод();
Сообщить(ТекстыЯчеек[9]);
СпрКлассЕд = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[9]);
Если СпрКлассЕд.Пустая() Тогда
СпрКлассЕдОбъект = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[9]);
СпрКлассЕдОбъект.Записать();
СпрКлассЕд = СпрКлассЕдОбъект.Ссылка;
КонецЕсли;
Объект.БазоваяЕдиницаПоКлассификатору = СпрКлассЕд;
1 fleur
 
29.11.12
23:19
Если НЕ Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстыЯчеек[3])).Пустая() Тогда

Отказ = Истина;
КонецЕсли;
Объект.УстановитьНовыйКод();
Сообщить(ТекстыЯчеек[9]);
СпрКлассЕд = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[9]);
Если СпрКлассЕд.Пустая() Тогда
СпрКлассЕдОбъект = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[9]);
СпрКлассЕдОбъект.Записать();
СпрКлассЕд = СпрКлассЕдОбъект.Ссылка;
КонецЕсли;
Объект.БазоваяЕдиницаПоКлассификатору = СпрКлассЕд;
//Добавила строчку:
Объект.ЕдиницаИзмерения = СпрКлассЕд;
2 Alex375
 
30.11.12
04:38
Не прокатит. У тебя в СпрКлассЕд ссылка на элемент справочника "КлассификаторЕдиницИзмерения". А реквизит "ЕдиницаИзмерения" есть ссылка на элемент справочника "ЕдиницыИзмерения". Не соответствие типов однако.
Тебе надо еще создать элемент справочника "ЕдиницыИзмерения" и тогда все получится.
3 fleur
 
30.11.12
09:02
А теперь получится?

Если НЕ Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстыЯчеек[3])).Пустая() Тогда

Отказ = Истина;
КонецЕсли;
Объект.УстановитьНовыйКод();
Сообщить(ТекстыЯчеек[9]);
СпрКлассЕд = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекстыЯчеек[9]);
Если СпрКлассЕд.Пустая() Тогда
СпрКлассЕдОбъект = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[9]);
СпрКлассЕдОбъект.Записать();
СпрКлассЕд = СпрКлассЕдОбъект.Ссылка;
КонецЕсли;
Объект.БазоваяЕдиницаПоКлассификатору = СпрКлассЕд;
//Добавила строчки:

СпрКлассЕд = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ТекстыЯчеек[9]);
Если СпрКлассЕд.Пустая() Тогда
СпрКлассЕдОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[9]);
СпрКлассЕдОбъект.Записать();
СпрКлассЕд = СпрКлассЕдОбъект.Ссылка;
КонецЕсли;
Объект.ЕдиницаИзмерения = СпрКлассЕд;