Имя: Пароль:
1C
1С v8
Как писать напрямую в таблицы 1С
0 sergdi
 
13.03.12
18:00
SQL версия 8.2 Есть ли такая возможность - писать напрямую в таблицы 1С ? Где можно посмотреть ? Если делать через COM соединение то иногда транзакция длится в 1С очень долго, во внешней программе транзакция отменяется по таймауту и происходит рассогласование данных.
1 Господин ПЖ
 
13.03.12
18:01
лучше не рисковать...
2 rotting
 
13.03.12
18:02
(1) от все так говорят, может кто-то напишет как это сделать???
3 Fragster
 
гуру
13.03.12
18:02
insert into _Reference34...
4 Fragster
 
гуру
13.03.12
18:02
а вообще - зачем ты так делаешь? не проще ли посмотреть, почему в 1с "очень долго"?
5 Serginio1
 
13.03.12
18:02
Смотри ПолучитьСтруктуруХраненияБазыДанных
6 ptrtss
 
13.03.12
18:03
Дык долго длится оно наверное не просто так, а вычисляет что-то, думает
7 Stim
 
13.03.12
18:03
автомобиль медленно едет. как крутить двигатель напрямую, через педали?
8 Господин ПЖ
 
13.03.12
18:03
(2) Insert... читайте BOL там все есть
9 ptrtss
 
13.03.12
18:03
>> Смотри ПолучитьСтруктуруХраненияБазыДанных
Да, глянь, так ты быстрее выбросишь эту мысль из головы
10 ботаникус
 
13.03.12
18:04
проблема будет сгенерировать первичный ключ (читай ссылку). или не проблема?
11 Fragster
 
гуру
13.03.12
18:05
(10) а в чем проблема?склеить тип и попереставлять буковки в типовом GUID?
12 КМ155
 
13.03.12
18:05
(2) что-то мешает запустить профайлер и увидеть как ?
13 sergdi
 
13.03.12
18:11
(4) Почему долго неясно. Ошибка редко возникает. А кто-нибудь делал реально напрямую.
14 ботаникус
 
13.03.12
18:13
(11) а как попереставлять, чтобы не попасть в существующий?
15 ComPAS
 
13.03.12
18:15
(14) использовать стандартные средства SQL

select NEWID()
Создает уникальное значение типа uniqueidentifier.
16 Fragster
 
гуру
13.03.12
18:16
(14) делаешь правильный гуид средствами языка, в котором висишь, проверяешь, есть ли такой,, если есть - делаешь следующий и т.д. средства для генерации гуида есть почти везде
17 Serginio1
 
13.03.12
18:18
(13) Реально делаю но на регистры сведений справочники
18 Serginio1
 
13.03.12
18:19
19 Fragster
 
гуру
13.03.12
18:20
напрямую читал только, ибо нефиг. прямая запись не спасет от того, что в БД есть свои "триггеры", т.е. алгоритмы, вызываемые при записи, и при прямой записи они не будут вызваны, соответственно, привести может к труднообъяснимым глюкам
20 Serginio1
 
13.03.12
18:21
21 ComPAS
 
13.03.12
18:23
(19) чтобы фигня всякая не писалась тут, о которой ты понятия не имеешь, и не вводить в заблуждение остальных, запусти профайлер на базу и посмотри что происходит со скулем при любых твоих действиях с базой
22 Fragster
 
гуру
13.03.12
18:28
(21) все возможные случаи ты никогда не рассмотришь. Например в конфигурации при ком соединении задается параметр сеанса, который проверяется в ПриЗаписи и влияет на результат... или, например, дата запрета редактирования, которая при прямой записи документа/регистра не будет проверяться и т.п.
23 NcSteel
 
13.03.12
18:29
(0) Так нельзя делать !
24 ComPAS
 
13.03.12
18:31
(22) отделяй котлеты от мух. если ты пишешь напрямую в БД, то будь любезен и рамки очерти своих действий.
25 Fragster
 
гуру
13.03.12
18:36
(24) в общем случае невозможно подготовить и проиграть все тест кейсы, по этому я против написания напрямую в БД, тем более, что преимуществ по скорости, если копипастить запрос из профайлера, не будет (издержки на ком прослойку незначительны, как правило)
26 ComPAS
 
13.03.12
18:40
(25) если нет желания, то согласен. у нормального человека его и быть не должно, иначе бы он работал в отделе разработки 1С :)
а выигрыш по скорости и нагрузке будет обязательно, если оптимизировать под свою конкретную задачу, которая, видимо, возникла у (0) не на пустом месте. в некоторых, очень частных случаях, это оправдано и очень редко - единственно приемлимый вариант.

и вообще, по жизни - всё возможно.
27 NcSteel
 
13.03.12
18:41
(26) Не видел еще задач где требуется такая оптимизация !
28 МихаилМ
 
13.03.12
18:42
только учтите за историю существования упп 1.2

менялись 3 раза имена таблиц и раз 20 имена колонок

проще грамотно написать обмен: минимизировать блокировки, уменьшить размер записываемых данных в 1 транзакции , запись без валидации , запись раздельно фактов и артифактов,
запись в буфер с последующей обработкой.

нестандартный доступ  - крайняя мера. тк возратают риски -> стоимость владения

есть куча методов в рамках платформы.

так что сначала примените методы ускорения

опять же, если Вас стремительно переедет каток, кто будет поддерживать сей механизм.
29 NcSteel
 
13.03.12
18:43
(27) Обычно в сторону прямых запросов идут либо авантюристы , либо дурачье. Методов оптимизации достаточно и без прямых запросов.
30 France
 
13.03.12
18:43
ващет, наскоко помню,  в последних версиях 1Сы есть механизм доступа до любых баз...
31 ComPAS
 
13.03.12
18:44
(27) не будь так категоричен. если ты не видел ёжика, это не значит, что его не существует.
32 France
 
13.03.12
18:45
(29) если статистику поднимем, то поймем что большая часть адекватных специалистов в й с являюся дурачьем... либо авантюристами..
33 NcSteel
 
13.03.12
18:45
(31) Видел очень многое. И по Миллион документов в месяц. И базы по 500 гигов.
34 NcSteel
 
13.03.12
18:46
(32) Сколько видел грамотных спецов (топ уровня) они не являлись не такие.
35 NcSteel
 
13.03.12
18:46
(30) ТОлько на чтение. Причем читать базы 1с запрещено лицензией
36 Fragster
 
гуру
13.03.12
18:49
(35) то, что лицензия противоречит ГК, 1с не смущает?
37 France
 
13.03.12
18:49
(54) чо?
38 NcSteel
 
13.03.12
18:51
(37) Перевод:
(32) Сколько видел грамотных спецов (топ уровня) они с головой дружен и избегают авантюр.
39 NcSteel
 
13.03.12
18:52
(36) Я не юрист, но с лицензией покупая 1с соглашаешься. Так что будь любезен.
40 n koretsky
 
13.03.12
18:58
бэкап сделал?
41 Feanor
 
13.03.12
19:00
(40) бэкапы для трусов!
42 Gamm
 
13.03.12
19:00
(27) Постоянно использую прямые запросы к БД для копирования, удаления данных.
Без этого первоначальное создание образа занимает сутки вместо 10 минут. Пожалуй готов быть авантюристом и дурачьем с такими результатами.
(39) Лицензия 1С запрещает доступ без использования платформы, но можно запускать стандартные механизмы ADO из под сеанса 1С - тогда с лицензией все в порядке.
43 NcSteel
 
13.03.12
19:02
(42) Образ создается средствами скуля - путем копирования базы . Причем тут прямые запросы не понятно .
44 NcSteel
 
13.03.12
19:03
(42) 2. подключаться через ADO к база 1с тоже запрещено лицензией. Данная тема была хорошо обсосана на партнерском форуме неким Гилевым.
45 Serginio1
 
13.03.12
19:05
(27) Ну ну. Ты сильно заблуждаешься. Когда нужно обновление миллиона записей одновременно стандартные средства работают очень долго. Вообще большой минус в 1С при работе с набором регистров то что не делается Merge а сначало удаление а затем запись. И затраты на создание индексов и удаление сильно все тормозит. А по одной записи обновлять ооочень долго.
46 Serg_1960
 
13.03.12
19:43
Я делал однажды. Не от хорошей жизни пришлось. Может найду сейчас эту ветку...
47 sda553
 
13.03.12
19:53
(0) мне пришлось научиться. Когда вначале были базы с одинаковым справочником товаров в нескольких филиалах, а потом вдруг решили делать обмен документами и понадобилось этот справочник объединить за всю историю
48 Irbis
 
13.03.12
19:54
А как писать криво?
49 sda553
 
13.03.12
19:54
(48) В о
т
Т ак
               как
          то!
50 Serg_1960
 
13.03.12
20:01
51 aleks-id
 
13.03.12
20:09
use my_v8_base
go
drop all
go
52 Вопросы Задающий
 
13.03.12
20:15
Добрый вечер. Есть отчет в СКД. Как мне вывести доп. колонку с данными в него, которых нет в запросе. Например, есть сумма, также итог по колонке с этой суммой. Мне требуется выдать еще одну колонку, равную итоговой колонке, но результат делится на количество колонок запроса. Причем разместить эту колонку мне нужно не как самую последнюю, а как вторую, то есть следующую сразу за итоговой.
53 Вопросы Задающий
 
13.03.12
20:15
сорри, не туда
54 NcSteel
 
13.03.12
21:10
(45) Переписывал 15 миллионов  записей и прошло все без особых проблем.
55 Адинэснег
 
13.03.12
21:10
Пью кофе утром. Не просыпаюсь. Как ставить его в вену? В каких пропорциях и с чем его разводить? Поделитесь опытом
56 NcSteel
 
13.03.12
21:18
(55) Без сахара пей.
57 Serginio1
 
14.03.12
10:21
(55) И за сколько. У меня 1 миллион при апдейтах порядка 2-4 минут. Если много инсертов и делетэ то от 10 до 30. И сколько же ты свои 15 миллионов обновлял средствами 1с?
58 ComPAS
 
14.03.12
10:31
(56) видимо, весьма крут))
в таком случае должен знать, что такое булк инсерт (который просто отсутствует в 1С) и каким образом эффективно (ключевое слово - эффективно) решать задачи онлайн-репликации в базу 1С по плохим каналам связи потоковых данных с распределённой сети источников, например, с оборудования. ну, и, соответственно, одно из требований - использование модели полного бэкапирования базы sql (наверняка знаешь в чём её отличие?). ты же решал такие нетиповые задачи интеграции и кастомизации? :)

зы: "как-нибудь" мы все умеем :)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший