View previous topic :: View next topic |
Author |
Message |
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 29 Mar 2005 09:38 Post subject: Групповая замена даты в проводках |
|
|
Господа, подскажите, как лучше всего организовать замену даты в проводках, отобранных по определенному признаку из книги хоз.операций?
Желательно штатными средствами БЭСТа. _________________ = sdv2k = |
|
Back to top |
|
|
itman
Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 29 Mar 2005 10:49 Post subject: |
|
|
собери файлик типа:
Code: |
main->(Reclock())
main->dateoper:=date()
main->(F_DBUNLOCK())
|
размести его в плагинах для того модуля где будешь менять проводки
если в главбухе то MAIN.
Затем пропиши в спецфункциях
отметь проводки для замены и запусти.
!!!! Код непроверен !!!!!
Сначала протестируй
Вот, вроде бы ничего нештатного, кроме возможных последствий от использования.
PS
Замечена небольшая странность при обработке режима после выделения INSертом Если на текущей - все ОК
версия 11,02 |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 29 Mar 2005 11:13 Post subject: |
|
|
А можно как-то автоматизировать выборку группы проводок для замены или это только ручками? _________________ = sdv2k = |
|
Back to top |
|
|
itman
Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 29 Mar 2005 11:26 Post subject: |
|
|
чтобы автоматизировать необходимы условия группировки
которые уже непосредственно необходимо прописать в логику и сформировать код на запуск в любом инструменте для работы с файлом main.dbf
Но !!! если речь идет о нескольких проводках не более 2-3 (зависит от буха))) десятков то проще через плагин. Если же операция более глобальна, то следует "плясать" от источника. |
|
Back to top |
|
|
Яков
Joined: 04 Mar 2002 Posts: 618 Location: Яков Occupation: Экстремальная терапия бизнеса Interests: Владивосток
|
Posted: 29 Mar 2005 11:49 Post subject: |
|
|
sdv2k wrote: | А можно как-то автоматизировать выборку группы проводок для замены или это только ручками? |
replace all main.dataoper with "новая дата" for "условие" |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 29 Mar 2005 13:14 Post subject: |
|
|
ЯКОВ wrote: | sdv2k wrote: | А можно как-то автоматизировать выборку группы проводок для замены или это только ручками? |
replace all main.dataoper with "новая дата" for "условие" |
Очень приятно, что рассказали мне про команду replace
Только вот в плагине она неприменим _________________ = sdv2k = |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 29 Mar 2005 13:24 Post subject: |
|
|
itman wrote: | чтобы автоматизировать необходимы условия группировки
которые уже непосредственно необходимо прописать в логику и сформировать код на запуск в любом инструменте для работы с файлом main.dbf
Но !!! если речь идет о нескольких проводках не более 2-3 (зависит от буха))) десятков то проще через плагин. Если же операция более глобальна, то следует "плясать" от источника. |
Короче, суть в следующем.
В модуле з/п формируются проводки ДТ 30хххх КТ 970101, ДТ 30хххх КТ 970102, с датой ес-сно "последнее число расчетного месяца".
Затем необходимо первую группу проводок перенести на месяц вперед, а вторую - на два месяца вперед.
Этих проводок может быть сколько угодно (численность у нас порядка 2000 чел.)
Как лучше осуществить подобную процедуру?
P.S. Начальство настаивает на использовании штатных средств БЭСТа. _________________ = sdv2k = |
|
Back to top |
|
|
itman
Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 29 Mar 2005 14:06 Post subject: |
|
|
Quote: | Только вот в плагине она неприменима. |
Применима.
плагин примерно по структуре такой (навскидку, могу соврать):
Запрос условия
сохранение области
глобальный replace с необходимыми условиями (придется повозиться)
возврат области
завершение работы с сообщением результата
теоретически можно запускать в любом месте
Лучше писать на xHarbour затем компилировать. |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 29 Mar 2005 16:39 Post subject: |
|
|
Уважаемый itman!
Не мог бы ты привести какой-либо рабочий пример на харборе, чтоб вносил изменения в main.dbf?
Что-то у меня ни в какую не желает менять содержимое базы, хотя компилируется и отрабатывает вроде без ошибок _________________ = sdv2k = |
|
Back to top |
|
|
itman
Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 30 Mar 2005 07:17 Post subject: |
|
|
Хм
А чья задача то?
Код опубликуй, обсудим всем миром.
в хэлпах что идут к бэсту описано вкратце Программирование в среде БЭСТ-4+. На примере 2 по замене отпускных цен, можешь сделать свой пример замены даты проводки, по аналогии.
Причем на харборе собирать не обязательно. Но никто не запрещает скомпиллировать с отладчиком и пошагово проанализировать ход процесс |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 30 Mar 2005 10:13 Post subject: |
|
|
Вот такой код:
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 |
|
|
Krosh
Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
|
Posted: 30 Mar 2005 14:27 Post subject: |
|
|
Уточняющие вопросы:
1. Какое условие отбора проводок?
2. Как задаётся дата, на которую надо переделать проводки?
2(sdv2k)
Quote: | Вызываю из реестра хозопераций.
|
Это где и как?
Насколько мне известно на MAIN спец. функция не навешивается. |
|
Back to top |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 30 Mar 2005 15:56 Post subject: |
|
|
Krosh wrote: | Уточняющие вопросы:
1. Какое условие отбора проводок?
2. Как задаётся дата, на которую надо переделать проводки?
|
Об условиях отбора я писал выше:
Quote: | Короче, суть в следующем.
В модуле з/п формируются проводки ДТ 30хххх КТ 970101, ДТ 30хххх КТ 970102, с датой ес-сно "последнее число расчетного месяца".
Затем необходимо первую группу проводок перенести на месяц вперед, а вторую - на два месяца вперед.
Этих проводок может быть сколько угодно (численность у нас порядка 2000 чел.)
|
Датой будет 25-ое число соответстветствующих месяцев.
Krosh wrote: |
Это где и как?
Насколько мне известно на MAIN спец. функция не навешивается. |
Навешивается.
Учет хоз.операций -> Книга учета операций -> Ctrl+F5 _________________ = sdv2k = |
|
Back to top |
|
|
Krosh
Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
|
Posted: 30 Mar 2005 16:42 Post subject: |
|
|
С условиями понятно. Подразумеваем текущий месяц? Так?
У нас похоже старая версия БЭСТ, спец.функций в 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 |
|
|
sdv2k
Joined: 19 Feb 2002 Posts: 82 Location: Денис
|
Posted: 30 Mar 2005 16:55 Post subject: |
|
|
Версия 11.03 BIN
Ну что, есть какие-то соображения?
Очень хочется это осуществить именно из БЭСТа. _________________ = sdv2k = |
|
Back to top |
|
|
|