Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Групповая замена даты в проводках
Goto page 1, 2  Next
 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> БЭСТ-4
View previous topic :: View next topic  
Author Message
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 29 Mar 2005 09:38    Post subject: Групповая замена даты в проводках Reply with quote

Господа, подскажите, как лучше всего организовать замену даты в проводках, отобранных по определенному признаку из книги хоз.операций?
Желательно штатными средствами БЭСТа.
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
itman



Joined: 05 Apr 2002
Posts: 1247
Location: Ильин Е.Ю.
Occupation: Cio
Interests: Кинель

PostPosted: 29 Mar 2005 10:49    Post subject: Reply with quote

собери файлик типа:
Code:

main->(Reclock())
main->dateoper:=date()
main->(F_DBUNLOCK())

размести его в плагинах для того модуля где будешь менять проводки
если в главбухе то MAIN.
Затем пропиши в спецфункциях
отметь проводки для замены и запусти.
!!!! Код непроверен !!!!!
Сначала протестируй
Вот, вроде бы ничего нештатного, кроме возможных последствий от использования.
PS
Замечена небольшая странность при обработке режима после выделения INSертом Если на текущей - все ОК
версия 11,02
Back to top
View user's profile Send private message Send e-mail
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 29 Mar 2005 11:13    Post subject: Reply with quote

А можно как-то автоматизировать выборку группы проводок для замены или это только ручками?
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
itman



Joined: 05 Apr 2002
Posts: 1247
Location: Ильин Е.Ю.
Occupation: Cio
Interests: Кинель

PostPosted: 29 Mar 2005 11:26    Post subject: Reply with quote

чтобы автоматизировать необходимы условия группировки
которые уже непосредственно необходимо прописать в логику и сформировать код на запуск в любом инструменте для работы с файлом main.dbf
Но !!! если речь идет о нескольких проводках не более 2-3 (зависит от буха))) десятков то проще через плагин. Если же операция более глобальна, то следует "плясать" от источника.
Back to top
View user's profile Send private message Send e-mail
Яков



Joined: 04 Mar 2002
Posts: 618
Location: Яков
Occupation: Экстремальная терапия бизнеса
Interests: Владивосток

PostPosted: 29 Mar 2005 11:49    Post subject: Reply with quote

sdv2k wrote:
А можно как-то автоматизировать выборку группы проводок для замены или это только ручками?


replace all main.dataoper with "новая дата" for "условие"
Back to top
View user's profile Send private message Send e-mail Visit poster's website
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 29 Mar 2005 13:14    Post subject: Reply with quote

ЯКОВ wrote:
sdv2k wrote:
А можно как-то автоматизировать выборку группы проводок для замены или это только ручками?


replace all main.dataoper with "новая дата" for "условие"


Очень приятно, что рассказали мне про команду replace
Только вот в плагине она неприменим
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 29 Mar 2005 13:24    Post subject: Reply with quote

itman wrote:
чтобы автоматизировать необходимы условия группировки
которые уже непосредственно необходимо прописать в логику и сформировать код на запуск в любом инструменте для работы с файлом main.dbf
Но !!! если речь идет о нескольких проводках не более 2-3 (зависит от буха))) десятков то проще через плагин. Если же операция более глобальна, то следует "плясать" от источника.


Короче, суть в следующем.
В модуле з/п формируются проводки ДТ 30хххх КТ 970101, ДТ 30хххх КТ 970102, с датой ес-сно "последнее число расчетного месяца".
Затем необходимо первую группу проводок перенести на месяц вперед, а вторую - на два месяца вперед.
Этих проводок может быть сколько угодно (численность у нас порядка 2000 чел.)
Как лучше осуществить подобную процедуру?

P.S. Начальство настаивает на использовании штатных средств БЭСТа.
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
itman



Joined: 05 Apr 2002
Posts: 1247
Location: Ильин Е.Ю.
Occupation: Cio
Interests: Кинель

PostPosted: 29 Mar 2005 14:06    Post subject: Reply with quote

Quote:
Только вот в плагине она неприменима.

Применима.
плагин примерно по структуре такой (навскидку, могу соврать):
Запрос условия
сохранение области
глобальный replace с необходимыми условиями (придется повозиться)
возврат области
завершение работы с сообщением результата
теоретически можно запускать в любом месте
Лучше писать на xHarbour затем компилировать.
Back to top
View user's profile Send private message Send e-mail
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 29 Mar 2005 16:39    Post subject: Reply with quote

Уважаемый itman!

