BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
как работает FieldPut()
 
Добрый день !
Подскажите как написать FieldPut ? Необходимо дату из таблицы mdoc написать в табл. main. Текст программы прилагаю.
Function main()
altd()
mdoc->(ordsetfocus('MDOC'))
Head := Дата документа " + dtoc(mdoc->date) + " Совпадает с датой оплаты ? Введите дату оплаты!")
aQues := {" Да "," Нет "}
If NoOrYes(Head,2,aQues)=1
If !empty(mdoc->date0)
alert("Дата оплаты проставлена : " + dtoc(mdoc->date0))
else
if lastkey() = 13
mdoc->(dbrLock())
myDate := DIALOG("Введите дату оплаты: ","99.99.99",Date())
mdoc->date0 := myDate
opl := DIALOG("Введите сумму оплаты: ","999999999.99",0)
mdoc->summa0 := opl
mdoc->(DbUnLock())
end if
end if
end if

netuse("main",LoadPath()+"main.dbf")
dbpush("main","NOPER_NDOC","main->NNOPER == mdoc->PRO .and. main->NNDOC == mdoc->NUMDOC",)
main->(reclock())
alert(main->DATAOPER)

dbskip(3)
alert(main->DT_SCHET)
nom:=main->(recno())
_nnoper := main->NNOPER
alert(_nnoper)

alert(main->DATAOPER)
alert(mdoc->DATE0)

//FName := FIELD(mdoc->DATE0)
//FVal-> &FNAME := main->DATAOPER
//FieldPut(mdoc->DATE0,main->DATAOPER)
alert(fieldblock(main->(fieldput(fieldpos("DATAOPER")),mdoc->DATE0))) // ошибка !!!!!!!!

alert(main->DATAOPER)

main->(f_dbunlock())
main->(dbclosearea())
dbpop()
return 0
 
Начну с того что в харборе ее писать не надо :D
Можно просто
main->Dataoper:=mdoc->Date
Вот только перед этим не забудьте заблокировать запись в main
А в FileEval идеология такая
FIELDPUT([номер поля],[значение])
на Вашем примере
main->( FIELDPUT(FIELDPOS("dataoper"),mdoc->Date) )
Но только опять таки не забываем что для того чтобы записать в поле
значение запись требуется заблокировать
 
Здраствуйте!
Пример с main->Dataoper:=mdoc->Date не работала у меня, программа почему-то валится на этой строчке. Программа пишет Couldn't creat error Object in hb_errNew() Ошибка 9000.
Main я блокирую через main->(reclock()). Правильно ?
main->(FIELDPUT(FIELDPOS("dataoper"),mdoc->Date0)) тоже не работает.
Мне нужно записать Date0. Подскажите как мне записать эту дату.
 
А из какого состояния программы вызывается программа?
Реестр, меню, ... ?
С уважением,
Ильин Евгений
 
Программа , как задумывалась будет вызываться на момент сохранения документа в Товарах-Реализация по УСН.
По Ctrl+F5 произвожу редактирование проги.
 
А попробуйте в своих действиях открыть новый алиас проводок и дальше делать в нем.
 
Здраствуйте !
Пробовала создать новый алиас с проводками - тоже выдается такая же ошибка, описанная выше. Не пойму, что происходит с main, если там стоит какое-то значение.
Я новичок. Можете подсказать подробнее с программой
 
Да помогу.
У нас завтра выставка - готовимся.
Подождите немножко и я у себя сделаю.
Напишите только какая программа - БЭСТ-5,БЭСТ-4 ?
 
...Best4 1201 40SP УСН
 
Оля давайте теперь разбираться с Вашим вопросом.
Скажите а в каком месте Вы запускаете свой плагин ?
На запись документа или как ?
 
Здраствуйте ! Я запускаю свой плагин прямо в товарах-реализация продукции . Ctrl+F5 - F11 вызов на запись.
Первая часть программы (рабочая) заполняет дату оплаты, а вторая (нерабочая) должна проставлять эту дату оплаты в таблицу main только по налоговому счету УРН25. Это неоходимо для построения правильной книги Доходов и расходов, которая настроена на данное предприятие.
И все.
 
Дальше вы используете FileEval или HFileEval
Иными словами файл с каким расширением hrb или prg ?
 
hrb файл
 
Вот такой код у меня прекрасно работает:

Код
FUNCTION main()
   local aSet
   aSet:=SaveSet()
   netuse("main",LoadPath()+"main.dbf")
   dbpush("main","NOPER_NDOC","main->NNOPER == mdoc->PRO .and. main->NNDOC == mdoc->NUMDOC",)
   main->(reclock())
   main->dataoper:=mdoc->date
   main->(f_dbunlock())
   main->(dbclosearea())
   RestSet(aSet)
RETURN 2


Зачем Вы делаете DBSKIP(3) ???
Может у Вас в этом проблема ?
 
Спасибо за код! Работает. Но мне необходмо проставлять дату оплаты(date0) в таблицу main только по налоговому счету УРН25(как я писала выше) main->dataoper:=mdoc->date0 - это работает.
DBSKIP(3) - я писала для того,чтобы перейти на третью проводку. Но skip(3) не работает.
Дату оплаты необходимо заменять только по 3-й прооводке ! Как это сделать?
 
А вот это уже другая история.
Я бы на самом деле вместо DBPUSH(), который тут особо и не нужен ставил бы
SETSCOPE() в main по NNOPER. И дальше бы в цикле или еще лучше через DBEVAL()
перебирал бы проводки с целью поиска нужной.
Ведь не стоит забывать что DBSKIP(3) это абсолютная уверенность что опустив курсор на 3 строчки ниже вы найдете там проводку. А если она не создалась ?
А если не создалась другая и их только ?, а если в окне одну руками удалили ?
И так далее. Тогда вы оказываетесь на конце списка - на несуществующей записи.
А стало быть никакую дату в эту строчку Вы разумеется не внесете как ее ни
блокируй
Страницы: 1
Читают тему (гостей: 1)