powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Можно ли связать "Табличное поле" с запросом ADODB.Recordset
11 сообщений из 11, страница 1 из 1
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36953326
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли 1c 8.1 элемент формы "Табличное поле" напрямую связать с запросом ADODB.Recordset?
Сейчас я связываю элемент формы "Табличное поле" с таблицей значений, а в таблицу значений гружу данные из запроса. А хотелось бы сразу связать "Табличное поле" с запросом.
Т.е. чтобы объект ADODB.Recordset выступал источником данных для табличного поля на форме.
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36953404
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет - типы данных 1С не соответствуют типам данных остального мира.
Требуется специальная процедура приведения типов.
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36953689
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы имеете в виду типы данных (строка, число дата) то ничего приводить не надо
Например вот такая штука
ЭлементыФормы.Период.СписокВыбора.Добавить(Пар,ПредставлениеПериода(Запрос.Fields("DAT").Value,КонецМесяца(Запрос.Fields("DAT").Value)));
прекрасно работает.
Единственная проблема была в седьмой версии, с дробным числом.
Там Запрос судя по всему возвращал число в виде 9.18 а 1С надо было 9,18
Я приводил число к втроке с точкой, еще в SQL запросе. Было несколько геморойно, но все равно работало.
В самой 1Ске ни какого преведения типов данных я не делал.
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36954404
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы просто легко отделались :)
Вот функция соответствия типов 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 не сможете.
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36955154
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
ТаблицаЖителей = Новый ТаблицаЗначений;
ТаблицаЖителей.Колонки.Добавить("ФИО");
ТаблицаЖителей.Колонки.Добавить("ДатаРождения");
ТаблицаЖителей.Колонки.Добавить("Проживание");
ТаблицаЖителей.Колонки.Добавить("Документ");

ЭлементыФормы.Жители.Значение = ТаблицаЖителей;

Запрос = КМД.Execute();
ТаблицаЖителей.Очистить();
Пока Запрос.Eof()= 0  Цикл
		
		строка = ТаблицаЖителей.Добавить();

		строка.ФИО = Запрос.Fields("NAME").Value;
		строка.ДатаРождения = Запрос.Fields("BIRTHDAY").Value;       
		строка.Проживание = Запрос.Fields("DAYS_PROJ").Value;
		строка.Документ = Запрос.Fields("F_NAME").Value;
		
		Запрос.MoveNext();
КонецЦикла;	
Запрос.Close();
Но если Табличное поле все равно берет данные из другова источника, то может быть его можно связать напрямую с запросом?
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36955900
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы немного путаете. Табличное поле никак не связано с данными. Это интерфейсный элемент для редактирования текста в ячейках. С данными связана таблица значений, в которой и прописывается связь. Для обновления данных необходима ссылка на объект Метаданных, т.к. все обновления у 1С идут через Объект.Записать() - а его у вас никогда не будет.
Если вам хочется обновлять данные непосредственно в sql таблицах - могу дать свои исходники Общей Формы Списка, построенной на запросах ADO, в которой можно редактировать и добавлять данные находящиеся в таблицах sql. Но она немного недоделана (По мелочи - у меня есть более отработанная версия для запросов 1С). Вот для 1С, для ADO у меня более ранняя версия
http://infostart.ru/public/77978/
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36957811
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_shishkin,

Cgfcb,j
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36957936
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_shishkin,

Спасибо
скачал вот это 1Cv8.dt
это оно?
Как его открыть?
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36958148
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаешь новую информационную БД, заходишь в нее
далее в меню Администрирование\Загрузить информационную базу ...
но это версия для запросов 1с, если хочется - кидай мыло - я кину общие функции работы с ADO
и в модуле соответствующие функции просто заменишь на ADOшные и немного подкорректируешь их под себя.
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36958560
RRR39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_shishkin,
Скинь пожалуйста.
rrr39@mail.ru
...
Рейтинг: 0 / 0
Можно ли связать "Табличное поле" с запросом ADODB.Recordset
    #36958594
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кинул материалы
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Можно ли связать "Табличное поле" с запросом ADODB.Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]