Не мог бы ты привести какой-либо рабочий пример на харборе, чтоб вносил изменения в main.dbf?
Что-то у меня ни в какую не желает менять содержимое базы, хотя компилируется и отрабатывает вроде без ошибок
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
itman



Joined: 05 Apr 2002
Posts: 1247
Location: Ильин Е.Ю.
Occupation: Cio
Interests: Кинель

PostPosted: 30 Mar 2005 07:17    Post subject: Reply with quote

Хм
А чья задача то?
Код опубликуй, обсудим всем миром.
в хэлпах что идут к бэсту описано вкратце Программирование в среде БЭСТ-4+. На примере 2 по замене отпускных цен, можешь сделать свой пример замены даты проводки, по аналогии.
Причем на харборе собирать не обязательно. Но никто не запрещает скомпиллировать с отладчиком и пошагово проанализировать ход процесс
Back to top
View user's profile Send private message Send e-mail
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 30 Mar 2005 10:13    Post subject: Reply with quote

Вот такой код:
Code:
PRIVATE date_
date_:=DATE()
DBPUSH("MAIN")
DBGOTOP()
DO WHILE !EOF()
   MAIN->(RecLock())
   MAIN->DATAOPER:=date_
   MAIN->(F_DBUnLock())
   DBSKIP()
ENDDO
DBPOP()

Вызываю из реестра хозопераций.
Подменяется дата только в текущей записи При выделении нескольких записей и попытке выполнения плагина вообще вылетает ошибка. А хотелось бы пробежать по всей таблице!
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
Krosh



Joined: 13 Oct 2003
Posts: 97
Location: КИА
Occupation: СТ
Interests: Москва

PostPosted: 30 Mar 2005 14:27    Post subject: Reply with quote

Уточняющие вопросы:
1. Какое условие отбора проводок?
2. Как задаётся дата, на которую надо переделать проводки?

2(sdv2k)
Quote:
Вызываю из реестра хозопераций.

Это где и как?
Насколько мне известно на MAIN спец. функция не навешивается.
Back to top
View user's profile Send private message
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 30 Mar 2005 15:56    Post subject: Reply with quote

Krosh wrote:
Уточняющие вопросы:
1. Какое условие отбора проводок?
2. Как задаётся дата, на которую надо переделать проводки?

Об условиях отбора я писал выше:
Quote:
Короче, суть в следующем.
В модуле з/п формируются проводки ДТ 30хххх КТ 970101, ДТ 30хххх КТ 970102, с датой ес-сно "последнее число расчетного месяца".
Затем необходимо первую группу проводок перенести на месяц вперед, а вторую - на два месяца вперед.
Этих проводок может быть сколько угодно (численность у нас порядка 2000 чел.)

Датой будет 25-ое число соответстветствующих месяцев.

Krosh wrote:

Это где и как?
Насколько мне известно на MAIN спец. функция не навешивается.

Навешивается.
Учет хоз.операций -> Книга учета операций -> Ctrl+F5
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
Krosh



Joined: 13 Oct 2003
Posts: 97
Location: КИА
Occupation: СТ
Interests: Москва

PostPosted: 30 Mar 2005 16:42    Post subject: Reply with quote

С условиями понятно. Подразумеваем текущий месяц? Так?

У нас похоже старая версия БЭСТ, спец.функций в
Quote:

Учет хоз.операций -> Книга учета операций -> Ctrl+F5
нет.

Т.к. во всех "удобных" тэгах MAIN.DBF есть дата операции, то при её изменении запись "скачет" в индексе (ПОЭТОМУ ТОЛЬКО ОДНА И МЕНЯЕТ ДАТУ .
Варианты решения:
1. Для продолжения цикла по MAIN.DBF надо возвращаться на нужную запись поиском. (ЭТО НЕ ЕСТЬ ХОРОШО)
Самое удобное - использовать поиск по тэгу KT_SCHET -
UPPER(KT_SCHET+KT_CODE)+DTOS(DATAOPER)+"999 "
2. Два раза сделать собственный индекс, например по RECNO(), с вышеуказаннымиусловиями. Тогда не надо будет "прыгать". Просто будет цикл по необходимым записям. (ЭТО ГОРАЗДО ЛУЧШЕ)


Last edited by Krosh on 30 Mar 2005 16:56; edited 1 time in total
Back to top
View user's profile Send private message
sdv2k



Joined: 19 Feb 2002
Posts: 82
Location: Денис


PostPosted: 30 Mar 2005 16:55    Post subject: Reply with quote

Версия 11.03 BIN
Ну что, есть какие-то соображения?
Очень хочется это осуществить именно из БЭСТа.
_________________
= sdv2k =
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> БЭСТ-4 All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru