Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Добавление строк документа прямым запросом (число прочтений - 2577 )
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Добавление строк документа прямым запросом
09. Ноября 2010 :: 14:25
Печать  
Я в прямом запросе буду получать строку документа, и при выполнении некоторых условий необходимо прямым же запросом добавить новую строку. По реквизиту табличной части есть индекс, граф отбора по ТЧ нет. Все будет нормально в том плане, что нигде никуда больше не надо ничего писать? Индекс автоматом пересчитается?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Добавление строк документа прямым запросом
Ответ #1 - 09. Ноября 2010 :: 14:37
Печать  
Neo писал(а) 09. Ноября 2010 :: 14:25:
Я в прямом запросе буду получать строку документа, и при выполнении некоторых условий необходимо прямым же запросом добавить новую строку. По реквизиту табличной части есть индекс, граф отбора по ТЧ нет. Все будет нормально в том плане, что нигде никуда больше не надо ничего писать? Индекс автоматом пересчитается?

индекс автоматом пересчитается.
но помимо этого в табличной части может быть графа отбора
также если у Вас УРБД то надо добавить запись чтобы документ обновился.Если документ проведен то по новой строке возможны и новые движения а с этим уже гораздо сложнее написать.
И это на мой взгляд тот случай когда выигрыш от прямого запроса никакой по сравнению со стандартным 1с языком Док.Записать();

Также Вам нужно предусмотреть действия программы
если по каким-то причинам sql сервер не сможет добавить  строку.
(например длительная блокировка на таблицу табличной части )

  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #2 - 09. Ноября 2010 :: 14:43
Печать  
Граф отбора по ТЧ нет.
База не распределенная.
Делается все это не ради ускорения, а просто из 1С в данном случае нет возможности сгенерить новую строку. Будет что-то такое: внешний скрипт будет периодические проверять табличную часть документов, отправлять СМС, и по результатам отправки дописывать новые строки в документ.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #3 - 09. Ноября 2010 :: 14:46
Печать  
Цитата:
Также Вам нужно предусмотреть действия программы
если по каким-то причинам sql сервер не сможет добавить  строку.
(например длительная блокировка на таблицу табличной части )


Об этом как раз хотел спросить, как это лучше реализовать. Т.е., надо чтобы в случае блокировки таблицы скрипт не вываливался с ошибкой а просто продолжал обрабатывать другие документы. Можно это сделать?

Т.е., что-то типа Попытка как в 1С, в случае ошибки пропускать и и идти дальше. Но только чтоб это было в СКЛ
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Добавление строк документа прямым запросом
Ответ #4 - 09. Ноября 2010 :: 15:01
Печать  
Neo писал(а) 09. Ноября 2010 :: 14:46:
Цитата:
Также Вам нужно предусмотреть действия программы
если по каким-то причинам sql сервер не сможет добавить  строку.
(например длительная блокировка на таблицу табличной части )


Об этом как раз хотел спросить, как это лучше реализовать. Т.е., надо чтобы в случае блокировки таблицы скрипт не вываливался с ошибкой а просто продолжал обрабатывать другие документы. Можно это сделать?

Т.е., что-то типа Попытка как в 1С, в случае ошибки пропускать и и идти дальше. Но только чтоб это было в СКЛ

А может сделать так
завести таблицу ( в базе 1с но не 1с таблица). В эту таблицу
из смс делаешь insert ( так как один процесс то блокировки этой таблицы практически исключены)
Далее обработкой 1с вносишь данные в таблицы документов
и удаляешь внесеные строки из внешней таблицы.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #5 - 09. Ноября 2010 :: 15:18
Печать  
Как вариант конечно можно. Но желательно все же не создавать еще промежуточные таблицы, дабы не усложнять структуру. Просто те документы, куда будет писать информация, будут служебные и вероятность того, что они будут заблокированы, не велика, но все же есть. Поэтому если применить механизм корректной отработки ошибки в SQL, было бы гораздо удобнее...
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #6 - 10. Ноября 2010 :: 07:13
Печать  
Цитата:
завести таблицу ( в базе 1с но не 1с таблица)


А почему обязательно не 1с таблица? Просто такая идея возникла. Создаю служебный справочник, туда заношу по ходу работы с документами события, по которым необходимо отправить СМС из внешнего скрипта. Скрипт периодически просматривает этот справочник и после отправки СМС проставляет статус - успешно/не успешно. Потом я обработкой ожидания просматриваю этот справочник уже из 1С, в случае необходимости добавляю строки в документы и удаляю записи справочника штатными средствами.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Добавление строк документа прямым запросом
Ответ #7 - 10. Ноября 2010 :: 07:29
Печать  
Neo писал(а) 10. Ноября 2010 :: 07:13:
А почему обязательно не 1с таблица?

Ты забываешь о том, что тогда тебе придется САМОМУ реализовывать контроль целостности данных, т.е. выполнять работу, которую 1С обычно за тебя делает. Потянешь ли?
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #8 - 10. Ноября 2010 :: 07:37
Печать  
Цитата:
тогда тебе придется САМОМУ реализовывать контроль целостности данных


А в чем тут может нарушиться целостность? Элементы служебного справочника нигде использоваться не будут. Из внешнего скрипта я апдейтю одно поле, ставлю статус: 1 или 2. Потом штатными средствами удаляю.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #9 - 13. Ноября 2010 :: 09:44
Печать  
Гм, а нет ли возможности как-то ускорить выборку запроса по реквизиту табличной части документов, а то, я так понимаю, признака отбора туда поставить нельзя...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Добавление строк документа прямым запросом
Ответ #10 - 13. Ноября 2010 :: 12:35
Печать  
Neo писал(а) 13. Ноября 2010 :: 09:44:
Гм, а нет ли возможности как-то ускорить выборку запроса по реквизиту табличной части документов, а то, я так понимаю, признака отбора туда поставить нельзя...

В графу отбора можно добавить реквизит(Справочник) из табличной части.

Надо ли это делать или нет в конкретном случае не могу сказать.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Добавление строк документа прямым запросом
Ответ #11 - 13. Ноября 2010 :: 15:04
Печать  
ой, действительно, не там смотрел. Можно в графу отбора любой реквизит ТЧ добавлять   Язык
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать