for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Вопросы по 1С
  

7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 12:10:50
Знатоки помогите.
Надо из фокса, занести договор в 1с 7.7
Наваял код на фоксе, который не работает)))
  
  PARAMETERS tcCodCust  
  SET STEP ON  
  Dogovor = this.v77.EvalExpr('CreateObject("Справочник.Договоры")')    
  Cust= this.v77.EvalExpr('CreateObject("Справочник.Контрагенты")')    
        
  Cust.НайтиПоКоду('tcCodCust')     
    
 *Dogovor.ИспользоватьВладельца(Cust.ТекущийЭлемент()) &&Пробовал и так и так  
  Dogovor.ИспользоватьВладельца(Cust)   
  Dogovor.Новый()  
  Dogovor.Наименование =ALLTRIM(dog.num)  
  Dogovor.Записать()  
    
  qq = Dogovor.ТекущийЭлемент();  
    
  cod1s=ALLTRIM(Dogovor.Код)  
  RETURN cod1s

на строке Dogovor.Записать() пишет ошибка оле "Не выбран элемент справочника-хозяина! Элемент не может быть записан"

Как еще ему контрагента - хозяина подсунуть?
Подскажите как реализовать задуманное.

зы 1с Предприятие 77 Бухгалтерский учет 4.5


------------------




Исправлено: Аспид, 29.01.16 12:24
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12248
Откуда: Москва
Дата: 29.01.16 12:33:42
Если мне не изменяет склероз, то:
1. ИспользоватьВладельца() используется для установки отборов, а не для установки значения поля.
2. Поле называется Владелец и его надо просто заполнить найденной ссылкой.

Dogovor.Наименование =ALLTRIM(dog.num)
Dogovor.Владелец = Cust
Dogovor.Записать()


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 13:03:15
На Dogovor.Владелец = Cust - ругается оле "Неверное значение"
На Dogovor.Владелец= Cust.ТекущийЭлемент() -"Неверное значение"
Dogovor.Записать()
Осталось как было(((
Вот блин непонятка... какой там тип данных. Как его подсунуть?
Где взять правильный элемент Cust


------------------
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 13:09:15
От полной безнадеги)))) залез в конфигуратор.
Ну открыл контрагенты. Все вроде понятно
Открыл договоры.
Подчинен - Контрагенты
ВсЁ!!! (((
Как подчинен, чем подчинен)))))
Ясно, что не для бестолковых писали)))
Гугл тоже ничего не знает(


------------------
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12248
Откуда: Москва
Дата: 29.01.16 13:15:03
посмотрел повнимательнее твой код.

Cust.НайтиПоКоду('tcCodCust')

Сия строка ничего не делает. Возвращаемое методом значение никуда не сохраняется.
Пробуй так:

OwnerRef = Cust.НайтиПоКоду('tcCodCust')
Dogovor.Владелец = OwnerRef

или

Dogovor.Владелец = Cust.НайтиПоКоду('tcCodCust')

ps: давненько не брал я в руки шашек...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 13:56:13
Ура, что то новенькое)))
Dogovor.Владелец = OwnerRef -"Неверный тип вышестоящего справочника"

Может это какие то мысли навеет)

зы.
ssa
ps: давненько не брал я в руки шашек...
Понятно. Давно все на 8ке. Я с 8кой немного ковырялся. Там как то все понятнее показалось)


------------------
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12248
Откуда: Москва
Дата: 29.01.16 14:05:25
Аспид
От полной безнадеги)))) залез в конфигуратор.
Ну открыл контрагенты. Все вроде понятно
Открыл договоры.
Подчинен - Контрагенты
ВсЁ!!! (((
Как подчинен, чем подчинен)))))
Поле Владелец содержит ссылку на элемент справочника Контрагенты. Все просто и других вариантов нет.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12248
Откуда: Москва
Дата: 29.01.16 14:06:25
Аспид
Ура, что то новенькое)))
Dogovor.Владелец = OwnerRef -"Неверный тип вышестоящего справочника"

Может это какие то мысли навеет)
Надо проверить нашелся ли нужный контрагент.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 29.01.16 14:45:16
  
  Cust.НайтиПоКоду('tcCodCust')
Вы же вроде по переменной хотите искать, а не код 'tcCodCust'. Так должно быть:
  
  Cust.НайтиПоКоду(tcCodCust)
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 14:53:05
ssa
Надо проверить нашелся ли нужный контрагент.

Переделал немного просто, для отладки.
и стало ясно
  
  IF Cust.НайтиПоНаименованию("Черноземье") = 1
