Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Можно ли с помощью 1С++ решить такую задачу? (число прочтений - 9581 )
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Можно ли с помощью 1С++ решить такую задачу?
02. Августа 2006 :: 06:32
Печать  
До определенного времени не было движений по 2 ресурсам регистра "ВзаиморасчетыПокупателей", причем в документах эти реквизиты присутствуют , можно ли при помощи прямого обращения к БД перебрать все документы и без их перепроведения занести в базу эти движения????
Интерисует как примерное описание как сделать, и как пересчитать регистры.
Печаль
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #1 - 02. Августа 2006 :: 08:16
Печать  
А перепровести БД?
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #2 - 02. Августа 2006 :: 10:20
Печать  
примерно так:
Код
Выбрать все
update $Регистр.ВзаиморасчетыПокупателей
set
  $Регистр.ВзаиморасчетыПокупателей.НовыйРесурс1 = $ШапкаДок.Реквизит1,
  $Регистр.ВзаиморасчетыПокупателей.НовыйРесурс2 = $ШапкаДок.Реквизит2
from $Регистр.ВзаиморасчетыПокупателей Рег
join $Документ.ВидДокумента ШапкаДок on ШапкаДок.iddoc = Рег.iddoc 


и так для каждого вида документов которые двигают регистр.
После - обязательно пересчитать итоги
  

1&&2&&3
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #3 - 03. Августа 2006 :: 12:19
Печать  
Если можно поконкретнее, а именно
Выбрать документы (например реализация ) за определенный период с условием на реквизит1  в документе, и обновить значения регистра взаиморасчеты  (допустим реквизитом2).
Запись в регистр описаная выше понятна, не понятно как привязать выборку документов...... Печаль
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #4 - 03. Августа 2006 :: 12:29
Печать  
sv_stas_sv писал(а) 03. Августа 2006 :: 12:19:
не понятно как привязать выборку документов...... Печаль

документы там тоже привязаны
  

1&&2&&3
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #5 - 04. Августа 2006 :: 04:24
Печать  
Так не работает

|update
|  $Регистр.ВзаиморасчетыПокупателей
|set
|  $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес
|from
|$Регистр.ВзаиморасчетыПокупателей  Рег
|INER JOIN  $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc";

Ошибка
Server: Msg 170, Level 15, State 1, Line 7
Line 7: Incorrect syntax near 'INER'.


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


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #6 - 04. Августа 2006 :: 04:26
Печать  
INNER
  
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #7 - 04. Августа 2006 :: 04:48
Печать  
Сделал так

|update 
|  $Регистр.ВзаиморасчетыПокупателей
|set
|  $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес
|from 
|$Регистр.ВзаиморасчетыПокупателей  Рег
|INNER  $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc";

Ошибка

Server: Msg 155, Level 15, State 1, Line 7
'dh410' is not a recognized join option.
« Последняя редакция: 04. Августа 2006 :: 08:20 - sv_stas_sv »  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #8 - 04. Августа 2006 :: 12:13
Печать  
А где Join?
  
Наверх
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #9 - 05. Августа 2006 :: 08:43
Печать  
INNER JOIN, разумеется, а еще BOL, то бишь, справка по T-SQL
  
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #10 - 08. Августа 2006 :: 07:55
Печать  
|UPDATE
|  $Регистр.ВзаиморасчетыПокупателей
|SET
|  $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|  $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then $Справочник.Сотрудники.Проект else $ПустойИД end
|FROM
|  $Регистр.ВзаиморасчетыПокупателей  Рег
|INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc,
|LEFT JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id = $ШапкаДок.Агент";

Движение нужно сделать по измерению  Проект (справочник), в документе есть реквизит Агент (справочник.сотрудники),а у Агента есть реквизит Проект(справочник), все равно не могу понять связку таблиц!!!!
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #11 - 08. Августа 2006 :: 08:05
Печать  
и что не так? что не получается?

ты использовал алиас для справочника Сотрудники, дальше оперируй уже с ним:
не так $Справочник.Сотрудники.Проект
а так $Агенты.Проект

к тому же надо бы тут сделать INNER JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id = $ШапкаДок.Агент, а не LEFT JOIN, а то она может NULL в регистр засунуть в случае, когда не указан Агент в документе, а NULL в реквизитах таблиц 1C не любит
  
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #12 - 08. Августа 2006 :: 08:19
Печать  
|UPDATE
|  $Регистр.ВзаиморасчетыПокупателей
|SET
|  $Регистр.ВзаиморасчетыПокупателей.Адрес = $ШапкаДок.Адрес,
|  $Регистр.ВзаиморасчетыПокупателей.Проект = case when $ШапкаДок.ПризнакНакладной = :Продажа then $Агенты.Проект else $ПустойИД end
|FROM
|  $Регистр.ВзаиморасчетыПокупателей  Рег
|INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc,
|INNER JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id = ШапкаДок.Агент";

все равно ругается на секцию INNER!!!!
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #13 - 08. Августа 2006 :: 08:21
Печать  
запятая вот тут
Код
Выбрать все
INNER JOIN $Документ.РасходнаяНакладная ШапкаДок on ШапкаДок.iddoc = Рег.iddoc,
INNER JOIN $Справочник.Сотрудники Агенты (nolock) ON Агенты.id = ШапкаДок.Агент 


не нужна

и кстати, если сам по английски не силен - выводи текст ошибки дословно, она же тебе говорит - рядом с INNER есть проблемы вот и ищи рядом, заодно посмотри синтаксис подобных конструкций
  
Наверх
 
IP записан
 
sv_stas_sv
Junior Member
**
Отсутствует


1с++ lamer

Сообщений: 46
Зарегистрирован: 19. Июля 2006
Re: Можно ли с помощью 1С++ решить такую задачу?
Ответ #14 - 08. Августа 2006 :: 08:23
Печать  
Спасибо, помогло !
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать