Имя: Пароль:
1C
1С v8
Обращение к полю таблицы другого документ в SQL запросе
0 catherineskoch
 
11.12.19
19:43
И так, есть БД в MS SQL Server, в 1С есть документ "Заказ на производство"
есть обработка АРМ диспетчера, в которой есть запрос
ТекстТекущейИнструкции = "INSERT INTO BROK1.dbo.DOCUMENTS ([D_ID], [D_DATE])
VALUES ("+Документы.итс_ЗаказНаПроизводство.Номер+", "+Документы.итс_ЗаказНаПроизводство.Дата+")";

И ошибка при выполнении, что поле объекта "номер" не обнаружено
Как к нему правильно обратиться? или в чем может быть проблема?
1 ДенисЧ
 
11.12.19
19:48
"Документы.итс_ЗаказНаПроизводство.Номер"

Если это реальный код, то проблема в ДНК...
2 catherineskoch
 
11.12.19
19:51
(1) да-да, спасибо за помощь
уверен, что вам на первых порах так же помогали /:
3 ДенисЧ
 
11.12.19
19:52
(2) Когда я начинал, таких умных, как я, было очень мало, и они очень дорого брали за помощь...
4 catherineskoch
 
11.12.19
19:52
(3) Если Вам жалко дать совет или помочь, то, пожалуйста, не флудите
5 Ёпрст
 
11.12.19
20:17
(0) Даже не знаю, как тебе сказать то, чтоб не обидеть.

Короче, на форму своего изделия положи реквизит, обзови его МойДокумент, тип выбери как ДокументССылка.итс_ЗаказНаПроизводство,
далее в коде уже

+МойДокумент.Номер+ ......МойДокумент.Дата

И не забудь перед выполнением выбрать нужный документ в реквизит
6 Ёпрст
 
11.12.19
20:18
А так, вообще не ясно, кто вам даёт писать запросы к SQL, когда у вас нет базовых примитивных знаний в самой 1с-ине.

Не фузиновец, случаем ?
7 vde69
 
11.12.19
20:24
1. в 1с нет оператора "INSERT INTO" в запросе
2. Документы - это ВСЕ документы, а номер есть у Каждого документа
3. не плохо-бы если ты озвучишь где собрался выполнять код
4. не груби старшим
8 Ёпрст
 
11.12.19
20:25
(7) это она, вроде как и...почитай предыдущие её темы
9 Bro
 
11.12.19
20:27
(6) кругом враги. Ой то есть фузиновцы.
10 Ёпрст
 
11.12.19
20:28
(9) А ты думал, в сказку попал ? Фузина, это теперь имя нарицательное, как Ливигстар, Иванов Иван, Света Семененко
11 Ёпрст
 
11.12.19
20:29
)
12 Престарелый Заяц
 
11.12.19
20:30
(4) Документы.итс_ЗаказНаПроизводство.Номер - вместо этого подставь что то реальное.
13 catherineskoch
 
11.12.19
21:07
Запрос = Новый Запрос ( "ВЫБРАТЬ Дата, Номер из Документ.итс_ЗаказНаПроизводство");
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    Номер = Выборка.Номер;
    Дата = Выборка.Дата;
    
    ТекстТекущейИнструкции = "INSERT INTO BROK1.dbo.DOCUMENTS ([D_ID], [D_DATE]) VALUES ("+Номер+", "+Дата+")";
    Команда.CommandText = ТекстТекущейИнструкции;
    ЗаписиSQL = Команда.Execute();


я сделала вот и  точка останова показывает, что VALUE нужное

Но столкнулась с такой проблемой, что дата в 1С и в MS SQL Server выглядит по-разному и выходит ошибка, когда пытаюсь записать данные
14 shuhard
 
11.12.19
21:10
(13) [Но столкнулась с такой проблемой, что дата в 1С и в MS SQL Server выглядит по-разному]
мы курсе, так всегда было
15 mikecool
 
11.12.19
21:11
(13) да, дату для 1С надо конвертить, может поможет XMLСтрока, а может - ручная сборка
16 shuhard
 
11.12.19
21:14
(15) окстись
либо елками (#) окаймить, либо использовать метод ADODB рекордсета

примеров море и ТС чудовищно ленив
17 Ёпрст
 
11.12.19
21:15
(13) а вам точно нужен первый попавшийся документ из выборки ?
ЗЫ: формат пользуй + '' не забывай указывать для даты в инсерте
18 Ёпрст
 
11.12.19
21:15
(16) это она
19 catherineskoch
 
11.12.19
21:18
(17)  >а вам точно нужен первый попавшийся документ из выборки?
хм, тестовый документ был один, собсна об этом я и не подумала
черт.
20 catherineskoch
 
11.12.19
21:20
(17) нужный-то документ будет выбираться, но проблема, как выгрузить данные только для выбранного документа - это уже следующий вопрос
пока что буду думать над датой
21 vde69
 
11.12.19
21:33
(20) ты хоть понимаешь, что инсерт - добавляет строку в таблицу а не выбирает ее ?

тебе точно надо ДОБАВЛЯТЬ ЗАПИСЬ в таблицу документов без добавления записей в другие связанные таблицы?

ты не боишся, что бfнально убьешь базу?
22 vde69
 
11.12.19
21:36
(21) +

кроме всего задумайся, про то, что ты пишешь без первичного ключа (а он в 99% обязателен).
23 catherineskoch
 
11.12.19
21:50
(20), (21) да, точно нужно добавлять строку
а про нормализацию БД можно мне не объяснять
24 runoff_runoff
 
11.12.19
21:55
для добавления и изменения объектов (записей) в базе 1С используется объектная модель и только она
а для чтения может использоваться также и табличная модель
25 mikecool
 
11.12.19
22:26
все парни, пошли на кухню суп варить
26 catherineskoch
 
11.12.19
22:48
(25) о боже, какая шутка
27 H A D G E H O G s
 
11.12.19
23:08
Вы все еще кипятите?
28 Ёпрст
 
11.12.19
23:59
(20) че там думать то ?
,'"+Формат(Дата,"ДЛФ=Д")+"')";
29 Ёпрст
 
12.12.19
00:13
для верности, можешь так воткнуть (мало ли, какие там настойи скуля или рег настройки у вас)

,Cast('"+Формат(Дата,"ДЛФ=Д")+"' as datetime))";
30 Престарелый Заяц
 
12.12.19
01:29
(22) С чего ты взял, что пишет без первичного ключа?
31 Конструктор1С
 
12.12.19
07:15
А нумерация у документа непериодическая? Обычно документы нумеруются в пределах года, со следующего года нумерация начинается с чистого листа. Если так, то номер в качестве id не зайдет
32 Конструктор1С
 
12.12.19
07:20
И это, не надо городить такие огороды. Используй XMLBulk, например
33 shuhard
 
12.12.19
07:22
(32) бред
34 Конструктор1С
 
12.12.19
07:25
(32) что бред? Грузить в sql данные подходящими для этого средставами?
35 Конструктор1С
 
12.12.19
07:26
(34) -> (33)
36 catherineskoch
 
12.12.19
15:39
(29) чет не робит
сделала вот так

'"+Формат(Дата,"ДФ=MM.dd.yyyy")+"'

работает