|
|
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Можно ли 1c 8.1 элемент формы "Табличное поле" напрямую связать с запросом ADODB.Recordset? Сейчас я связываю элемент формы "Табличное поле" с таблицей значений, а в таблицу значений гружу данные из запроса. А хотелось бы сразу связать "Табличное поле" с запросом. Т.е. чтобы объект ADODB.Recordset выступал источником данных для табличного поля на форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 09:27 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Нет - типы данных 1С не соответствуют типам данных остального мира. Требуется специальная процедура приведения типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 10:13 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Если вы имеете в виду типы данных (строка, число дата) то ничего приводить не надо Например вот такая штука ЭлементыФормы.Период.СписокВыбора.Добавить(Пар,ПредставлениеПериода(Запрос.Fields("DAT").Value,КонецМесяца(Запрос.Fields("DAT").Value))); прекрасно работает. Единственная проблема была в седьмой версии, с дробным числом. Там Запрос судя по всему возвращал число в виде 9.18 а 1С надо было 9,18 Я приводил число к втроке с точкой, еще в SQL запросе. Было несколько геморойно, но все равно работало. В самой 1Ске ни какого преведения типов данных я не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 12:42 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Вы просто легко отделались :) Вот функция соответствия типов ADO и 1С Function TypeTo(Num) if Num = 20 then return Новый ОписаниеТипов("Число"); endif; if Num = 128 then return Новый ОписаниеТипов("Булево"); endif; if Num = 8 then return Новый ОписаниеТипов("Строка"); endif; if Num = 136 then return Новый ОписаниеТипов("Строка"); endif; if Num = 129 then return Новый ОписаниеТипов("Строка"); endif; if Num = 7 then return Новый ОписаниеТипов("Дата"); endif; if Num = 133 then return Новый ОписаниеТипов("Дата"); endif; if Num = 134 then return Новый ОписаниеТипов("Дата"); endif; if Num = 135 then return Новый ОписаниеТипов("Дата"); endif; if Num = 14 then return Новый ОписаниеТипов("Число"); endif; if Num = 5 then return Новый ОписаниеТипов("Число"); endif; if Num = 0 then return Новый ОписаниеТипов("Строка"); endif; //adEmpty 0 no value if Num = 3 then return Новый ОписаниеТипов("Число"); endif; //adInteger 3 4-byte signed integer if Num = 205 then return Новый ОписаниеТипов("Строка"); endif; //adLongVarBinary 205 Long binary value if Num = 201 then return Новый ОписаниеТипов("Строка"); endif; //adLongVarChar 201 Long string value if Num = 203 then return Новый ОписаниеТипов("Строка"); endif; //adLongVarWChar 203 Long Null-terminates string value if Num = 131 then return Новый ОписаниеТипов("Число"); endif; //adNumeric 131 Number with fixed precision and scale if Num = 5 then return Новый ОписаниеТипов("Число"); endif; if Num = 4 then return Новый ОписаниеТипов("Число"); endif; //adSingle 4 Single-precision floating-point value if Num = 2 then return Новый ОписаниеТипов("Число"); endif; //adSmallInt 2 2-byte signed integer if Num = 16 then return Новый ОписаниеТипов("Число"); endif; //adTinyInt 16 1-byte signed integer if Num = 21 then return Новый ОписаниеТипов("Число"); endif; //adUnsignedBigInt 21 8-byte unsigned integer if Num = 19 then return Новый ОписаниеТипов("Число"); endif; //adUnsignedInt 19 4-byte unsigned integer if Num = 18 then return Новый ОписаниеТипов("Число"); endif; //adUnsignedSmallInt 18 2-byte unsigned integer if Num = 17 then return Новый ОписаниеТипов("Число"); endif; //adUnsignedTinyInt 17 1-byte unsigned integer if Num = 132 then return Новый ОписаниеТипов("Число"); endif; //adUserDefined 132 User-defined variable if Num = 204 then return Новый ОписаниеТипов("Строка"); endif; //adVarBinary 204 Binary value if Num = 200 then return Новый ОписаниеТипов("Строка"); endif; //adVarChar 200 String if Num = 12 then return Новый ОписаниеТипов("Число"); endif; //adVariant 12 Automation variant if Num = 139 then return Новый ОписаниеТипов("Число"); endif; //adVarNumeric 139 Variable width exact numeric with signed scale if Num = 202 then return Новый ОписаниеТипов("Строка"); endif; //adVarWChar 202 Null-terminated Unicode character string if Num = 130 then return Новый ОписаниеТипов("Строка"); endif; //adWChar 130 if Num = 200 then return Новый ОписаниеТипов("Строка"); endif; return Новый ОписаниеТипов("Строка"); EndFunction если будете работать со ссылками, то преобразуйте их hex строки и соответственно GUID в них же но все это через ....опу. Обновить ADO recordset бинарными данными без внешних DLL не сможете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 18:13 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
oleg_shishkinВы просто легко отделались :) Вот функция соответствия типов ADO и 1С Function TypeTo(Num) ........ ....... EndFunction если будете работать со ссылками, то преобразуйте их hex строки и соответственно GUID в них же но все это через ....опу. Обновить ADO recordset бинарными данными без внешних DLL не сможете. Пока с приведением типов заморачиваться необходимости не было. Вопрос был про другое На есть внешняя обработка. Она подключается к базе базы fireberd. На форме обработки есть табличное поле. В него надо вывести данные из базы. Но непосредственно в само табличное поле вывести нельзя, нужна еще Таблца значений. Получается цепочка: Запрос -> ТаблицаЗначений -> ТабличноеПоле; Выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2010, 06:18 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Вы немного путаете. Табличное поле никак не связано с данными. Это интерфейсный элемент для редактирования текста в ячейках. С данными связана таблица значений, в которой и прописывается связь. Для обновления данных необходима ссылка на объект Метаданных, т.к. все обновления у 1С идут через Объект.Записать() - а его у вас никогда не будет. Если вам хочется обновлять данные непосредственно в sql таблицах - могу дать свои исходники Общей Формы Списка, построенной на запросах ADO, в которой можно редактировать и добавлять данные находящиеся в таблицах sql. Но она немного недоделана (По мелочи - у меня есть более отработанная версия для запросов 1С). Вот для 1С, для ADO у меня более ранняя версия http://infostart.ru/public/77978/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2010, 22:45 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
oleg_shishkin, Cgfcb,j ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2010, 17:24 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
oleg_shishkin, Спасибо скачал вот это 1Cv8.dt это оно? Как его открыть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2010, 17:57 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
Создаешь новую информационную БД, заходишь в нее далее в меню Администрирование\Загрузить информационную базу ... но это версия для запросов 1с, если хочется - кидай мыло - я кину общие функции работы с ADO и в модуле соответствующие функции просто заменишь на ADOшные и немного подкорректируешь их под себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2010, 19:33 |
|
||
|
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 04:11 |
|
||
|
|

start [/forum/topic.php?fid=28&gotonew=1&tid=1521822]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 406ms |

| 0 / 0 |
