admin_omega пишет:
Да, затрагивает БЕСТ-4. На БЕСТ-5 наше "правительство" переходить пока не хочет :( вот и приходится изобретать велосипед. По поводу составных полей уже игрался никак не получается, всегда найдется дубляж. Поэтому это только колонка с уникальным значением. Как я уже говорил выше, мне необходимо получить доступ не к группе проводок, а к конкретной проводке и привязать ее этим уникальным индексом к нашим управленческим задачам.
Для управленческого учета БЭСТ-5 весьма удобен. Найдите время, проведите презентацию для Руководства по БЭСТ-5 на базе демоверсии. Сейчас сентябрь, оптимальное время для начала работ по переходу.
И по поводу поля с уникальным значением. Почему не получится создать?
Не обязательно использовать алгоритмы Б4, можно например генерировать значение на основе времени, уникальность обеспечена.
По-хорошему, в книге операций вообще следует запретить какой либо ввод проводок.
Все следует делать через документы, если нет подходящих, есть свободные в АРМе главбуха.
Какая именно версия БЭСТа? Какая задача?
Судя по тексту, версия 4+.
Проводки имеют свой уникальный код в поле nnoper, его заполнение обязательно.
Файл main.dbf - ключевой для бухучета, поэтому к прямому формированию данных в нем стоит подойти со всей серьезностью.
Здесь можно скачать справочник по 4+, там можно найти ответы на многие ы.
И можно узнать задачу?
Можно взять инструментарий для БЭСТ-4, и разобраться в нем.
Там непосредственно основные функции БЭСТа в исходниках.
А по поводу задачи, есть ли строгое соответствие для фасовок?
Существует же определенное количество вариантов, нельзя ли их идентифицировать?
Просто в использовании 2 инитлиста будет не очень удобно и отнимет время оператора.
Для оператора чем проще тем лучше, ему легче выбрать из предложенного чем ввести.
В последнее время я в этом все чаще и чаще убеждаюсь, цепочка вопросов и действие алгоритма в зависимости от ответов позволяют свести ошибки оператора к минимуму (но могут добавить ошибки кода ).
И я бы не рекомендовал использовать oper_fact, равно как и любое другое поле.
Сделайте свое поле по правилам БЭСТ-4, свой индекс. описания полей есть в системе.
Добрый день!
Там пример про два инитлиста на экране, одновременно.
Возможно подойдет для этого случая.
Но я бы хотел обратить на первичность использования стандартных средств.
Т.е. в этом случае можно делать не внутреннее перемещение, а списание на фасовку, скажем. и порождать автоматом накладную на приход другой позиции.
Список привязки оформить как таблицу пользователя, это по сути спецификация.
И уже по ней в коде формировать новую накладную.
Как вариант, возможно затраты по кодингу здесь будут меньше и надежнее.
Не надо каждый раз делать привязку, если я правильно понял задачу.
Получится примерно такой набор "внедрений":
- таблица привязки (списываемый = приходуемый)
- настройки в реестрах движения, возможно новый реестр, для удобства
- плагин на событие (обработка накладной и формирование новой)
- плагин для реестра на таблицу привязки
Разобрался:
в базе mdocm поля, хранящие значения доппризнаков заполняются при выборе номенклатуры.
Если происходит изменение параметра - то он в реестре не обновляется, и отсюда проблема, а именно, типовая не видит нового значения, т.к. оно только в справочнике груп. Но условия обрабатывает исправно.
Решаю плагином, обновляя значения нужных "допов".
БЭСТ-5 СП9
Типовая операция на внутреннее перемещение.
Вносим изменения в проводки, добавляем новую корреспонденцию.
Делаем новый документ, проводки формируются.
Хотим сформировать проводки по всем документам с начала месяца - новые проводки не формируются.
Выбираем замену операции по Ф5, даже если меняем операцию, то новая проводка упорно не формируется.
Сумма проводки формируется по условию if(,,), без условий формируется нормально.
На самом деле нет ничего прискорбного, даже наоборот. ))
Руководство получит новую практику, новые заботы, ит-шники новый опыт, новую стоимость.
В сообществе БЭСТа всегда рады старым друзьям, особенно с опытом работы в разных системах, пишите как идет процесс, какие преимущества, ...
P.S. "Болезни" есть у всех )), только клиники разные
Денис, я честно говоря уже не помню почему, но по какой-то причине я вынес формирование строк в функцию SayScreen
Попробуй сделать так, может получится.
Такие требования часто встречаются при налоговых проверках а также у крупных клиентов, которые в свою очередь являются налогоплательщиками и которым такие же требования предъявляет налоговая.
Чем обосновано такое требование?
В накладных и счет-фактурах необходимо указывать название и адреса так, как указано в учредительных документах, в которых, как правило адрес начинается с указания страны.
А как использовать эти данные штатным способом для формирования проводок по дополнительному плану счетов, к примеру.
Возьмем картотеку ОС и добавим доп. измерение.
Как сформировать проводку с аналитикой=доп. измерению.
Необходимо сделать реорганизацию справочника пользователя с системным справочником.
Главная книга
Настройка
реорганизация счетов
перевести пользовательский сегмент в системный
Это необходимо сделать для всех счетов где аналитика привязана к партнерам.
В этом случае заработают и акты сверок.
P.S. Необходимо отследить, чтобы таблица соответствия была заполнена полностью ( по правой колонке). Сопоставление идет по названиям, если они не соответствуют, то надо оценить объем работы, что проще - каждый раз пробивать позиции на соответствие или же в аналитическом измерении сделать то же самое ))))
Для поддержания справочника в актуальном состоянии понадобится периодически скачивать файл bnkseek.dbf (именно той структуры, какая есть на сегодня).
И запускать функцию bnk_imp() для добавления новых записей.
Function bnk_imp()
Local cFileBnkSeek
Local cPath:="c:\"
Local cMask:="*.dbf"
Local aFileFilter:={{"Базы данных","*.dbf"}}
Local cFilename:="bnkseek.dbf"
Local cMess:="Выбор файла BNKSEEK.DBF"
cFileBnkSeek:=PopFile(,cPath,cMask,cMess,aFileFilter) //ищем где находится файл
If Empty(cFileBnkSeek)
SayAndWait("Не выбран файл")
Else
SayAndWait(cFileBnkSeek)
EndIf
Use (Loadpath()+"bank.dbf") Index('bank.cdx') New Alias bank shared//открываем справочник банков БЭСТа
bank->(ordSetFocus('tag_code')) // выбираем сортировку по БИКу
Go top
DbUseArea(.T.,,(cFileBnkSeek),"bnkseek",.t.,.F.,) //открываем классификатор банков РФ
Index On newnum tag tag_bik To "bnkseek.cdx" //делаем индекс для поиска
Go top
///перенос данных
Select bnkseek
Do While !EoF()
Select bank
If !DbSeek(bnkseek->newnum)
Select bank
Append Blank
bank->bnk_id:=XGUID()
bank->bnk_code:=bnkseek->newnum
bank->bnk_name:=oemtoansi(AllTrim(bnkseek->namep))+" г."+oemtoansi(AllTrim(bnkseek->nnp))
bank->acnt_rule:="1"
bank->acnt_korr:=bnkseek->ksnp
bank->addr:=AllTrim(bnkseek->ind)+", ";
+oemtoansi(AllTrim(bnkseek->nnp))+", ";
+oemtoansi(AllTrim(bnkseek->adr))+", ";
+oemtoansi(AllTrim(bnkseek->telef))
DbUnLock()
Else
EndIf // !DbSeek(bnkseek->newnum)
Select bnkseek
bnkseek->(DbSkip())
EndDo // !EoF()
sayandwait("Перенос завершен")
bnkseek->(DbCloseArea()) //закрываем таблицу
bank->(DbCloseArea()) //закрываем таблицу
Return .t.
Синхронизация справочника в Б5 с файлом bnkseek.dbf.
Источник - http://www.pvision.ru/bik.htm Скачиваем архив, раскрываем в любую папку.
Запускаем функцию, получаем справочник с обновленными реквизитами по справочнику БИК.
Код минимален, перед применением тестировать на копии рабочей базы.
Код
Function bnk_sync()
Local cFileBnkSeek
Local cPath:="c:\"
Local cMask:="*.dbf"
Local aFileFilter:={{"Базы данных","*.dbf"}}
Local cFilename:="bnkseek.dbf"// скачивать здесь http://www.pvision.ru/bik.htm
Local cMess:="Выбор файла BNKSEEK.DBF"
cFileBnkSeek:=PopFile(,cPath,cMask,cMess,aFileFilter) //ищем где находится файл
If Empty(cFileBnkSeek)
SayAndWait("Не выбран файл")
EndIf // Empty(cFileBnkSeek)
Use (Loadpath()+"bank.dbf") Index('bank.cdx') New Alias bank shared//открываем справочник банков БЭСТа
bank->(ordSetFocus('tag_code')) // выбираем сортировку по БИКу
DbUseArea(.T.,,(cFileBnkSeek),"bnkseek",.t.,.F.,) //открываем классификатор банков РФ
Index On newnum tag tag_bik To "bnkseek.cdx" //делаем индекс для поиска
Go top
Select bank //встаем в справочник банков Б5
Go top //на первую запись
Do While !EoF() // перебор системного справочника банков БЭСТ-5
Select bnkseek //перемещаемся в область справочника банков bnkseek
If DbSeek(bank->bnk_code) // проверка на наличие записи с кодом БИК из БЭСТ-5
Select bank // если есть такой банк в справочнике то обновляем его реквизиты в БЭСТ-5
RLock()
bank->bnk_name:=oemtoansi(AllTrim(bnkseek->namep))+" г."+oemtoansi(AllTrim(bnkseek->nnp)) //Название банка, город
bank->bnk_code:=bnkseek->newnum//БИК
bank->acnt_korr:=bnkseek->ksnp//корсчет
bank->addr:=AllTrim(bnkseek->ind)+", ";
+oemtoansi(AllTrim(bnkseek->nnp))+", ";
+oemtoansi(AllTrim(bnkseek->adr))+", ";
+oemtoansi(AllTrim(bnkseek->telef))//индекс, город, адрес, телефон
DbUnLock()
Else // если нет такого банка в справочнике (устаревшая запись, либо ошибочная)
Select bank //делаем отметку такой записи в справочнике Б5
If Left(bank->bnk_name,2)<>"!("// проверка на повторный запуск этой функции,
RLock()
bank->bnk_name:="!(нет в спр-ке БИК) "+AllTrim(bank->bnk_name)
DbUnLock()
EndIf // Left(bank->bnk_name,2)<>"!("// проверка на повторный запуск этой функции,
EndIf // DbSeek(bank->bnk_code) // проверка на наличие записи с кодом БИК из БЭСТ-5
Select bank // дело сделано, идем к другой записи по справочнику банков БЭСТ-5
bank->(DbSkip())
EndDo // !EoF() // перебор системного справочника банков БЭСТ-5
sayandwait("Сихнронизация справочника завершена!")
bnkseek->(DbCloseArea()) //закрываем таблицу
bank->(DbCloseArea()) //закрываем таблицу
Return .t.
После перехода с Б4+ в справочнике банков формируется много записей с одним БИКом (если в Б4+ различались наименования). Что затем усложняет использование справочника.
предлагаю простой код для оптимизации справочника, удаления дублей.
Код
/*$$$
Функция: optbank
Категория: утилита для оптимизации справочника банков, удаления дубликатов
Параметры: без параметров
Результат: обновленный справочник банков, не содержащий дубли БИКов
Пример: добавляем запись в userbdll.txt:
Дополнительно\Утилиты пользователя;Оптимизация справочника БАНКОВ;optbank;tools;1;
Примечания:
$$$*/
Function optbank()
Private t_bnk_id, t_bnk_code // переменные для сравнения значений соседних строк по индексу TAG_CODE
Use (Loadpath()+"prt_acnt.dbf") Index('prt_acnt.cdx') New Alias prt_acnt shared
prt_acnt->(ordSetFocus(0))
Use (Loadpath()+"bank.dbf") Index('bank.cdx') New Alias bank shared
bank->(ordSetFocus('tag_code')) // выбираем сортировку по БИКу
DbGoTop() // перемещаем указатель на начало сортированного списка
Do While !EoF() // цикл на перебор записей справочника банков
If Len(AllTrim(bnk_code))<>9 // проверка на корректность значения БИК (9 символов)
//действия при некорректном коде
bank->(DbSkip())
Else //иначе, код равен 9 символам
//действия при корректном коде (по количеству символов)
t_bnk_id:=bank->bnk_id ; t_bnk_code:=bank->bnk_code //Запоминаем значения текущей записи для сравнения с последующими
bank->(DbSkip()) //идем дальше
Do While bank->bnk_code=t_bnk_code // проверка, если по этому БИКу запись повторяется
Select prt_acnt
//замена значения банка в справочнике счетов партнеров
FLock()
Replace prt_acnt->bnk_id With t_bnk_id ;
For prt_acnt->bnk_id=bank->bnk_id
DbUnLock()
Select bank
//Отмечаем запись для удаления в справочнике банков
RLock()
Delete
DbUnLock()
bank->(DbSkip())
EndDo // bank->bnk_code=t_bnk_code // проверка, если по этому БИКу запись повторяется
EndIf // Len(AllTrim(bnk_code))<>9 // проверка на корректность значения БИК (9 символов)
EndDo // !EoF() // цикл на перебор записей справочника банков
messagebox("Оптимизация справочника банков завершена.")
bank->(DbCloseArea()) //закрываем таблицу
prt_acnt->(DbCloseArea()) //закрываем таблицу
Return .t.
В чем может быть проблема?
Все пользователи и станции работают отлично и в сетевом и в терминальном режиме доступа.
Но без видимых причин, на одной станции при попытке входа в любую базу на сервере в сетевом режиме - появляется запрос на индексацию.
Если всех пользователей "выгнать" из базы и сделать индексацию - то рабочий режим восстанавливается, но стоит выйти из баз и попытаться зайти вновь.
Все повторяется, в итоге работать в сетевом режиме невозможно.
Клиента переставляли, не помогло, смена пользователя и ролей тоже не помогает.
В чем может быть проблема на станции?
Добрый день.
Дополнительные измерения.
К картотеке имущества подключен пользовательский вид измерения, групповая аналитика проще говоря.
Можно ли штатным образом добавить в параметры для типовой операции возможность использования дополнительного измерения?
Если да, то как?
Если нет, то как можно использовать информацию из доп. измерений картотеки для формирования проводок?
А если на момент подключения модуля "Кадры" сотрудник был уволенным и в приказ на оформление просто не попал, так как не соответствовал условиям фильтра на тот момент?
Т.е. интересует восстановления для сотрудников, уволенных до начала эксплуатации модуля "КАДРЫ"
function main()
local cOldName,aSHet
altd()
dbpush()
netuse('u_analit',loadpath()+'analit.dbf')
aSHET:={"601","602", и так далее}
do while !eof()
if ascan(aSHET,alltrim(u_analit->schet))>0
cOldName:=u_analit->name
select partner
seek u_analit->code
select u_analit
rlock()
u_analit->name:=partner->shortname
dbunlock()
endif
select u_analit
skip
enddo
select partner
ALERT(alias())
u_analit->(dbclosearea())
dbpop()
return
Т.е. выравнивал аналитику с партнерами, после чего импорт завершался нормально.
А то что по кассе и по платежкам нет партнера - а откуда партнер, к примеру если деньги выдаются сотруднику в кассе.