Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Создать и заполнить документ данными из массива

Создать и заполнить документ данными из массива
Я
   wrxsti
 
30.05.19 - 12:24
В массиве лежит строка из БД MSSQL. Данными из нее я пытаюсь заполнить новый документ.

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.