Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Как записать в справочник прямым запросом (число прочтений - 4117 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Как записать в справочник прямым запросом
16. Сентября 2010 :: 05:42
Печать  
Как записать в справочник прямым запросом?

Вопрос связан с следующей ситуацией. Я реализовал документ с табличной частью, которая хранится в дополнительной (не 1С-кой) таблице. На форме документа эта таблица отображается при помощи табличного поля. (тема: Ускорение работы документа с большой ТЗ при помощи 1С++).

Теперь хочу попробовать реализовать тоже самое, но хранить табличную часть документа в справочнике. Этот вариант вкратце обсуждался в той же теме.

Только вот непонятно как писать в справочник новые записи. Какие значения полей ROW_ID, ID, VERSTAMP подставлять в запрос?

  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #1 - 16. Сентября 2010 :: 06:03
Печать  
При добавлении новой записи:
ROW_ID - посчитается сам
VERSTAMP - 0
ID - смотри в сторону объекта SQLLock
  

1&&2&&3
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #2 - 16. Сентября 2010 :: 06:03
Печать  
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #3 - 16. Сентября 2010 :: 06:04
Печать  
И вот еще ... а вообще в поиск.
http://www.1cpp.ru/forum/YaBB.pl?num=1217317353
  
Наверх
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #4 - 16. Сентября 2010 :: 06:08
Печать  
спасибо Улыбка
помню, что вроде когда-то спрашивал, а поиском искал другими словами
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #5 - 16. Сентября 2010 :: 06:10
Печать  
leshik писал(а) 16. Сентября 2010 :: 06:03:

повторенье- мать перемать Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #6 - 16. Сентября 2010 :: 06:42
Печать  
Неужели и один элемент справочника так долго записывается, чтобы снова начать извращаться?
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #7 - 16. Сентября 2010 :: 08:39
Печать  
JohnyDeath писал(а) 16. Сентября 2010 :: 06:42:
Неужели и один элемент справочника так долго записывается, чтобы снова начать извращаться?


Какой один элемент?
Смысл в том что в табличной части документа не одна, а 30тыс. строк.
Такой документ работает ооооочень медленно.

  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #8 - 16. Сентября 2010 :: 09:04
Печать  
Так если у тебя будет на справочниках всё крутиться, то одна строка Таб Части документа будет соответствовать одному элементу справочника. Т.е. после редактирования каждой строчки, она будет записываться отдельно (независимо от других), в отличии от Таб Части документа, где тебе приходилось писать все строки скопом, откуда и получали тормоза.
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #9 - 16. Сентября 2010 :: 10:45
Печать  
JohnyDeath писал(а) 16. Сентября 2010 :: 09:04:
Так если у тебя будет на справочниках всё крутиться, то одна строка Таб Части документа будет соответствовать одному элементу справочника. Т.е. после редактирования каждой строчки, она будет записываться отдельно (независимо от других), в отличии от Таб Части документа, где тебе приходилось писать все строки скопом, откуда и получали тормоза.


Ну и что, что каждой строке соответствует элемент справочника...
Что мне мешает все строки ТабЧасти также записать скопом?
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #10 - 16. Сентября 2010 :: 10:47
Печать  
А где можно найти соответствие между типами 1С и типами SQL, которые надо указывать в методе "ДобПараметр"?

Интересует тип, который надо указывать для справочника, для даты и для строки неопределенной длины
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #11 - 16. Сентября 2010 :: 11:16
Печать  
при выполнении insert выдается ошибка: "усечение строки справа"
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #12 - 16. Сентября 2010 :: 12:24
Печать  
es3000 писал(а) 16. Сентября 2010 :: 10:45:
JohnyDeath писал(а) 16. Сентября 2010 :: 09:04:
Так если у тебя будет на справочниках всё крутиться, то одна строка Таб Части документа будет соответствовать одному элементу справочника. Т.е. после редактирования каждой строчки, она будет записываться отдельно (независимо от других), в отличии от Таб Части документа, где тебе приходилось писать все строки скопом, откуда и получали тормоза.


Ну и что, что каждой строке соответствует элемент справочника...
Что мне мешает все строки ТабЧасти также записать скопом?

Похоже, что мы на разных языках разговариваем..  Нерешительный
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #13 - 16. Сентября 2010 :: 13:48
Печать  
JohnyDeath писал(а) 16. Сентября 2010 :: 12:24:
es3000 писал(а) 16. Сентября 2010 :: 10:45:
JohnyDeath писал(а) 16. Сентября 2010 :: 09:04:
Так если у тебя будет на справочниках всё крутиться, то одна строка Таб Части документа будет соответствовать одному элементу справочника. Т.е. после редактирования каждой строчки, она будет записываться отдельно (независимо от других), в отличии от Таб Части документа, где тебе приходилось писать все строки скопом, откуда и получали тормоза.


Ну и что, что каждой строке соответствует элемент справочника...
Что мне мешает все строки ТабЧасти также записать скопом?

Похоже, что мы на разных языках разговариваем..  Нерешительный


Я не исключаю, что я что-то не правильно понял...
Давай попробуем еще раз...
Объясни поподробнее что ты имеешь ввиду, когда говоришь, что каждая строчка будет записываться отдельно
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #14 - 17. Сентября 2010 :: 05:42
Печать  
У тебя будет 30000 элементов справочника, а не 30000 строк табличной части дока. Поэтому, когда пользователь будет редактировать, например, 4-ю строку, то по окончанию её редактирования именно она и запишется (пользователь будет думать, что это ТЧ, а на самом деле это список элементов справочника), т.о. после окончания редактирования всех строк мы вообще ничего не заметим. А в случае с ТЧ нам необходимо было бы записывать все 30000 строк в таблицу 1С.
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #15 - 18. Сентября 2010 :: 11:47
Печать  
JohnyDeath писал(а) 17. Сентября 2010 :: 05:42:
Поэтому, когда пользователь будет редактировать, например, 4-ю строку, то по окончанию её редактирования именно она и запишется (пользователь будет думать, что это ТЧ, а на самом деле это список элементов справочника)


что значит "запишется"?
как она сама сможет записаться? для этого мне надо сделать обработчик, который выполнит запись

JohnyDeath писал(а) 17. Сентября 2010 :: 05:42:
т.о. после окончания редактирования всех строк мы вообще ничего не заметим.


что значит "не заметим"?
если запись редактируемой строки будет выполнять наш код, тогда мы будем знать все наши измененные строки

JohnyDeath писал(а) 17. Сентября 2010 :: 05:42:
А в случае с ТЧ нам необходимо было бы записывать все 30000 строк в таблицу 1С.


Под ТЧ ты имеешь ввиду штатную 1С-ную табличную часть документа? Если да, то опять мне непонятна твоя мысль. Если ТЧ стандартная, тогда нам вообще не надо ничего записывать, она сама автоматом записывается и читается из базы.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как записать в справочник прямым запросом
Ответ #16 - 18. Сентября 2010 :: 14:00
Печать  
На данный момент у тебя есть документ с 30000 строк в ТЧ.
Я предлагаю документ заменить справочником, а вместо ТЧ сделать подчиненный справочник. Т.е. вместо 30000 строк ТЧ у тебя будет 30000 подчиненных элементов. А значит при редактировании одного элемента (фактически это и есть бывшая строка твоей ТЧ) ты записываешь один элемент. Редактируешь второй - записывается второй, и т.д. Всё довольно просто реализуется штатными средствами. Хочешь покрасивше и на одной форме - бери ПоставщикаДанных.
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Как записать в справочник прямым запросом
Ответ #17 - 20. Сентября 2010 :: 04:37
Печать  
А разве ПоставщикДанных умеет автоматом записывать данные? Я думаю вряд ли. Значит придется самому писать код для записи строки табличной части в базу.

В принципе запись отредактированной строки в базу можно сделать и при реализации табличной части через ТЗ.

А значит при использовании ПоставщикаДанных не будет принципиальной разницы между разными вариантами хранения строк ТЧ: либо в справочнике либо в ТЗ.

Вопрос, как я понял, в другом:
Чтобы не было тормозов при работе с большой ТЧ, надо избежать массового чтения и записи строк ТЧ в базу. Это можно отслеживать, выствлять флажки измененных, удаленных, добавленных строк. Как описывалось в той же теме "Ускорение работы документа с большой ТЗ при помощи 1С++"
« Последняя редакция: 21. Сентября 2010 :: 05:14 - es3000 »  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать