:: Вопросы по 1С
7.7 внесение дjговора из VFP
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Знатоки помогите.
Надо из фокса, занести договор в 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


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




Исправлено 1 раз(а). Последнее : Аспид, 29.01.16 12:24
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
ssa

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

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


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
Аспид

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


------------------
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
Аспид

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


------------------
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
посмотрел повнимательнее твой код.

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

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

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

или

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

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


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
Аспид

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

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

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


------------------
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
ssa

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

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
ssa

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

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

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
pasha_usue
Автор

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Cust.НайтиПоКоду('tcCodCust')
Вы же вроде по переменной хотите искать, а не код 'tcCodCust'. Так должно быть:
Cust.НайтиПоКоду(tcCodCust)
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
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
Аспид

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


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




Исправлено 1 раз(а). Последнее : Аспид, 29.01.16 15:06
Ratings: 0 negative/0 positive
Re: 7.7 внесение дjговора из VFP
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Аспид
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
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Спасибо всем за помощь.)))
Совместными усилиями все получилось.
вот весь код из теста)))
Вся дурь была в ковычках)
И не уникальность, дошло, сначала владельца надо, потом новый
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
Автор

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


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

On-line: 3 (Гостей: 3)

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