Имя: Пароль:
1C
1С v8
Создать и заполнить документ данными из массива
, , ,
0 wrxsti
 
30.05.19
12:24
В массиве лежит строка из БД MSSQL. Данными из нее я пытаюсь заполнить новый документ.

Для Каждого ЭлементМассива из Массив Цикл        
        Если ЭлементМассива.Id1C = "0" Тогда
            ДокументОбъект = Документы.Док1.СоздатьДокумент();
            ДокументОбъект.TEST = ЭлементМассива.TestName;            
            ДокументОбъект.Дата = ТекущаяДата();
            ДокументОбъект.Записать();              
        КонецЕсли;
    КонецЦикла;
Проблема в том что, значение из "TestName" не попадает в реквизит "TEST". Тип у реквизита "TEST" содержит ссылку на справочник, и я так понимаю проблема именно в этом.

Скажите что я делаю не так и как это можно сделать правильно?
1 Галахад
 
гуру
30.05.19
12:41
Тест = ЭлементМассива.TestName;
ТестСсылка = Справочники.Тест.НайтиПоНаименованию(Тест);
Если НЕ ТестСсылка = Справочники.Тест.ПустаяСсылка Тогда
ТестСсылка = Справочники.Тест.СоздатьЭлемент();
ТестСсылка.Наименование = Тест;
ТестСсылка.Записать()

ДокументОбъект.TEST = ТестСсылка;
2 wrxsti
 
30.05.19
13:22
Спасибо большое, получилось! Не подскажите еще один вопрос?
В этом же коде, хочу заполнить табличную часть документа. Хочу чтобы данные записывались в одну строку, но так как делаю я, создается в табличной части 2 строки.

ДокументОбъект.Курсы.Добавить().Английский = ЭлементМассива.EngName;
ДокументОбъект.Курсы.Добавить().Испанский = ЭлементМассива.SpainName;
3 Zmich
 
30.05.19
13:28
(2).
Стр = ДокументОбъект.Курсы.Добавить();
Стр.Английский = ЭлементМассива.EngName;
Стр.Испанский = ЭлементМассива.SpainName;
4 wrxsti
 
30.05.19
14:23
Спасибо большое!
5 wrxsti
 
30.05.19
17:37
Последний вопрос, хочу помимо обычных данных, вставить дату.
Делаю так:

Стр = ДокументОбъект.Курсы.Добавить();
Стр.Дата = ЭлементМассива.DateAdd;

Но Стр.Дата вместо нормальных дата и время, выдает "01.01.0001 0:00:00" - пустую дату. Почему и как это можно исправить?
6 vicof
 
30.05.19
17:40
(5) У тебя дата строкового типа, видимо, в ЭлементМассива
7 wrxsti
 
30.05.19
17:58
DateAdd в базе, откуда я ее забираю, имеет тип datetime
8 wrxsti
 
30.05.19
20:39
Правда данные из MSSQL я засовываю в JSON, после чего присваиваю к массиву. Читаю, и есть подозрение что JSON дату плохо воспринимает, так ли это?
9 Мимохожий Однако
 
30.05.19
21:19
(8) ОФФ: "Три желания закончились" )
Научись пользоваться отладчиком, через который можно увидеть, передаваемые значения и тип значения. Это сэкономит массу своего и чужого времени.
10 wrxsti
 
30.05.19
21:27
(9) Мда, порой все лежит на поверхности, в отладчике дата лежащая в массиве, строкового типа.