Имя: Пароль:
1C
1С v8
Помогите ПолучитьОбъект (ошибка Элемент не выбран!)
0 Andrew_Best
 
28.12.14
18:13
Обработка. Заношу цены в документ УстановкаЦенНоменклатуры
Док = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001");
Строка = Док.Товары.Добавить();
Строка.Номенклатура = НовыйЭлемент;
Строка.Валюта = Константы.ВалютаРегламентированногоУчета;
Строка.ЕдиницаИзмерения = НовыйЭлемент.БазоваяЕдиницаИзмерения;

Не получается сохранить документ.
Сохраняю
Док.Ссылка().ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
Док.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
Док.Записать();

У всех 3 вариантах ошибка.
1 RomanYS
 
28.12.14
18:20
НайтиПоНомеру - возвращает ссылку, именно здесь надо ПолучитьОбъект:
....НайтиПоНомеру("...").ПолучитьОбъект();

а дальше просто Док.Записать()
2 vicof
 
28.12.14
18:21
(1) Не найдет по номеру и скажет, что метод объекта не обнаружен.
3 Popkorm
 
28.12.14
18:42
(0) посмотри после как нашел документ,он скорее уже обьект.
4 alle68
 
28.12.14
18:51
(2) Скорее, будет сообщение из заголовка.
А пустую ссылку автор пусть сам проверяет.
(3) Он не найден ещё.
5 Andrew_Best
 
28.12.14
18:56
Док = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001")

Если отладчиком смотрю на Док = пустая ссылка типа Документ.УстановкаЦенНоменклатуры

Если смотрю на Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001") Получаю желаемое
6 alle68
 
28.12.14
19:04
(5) "Док" замени на "_Док".
7 Andrew_Best
 
28.12.14
19:08
5 - А почему так? Возможно Док гдето и используется. Спасибо)
8 Defender aka LINN
 
28.12.14
20:10
Док.Ссылка().ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
Док.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);

Генитально.
9 hhhh
 
28.12.14
21:43
(7) у НайтиПоНомеру 2 параметра надо указывать.
10 DrZombi
 
гуру
29.12.14
06:43
(0) >>> Док.Ссылка().ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);

Попробуй сделать по нормальному:

ДокСсыль = Док.Ссылка();
ДокОбъект = ДокСсыль.ПолучитьОбъект();
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
11 DrZombi
 
гуру
29.12.14
06:44
+(0) >>> У всех 3 вариантах ошибка.

Жесть, вам еще не предлагали почитать 4-5 книжек от 1С, по описанию языка программирования 1С? :)
...программист аникейщик...
12 chelentano
 
29.12.14
07:04
Док = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001");
Строка = Док.Товары.Добавить();

уже ошибка, дальше читать не стал
13 cube033
 
29.12.14
08:05
//Получим ссылку на документ
ДокСсылка = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001");
// Имея ссылку на документ ничего в нём изменить нельзя. (Нельзя переставить мебель в квартире, зная только её адрес)
Если ДокСсылка = Документы.УстановкаЦенНоменклатуры.ПустаяСсылка() Тогда
    Возврат;  //Печалька - нет документа с таким номером
Иначе
    ДокОбъект = ДокСсылка.ПолучитьОбъект(); //Получим объект - только в нем можно добавлять данные
КонецЕсли;
Строка = ДокОбъект .Товары.Добавить();
Строка.Номенклатура = НовыйЭлемент;
Строка.Валюта = Константы.ВалютаРегламентированногоУчета;
Строка.ЕдиницаИзмерения = НовыйЭлемент.БазоваяЕдиницаИзмерения;
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение //Проведение вещь требовательная, если не получилось можно и документ потерять
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецИсключения;
14 PaulBC
 
29.12.14
08:13
(13) >> Если ДокСсылка = Документы.УстановкаЦенНоменклатуры.ПустаяСсылка() Тогда
Печалька - НайтиПоНомеру возвращает ссылку либо Неопределено...
15 cube033
 
29.12.14
08:40
(14) Возвращаемое значение:

Тип: ДокументСсылка.<Имя документа>; Неопределено.
Ссылка на найденный документ. Если документ не найден, возвращается пустая ссылка на документ.
Если номер не задан (длина = 0), то будет возвращено Неопределено.

Я думаю - это не наш случай
16 hhhh
 
29.12.14
09:07
(15)  детский сад??

ДокСсылка = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000000001", ДатаКакаяТо);
17 cube033
 
29.12.14
09:15
(16) в чем детский сад?
18 palladyi
 
29.12.14
09:19
(0) так в итоге разобрался?
19 cube033
 
29.12.14
09:44
(16) Не совсем понимаю - что не так
<ДатаИнтервала> (необязательный)
Тип: Дата.
Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.

Мы не знаем итоговой задачи - поэтому не понятно нужен ли второй реквизит.
20 h_miha
 
29.12.14
10:06
(0) вангую появление новых тем от ТС   "Не устанавливается валюта!",  "Не устанавливается единица измерения!"     проблемные строки :   Строка.Валюта = Константы.ВалютаРегламентированногоУчета  
Строка.ЕдиницаИзмерения = НовыйЭлемент.БазоваяЕдиницаИзмерения
21 hhhh
 
29.12.14
10:59
(19) период уникальности у документа уберите. У ваас наверно там период уникальности указан год. ТОгда дата будет не нужна.

А детский сад, потому что миллион раз уже было про НайтиПоНомеру. Уже не смешно говорить, что дата не нужна.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан