Имя: Пароль:
1C
1С v8
Не записывается элемент
0 Валидатор
 
06.12.12
16:02
При создании новой номенклатуры не могу создать элемент:
НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
   
   НоменклатураОбъект.Наименование = Наименование;
   НоменклатураОбъект.НаименованиеПолное = Наименование;
   НоменклатураОбъект.Родитель = Группа;
   НоменклатураОбъект.Артикул = Артикул;
   НоменклатураОбъект.ПолныйАртикул = ПолныйАртикул;
   НоменклатураОбъект.СтранаПроисхождения.наименование = Страна;

на последней строке он выбивает ошибку, пишет поле недоступно для записи, как быть?
1 shuhard
 
06.12.12
16:03
(0) [как быть]
читать книжки
долго
2 butterbean
 
06.12.12
16:03
НоменклатураОбъект.СтранаПроисхождения= Страна;
3 Валидатор
 
06.12.12
16:04
(2) в таком случае Страна происхождения это справочник, а страна имеет тип строка, и в Странапроисхождения не попадут данные страна, пробовал
4 Apokalipsec
 
06.12.12
16:05
(3) смотри (1) и прочитай ещё раз свой пост, начиная со "страна происхождения - это ......"
5 Heckfy
 
06.12.12
16:06
(3) "в таком случае Страна происхождения это справочник" - ну так и подставляй туда ссылку на элемент справочника.
6 unregistered
 
06.12.12
16:07
Что-то типа:

НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НоменклатураОбъект.Наименование = Наименование;
НоменклатураОбъект.НаименованиеПолное = Наименование;
НоменклатураОбъект.Родитель = Группа;
НоменклатураОбъект.Артикул = Артикул;
НоменклатураОбъект.ПолныйАртикул = ПолныйАртикул;
СтранаСсылка = Справочники.Страны.НайтиПоНаименованию(Страна);
Если СтранаСсылка.Пустая() Тогда
  СтранаОбъект = Справочники.Страны.СоздатьЭлемент();
  СтранаОбъект.Наименование = Страна;
  СтранаОбъект.Записать();
  СтранаСсылка = СтранаОбъект.Ссылка;
КонецЕсли;
НоменклатураОбъект.СтранаПроисхождения = СтранаСсылка;
НоменклатураОбъект.Записать();
7 Валидатор
 
06.12.12
16:08
(4) отладчик показывает, что у СтранаПроисхождения Тип справочник ссылка, а у Страна тип строка
8 Heckfy
 
06.12.12
16:08
(7) в (6) практически готовое решение. ::)
9 Проггер
 
06.12.12
16:10
Facepalm
10 Heckfy
 
06.12.12
16:11
ОФФ (9) Влг - это Волгоград или Вологда? :)
11 Проггер
 
06.12.12
16:14
(10) Волгоград
12 Валидатор
 
06.12.12
16:26
{Форма.Форма.Форма(220)}: Ошибка при вызове метода контекста (Записать)
       СтранаОбъект.Записать();
по причине:
Значение поля "Код" не уникально
как с кодом быть?)
13 Валидатор
 
06.12.12
16:27
он же автоматически должен ставиться не?
14 Fish
 
06.12.12
16:28
(13) Если галочка "Автонумерация" стоит, то да.
15 Валидатор
 
06.12.12
16:29
а при программном создании получается надо задать эту автонумерацию?
16 unregistered
 
06.12.12
16:29
(12) >> как с кодом быть?

Присвоить правильный код?...

Если речь идет о справочнике КлассифкаторСтранМира, то в типовых там длина кода 3 знака. Возможно, что у вас в справочнике уже есть элемент с кодом "999". Тогда при попытке получить следующий код платформа выдает ошибку.
17 Проггер
 
06.12.12
16:32
а еще лучше воспользоваться подбором из ОКСМ
18 Валидатор
 
06.12.12
16:32
(16) просто у меня нет кода, и нужно чтобы он присваился автоматически, и не понятно как так сделать программно
19 unregistered
 
06.12.12
16:32
(13) В идеале код берется из ОКСМ (Общероссийский классификатор стран мира).

Ты уверен, что у тебя загружен классификатор и то наименование, по которому ты пытаешься найти, правильное?
20 ДайтеДайте Сказать
 
06.12.12
16:33
>  НоменклатураОбъект.СтранаПроисхождения.наименование = Страна;

это жестко
21 Fish
 
06.12.12
16:33
(18) Посмотри код в ОКСМ.
22 unregistered
 
06.12.12
16:34
(18) Загрузи ОКСМ в базу. Потом проверь, что те наименования по которым ты ищешь, указаны правильно.
23 Валидатор
 
06.12.12
16:34
бл, вот я тупень, все нормально, исправил недочет свой) просто уже был создан элемент с таким названием, теперь надо с гтд разобратсья)
24 Heckfy
 
06.12.12
16:35
(23) Ну ты это, пиши если что..... :)
25 Валидатор
 
06.12.12
16:36
с ГТД пробелмы опять где то походу я туплю
{Форма.Форма.Форма(225)}: Значение не является значением объектного типа (Пустая)
   Если ГТДссылка.Пустая() Тогда
26 Валидатор
 
06.12.12
16:36
ГТДссылка = Справочники.НомераГТД.НайтиПоНаименованию(НомерГТД);
   Если ГТДссылка.Пустая() Тогда
       ГТДОбъект = Справочники.НомераГТД.СоздатьЭлемент();
       ГТДОбъект.Код = НомерГТД;
       ГТДОбъект.Записать();
       ГТДссылка = ГТДОбъект.Ссылка;
   КонецЕсли;
   НоменклатураОбъект.НомерГТД= ГТДссылка;
27 Валидатор
 
06.12.12
16:37
Справочники.НомераГТД.НайтиПоНаименованию(НомерГТД) - Неопределно, вот походу в чем проблема
28 butterbean
 
06.12.12
16:37
ищешь по наименованию, а пишешь в поле Код... непорядок
29 Валидатор
 
06.12.12
16:38
точно) понял уже)
30 Валидатор
 
06.12.12
16:40
спасибо всем
31 Валидатор
 
06.12.12
17:21
Диалог:
- Вот я вордовский файл экселем открываю, что я делаю не так?
- Открываете вордовский файл экселем
- Ааа... понятно. Спасибо. (с) Баш