Имя: Пароль:
1C
1С v8
Проблема с загрузкой в номенклатуру
,
0 SeeWorld
 
24.08.12
10:04
Процедура Загрузка(Кнопка)
       Номенклатур = Справочники.Номенклатура.СоздатьЭлемент();
       Номенклатур.Наименование = "Паста";
       Номенклатур.Код = "1651565";
       Номенклатур.БазоваяЕдиницаИзмерения = "кг";
       Номенклатур.Записать();
КонецПроцедуры


Возникает такая ошибка: Перед записью в элементе справочника "Номенклатура" необходимо заполнить "базовая единица"!
В чем может быть причина?
1 salvator
 
24.08.12
10:05
(0) потому что Номенклатур.БазоваяЕдиницаИзмерения - это не строка ни разу
2 Wobland
 
24.08.12
10:05
в незаполненности базовой единицы. смотри в тип
3 Лоботряс
 
24.08.12
10:06
Номенклатур - это муж Номенклатуры?
4 SeeWorld
 
24.08.12
10:14
Как кодом можно реализовать установку базовой единицы?
5 Godofsin
 
24.08.12
10:18
(3) Это тур по Номенкле.
6 salvator
 
24.08.12
10:20
(4) Смотри типовые решения, если чуть-чуть подумать лень.
7 SeeWorld
 
24.08.12
10:24
я только начинаю работать в 1с 8. Хоть метод какой использовать подскажите.
8 Maxus43
 
24.08.12
10:25
Номенклатур.БазоваяЕдиницаИзмерения = Справочник.КлассификаторЕдиницИзмерения.НайтиПоКоду(<код классификатора для кг>);
9 SeeWorld
 
24.08.12
10:34
Спасибо)
10 Maxus43
 
24.08.12
10:35
следующая тема - как проставить единицу хранения остатков и единицу для отчета
11 SeeWorld
 
24.08.12
10:54
А вот если я хочу кое, что обновить в уже существующем элементе, какой мне метод использовать?
12 Wobland
 
24.08.12
10:55
(11) найти и присвоить
13 Maxus43
 
24.08.12
10:56
Номенклатур = Справочники.Номенклатура.НайтиПоКоду(кодноменклатуры).ПолучитьОбъект();\

всё, бесплатные уроки закончены. Продам СП
14 SeeWorld
 
28.08.12
11:49
Номенклатура = Справочники.Номенклатура;
 НайденныйКод = Номенклатура.НайтиПоКоду(ЭксКод);
 ЕдИзм = Справочники.ЕдиницыИзмерения;
 НовЭлЕдИзм = ЕдИзм.СоздатьЭлемент();

 Если НайденныйКод = Номенклатура.ПустаяСсылка() тогда
  //Создает элемент
  НовЭл = Номенклатура.СоздатьЭлемент();
  НовЭл.Наименование = ЭксНом;
  НовЭл.Код = ЭксКод;
     НовЭл.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
  НовЭл.Записать();
  //Добавление остатка в таб Ед. Измер.
  ОбнЭл = Номенклатура.НайтиПоКоду(ЭксКод).ПолучитьОбъект();
  НовЭлЕдИзм.Владелец = ОбнЭл.Ссылка;
  НовЭлЕдИзм.Наименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
  НовЭлЕдИзм.ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
  НовЭлЕдИзм.Коэффициент = 1;
  НовЭлЕдИзм.Записать();
 
  НовЭл.ЕдиницаХраненияОстатков =                        //Как сослаться на запись в справочники-->единицыизмерения?
  НовЭл.Записать();
15 SeeWorld
 
29.08.12
09:15
Проблема решена!)
16 SeeWorld
 
29.08.12
09:15
решина
17 Wobland
 
29.08.12
09:16
(16) ришина
18 Wobland
 
29.08.12
09:17
(14) всё равно г-код
19 SeeWorld
 
29.08.12
09:17
решена
20 SeeWorld
 
29.08.12
09:18
Для начинающего вполне нормально.
21 Wobland
 
29.08.12
09:22
(20) ты по меньшей мере дважды ищешь одно и то же, плюс не всегда проверяешь найденность
22 salvator
 
29.08.12
09:22
(14) НовЭлЕдИзм = ЕдИзм.СоздатьЭлемент(); - это нафига?
23 SeeWorld
 
29.08.12
09:25
там уже этого нет. я все переправил.
24 Web00001
 
29.08.12
09:29
а вот это

  ОбнЭл = Номенклатура.НайтиПоКоду(ЭксКод).ПолучитьОбъект();
  НовЭлЕдИзм.Владелец = ОбнЭл.Ссылка;

тоже оxyeннo найти ссылку, получить от нее объект, что бы следующей строкой, парам! от него получить ссылку, как сказали в (21) не особо разбираясь нашел ссылку или там у тебя неопределено.
25 SeeWorld
 
29.08.12
09:40
Как должно правильно выглядеть?
26 salvator
 
29.08.12
09:40
(25) Кто ж тебя знает, после (23)
27 SeeWorld
 
29.08.12
09:42
Не судите меня строго!)
28 SeeWorld
 
29.08.12
09:42
Процедура Загрузка(Кнопка)
   перем Номенклатур;
   Попытка
       Эксель = Новый COMОбъект("Excel.Application");
       Док = Эксель.WorkBooks.Add("D:\Working\IT\игорь\Выгрузка.xls");
       Исключение
           Сообщить(ОписаниеОшибки() + "Программа Excel не установлена на данном компьютере!");
       Возврат;
   КонецПопытки;
   ВсегоСтрок = Эксель.Cells.CurrentRegion.Rows.Count;
   Для row = 1 По ВсегоСтрок Цикл
       ЭксНом = Эксель.Cells(row,1).Value;
       ЭксКол = Эксель.Cells(row,2).Value;
       ЭксЕдИзм = Эксель.Cells(row,3).Value;
       ЭксТранс = Эксель.Cells(row,4).Value;
       ЭксСум = Эксель.Cells(row,5).Value;
       ЭксЦен = Эксель.Cells(row,6).Value;
       ЭксКод = Эксель.Cells(row,7).Value;
       ЭксСНдс = Эксель.Cells(row,8).Value;
       
       Номенклатура = Справочники.Номенклатура;
       НайденныйКод = Номенклатура.НайтиПоКоду(ЭксКод);
       ЕдИзм = Справочники.ЕдиницыИзмерения;
       НовЭлЕдИзм = ЕдИзм.СоздатьЭлемент();
       
       Если НайденныйКод = Номенклатура.ПустаяСсылка() тогда  
           //Создает элемент
           НовЭл = Номенклатура.СоздатьЭлемент();
           НовЭл.Наименование = ЭксНом;
           НовЭл.Код = ЭксКод;
           НовЭл.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
           НовЭл.Записать();
           //Добавление остатка в таб Ед. Измер.
           ОбнЭл = Номенклатура.НайтиПоКоду(ЭксКод).ПолучитьОбъект();
           НовЭлЕдИзм.Владелец = ОбнЭл.Ссылка;
           НовЭлЕдИзм.Наименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
           НовЭлЕдИзм.ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);  
           НовЭлЕдИзм.Коэффициент = 1;
           НовЭлЕдИзм.Записать();
           
           НовЭл.ЕдиницаХраненияОстатков = НовЭлЕдИзм.Ссылка;
           НовЭл.Записать();
       Иначе
           
           //Обновляет элемент    
           //ОбнЭл = НайденныйКод.ПолучитьОбъект();
           //ОбнЭл.Наименование = ЭксНом;
           //ОбнЭл.Код = ЭксКод;
           //ОбнЭл.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
           
           //Добавление остатка в таб Ед. Измер.
           //ОбнЭл = Номенклатура.НайтиПоКоду(ЭксКод).ПолучитьОбъект();
           //НовЭлЕдИзм.Владелец = ОбнЭл.Ссылка;  
           //НовЭлЕдИзм.Наименование = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
           //НовЭлЕдИзм.ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ЭксЕдИзм);
           //НовЭлЕдИзм.Коэффициент = 1;
           //НовЭлЕдИзм.Записать();
           
           //ОбнЭл.ЕдиницаХраненияОстатков = НовЭлЕдИзм.Ссылка;
           //ОбнЭл.Записать();
       КонецЕсли;
   КонецЦикла;
   
       
КонецПроцедуры
29 Wobland
 
29.08.12
09:43
(27) это ты в другом месте проси ;)
30 Wobland
 
29.08.12
09:44
>Программа Excel не установлена на данном компьютере
ситуация: ексель стоит, а файла нет. что скажет?
31 SeeWorld
 
29.08.12
09:45
Ругаться будет)
32 salvator
 
29.08.12
09:45
Зачем ты создаешь новую единицу измерения еще ДО проверки?
33 Wobland
 
29.08.12
09:46
НовЭлЕдИзм.Владелец=НовЭл
34 Wobland
 
29.08.12
09:46
(33) .Ссылка
35 Wobland
 
29.08.12
09:46
(32) присоединяюсь
36 Wobland
 
29.08.12
09:47
(31) так и сообщай "1С ругается"
37 Wobland
 
29.08.12
09:47
а чтоб другой файл подсунуть, надо код править?
38 SeeWorld
 
29.08.12
09:49
Зачем ты создаешь новую единицу измерения еще ДО проверки? Чтоб не прописывать после "Тогда" и "Иначе"
39 salvator
 
29.08.12
09:50
(38) После Иначе у тебя вообще ничего нет, если че.
40 Wobland
 
29.08.12
09:50
(38) да засунь создание в условие
41 SeeWorld
 
29.08.12
09:51
Если комментарии убрать то после "иначе" будет)
42 salvator
 
29.08.12
09:55
Да и вот это
ОбнЭл = Номенклатура.НайтиПоКоду(ЭксКод).ПолучитьОбъект();
зачем, если ты уже создал новый элемент, и объект у тебя уже есть?
43 SeeWorld
 
29.08.12
10:06
НовЭлЕдИзм.Владелец = НовЭл.Ссылка; Так что ли?
44 Wobland
 
29.08.12
10:07
(43) а кто-то ж говорил выше, не?
45 SeeWorld
 
29.08.12
10:09
Просто, не совсем понимаю работу ссылками, сейчас вы мне проясняете её.
46 Wobland
 
29.08.12
10:10
(45) есть адрес на конверте, а есть человек с руками, ногами и прочими свойствами
47 SeeWorld
 
29.08.12
10:22
Спасибо всем, прояснили все)