Проскакивает мимо.
Название взял прямо из 1С
То есть, не находит.
Ну для проверки, может вообще не с той 1С работаю, занес туда новую цену.
Все занеслось
Кстати, вот код, думал с договорами по аналогии... ни фига.
  
  PARAMETERS tbDat,tnPrice,tcGood  
  SET STEP ON   
  Tovar	= this.v77.EvalExpr('CreateObject("Справочник.Номенклатура")')  
  SET STEP ON   
  IF Tovar.НайтиПоНаименованию(ALLTRIM(tcGood),0) =0  
  	Tovar.Новый()  
  	Tovar.Наименование = ALLTRIM(tcGood)  
  	Tovar.Записать()  
  ENDIF   
 	*qq=Tovar.НайтиПоНаименованию(ALLTRIM(tcGood),0)   
  SpPrice	= this.v77.EvalExpr('CreateObject("Справочник.Цены")')  
  SpPrice.ИспользоватьВладельца(Tovar.ТекущийЭлемент())  
  TPrice= this.v77.EvalExpr('CreateObject("Справочник.ТипыЦен")')  
  IF TPrice.НайтиПоНаименованию("Основная цена") = 1   
  	TPr = TPrice.ТекущийЭлемент()  
  ENDIF  
  SpPrice.Новый()  
  SpPrice.ТипЦен = TPr  
  SpPrice.Валюта = TPr.Валюта  
  SpPrice.Записать()  
  SpPrice.ТекущийЭлемент()  
  IF VARTYPE(tbDat)!="D"  
  	tbDat=DATE()  
  ENDIF 	  
  IF VARTYPE(tnPrice)="L"  
  	tnPrice=nPrice  
  ENDIF 	  
    
  SpPrice.цена.Установить(tbDat, tnPrice)  
    
  сCod1s = ALLTRIM(Tovar.Код())  
  RETURN сCod1s

Но теперь как бы понятно. Не находит контрагента. Надо в эту сторону копать...


------------------
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 15:02:25
pasha_usue
  
  Cust.НайтиПоКоду('tcCodCust')
Вы же вроде по переменной хотите искать, а не код 'tcCodCust'. Так должно быть:
  
  Cust.НайтиПоКоду(tcCodCust)
Спасибо!!!
  
  IF Cust.НайтиПоКоду(tcCodCust)=1  
  	OwnerRef = Cust.ТекущийЭлемент()  
  	Dogovor.Новый()  
  	Dogovor.Наименование ="Проба"  
  	Dogovor.ИспользоватьВладельца(OwnerRef)  
  	Dogovor.Записать()
Теперь находит, но на записать() ругается как и раньше.
Сейчас перепробую другие варианты
  
  Dogovor.Владелец= OwnerRef   
  Dogovor.Записать()
На записать ругается "Код не уникальный"
Ну хоть что то новое)


------------------




Исправлено: Аспид, 29.01.16 15:06
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12248
Откуда: Москва
Дата: 29.01.16 15:06:48
Аспид
pasha_usue
  
  Cust.НайтиПоКоду('tcCodCust')
Вы же вроде по переменной хотите искать, а не код 'tcCodCust'. Так должно быть:
  
  Cust.НайтиПоКоду(tcCodCust)
Спасибо!!!
  
  IF Cust.НайтиПоКоду(tcCodCust)=1  
  	OwnerRef = Cust.ТекущийЭлемент()  
  	Dogovor.Новый()  
  	Dogovor.Наименование ="Проба"  
  	Dogovor.ИспользоватьВладельца(OwnerRef)  
  	Dogovor.Записать()
Теперь находит, но на записать() ругается как и раньше.
Сейчас перепробую другие варианты
Еще раз: ИспользоватьВладельца() - это установка отбора, или по-фоксовому, установка фильтра, то есть аналог set filter. Какое занечение значения ты ждешь от установки фильтра? Какого рожна опять ее всандалил?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 29.01.16 15:33:59
Спасибо всем за помощь.)))
Совместными усилиями все получилось.
вот весь код из теста)))
Вся дурь была в ковычках)
И не уникальность, дошло, сначала владельца надо, потом новый
  
  PARAMETERS tcCodCust,tnDog  
  SET STEP ON  
  Dogovor = go1s.v77.EvalExpr('CreateObject("Справочник.Договоры")')    
  Cust= go1s.v77.EvalExpr('CreateObject("Справочник.Контрагенты")')    
        
  IF Cust.НайтиПоКоду(tcCodCust)=1  
  	OwnerRef = Cust.ТекущийЭлемент()  
  	qq=Cust.код  
  	qq=Cust.Наименование  
  	  
  	Dogovor.ИспользоватьВладельца(OwnerRef)  
 *	Dogovor.Владелец=OwnerRef   ругается "Не выбран элемент"  
  	Dogovor.Новый()  
  	Dogovor.Наименование ="Проба"  
  	Dogovor.Записать()  
  	cod1s=ALLTRIM(Dogovor.Код)  
  	RETURN cod1s  
  ENDIF


------------------
Ratings: 0 negative/0 positive

Re: 7.7 внесение дjговора из VFP
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 01.02.16 06:57:50
ssa
Еще раз: ИспользоватьВладельца() - это установка отбора, или по-фоксовому, установка фильтра, то есть аналог set filter. Какое занечение значения ты ждешь от установки фильтра? Какого рожна опять ее всандалил?
В семёрке, насколько я помню, так и было. Там нельзя напрямую записать владельца в поле владелец. Да она в принципе достаточно через жопу написана. Но уже лучше предыдущих версий (;Ж
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 18 AndyNigmatec  (Гостей: 17)

20.06.2019 22:06:33 exec: 0.23
Mem: 1.319 Mb

© 2000-2019 Fox Club 
Яндекс.Метрика