11. Вопрос: После установки обновления в файле sse.log присутствует сообщение типа Ошибка: General SQL error. Index row for object 981578535 (index id 1) was not found in database 5. alter table ROADLIST drop

Вопросы и ответы по ПС «Аккорд 5.0»

1. Вопрос: В редакторе отчетов необходимо создать доверенность, которая привяжется к интерфейсу НАКЛАДНАЯ в ССТ-СБЫТ. Как выглядит кусочек программы, выводящей ФИО и паспортные данные МОЛа по текущему значению поля МОЛ интерфейса НАКЛАДНАЯ?

Ответ: Нужный запрос выглядит следующим образом:
select p.SURNAME, p.NAME, p.PATRONYMIC, d.NMDOCUMENT, p.PASSPORTSER, p.PASSPORTNUM, p.PASSPORTEMITENT, p.PASSPORTDATE from dbo.PEOPLE p, dbo.PEOPLEDOC d where p.iddocument = d.iddocument and p.IDPEOPLE = <Код МОЛ>

2. Вопрос: Как рассчитывается форма «Отчет о доходах и налоге» в модуле «Заработная плата»? Может быть нужны какие-то дополнительные настройки в модуле?

Ответ: В меню «Настройки налоговых отчетов», записи с аббревиатурой начинающейся с  'ОДН'.

3. Контрактная система оплаты.
Расчет подоходного налога при контрактной системе
Round( КонтрактШкала( 10, ГодДоход('Облагаемая сумма', l) - ГодДоход('Сумма скидок', -l) - ГодДоход('Сумма вычетов', -1), CyммaBxBO(NULL, NULL, 0, 0, 'факт'))+ КонтрактСумма( -ГодДоход('Подоходный налог в МБ', 1)))

Расчет налога в пенсионный фонд при контрактной системе
СуммаВхВО(30, 1, 0, 0, ")*КонтрактК(ПДУ/100)

4. Вопросы по модулю «Автотранспорт»
- В меню "Объекты учета" был создан новый объект учета. Затем в модуле "Автотранспорт" через меню "Поступление" создали документ о поступлении этого объекта учета. Автоматически создалась инвентарная карточка, где во вкладке АВТОТРАНСПОРТ были заданы параметры этого объекта учета как автомобиля. Затем стало необходимым все удалить. Удалили в меню "Поступление" документ. При этом инвентарная карточка удалилась автоматически. Теперь необходимо удалить объект учета, а система сообщает о невозможности удаления, говоря что осталась какая-то ссылка на этот объект учета. Дословно сообщение об ошибке следующее: Dependent foreign key constraint violation in a referential integrity constraint. dbname='Accord', table name='objlist', constraint name='FK_USER_PRO_UPROF2OBJ_OBJLIST'. Как можно "убить" этот объект учета?

Ответ: Объект учета не может удалиться, т.к. на него создалась ссылка в таблице пользовательских настроек (текущий объект учета). В дальнейшем мы сделаем в этом месте каскадное удаление. А пока удалить ОУ можно следующим образом: выбрать в списке ОУ другую позицию, выйти из модуля (при этом текущий ОУ переключится на другую позицию), войти и удалить ненужный.

- Как и где в системе завести каталог водителей?

Ответ: В модуле «Автотранспорт» отдельного каталога водителей нет. Есть только привязка инвентарных карточек к личным карточкам сотрудников. В инвентарной карточке они заводятся на закладке "Дополнительно" по кнопке "водители". Выбор идет из списка сотрудников. Таким образом, у одного транспортного средства может быть несколько водителей из числа сотрудников организации.

5. Модуль «Заработная плата»
Как учитывать при расчете заработной платы скидки по подоходному налогу при наличии затрат на строительство?

Ответ: Возможно несколько вариантов.
Первый вариант.
В меню «Справочники»--«Параметры»--«Настройка годового дохода» в группе годового дохода ОБЫЧНЫЕ НАЧИСЛЕНИЯ (или создать новую группу, например ЗАТРАТЫ НА СТРОИТЕЛЬСТВО) создать новое поле ЛЬГОТА (или ДОП.ВЫЧЕТЫ) со следующими параметрами:
Момент расчета – перед удержаниями,
Последовательность расчета по алгоритму – 11 (после расчета валового дохода в группе ОБЫЧНЫЕ НАЧИСЛЕНИЯ),
Алгоритм расчета – Годовой доход – льгота по строительству.
Мнемоника алгоритма Д_40ЛС
Наименование алгоритма Годовой доход – льгота по строительству
СуммаВычетов ('42',
if(СуммаПоля ( 'Архив налоговых льгот', 'Затраты на строительство', 0 ) > Д_4Облаг,
(ГодДоход('Валовый доход', 0) - ГодДоход('Сумма скидок', 0) - ГодДоход('Сумма вычетов', 0)) -
(ГодДоход('Валовый доход', 1) - ГодДоход('Сумма скидок', 1) - ГодДоход('Сумма вычетов', 1)),
if(СуммаПоля ( 'Архив налоговых льгот', 'Затраты на строительство', 0 ) = 0, 0,
СуммаПоля ( 'Архив налоговых льгот', 'Затраты на строительство', 0 ) - Д_4ОблагП )))

Где алгоритмы
Д_4Облаг - Годовой доход - облагаемая сумма
ГодДоход('Валовый доход', 0) - ГодДоход('Сумма скидок', 0) - ГодДоход('Сумма вычетов', 0)
Д_4ОблагП - Облагаемая сумма с начала года до текущего отчетного периода
ГодДоход('Валовый доход', 1) - ГодДоход('Сумма скидок', 1) - ГодДоход('Сумма вычетов', 1)

В алгоритме расчета подоходного налога из валового дохода необходимо дополнительно вычитать новое поле таблицы годового дохода ЛЬГОТА функцией ГодДоход('Льгота', 0)
В таблице «Архив налоговых льгот» в поле ЗАТРАТЫ НА СТРОИТЕЛЬСТВО вкладки ОСНОВНЫЕ СВЕДЕНИЯ необходимо поставить сумму затрат с того месяца в котором эти затраты возникли. Учет этих затрат при расчете подоходного налога будет происходить именно с этого месяца. При переходе на следующий год в поле ЗАТРАТЫ НА СТРОИТЕЛЬСТВО в январе необходимо проставить остаток суммы затрат на строительство (разность между начальной суммой затрат на строительство и суммой поля ЛЬГОТЫ таблицы «Годовой доход» в предыдущем году).

Второй вариант.
В «Годовом доходе» должна быть колонка «Дополнительные вычеты» с алгоритмом Д_ВычДоп и с моментом расчета «После удержаний». Проверить соответствие названий колонок таблицы «Годовой доход» названиям, используемым в алгоритмах. Алгоритм должен работать, даже если льгота начинается в середине года. Главное - занести сумму льготы в «Архив налоговых льгот» в поле «Затраты на строительство». Алгоритмы:

Д_ВычДоп - Годовой доход – сумма доп. вычетов
Сумма вычетов(42’, ЛС)

ЛС - Льгота на строительство
If((СуммаПоля(Архив налоговых льгот’,’ Затраты на строительство’, 0)
-ГодДоход(Дополнительные вычеты’,1)) >=
(СуммаВхВО(30,2,0,0,’’)-ЛМП-КолКрат1),
(СуммаВхВО(30,2,0,0,’’)-ЛМП-КолКрат1),
(СуммаПоля(Архив налоговых льгот’,’ Затраты на строительство’, 0)
-ГодДоход(Дополнительные вычеты’,1))))

КолКрат1 - Сумма не облагаемая
if(СуммаВхВО(30,2,0,0,’’)<=0,0,
СуммаУдержания(1,0,0,’’)
+if(Зн(Архив налоговых льгот’, Количество кратных минимумов’, 0)=3, МинОклад*3, 0)
+if(Зн(Архив налоговых льгот’, Количество кратных минимумов’, 0)=5, МинОклад*5, 0)
+if(Зн(Архив налоговых льгот’, Количество кратных минимумов’, 0)=1,
(if(СуммДохода < 15000.01, МинОклад*2,
if(СуммДохода < 50000.01, МинОклад,0))),0)
+if(СуммДохода<15000.01, МинОклад*2*(Зн(Архив налоговых льгот’, Количество детей’,0)+Зн(Архив налоговых льгот’, Количество иждивенцев’,0)),
if(СуммДохода<50000.01, МинОклад*(Зн(Архив налоговых льгот’, Количество детей’,0)+Зн(Архив налоговых льгот’, Количество иждивенцев’,0)), 0)))

ПодНалог - Подготовка подоходного налога
ГодДоход(Валовый доход’,0) - ГодДоход(Сумма вычетов’,0)
- ГодДоход(Сумма скидок’,0) - ГодДоход(Дополнительные вычеты’,0)

6. Вопрос: Может ли Sybase автоматически по расписанию бакапить базу данных Аккорда? Если да, то как это все настроить?

Ответ: Сам Sybase этого не может. Можно сделать через возможности NT выполнять задачи по расписанию. SQL-операторы:
/*  1.В случае, если определен Dump device   */
dump database to ""
/*   2. Для выгрузки в файл   */
dump database to ""

7. Вопрос: Как настроить отчет «Расчет по авансовым платежам ЕСН» (меню Документы-Налоговые отчеты)?

Ответ: Идем в справочник - параметры - настройка налоговых отчетов. В аббревиатуре настраиваем: ЕСНА110ПФР, ЕСНА110ТФОМС, ЕСНА110ФСС, ЕСНА110ФФОМС (настройка полей годового дохода и архив начислений) т.е. 110 строка заполняется по текущему месяцу, 100 строка заполняется автоматически с начала года. Также настраиваем по 210 (200 автоматически), 310 (300 автоматически), 400 автоматически, 510 (500 автоматически). Также настраиваем 611, 621 , С25, С26 (но у нас их никто еще не настраивал). Потом идем в документы - налоговые - документы - расчет по авансовым платежам. Должно все получиться. Если в аббревиатуре не будет алгоритмов с названием ЕСНА, надо выполнить скрипт salesn.sql.

8. Вопрос: При формировании журналов-ордеров выдается диагностика «Данные отсутствуют» и формирования не происходит.

Ответ: Сначала необходимо проверить правильность настроек журналов-ордеров, в том числе и правильность настроек входящих проводок. Если настройки правильные, в модуле «Редактор отчетов» найти отчет категории «Журналы-ордера» наименование «Заполнение» и в конструкции
and exists(select 1 from dbo.SETORDCOND soc
                     where soc.IDORDER = O.idOrder
                       and soc.IDPLAN  = 1
исправить на следующее
         and exists(select 1 from dbo.SETORDCOND soc
                     where soc.IDORDER = O.idOrder
                       and soc.IDPLAN  = :.idPlan
Т.е. заменить 1 на :.idPlan. После этого все должно работать.

9. Вопрос: По модулю ССТ. Если выполнена операция пересчета остатков (меню Склад-Учет-Пересчет остатков), повлияло ли это на цены в КСУ? Если да, то можно ли отменить эту операцию (возвернуть назад цены в КСУ) и как это сделать?

Ответ: Цены в КСУ пересчитываются в случае обнаружения расхождения в остатках. Восстановить можно только из Backup

10. Вопрос: После установки обновления системы АККОРД, в базе отсутствуют практически все отчеты.

Ответ: Возможные причины:
1) отсутствие в свойствах базы признака "allow select into..." – если установить и повторить обновление, то будет хорошо.
2) внутренние проблемы - следует вручную выполнять файл scripts\report.sql (например в SQL Advantage).

11. Вопрос: После установки обновления в файле sse.log присутствует сообщение типа
Ошибка: General SQL error.
Index row for object 981578535 (index id 1) was not found in database 5.
alter table ROADLIST
drop constraint FK_ROADLIST_KSUADROAD_TBL_KSU

Ответ: Это признак кривизны в системных таблицах sysindexes/sysconstraints (несоответствие кода индекса primary key значению 1). В результате не будет инвентарных карточек и нового поля в КСУ. Причина возникновения кривизны неизвестна, лечится очень хитрым образом (следующий скрипт из Advantage):


declare @i smallint
select @i = indid from sysindexes
where id = object_id('TBL_KSU') and name = 'PK_KSU'
update sysindexes set indid = 1
from sysindexes where id = object_id('TBL_KSU') and indid = @i
alter table ROADLIST drop constraint FK_ROADLIST_KSUADROAD_TBL_KSU
update sysindexes set indid = @i
from sysindexes
where id = object_id('TBL_KSU') and indid = 1
go

После этого следует повторно выполнять upgrade (или вручную пересоздавать таблицу KSU с переносом данных через временную таблицу).

12. Вопрос: При выполнении патча rep_NDS.sql (от 11.09.2002) sse выдал ошибку
Ошибка: General SQL error.
Odd number of bytes in IMAGE data.
Incorrect syntax near ':'.
The identifier that starts with 'F82B64CD743CE8F81FC98437E5ED4F' is too long.
Maximum length is 30.

Ответ: Выполнитель скриптов sse.exe из-за большого объема отчета не отработал скрипт. Начиная с 78 релиза системы Аккорд, все патчи (в том числе и патчи отчетов) следует выполнять через Advantage или isql.exe

13. Вопрос: Вопрос по модулю ОС релиза 78. Сделали сначала начисление амортизации, потом отмену амортизации, а затем опять начисление авмортизации. И сразу же выскочила ошибка (все эти знаки приведены так, как они в сообщении):
, " "
Операция отменена.
ДЕТАЛЬНО
General SQL error.
, " "
Как бы прочитать, что за ошибку выводит функция расчета амортизации?

Ответ: Следует обратить внимание на способ прогона патчей: если использовался Advantage, то у него возможны глюки с русскими буквами. Для проверки можно выполнить select «Русский текст» и добиться корректного вывода путем изменения шрифта - например, на Courier New с набором символов «Кириллица».

14. Вопрос: По 74 релизу. При нажатии кнопки ПРОВЕСТИ в платежных поручениях входящих (ФХО выбрана) выдается сообщение:
Master record missing.
Foreign key constraint violation occurred, dbname = 'Accord', table name = 'TBL_PAYDOC', constraint name =
General SQL error.
'FK_TBL_PAYD_REF_PAYDO_TBL_LSTD'.
Как это можно полечить?

Ответ: Нет записи в справочнике видов документов для какой-то операции. Есть скрипт от 17.07.2002, который вставляет данные по всем операциям:

insert into TBL_LSTDOC(IDCOMPANY,IDFGROUP,IDOPER,IDDOCTYPE,NMDOCTYPE)
select f.IDOFFICE, f.IDFGROUP, k.IDOPER, 0, '<Новый вид документа>'
from tbl_FGROUP f, KAOPTYP k
where k.IDOPER <= 1100 and f.idFgroup > 0
and not exists( select 1 from TBL_LSTDOC l
where f.IDOFFICE=l.IDCOMPANY and f.IDFGROUP=l.IDFGROUP and k.IDOPER=l.IDOPER
)
go

15. Вопрос: В релизе 78 присутствует расчетно-платежная ведомость форма Т-49. Каковы настройки для вывода этой ведомости (очевидно, что надо что-то прописывать в меню СПРАВОЧНИКИ-ПАРАМЕТРЫ-НАСТРОЙКА НАЛОГОВЫХ ОТЧЕТОВ, а что именно?)

Ответ: Для заполнения графы «Стоимость распределенных социальных и материальных благ» расчетно-платежной ведомости Т-49 применяется настройка с аббревиатурой «РПВ_СоцМатБлаг» из «Настройки налоговых отчетов», которая добавляется в справочник при инсталляции или патчем.

16. Вопрос: У клиента, несмотря на то, что он заходит в модуль ФИНАНСЫ под логином SA, при попытке занести новый счет в рабочий план счетов выдается диагностика «План счетов недоступен для редактирования». Т.е. он только в режиме просмотра. У нас ничего подобного не наблюдается. В чем может быть дело? Может нужно какой-то флаг снять с таблицы?

Ответ: У типов плана счетов есть период действия - редактируются из интерфейса, и признак ISNOTACTIVE - не виден в интерфейсе, не должен быть 1.

17. Вопрос: Как исключить из регистра расчета амортизации определенные объекты учета (определяется бухгалтером). Например, все неизношенные объекты, у которых фактический срок использования на 01.01.2002 превысил установленный полезный срок использования? Если алгоритмом, то как?

Ответ: Нижеприведенный скрипт рассчитывает разницу между фактическим сроком полезного использования и установленным, где установленный срок полезного использования берется из поля «Параметры» на вкладке «Инв. карточка» при нажатой кнопке «Дополнительно» (естественно, значение нового срока в соответствии с налоговой группой сначала необходимо завести в поле «Параметры», как показано на рисунке ниже, а уже за тем использовать скрипт). В результате работы данного скрипта рассчитывается оставшийся срок полезного использования, как разница между новым сроком полезного использования и фактическим сроком полезного использования, в случае если фактический срок полезного использования превышает новый срок полезного использования, то в таком случае берется значение равное 84 месяцам, т.е. 7 лет. Рассчитанное значение в результате работы скрипта заносится в поле «Срок службы» (мес.) на закладке Инв.карточка.
13 EMBED PBrush 1415
Начало скрипта:
update INVCARD
se
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· QUDREAMYEAR is null -- обрабатывает только ИК с незаполненными данными, закомментировать, если нужно установить для всех

-- and idic = 4626 -- раскомментировать для проверки только на одной ИК
go
Конец скрипта .

18. Вопрос: Как из алгоритмов вызвать нужную таблицу?

Ответ: Модуль «Администратор» ( Справочники( Доступ к таблицам из Алгоритмов. Создать новую запись с параметрами:
Признак модуля
Основные средства

Наименование таблицы
Нормы амортизации

Имя SQL таблицы
dbo.NORMAM

Тип запроса
Пользовательский

Запрос для значения
n.%FIELDNAME% from %TABLENAME% n, dbo.invcard i, dbo.SKDOKFACT S
where n.IDNORMAM = i.IDNORMAM and
i.IDIC = s.IDKSU and
s.IDDOC = :CURSKDOC and s.IDOPER = :IDOPER

Поля
Наименование поля – Код
Имя поля в таблице – CODENORMAM
Тип поля – строка

В алгоритмах можно будет выбрать данную таблицу.

19. Вопрос: Как включить функцию для алгоритмов, например для модуля ОСНОВНЫЕ СРЕДСТВА, выполняющую функцию (substring(OBJGROUP,<номер позиции>,<количество знаков>) на примере.

Ответ: Создать процедуру (через Advantage):

create procedure F_SubStr @Str varchar(50), @np smallint, @len smallint, @newstr varchar(50) output as
begin
Select @newStr=substring(@Str,@np,@len)
end

Модуль «Администратор»( Справочники ( Системные функции. Создать новую запись с параметрами:

Признак модуля
Все модули

Наименование
Например: Подстрока

Имя SQL таблицы
F_SubStr

Тип результата
Строка

Тип функции
Пользовательская

Краткое пояснение
Выделение подстроки

Кол-во параметров
3

Параметры
Наименование (например)
Тип
По умолчанию


Строка
строка
Null


Номер позиции
целое
1


Количество знаков
целое
50


В Алгоритмах можно будет выбрать данную функцию и подставить в нее нужные значения. Длина исходной строки ограничена 50 знаками (см. F_SubStr), если мало, то изменить в процедуре.

20. Вопрос: Модуль ОС. Релиз 100. Функция
СуммаПоля( 'Налоговые показатели ОС', 'Сумма в нац. валюте', 0 )
(Конструктор алгоритмов-Таблицы-Выбор поля «Налоговые показатели ОС»-Вид рерультата «Сумма по полю») Вопрос - ЧТО ОЗНАЧАЕТ ПОСЛЕДНИЙ ПАРАМЕТР И ИЗ КАКИХ СООБРАЖЕНИЙ ЕГО ВЫБИРАТЬ?

Ответ: В качестве последнего параметра можно указывать вид операции, для документов которой интересны налоговые показатели. Например, для амортизации это 95. Если значение кода отрицательно (т.е. -95 для амортизации), то будут собираться суммы только из рассчитываемого в настоящий момент налогового показателя в этих документах; иначе - по всем показателям из найденных документов.

21. Вопрос: У нас почему то сегодня не стали добавляться объекты учета в справочник ОУ (см. рис.). Как можно найти ошибку? Количество записей около 16000.


Ответ: По каким-то причинам по-видимому в базе сбился счетчик в таблице serialnum. Метод лечения:
1. запустить ADVANTAGE
2. выполнить скрипт и посмотреть число, которое он вернет (например, это число А=23719)
select max (idobj) from OBJLIST
3. выполнить скрипт и посмотреть число, которое он вернет (например, это число B=7812)
select * from serialnum where nmtable='dbo.OBJLIST'
4. число B должно быть больше числа A на единицу.
5. если это не так, необходимо изменить соответствующее значение в таблице serialnum на значение A+1 (23720) скриптом
update dbo.serialnum set value=23720 where nmtable='dbo.OBJLIST'

22. Вопрос: Есть проблема:
1. В созданной группе объектов учета («чистая» группа, ранее ее не было) «А» создали объект учета «Б»
2. Для созданного объекта «Б» определили свойства: налог НДС 20% и цена, где определили наименование ценника, его формат и сделали установку цены.
4. Потом решили, что группа "А" неудачна и ее нужно удалить.
5. Удаление объекта "Б" дает ошибку:
Master has detail records. Cannot delete or modify.
Dependent foreign key constraint violation in a referential integrity
constraint. dbname = 'Accord_Pl', table name = General SQL error.
'dbo.OBJLIST', constraint name = 'FK_PRICINGH_PRHIS2OL_OBJLIST'.
5. Захожу в «Тип ценников» и удаляю ценник по объекту «А».
6. Стараюсь удалить тип ценника и получаю ошибку:
Master has d
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Попытка удаления записи через Advantege оказалась неудачной.

Ответ: Сделано изменение (obj_del.sql - патч для 100 релиза от 20030402). При удалении объекта учета теперь вместе с ним будет удаляться история изменения его цены (из таблицы PricingHis). Если по нему есть ценник, то удаление будет невозможно с сообщением о наличии ценника, который придется удалять вручную. Тип ценника не удалось удалить, потому что для него есть документы «Акты ценообразования» (таблица PRICINGREP). Они в Аккорде не удаляются. Если очень нужно, то посоветуйтесь с Артемом Красновым.

23. Вопрос: Вопрос по редактору отчетов релиза 108. В редакторе отчетов внесены изменения. И теперь текст программы заполнения формы выводится шрифтами с очень большим межсимвольным интервалом. Строки вылезают за пределы экрана по горизонтали и очень неудобно читать и править текст программы. Как можно сжать межсимвольный интервал? Или хотя бы какой шрифт выбрать, чтобы межсимвольный интервал был меньше?

Ответ: В свойствах редактора (меню "Редактирование") поставил на второй закладке для параметра Font значение Fixedsys (size=10).

24. Вопрос: По модулю ОС. После перевода базы на 108 релиз в списке показателей налогового учета (меню СПРАВОЧНИКИ-НОРМАТИВНЫЕ ДАННЫЕ-ПОКАЗАТЕЛИ НАЛОГОВОГО УЧЕТА) появились следующие показатели:
TaxBookExpCom
TaxBookInc
TaxBookIncCom
TaxBookOSBase14
У них странные наименования (у кого пробелы и скобки, у кого пробелы и запятые), нет алгоритмов, не заполнены вкладки ПРИМЕНЕНИЕ, ВХОДЯЩИЕ ПОКАЗАТЕЛИ. Что это такое и для чего это было нужно? Может это просто мусор агрейда на 108 релиз?

Ответ: Они применяются при формировании отчета о доходах и расходах для упрощенной системы налогообложения.

25. Вопрос: Что означает поле SMLASTAMNAT в таблице INVCARD, ВА> и может ли это поле иметь отрицательные значения.

Ответ: Там храниться сумма последней амортизации ОС. Она определяется путем расчета по алгоритму и может выйти отрицательной.

26. Вопрос: При выполнении патчей из ADVANTAGE, скрипты, содержащие русские буквы, выполняются с ошибкой и в базу информация на русском языке не «ложится».

Ответ: Есть проблема с русскими буквами. Для проверки можно выполнить скрипт на любую базу
SELECT русские буквы’
Если слова «русские буквы» после выполнения скрипта не появились, нужно в меню FILE---GLOBAL PREFERENCE в закладке MISCELLANEOUS по кнопке FONT выбрать шрифт Fixedsys. Затем перезапустить ADVANTAGE для вступления изменений в силу.

27. Вопрос: В модуле ФИНАНСЫ есть статусы документов (о, О, П, и т.д.). В модуле ВА> ССТ есть признаки документов. Вопрос, хотелось бы знать цифровые коды различных буквенных обозначений статусов и признаков документов.

Ответ: Файл документации Finance.doc, раздел 4.3.1.1:
Платежное поручение может быть отмечено следующими признаками:
«П» - по документу выполнены проводки;
«О» - документом оплачены складские или товарно-транспортные документы;
«о» - в документе помечены к оплате складские или товарно-транспортные документы (признак устанавливается, если данные в разделе "Оплата" введены, но проводки по документу еще не выполнены);
«А» - часть средств по платежному документу не распределена на оплату требований, то есть по документу
есть остаток, который можно интерпретировать как аванс, и сформирована авансовая карточка;
«У» - по документу указаны показатели налогового учета и их значения.
Файл документации SST.doc, раздел 4.3.4:
признаки выполненных операций, связанных с документом:
П - признак указывает, что по накладной выполнены проводки;
О - по накладной проведена оплата;
о - текущая накладная помечена к оплате;
Ф - по накладной сформирован счет-фактура;
В - некоторые или все ТМЦ, поступившие по данной накладной, были возвращены поставщику;
У - по документу указаны показатели налогового учета и их значения.
Все эти признаки формируются на основе отдельных битов в поле DOCSIGN:
бит со значением 1 - 'П'
бит со значением 2 - 'о'
бит со значением 4 - 'О'
бит со значением 8 - 'А'
бит со значением 16 - 'Ф'
бит со значением 32 - 'Н'
бит со значением 64 - 'С'
бит со значением 128 - 'В'
бит со значением 256 - 'У'
В этом поле значение 9, например, означает наличие установленных битов 1 и 8 - 'ПА'

28. Вопрос: Проблемы с модулем ОС релиза 120. При переходе на 120 релиз из некоторых (только некоторых!) инвентарных карточек исчез режим расчета амортизации (инвентарная карточка, вкладка ИНВ.КАРТОЧКА, кнока ДОПОЛНИТЕЛЬНО, поле РЕЖИМ РАСЧЕТА АМОРТИЗАЦИИ). Вместо записи РАЗ В МЕСЯЦ там образовалось пустое поле.

Ответ: Неясно, как такое могло произойти. Запрос на исправление следующий.

update dbo.INVCARD set OSCALCTYPE = 0 where OSCALCTYPE is null

29. Вопрос: Релиз 124 При применении обновления патчером у нас произошла ситуация, когда скрипт обновления 1021 (08.09.2003 файл обновления А124_1094) сломался (так написал патчер после выполнения). Из-за этого патчер не применил скрипты обновлений 1023, 1028, 1031 В чем может быть причина поломки скрипта?

Ответ: В файле SSEIC.dat когда вы его откроете его содержимое будет таким -
/I:2007,4963,17233,17234,17302,3701,2705,1913
Сюда через запятую надо добавить число 2004 и прогоните все обновления заново. На той базе, на которой все хорошо добавлять не надо, а числа эти обозначают номера ошибок, которые надо исключать.
.
30. Вопрос: Релиз 128 При применении обновления патчером у нас произошла ситуация, когда скрипт обновления 1253 сломался (мы добавили новый код налога на имущество в январе, а патч, видимо, не учитывает, что пользователь сам может добавлять/изменять коды бюджетных платежей) и выдает диагностику о дубликате ключа. И следующие патчи без выполнения 1253 не работают.

Ответ: В файле SSEIC.dat надо добавить 2601 и прогнать все обновления заново.

31. Вопрос: При переходе на 136 релиз с релиза 128 в книгах продаж/покупок пропали цифры из счетов-фактур, связанные с налогом 18% (сами счета-фактуры остались).

Ответ: Данные могли пропасть, если патч 1273 применялся для версии 128 вручную, а затем еще раз применялся патчером, например уже для версии 136. С этим же связаны другие некритические ошибки, например при применении обновления 1253.

Скрипт ниже пробует закачать НДС 18% из счетов-фактур:

insert into dbo.SELLBUYBOOKDATA (IDDOC, PERCNDS, SMTMC, SMNDS)
select a.IDDOC, 18, f.SUMPOS, f.SMNDS
from dbo.ALLSKDOC a, INVFACT f
where
f.PERCNDS = 18 and f.IDDOC = a.IDBOOKINVOICE and
a.IDOPER in (63, 69) and
not exists(select 1 from dbo.SELLBUYBOOKDATA where
IDDOC = a.IDDOC and
PERCNDS = 18
)
go

Он не тестировался, так что проверяйте!

32. Вопрос: Ошибка при запуске отчета, созданного нами, под пользователем (под sa нормально).
General SQL error.
Ct_send(): network packet layer: internal client library error: state error: trying to write when connection
Is expecting a read.

Ответ: В коде отчета не видно никакого криминала. Единственное что можно посоветовать - разместить в коде вызовы, скажем,

<код>
exec dbo.SETIVARIABLE 'report_test', 1
<код>
exec dbo.SETIVARIABLE 'report_test', 2

и т. п.
причем наставить их почаще. И когда отчет опять сломается посмотреть у пользователя значение этой переменной (в таблице ALGVARIABLES по Host_Id() ). Тогда будет ясно какой именно запрос ломается. Хотя в идеале - отловить этот глюк под SQL Monitor`ом

33. Вопрос: Цена на КСУ не соответствует приходным документам (отличается на порядки!).

Ответ: Из-за чего произошло изменение цены - не удалось выяснить. Цену можно поправить вручную запросом из Advantage.
Пример запроса:

update KSU set PRICE=<значение цены>, PRICEPART=<значение цены>,
PRICENATPART = <значение цены>, PRICENAT = <значение цены>
where
IDKSU = <код КСУ>

34. Вопрос: При выполнении обновления 1211 выдалось сообщение «1, SQL скрипт: ExpPattern.sql от 23.12.2003 16:17:06, размер - 67160. --->>General SQL error.
Для записи в таблице «Шаблоны для экспорта данных» существуют записи в таблице «Матрица отчетов». Удаление не допускается.». И сломалось.

Ответ: Предполагалось, что системные, поставляемые и обновляемые Атлантом шаблоны экспорта не используются напрямую (например, в матрице отчетов), а используются их копии, возможно со специфическими данными в полях шаблона экспорта. В противном случае после обновления шаблона, который применяется в настроенной под него матрице, отчет по этой матрице может внезапно перестать работать правильно. Нужно в матрице отчетов очистить выбранные системные шаблоны вручную (выбирая, например, другие шаблоны) или через SQL:

update BALANCEREP set IDEXPPATTERN = null
from BALANCEREP where IDEXPPATTERN in (100, 103, 105)

35. Вопрос: Вопрос по правам юзеров в Аккорде. Ситуация такова. В централе удалили базу, из LOGINS удалили юзеров. Затем создали базу, восстановили в нее бакап. Прогнали инсталлятор Аккорда (136 релиз), все обновления. В администраторе удалили вхождение юзеров в группы, потом всех юзеров (кроме системных, естественно). В централе в папке USERS базы удалили юзеров тоже. Затем начинаем этих юзеров создавать. Если создается юзер с именем, которое уже БЫЛО!, при входе в систему под эти юзером выдаются всякие сообщения (типа настройте режим ФИФО/ЛИФО). И вообще под таким юзером работа коряво идет. (Включен контроль прав доступа и права юзеру установлены). А если создать юзера с логином, которого в системе не было, то работа идет под таким юзером нормально. Вопрос такой - что и как в базе почистить от старых логинов, чтобы потом при их заведении вновь они нормально работали?

Ответ: Настройки юзеров хранятся в таблице usersetup (например последний отчетный период, который юзер смотрел в последний раз и т. п.). Если есть бэкап, то можно попробовать сделать так:

truncate table usersetup
go

Удалятся все сохраненные настройки по юзерам. В этой таблице хранятся данные не по user_id(), а по логину. Вот он и пытается к новым юзерам старые настройки применить..

36. Вопрос: Была "кривая" КСУ на один из составляющих комплекта (с кривой ценой и суммой). Через Advantage запросом update поправили цены и сумму на этой КСУ. Делаем комплектацию, а система все равно берет "кривую" цену и сумму с этой КСУ (до исправления которые были). Почему? Где еще нужно поправить? Для примера:
Артикул ОУ 6962303 (Ус-1028), KSU.IDKSU=41 Цена на ней должна быть 64-80. Попробовать сделать комплектацию "Отбортовка Танго серии ABS L=3,05м" со склада отбортовки на склад отбортовки 240 шт.

Ответ: Поправить их можно следующим скриптом:

update dbo.SKDOKFACT set
PRICEKSU = Round(QUOPER *
(select Min(PRICE) from dbo.SKDOKFACT where IDOPER < 15 and IDKSU = 41)
, 2)
where
IDKSU = 41 and
IDOPER between 15 and 60

После этого нужно запустить пересчет остатков для данного ОУ. Впрочем, т.к. по КСУ уже прошли операции, то его можно не делать. Нужно только поправить PRICEKSU. Можно даже сузить область: не between 15 and 60, а строго равно 31.

37. Вопрос: Патч 1375 вводит новую функцию для генератора отчетов. Можно попросить ее описание.

Ответ: InsertPageBreak(<строка>) - добавляет разрыв страницы в указанном месте

38. Вопрос: После формирования исходящего платежного поручения, при попытке пометить счет во вкладке ОПЛАТА выдается диагностика "Документ нельзя изменить, т.к. по нему прошла оплата" (хотя никакой оплаты не было!) и ничего не помечается.

Ответ: Для устранения этой ошибки надо перекомпилировать триггер tu_allskdoc на таблицу TBL_ALLSKDOC (в Sybase Central открыть этот триггер и пересохранить его).

39. Вопрос: Самостоятельно разработанные отчеты 21013 – Ведомость износа ОС с учетом групп и подгрупп (без малоценки) и 21013 - Ведомость износа ОС по подгруппам (без малоценки) перестали работать. Проверяли по SQL MONITOR. Результат следующий. Число пользователей Аккорда – 7. 6 пользователей находятся в команде AWAITING COMMAND, отчет в команде OPEN CURSOR и так остается до выдачи ошибки: КОНФЛИКТ БЛОКИРОВКИ. Например, по 21013 – Ведомость износа ОС по подгруппам (без малоценки), последний блок выполнения:
SQL Execute: SYBASE - select distinct
g.IDOBJGROUP
from

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·DOBJGROUP) = 5) or (char_length(g.IDOBJGROUP) = 6))
order by substring(g.IDOBJGROUP,4,3), g.NMOBJGROUP

и после этого отчет вылетает по конфликту блокировки.

Ответ: В процессе оптимизации работы системы АККОРД были переработаны индексы для таблицы TBL_SKDOKFACT. Поэтому Ваши отчеты нужно отлаживать, чтобы они использовали «хорошие» индексы. Для этого запросы из Ваших отчетов нужно запускать через SQL Advantage с включенным выводом плана запросов и смотреть какой индекс используется сейчас и как нужно изменить запрос (добавить/убрать условия и т. п.) чтобы использовался более оптимальный индекс. В частности, это касается вышеприведенного запроса. В этой работе собственно и заключается отладка скорости работы отчетов.

40. Вопрос: Имеются проблемы в настройке прав пользователей. Релиз 136. Сайбейс версии 11.0.2 Описание ситуации.
Модуль АДМИНИСТРАТОР. Меню ПОЛЬЗОВАТЕЛИ-РЕГ.ПОЛЬЗОВАТЕЛЕЙ создаем пользователя. Меню ПОЛЬЗОВАТЕЛИ-КАТАЛОГ ПОЛЬЗОВАТЕЛЕЙ определяем пользователя в системе. Меню ПОЛЬЗОВАТЕЛИ-КАТАЛОГ ГРУПП создаем группу ПОЛЬЗОВАТЕЛИ. Меню ПРАВА ДОСТУПА-МОДУЛИ разрешаем доступ группе ПОЛЬЗОВАТЕЛИ только на модуль ССТ. Меню ПРАВА ДОСТУПА-ОРГАНИЗАЦИИ разрешаем доступ группе ПОЛЬЗОВАТЕЛИ на все организации корпорации. Меню ПРАВА ДОСТУПА-ВИДЫ ДОКУМЕНТОВ разрешаем доступ группе ПОЛЬЗОВАТЕЛИ полный доступ (права на доступ, добавление, обновление, удаление) только на документы кода 32 (счета, накладные на сбыт) в модуле ССТ. Перед этим в ССТ нужно завести несколько видов документов кода 32 (счет, накладная, акт выполненных работ - и т.п.). Меню ПОЛЬЗОВАТЕЛИ-КАТАЛОГ ГРУПП вводим созданного пользователя в группу ПОЛЬЗОВАТЕЛИ. Смотрим меню ПРАВА ДОСТУПА-ВИДЫ ДОКУМЕНТОВ по введенному пользователю и видим, что групповые права (разрешено) установились только на доступ (колонка ПРАВА НА ДОСТУП), остальные права установились - ЗАПРЕЩЕНО. Непонятно почему, в групповых то правах ВСЕ РАЗРЕШЕНО!!! Попытка установить права пользователю через меню ВОССТАНОВИТЬ ГРУППОВУЮ ни к чему не приводит. Тогда пытаемся вручную назначить пользователю права РАЗРЕШЕНО. Это происходит нормально. Далее в меню НАСТРОЙКА-ОБЩИЕ УСТАНОВКИ В СИСТЕМЕ устанавливаем флаги КОНТРОЛЬ ДОСТУПА ПО ВИДАМ ДОКУМЕНТОВ и ПРАВА ДОСТУПА К ЭЛЕМЕНТАМ ИНТЕРФЕЙСОВ - НЕ КОНТРОЛИРОВАТЬ. Заходим в модуль ССТ под заведенным пользователем и пытаемся создать счет в разделе СБЫТ (там этому пользователю все разрешено). Вкладка ДОКУМЕНТ заполняется но попытка перейти в выбор фактуры приводит к диагностике НЕДОСТАТОЧНО ПРАВ. Почему? Ведь пользователю все разрешено.

Ответ: Когда признак КОНТРОЛЬ ДОСТУПА ПО ВИДАМ ДОКУМЕНТОВ не установлен, добавление пользователя в группу (и восстановление групповых прав) НЕ ОБРАБАТЫВАЕТ эти права на добавление, обновление и удаление данных. Можно посоветовать добавлять пользователя, когда признак КОНТРОЛЬ ДОСТУПА ПО ВИДАМ ДОКУМЕНТОВ уже установлен. То есть нужно удалить пользователя из группы и заново его добавить. Тогда все установится синим цветом согласно групповым правам.

41. Вопрос: Модуль ОС, релизы 136 и 144. Версия Sybase 11.9.2. При отмене амортизации выдается ошибка:
General SQL error.
Index row entry for data row id (244520, 1) is missing from index page 39178 of index id 4 of table 'TBL_SKDOKFACT' in databas
'Accord'. Xactid is (515524,2). Drop and re-create the index.

Ответ: Это ошибка самого Sybase`а. Сообщение говорит о том, что нужно удалить и пересоздать индекс с идентификатором 4 для таблицы TBL_SKDOKFACT. Это индекс SKDOKFACT_01. Патч 1481 пересоздает в том числе и этот индекс. Удалить и пересоздать индекс можно и вручную:
в Sybase Central открыть таблицу TBL_SKDOKFACT и в папке Indexes удалить индекс SKDOKFACT_01
в SQL Advantage выполнить скрипт создания этого индекса:

create index SKDOKFACT_01 on TBL_SKDOKFACT (IDCOMPANY, IDFGROUP, IDDEPART, IDOPER, ISDONE, IDOBJ)

Если пересоздание индекса не помогает и ошибка все равно выдается, необходимо сделать следующее:
вручную удалить индекс SKDOKFACT_01
произвести отмену амортизации
вручную создать индекс SKDOKFACT_01

Общие рекомендации – перейти на версию Sybase 12.5.

42. Вопрос: Исчезли из дистрибутива запросы для алгоритмов.
Модуль АДМИНИСТРАТОР – СПРАВОЧНИКИ - ДОСПУП К ТАБЛИЦАМ ОТСУТСТВУЮТ:

Признак модуля
Наименование таблицы
Имя SQL таблицы

Основные средства
Инвентарная карточка до 2002 года
(запрос для значению)
dbo.INVCARD

Основные средства
Инвентарная карточка с датами
(запрос для значению)
dbo.INVCARD

Основные средства
Налоговые показатели ОС
(запрос для суммы)
dbo.TAXACCOUNTDATA


Ответ: Разрабочик сообщил, что данные запросы были сделаны для его собственных нужд, поэтому начиная с 128 релиза они и были удалены. Если они необходимы, их нужно завести в модуле АДМИНИСТРАТОР и сделать пользовательскими.
1. Инвентарная карточка до 2002 года
Признак модуля – Основные средства
Запрос для значения:
case when '
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·S
where i.IDIC = s.IDKSU and s.IDDOC = :CURSKDOC

Поля:
Первоначальная цена BEGPRICE вещественное
Сумма изменения стоимости QUINIT вещественное

2. Инвентарная карточка с датами:
Признак модуля – Основные средства
Запрос для значения:
%FIELDNAME%
from %TABLENAME% i, dbo.SKDOKFACT S, dbo.OBJLIST o
where
i.IDIC = s.IDKSU and
s.IDDOC = :CURSKDOC and
o.IDOBJ = i.IDOBJ

Поля:
Группа ОУ O.IDOBJGROUP вещественное
Дата ввода в эксплуатацию DTINIT дата
Дата изготовления DTMAKE дата
Подразделение I.IDDEPART строка
Послед. изм. срока (нал.) SMDREAMSALE Вещественное
Срок службы QUDREAMYEAR Вещественное
Срок службы (нал.) QUTAXDREAMYEAR вещественное

3. Налоговые показатели ОС, запрос для значения
Признак модуля – Основные средства
Запрос для суммы:
case when '%FIELDNAME%' = 'IDCOMPANY' -- считаем количество
then count(1) else sum(d.%FIELDNAME%) end
from %TABLENAME% d, dbo.SKDOKFACT sd, dbo.SKDOKFACT s
where d.IDCOMPANY = convert( numeric(8), :IDCOMPANY )
and d.IDFGROUP = convert( smallint, :IDFGROUP )
and d.IDOPER = convert( smalli
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Поля:
Дата DTOPER Дата
Количество IDCOMPANY Вещественное
Сумма в нац. валюте NATSUMMA Вещественное
Сумма документа DOCSUMMA Вещественное

43. Вопрос: Если документы уже, списаны есть ли возможность изменить скриптом у них какое-либо поле, например iddepart?

Ответ: Пишете:

exec setivariable 'import_rubin', 1

потом делаете что хотите
и затем опять

exec setivariable 'import_rubin', null

44. Вопрос: В модуле ССТ имеется следующая ошибка. Создали заявку на сбыт. Затем по этой заявке создаем накладную расхода в производство. Фактуру в накладную копируем из заявки, используя все заявленное количество. Через какое-то время на основе этой заявки создаем еще одну накладную (по какой то позиции заявки при производстве возникла необходимость в дополнительном количестве). Фактуру в накладную также устанавливаем операцией копирования. При этом по заявке образуется перерасход. После операции списания второй накладной поле SKDOKFACT.IDDEPART = null. Как поправить это поле у уже сформированных документов после исправления ошибки в системе?

Ответ: Через Advantage создать в базе процедуру:

create procedure ANN_UPDATE_NULL_DEPART
AS
BEGIN
declare
@idFact T_DOC,

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@iddepart where idfact = @idfact
end
exec setivariable 'import_rubin', null
return
END

И потом выполнить ANN_UPDATE_NULL_DEPART в Advantage.

45. Вопрос: По модулю КЛИЕНТ-БАНК. Для того, чтобы тип документа при импорте распознавался автоматически (т.е. не нужно было заполнять поле Тип операции в принятой платежке), нужно чтобы в принимаемом файле-выписке было поле «тип операции», которое надо приравнять к полю CB_DOCTYPE (вид операции) в шаблоне. Однако мы сейчас попробовали вбить его (т.е. 112) вручную в текстовый файл выписки. Настроили шаблон и произвели прием. Ничего в данное поле не вписалось. Также на сомнения наводит то, что в Аккорде за распознавание типа документа отвечает поле IDOPER, а поле IDDOCTYPE в таблицах вообще пустое.


Ответ: По поводу поля CB_DOCTYPE поясняем работу с этим полем. Если в выписке имеется нформация о типе операции (например, в выписке имеется поле со значением 1, формируемое Вашим банком, и это значение соответствует платежному поручению входящему) в шаблоне ТЕКСТ-ИМПОРТ необходимо ввести поле ВИД ОПЕРАЦИИ, связав его с внутренним полем ВИД ОПЕРАЦИИ (CB_DOCTYPE). В меню НАСТРОЙКИ-БАНКИ модуля КЛИЕНТ-БАНК для Вашего банка с шаблоном импорта в окне ТИПЫ ДОКУМЕНТОВ (ИМПОРТ) необходимо связать тип документа (например, ПЛАТЕЖНОЕ ПОРУЧЕНИЕ ВХОДЯЩЕЕ) со значением поля типа операции (CB_DOCTYPE) - для указанного примера это 1. В этом случае при импорте модуль, считывая из выписки значение поля типа операции будет автоматически выбирать тип документа исходя из значения типа операции.

46. Вопрос: Как выглядят алгоритмы по расчету показателей налогового учета?

Ответ: Вот пример такого алгоритма (расчет налоговой амортизации ОС):

//проверка на неуказание налоговой группы
If(Зн('Инвентарная карточка', 'Тип объекта учета', 0) = 3
and Зн('Инвентарная карточка', 'Код параметра', 0) = Null
and Зн('Инвентарная карточка с датами', 'Срок службы (нал.)', 0) <> Null
and Зн('Инвентарная карточка с датами', 'Срок службы (нал.)', 0) <> 0
and Зн('Первоначальная цена на дату износа', 'Цена', 0) >= 10000
and НалСрокСл>(ОбщКолНУИз + ПредКолНИ),

//выводим сообщение об ошибке
InsertMessage('Для карточки "' + Зн('Инвентарная карточка с датами', 'Номер карточки', 0) +
'" - не указана группа по налоговому износу'),,0,

//иначе - остальные проверки и вычисление
If(Зн('Инвентарная карточка', 'Тип объекта учета', 0) = 3
and Зн('Инвентарная карточка', 'Код параметра', 0) <> Null
and Зн('Инвентарная карточка с датами', 'Срок службы (нал.)', 0) <> Null
and Зн('Инвентарная карточка с датами', 'Срок службы (нал.)', 0) <> 0
and Зн('Первоначальная цена на дату износа', 'Цена', 0) >= 10000
and НалСрокСл > (ОбщКолНУИз + ПредКолНИ),

If( НалСрокСл - (ОбщКолНУИз + ПредКолНИ) = 1,

/* если остался лишь один месяц от срока полезного использования, то списываем весь остаток */
BegPrice - СуммаПоля('Налоговые показатели ОС', 'Сумма документа', -95),

/* иначе - как обычно */
Min(/* чтобы не переначислить налоговый износ */
BegPrice - СуммаПоля('Налоговые показатели ОС', 'Сумма документа', -95),
СмАмортНал
)
),

0 //если не заданы параметры карточки
)//конец основного вычисления с проверками
)//конец проверки на неуказание группы

И таблица для доступа из алгоритмов:
"Инвентарная карточка", запрос для суммы:

case
/* возвращает сумму модернизации для налогового учета по всем документам на
переоценку и изменение стоимости */
when '%FIELDNAME%' = 'ID
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· = :CURSKDOC

47. Вопрос: По модулю ФИНАНСОВАЯ ОТЧЕТНОСТЬ. Для формирования отчета «Декларация по налогу на добавленную стоимость (Форма от 20.11.2003)» как нужно матрицу задавать? Номер строки матрицы - это код строки декларации?

Ответ: Номер строки матрицы для этой ведомости формируется так:
<код раздела>_<номер строки отчета>

Например, раздел 00022, строка 050:
022_050

разделы 3 и 4 только из 2-х символов:
03_010
04_050

48. Вопрос: По модулю ССТ. При копировании фактуры из счёта в накладную неправильно считаются сумма и налоги

Ответ: Нужно отключить округление расходной цены!

49. Вопрос: Как можно сформировать какой-либо справочник (в частности «Классификатор ОС») путём импорта из файла DBF? Насколько это возможно и какие ограничения существуют?

Ответ: Это возможно. Например, при помощи UDE ПИРС. Проект можно хранить в интербейсе (лучше) или в Sybase. Делается два источника данных: на базу Аккорда и на базу с файлом DBF. Определяется две таблицы из каждого источника данных. Делается модуль данных с этими таблицами. И далее - создается процедура импорта, которая, используя созданный модуль данных, сканирует таблицу-источник данных и создает аналогичные записи в таблице-приемнике данных. Ограничения - сохранение целостности данных в Sybase (первичные ключи, внешние ключи, возможность и невозможность null в полях и т.д.). Иногда значения первичного ключа в Аккорде хранится в определенной таблице SerialNum, поэтому при создании записи первичный ключ нужно получать по процедуре, что-то типа Getautoinc... (точно не помним, но она используется в отчетах, например создания бухсправки). Второй вариант, более сложный, написать программу на DELPHI, C++, VB, Access и т.п. - все, что использует доступ к базам через BDE. Ограничения те же, что и в первом случае - целостность базы данных.

50. Вопрос: Был произведен откат на декабрь 2003г. в одной из организаций. При переходе от откаченного периода - декабря 2003г. на следующий период - январь 2004, произошло следующее: в модуле Финансы, где производился откат и закрытие периодов, через некоторый промежуток времени (около 5 минут) система выдала ошибку (...time out), и текущим установился январь 1900г. Система не "хочет" или не "может" закрыть периоды, нам нужен 2004 год.

Ответ: При переходе с периода на период ошибки в системе АККОРД отсутствуют. Причины возникшей ситуации в чем-то другом. Всего скорей в настройках сервера. Насчет настроек сервера: рекомендуется выставить параметр "number of locks" в 100000, а не 50000 как сейчас. Это вряд ли причина ошибки, но поможет избежать их в будущем. После изменения параметров нужно перезагрузить сервер.
Итак для исправления ошибки: во-первых в файле alias.cfg нужно поставить параметр
MAX QUERY TIME=900
Если отчетный период сейчас - 1900 год, то для коррекции даты текущего отчетного периода (простой коррекции, без сопутствующих действий по расчету сальдо) можно выполнить следующий запрос:

update dbo.FGROUP set
DTBEGIN = <дата требуемого отчетного периода>
where
IDOFFICE = <код организации для которой это делается - на которую настроен
модуль> and
IDFGROUP = <код финансовой группы>

например:

update dbo.FGROUP set
DTBEGIN = '20031231'
where
IDOFFICE = 1 and
IDFGROUP = 1

Перед выполнением подобных действий настоятельно рекомендуется сделать бэкап (вообще рекомендуется бэкапы делать ежедневно). После модификации alias.cfg и имея бэкап (на всякий случай!), нужно попробовать выполнить вышеприведенный запрос (со своими кодами организации и фин. группы). Он установит текущий отчетный период на декабрь 2003 года (ведь с этого периода пытались переходить?).
После этого еще раз нужно запустить процесс перехода на следующий отчетный период. Если вышеперечисленное не поможет - можно попробовать в принципе отключить блокировку (а именно процесс блокировки таблиц, который должен обеспечивать безопасность чтобы пользователи в процессе перехода не поменяли данные, и вызывает ошибку). Но для этого на сервере не должно быть пользователей (только администратор в модуле "Финансы").
Это крайняя мера - модификация системных процедур не рекомендуется. Блокировкой занимается хранимая процедура FIN_LOCKTABLES. Чтобы ее "отключить" в Sybase Central в самом начале кода (после Begin) поставить return:

create procedure FIN_LOCKTABLES
@IDCOMPANY T_OFFICE,
@IDFGROUP T_FGROUP,
@DTSALDO datetime
AS
BEGIN
return

весь остальной код.

END

После этого так же установить запросом декабрь и выполнить переход на следующий отчетный период. Если все будет нормально - return из процедуры убрать.

51. Вопрос: При прогонке обновления 2346 (1599 обновление функционала КБК на 2005 год) патчер вылетел. После повторного запуска патчера он «видит» обновление 2346 выполненным. Но на самом деле это обновление не выполнено, т.к. при попытке войти в модуле ФИНАНСЫ в платежные поручения выдается ошибка о несоответствии типа поля COBUDGETPAYCLASS и платежки не работают. Обновление 1599 (из файла 2346) является однократным для применения и второй раз патчер его не применяет.

Ответ: Обновление 1599 из файла 2346 в таблице BudgetPayClass на клиентской базе изменяет тип поля COBUDGETPAYCLASS с integer на varchar(50) и в таблицу TBL_PAYDOC добавляет поле CODEADMIN. Информация о примененных патчах хранится в таблице accpatches. Можно попробовать из SQL Advantage выполнить запрос, удаляющий информацию о выполнении обновления 1599:
delete from accpatches where idpatch=1599
Затем патчером снова применить обновление 1599.


52. Вопрос: Перестала «отвечать» база. В Sybase Central посмотрели LOGSEGMENT - там всего 11 мегабайт места свободного. Как почистить LOGSEGMENT насильно?

Ответ: LOGSEGMENT принудительно можно почистить двумя способами:
- выполнить запрос
dump tran Accord with no_log
- Backup database -> backup transaction log -> Remove the inactiva part of the log
Если первый способ не помог, можно попробовать второй. После очистки желательно перегрузить сервер полностью. А вообще, рекомендуемый размер LOGSEGMENT 30-40% от сегмента DATA

53. Вопрос: Настройка расчета больничного листа в 2005 году?

Ответ: В связи с изменением оплаты больничных листов, предлагаем Вам выполнить следующие операции: в видах оплат завести еще один вид оплаты, например "Больничный лист за счет средств организации", настройки оплаты оставить те же, кроме, соответственно, проводок. В выплатах по средним 2 дня начислять по новому заведенному виду оплаты, а последующие дни оплачивать как и раньше.

54. Вопрос: По модулю КЛИЕНТ-БАНК. У нас запускается модуль под именем юзера (не sa!!!). При попытке входа в меню ОПЕРАЦИИ-ИМПОРТ выдается сообщение:
"Недостаточно привилегий для выполнения данной операции", детально: "SELECT permission denied on object BANKREP, database Accord, owner dbo"
При вхооде под sa все нормально. Это ошибка модуля при работе под юзером или у юзера не хватает на что-то прав? Т.е. что-то в правах юзеру нужно добавить?

Ответ: Скорее всего что-то действительно изменилось в правах юзера. Должно лечиться следующим:
grant all on BANKREP to bublic

55. Вопрос: По отчетам вопрос. При использовании параметра Auto (после вывода полосы применить автоматический подбор высоты ячеек данной полосы) в отчетах, при выбросе отчета в Excel, последняя строка в ячейке подрезается наполовину - нижняя часть строки не видна. Особенно хорошо это видно, если выводится какое-то длинное наименование и в ячейке идет перенос по словам. Приходится в Excel увеличивать ширину строки руками, чтобы все было видно. Можно ли что-то сделать, чтобы при таком форматировании ячейки в Excel не было отрезания нижней части строки?

Ответ: Это шаманство... Можно воспользоваться в отчете функцией SetRowHeightAuto - она чуть лучше работает.

56. Вопрос: По модулю «Бухгалтерская отчетность» вопрос. Создали матрицу по расчету НДС, подключили к ней шаблон для вывода данных в файл, после расчета пробуем печатать и выводить в файл - печатная форма выводится, а вот при формировании файла выдается
«Ошибка, нет данных для формирования».
Надо как то подстраивать шаблон для заполнения? Как вообще стыковать печатную и электронную формы отчетов?

Ответ: Возможно что сама форма не поддерживает подобной выгрузки. Чтобы форма выгружалась из матрицы в коде отчета нужно прописать ряд команд - выгрузку в специальную таблицу. Такой пример можно увидеть в форме «Декларация по НДС (Форма 2003 года)» в конце кода отчета.

57. Вопрос: Выдается ошибка:
General SQL error.
Can't allocate space for object 'temp worktable' in database 'tempdb' because 'system' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegmen

Ответ: Необходимо посмотреть сегмент SYSTEM базы tempdb в Sybase Central. Видимо, там не хватает свободного места. Надо попробовать очистить лог в базе tempdb
Backup -> Backup transaction log -> Remove inactive part of the log
Если это не поможет - тогда добавить место в базу tempdb (создав для этой цели дополнительное устройство).

58. Вопрос: При попытке удалить фактуру расходной накладной выдается ошибка индекса и фактура не удаляется. После прогонки инсталлятора на базу все стало нормально, но возможно это неправильный путь исправления ошибки.

Ответ: Лучше проделать следующее.
1. Удалить из Sybase Central`а индекс SKDOKFACT_01 на таблицу TBL_SKDOKFACT (для этого может понадобиться попросить пользователей выйти из ССТ/ОС)
2. Отменить списание в накладных, где это раньше не получалось. А лучше вообще удалить те позиции и заново создать их позже.
3. Заново создать индекс командой:
create index SKDOKFACT_01 on TBL_SKDOKFACT (IDCOMPANY, IDFGROUP, IDDEPART, IDOPER, ISDONE, IDOBJ)

59. Вопрос: При переходе со 144 на 152 релиз возникла ошибка выполнения обновления 1599. В патчере это обновление установилось в статус СЛОМАЛСЯ. Насколько это серьезно?

Ответ: В принципе, ничего плохого не произошло.. Скорее, это наш недочет - в свойствах обновления было ошибочно указано "Однократное для версии", а должно было быть "Однократное для системы".. Т.е. при переходе к другой версии программы на одной базе этот скрипт и не должен был применяться. На всякий случай запустите Финансы и проверьте корректность работы с КБК. Я думаю, все должно быть ОК. Можно для этого обновления проапдейтить таблицу accpatches на значенре выполнен:
update ACCPATCHES set SIGNRESULT=1 where IDPATCH=1599

60. Вопрос: Обновлением A152_2673 (коды 1719 и 1720) вводятся в модули ФИНАНСЫ и ССТ новые отчеты (по задолженности с ограничением срока). Что это за отчеты и где их искать?

Ответ: Отчет по дебиторской задолженности (ФИНАНСЫ) находится в меню Сервис-Отчеты-Задолженность по авансам. Отчет по кредиторской задолженности (ССТ) находится в меню Снабжение/сбыт-Контроль-Задолженность по оплате счетов. Отчеты сделаны для того, чтобы отслеживать контрагентов с различным сроком задолженности. В интерфейсе отчета задается дата, на которую задолженность надо рассчитать, и задать количество месяцев свыше которых должна быть задолженность.

61. Вопрос: Обновлением A152_2713 (коды 1706 и 1710) вводятся в модуль ЗАРПЛАТА новые типы операций АВАНСОВАЯ ВЕДОМОСТЬ, ВЕДОМОСТЬ НА ВЫПЛАТЫ В МЕЖПЕРИОД и опциональный сброс счетчика ведомостей. Для чего это и как этим пользоваться?

Ответ: Авансовая ведомость и выплаты в межпериод - это тот же, что и был функционал, а сброс счетчика - появилась в з/п (в общих настройках) новая настройка; позволяет обнулить счетчик ведомостей с нового года при соответствующей настройке документов. В меню Справочники - Виды документов можно выставить автонумерацию и тогда в течение года номера будут автоматически формироваться с номером по п/п, а в конце года при установленной галочке счетчик сбросится и номера будут генерироваться заново.
Дополнительно: Код обновления 1722 вводит в систему функционал, выдающий при выборе фактуры в расходной накладной (если выбирается количество ОУ и при этом остаток меньше минимального запаса, но все еще больше нуля) предупреждение об остатке меньше минимального.

62. Вопрос: При попытке
· редактирования некоторых (только некоторых!!!) объектов учета, выдается диагностика
Record/Key deleted.
Операция отменена.
ПОДРОБНО
Record/Key deleted.

Как и из-за чего это? Что можно сделать?

Ответ: Это ошибка BDE. Попробовать пересортировать список по наименованию. Если ошибка именно при сортировке по наименованию - то по артикулу. В общем, поиграться с сортировкой.

63. Вопрос: Установка фильтра в договорах под администратором работает нормально, а вот под пользователем выдаёт ошибку "Недостаточно привилегий для выполнения данной операции. Операция отменена". Разрешения на права доступа к документам договоров ничего не дают. Если включить пункт "только договора с этапами" - дает, а при его выключении - опять ошибка.

Ответ: Из Advantage выполните запрос: Grant all on ALGVARIABLES to Bublic Должно помочь.

64. Вопрос: Как применять обновление А152_2785?

Ответ: В прилагаемом пакете находятся патчи по отрицательным остаткам и последний КЛАДР. КЛАДР занимает много места, так что его закачка займет продолжительное время, возможно, patcher даже выдаст сообщение об ошибке типа "Превышен интервал выполнения запроса" (просто проигнорировать ее - патч все равно будет применяться, рекомендуется даже оставить патчер запущенным еще минут на 15 для гарантии). Перед применением данного обновления рекомендуется сделать backup базы данных и обязательно убедится что системная база temp_db занимает минимум 140 Mb. Для увеличения размера системной базы temp_db, можно создать новый device (Database Devices в Sybase Central) размером 120 MB и добавить этот device в состав базы temp_db (меню Properties, вкладка Devices). При возникновении диагностики во время выполнения патча:
General SQL error.
Can't allocate space for object 'syslog' in database "Accord" because 'logsegment' segment is full/has no free extens. If you run out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase size of the segment.
нужно добавить место под Transaction Log рабочей базе.
Обновление 1765 - ошибка обработки отрицательных остатков ФИФО/ЛИФО. В модуле при добавлении позиции в фактуру сначала "сглаживались" остатки денег, накопившиеся при округлении до копеек, а потом уже обрабатывались отрицательные остатки на КСУ. А должно быть наоборот. Т.е. при отрицательных остатках на КСУ сумма расхождения была огромной, и сглаживание этого расхождения приводило к таким неземным ценам и суммам. Отрицательные остатки на КСУ возникают вполне обоснованно - когда мы сначала РАЗРЕШАЕМ их в настройках и затем списываем с КСУ количества ОУ, большее чем мы располагаем. Для контроля отрицательных остатков нужно просто выставить соответствующие параметры настройках системы.

65. Вопрос: Если переинсталлировать Sybase, потом восстановить базу АККОРДа - пользователи, имеющиеся в базе АККОРДа, не будут работать. их же надо в Sybase прописывать. Если пользоваться средствами АККОРДа и пересоздавать пользователей - это очень большая работа по перепрописке прав пользователей. Как можно эту работу уменьшить?

Ответ: Из SQL Advantage создать пользователя командой:
sp_addlogin loginame, passwd [, defdb [, deflanguage [, fullname]]]
Затем, после добавления логина, в Sybase Central`е дать ему роль AlgoritmExecutor и связать с нужным пользователем в базе.

66. Вопрос: При сетевой работе, если какой-то клиент запускает по сети большой траффик, на других станциях клиенты Аккорда начинают вылетать. Видимо, по тайм-ауту. Что можно поменять в настройках сервера Sybase (или, может в алиасе Аккорда), чтобы увеличить время ожидания между клиентом и сервером?

Ответ: Проверьте в алиасе Аккорда значение параметра TDS Packet Size. Он должен быть не менее 4096.

67. Вопрос: С нас потребовали, чтобы в накладных присутствовали банковские реквизиты организации. Мы написали свои формы накладных. Пока было по одному расчетному счету или можно бала поставить "основной", проблем не было, но сейчас организация стала работать через разные банки (выделить основной нельзя) и получаем по две шапки в накладной, провести выборку расчётного счета не по чему. Как выкрутиться?

Ответ: Если накладная создается на основании счета, то в счете однозначно указаны банк и расчетный счет. При распечатке накладной в этом случае банковские реквизиты нужно брать из счета. Если накладная создается без привязки к счету, то - генератор отчета поддерживает такую структуру, как радиокнопка (см. документацию). Добавив радиокнопку с перечисленными счетами в отчет, можно использовать результат пользовательского выбора из банков. Множественная шапка печатается как раз из-за того, что селект возвращает множественный выбор (у организации не один банк).
Дополнительно: Для этой же цели можно использовать новую функцию для отчетов:
String UniPick Ее параметры:
- SQL запрос
- список видимых полей (через запятую)
- список заголовков колонок с шириной через символ "=" (равно)
- заголовок окна
- возвращаемая строка если нажата кнопка отмена

Результат - первое поле из запроса возвращенное в виде строки или последний параметр если нажата кнопка отмена.

Пример:
CalcFields
Res: String = UniPick('select * from param', 'IDPARAM,NMPARAM',
'Код=20,Наименование=40',
'Выбор чего-нибудь', 'облом')
Dummy: Integer = StrMessage(Res, 0)
EndCalcFields

68. Вопрос: Подскажите, пожалуйста, имеется ли возможность в модуле ФИНАНСЫ вывести отчёт - аналог оборотно-сальдовой ведомости в программе "1С", и чтобы в этом отчёте подробно разворачивались все документы по данному контрагенту? Или возникнет необходимость самостоятельного написания такого отчёта (подскажите на основе какого существующего отчёта это можно сделать)?

Ответ: Модуль ФИНАНСЫ, меню ВЕДОМОСТИ - АНАЛИТИЧЕСКИЕ ВЕДОМОСТИ (НАСТРАИВАЕМЫЕ). Здесь можно сформировать нужные Вам отчеты. Настройка этих ведомостей производится в меню СПРАВОЧНИКИ - НОРМАТИВНЫЕ ДАННЫЕ - НАСТРОЙКА АНАЛИТИЧЕСКИХ ВЕДОМОСТЕЙ. Это практически аналог нужной Вам оборотно-сальдовой ведомости. Но, как известно, бухгалтера - очень капризные люди. И порой требуют сделать им отчеты "один в один". Тогда придется писать отчет, используя тот шаблон, который нужен бухгалтерам. Написать этот отчет конечно же можно (в системе возможны ЛЮБЫЕ! отчеты). В качестве примера можно взять отчет с кодом 30183 "Аналитическая ведомость в разрезе субсчетов и контрагентов" и использовать тот же самый диалог, который используется для этого отчета. Описание данного отчета приведено на стр.12 документа ПАРАМЕТРЫ И ДИАЛОГИ ДЛЯ ПРОГРАММ ФОРМИРОВАНИЯ ОТЧЕТОВ И ПЕЧАТНЫХ ФОРМ ДОКУМЕНТОВ СИСТЕМЫ "АККОРД 5"

Дополнительная информация по обновлениям:
обновление 1752 содержит новый функционал разукомплектации. Теперь в системе возможна разукомплектация комплектов, поступивших со стороны и оформленных приходными документами типа СНАБЖЕНИЕ, ПРИХОД ИЗ ПРОИЗВОДСТВА и т.п. Для разукомплектации таких комплектов в интерфейсе выбора КСУ при разукомплектации появилась кнопка НОВАЯ КСУ. С ее помощью можно создавать новую КСУ для КАЖДОГО! составляющего комплект ОУ. Можно также оприходовать составляющие комплект ОУ на имеющиеся КСУ. Оприходование составляющих комплект ОУ производится по ценам, указанным в КСУ.
обновление 1777, 1778 вводит в систему (модуль ОС) справочник ОКОФ.
обновление 1785, 1786 вводит в систему (модуль ССТ) возможность не показывать (при выборе в интерфейсах документов) устаревшие подразделения и ФХО. Примечание: Если в модуле ССТ справочник подразделений не открывается (выдается диагностика об ошибке), необходимо прогонать обновления с кодом 1785, 1786 повторно (по кнопке ПРИМЕНИТЬ ТЕКУЩЕЕ ОБНОВЛЕНИЕ из списка обновлений).

69. Вопрос: Обращаюсь к вам с вопросами по поводу функции UniPick.
1. Нижеследующая функция отрабатывает два раза подряд (это не зависит от количества строк выборке).
Т.е. после нажатия "ОК" в окне выборки, это окно исчезает и тут же появляется снова, как бы требуя подтверждения выбора. После повторного нажатия кнопки "ОК" окно исчезает и отчет продолжает работать. Такое чувство, что функция в отчете прописана дважды.
2. Желательно, чтобы название окна выборки можно было заказывать из функции
3. Названия столбцов в выборке остаются англоязычными ("IdBankOff" вместо "Код", "BankName" вместо "Банк" и т.д.)
4. Длина полей в выборке не меняется (если заказываем "Банк = 20" или "Банк = 40", длина поля все равно остается много большей)
5. Поля в выборке желательно отсортировать в том же порядке, что и в запросе
Res: string = UniPick('select distinct * from dbo.bankoff where idoffice = 46',
'IdBankOff, BankName, BankBIK',
'Код = 4, Банк = 20, БИК = 9', 'IdBank', Dummy)
Ответ:
1. Проверьте, у Вас эта функция случайно не в Band'е выбора банка поставлена (в CalcFields)? Если так, то сколько у Вас банков, столько раз она и будет появляться. Вызов функции надо делать выше Band'а выбора банков. Лучше вообще отдельным Band'ом.
2. Оно и выбирается - это 4-й параметр
3,4,5: порядок полей можно изменить в SQL выражении. При указании параметров не должно быть пробелов.

Res: string = UniPick('select distinct * from dbo.bankoff where idoffice = 1',
'IdBankOff,BankName,BankBIK',
'Код=4,Банк=20,БИК=9', 'Название окна','отмена')

В качестве возвращаемого значения используется первое поле из SQL запроса.

70. Вопрос: Подскажите, пожалуйста, как выцепить курс доллара (<евро>) на определённую дату? (коэффициент для пересчёта цены). Не могу разобраться в структуре таблиц!

Ответ: Таблица CURSHIS.

IDVALUT - одна валюта
IDBASVAL - другая валюта
IDCURS - тип курса: биржевой, ЦБ и т.д. (Таблица CURSVAL)
DTCURS - дата
SMCURS – пересчет

71. Вопрос: У нас непонятно как работает возврат поставщикам, подскажите, пожалуйста, как это можно исправить. При формировании возврата поставщику выбираем по нужному счёту-фактуре позицию. Нажимаем кнопку «Установить», устанавливаются позиции с нулевым количеством

Ответ: Мы разобрались с Вашей проблемой - нулевое количество во вкладке ФАКТУРА накладной ВОЗВРАТ ПОСТАВЩИКАМ. В функционале системы АККОРД ошибок нет. Нулевые позиции выводятся по причине израсходования всех позиций выбранной приходной накладной (той накладной, по которой Вы возвращаете товар поставщику). Т.е. для сч.ф. 25319 все позиции уже были израсходованы тем или иным образом (просчитайте количество по расходным накладным). Оставшееся же на КСУ количество не принадлежит выбранной Вами приходной накладной и поступило на КСУ по другим документам (это НЕ ТЕ позиции, которые были оприходованы по выбранной приходной накладной). Следовательно, не может быть возвращено выбранному Вами поставщику. Что и показывает система, указывая нулевое количество.
Другими словами, работая по режиму FIFO/LIFO, система уже списала те позиции, которые Вы пытаетесь вернуть. Сначала на эту КСУ нужно вернуть именно те позиции, которые были списаны с нее от этой приходной накладной..

72. Вопрос: Подскажите, пожалуйста, как поставить условие в запросе, чтобы выдавался список ВСЕХ накладных, а не только тех, по которым прошли оплаты, т.е. чтобы были видны сальдо по 62 счёту, если накладные не оплачены.

Ответ: where c.IDACCOUNTD = :IDAccount and
c.DTCONDUCT < :dtBegin and
c.idoper = 32 and
c.iddoc *= r.idskdoc and <-- Вместо '=' д.б.'*='
r.idpdoc = p.iddoc

73. Вопрос: Подскажите, пожалуйста, структуру таблиц, из которых можно выцепить список авансов, полученных от контрагента, за минусом посаженных оплат, т.е. список авансов с суммой остатка, если дата аванса и дата прицепленной по нему накладной(по оплате) раньше даты начала периода.

Ответ: Таблица TBL_AVANSPAY или (View AVANSPAY для пользователей) Содержит полученные (idoper=106) и выданные (idoper = 116) авансы по контрагентам.

74. Вопрос: Начали работу с Внешторгбанком. Естественно там программа своя и файл экспорта тоже. Так вот, аккордовский клиент-банк не берёт этот файл, говорит : "Corrupt table/index header.". Тоже самое он говорит, если файл создан MS Visual FoxPro v.6 Означает ли это, что заголовок таблицы д.б. ДОСовый? Как с этом побороться? Во внешторгбанковском клиент-банке никаких настроек по формированию файла нет.

Ответ: Это проблемы не у модуля, а у BDE. Точно неизвестно, возможно в MS FoxPro более свежая версия формата. Посоветовать здесь ничего нельзя - только "шаманить" с форматом в FoxPro, либо делать импорт как текст. Мы сталкивались с тем, что есть файлы которые MS FoxPro читает, а BDE - нет. В BDE покрутить можно сортировку и настройки языка, настройки формата даты, времени и денег для FoxPro.

Дополнительная информация по обновлениям:

Обновление А152_2815 содержит:
- Код обновления 1812 - новая функция для отчетов в зарплате:
Функция DoFileExport, вызывает диалог экспорта в файл.
Вовзращает Integer. Параметры:
<код шаблона> Integer. Если 0, то его можно выбрать в диалоге.
<видимы ли кнопки выбора сотрудников> Integer 0 или 1
- Код обновления 1808 - возврат поставщикам - учет списанных позиций:
Ранее при заполнении фактуры в таблице показывалось сумма единиц ОУ по ВСЕМ приходным документам, при этом не учитывалось, что по соответствующим КСУ уже могли быть списания. Сейчас в таблице отображается РЕАЛЬНЫЙ остаток по каждой КСУ с учетом списанных позиций.. КСУ, на которых не осталось ОУ, просто не отображаются.


75. Вопрос: У нас на некоторых локальных машинах сбоит Аккорд: при запуске ругается, что модуль отсутствует в комплекте (при следующей конфигурации: на локальной машине установлена клиентская часть Sybase, лежит файл ACCORD.EXE, ACCORD.pos, ACCORD.RUN, alias.cfg. В файле run прописан путь к серверу Program='\\Server\Atlant\Accord\Finance.exe /CFG="alias.cfg"', в файле cfg прописано имя пользователя, название базы...) Подскажите, что может быть неправильным?

Ответ: Либо Вы запускаете модуль, на который у Вас отсутствует лицензия, либо на данных станциях модуль при запуске не может найти файл лицензий accord.key (находится в каталоге \\Server\Atlant\Accord\). Если Вы запускаете модуль с локала (помощью файла ACCORD.EXE), файл accord.key ДОЛЖЕН БЫТЬ ВИДЕН!!! модулю при запуске. Скопируйте этот файл в тот же каталог, где находится ACCORD.EXE

76. Вопрос: На двух машинах происходят некоторые глюки. Создают счёт. При выборе фактуры вылетает сообщение "конфликт блокировки", после чего при перелистывании вкладок документа, фактура всё-таки появляется, но общая сумма на первой вкладке остаётся пустой (соответственно печатная форма тоже генерируется неправильно!).

Ответ: Если это только на двух станциях, то скорее всего либо BDE, либо сеть. Лечится это кнопкой "Коррекция" в списке счетов. С правами доступа, кстати, все в порядке? Есть ли у этих пользователей доступ к процедурам RECALCDOC и CHECKITOGO? В Sybase Centrale`е в списке процедур -> Properties -> Permissions должна стоять галочка в колонке "Execute" у этих пользователей.

77. Вопрос: Предполагали, что те формы Ж-О, которые есть в Аккорде могут выдавать как дебет, так и кредит (в зависимости от настроек самого журнала). А тут вот форма Н1 (журнал по расходникам) выдает только дебет (настройка: дебет счета 50, сумма по дебету, кредит всех). А когда настраиваем этот же журнал на кредит (настройка: дебет всех, кредит счета 50, сумма по кредиту) выдается пустота. Хотя данные в расходных ордерах все есть. В чем ошибка? И если эту форму надо переделывать, то какие именно Band’ы?

Ответ: Это специфика заполнения формы. Форму Н1 в принципе можно переделать - просто выкинуть из нее все лишнее. В самом начале Н1 делается фильтр на указание счета (строки 56 - 67). Если убрать этот фильтр, то, наверное, все будет выводиться.

78. Вопрос: Не могли бы Вы описать последовательность наших действий в АККОРДе при увольнении одного МОЛа, под ответственность которого заведены различные ОС, и замене его другим? Т.е. как передать ответственность от одного лица другому? Надо ли писать какие-то скрипты и т.п.?

Ответ: Это можно сделать через переброску матценностей (ОС - в модуле ОС, ТМЦ - в модуле ССТ). Никаких дополнительных скриптов писать не нужно. Нюанс - при указании МОЛа отправителя и галочки "Учитывать МОЛ при выборе фактуры" в ССТ в диалоге будут указываться только нужные ОУ.

79. Вопрос: ССТ, ОУ, вкладка ДОП.СВОЙСТВА, кнопка ИЗОБРАЖЕНИЯ И ОПИСАНИЯ. Добавляем фото ОУ, это фото куда ложится? В базу? Или остается в том каталоге, откуда мы его берем? Эти изображения в отчетах никак нельзя обрабатывать (вставлять в отчет при его формировании)?

Ответ: Фото ложится в базу, таблица IMAGES. Поле, в котором хранится собственно картинка - DATA. Для работы с изображениями в отчетах есть три встроенные функции (см. ниже), в качестве параметра Picture для которых указывается как раз это самое поле DATA из IMAGES. Встроенные функции используются в разделе CALCFIELDS отчета.
Рисунки, у которых стоит палитра 256 цветов, скорее всего выводиться будут плохо. Желательно выводить рисунки в TrueColor 24 бит.

InsertPicture(Picture: string): Integer
Вставляет картинку из строкового параметра (который на самом деле обычно является BLOB полем) в область, левый верхний угол которой определяется позицией текущей ячейки шаблона отчета.

InsertPictureAtPos(Picture: string; Col, Row: Integer)
Вставляет картинку в область, левый верхний угол которой определяется позицией заданной ячейки. В случае если параметры Col и Row отрицательные, вставка произойдет в область, смещенную относительно позиции текущей ячейки отчета - к ее координатам будут прибавлены абсолютные величины указанных параметров.

InsertPictureEx(Picture: string; Col, Row, W, H: Float): Integer
Вставляет картинку в область, определяемую параметрами Col, Row, W, H, где Col, Row - координаты левой верхней ячейки области, а W, H - ширина и высота области в единицах ширины и высоты исходной ячейки (возможны дробные значения). В отличие от предыдущей функции, здесь выполняется пропорциональное масштабирование картинки под указанную область.

80. Замечание по посленим (релиз 152, файлы обновлений 2800 - 2832): Если после применения последних патчей модуль ФИНАНСЫ ругался на ALGVARIABLES (там идет строка в коде, которая не проходит под обычным пользователем, только под sa), необходимо раздать права группе Bublic на удаление в таблице ALGVARIABLES. Sybase Central -> Accord -> Groups -> Правой кнопкой мыши на группе Bublic -> Properties -> Закладка Object Permissions. Находим таблицу ALGVARIABLES и проставляем галочку в столбце Del. Нажимаем "Применить".

81. Вопрос: Как рассчитываются графы 28,29,30, 21 отчета "Форма 2004 год Приложение 1" - (меню ДОКУМЕНТЫ-НАЛОГОВЫЕ ДОКУМЕНТЫ-ИНДИВИДУАЛЬНАЯ КАРТОЧКА УЧЕТА)? Настройки этих колонок в настройках налоговых отчетов отсутствуют (там только переменные ЕСНИКАРТ02 - ЕСНИКАРТ20). И 8, 10 и 12 колонки (ставки ЕСН) надо ручками прописывать? Вроде там в форме никакого вывода не предусмотрено.

Ответ: 28 = 13 - 20 - 24
29 = 14 - 25
30 = 15 - 26
31 = 16 – 27
Комментарий в начале отчета:
/*
Значения полей ставки по ЕСН в ФБ, ФСС РФ и фонды ОМС (графы 8, 10, 12) берутся
из справочника Параметры\Настройка налоговых отчетов - мнемоники ЕСНИКАРТ08,
ЕСНИКАРТ10 и ЕСНИКАРТ12 соответственно (поле - "Признак").
*/
Т.е. в поле "Признак" параметра пишется текстовое значение ставки, которое потом переносится как есть. Важно! - оно не участвует в расчетах. Расчеты идут в процедурах GetPensStrahPart и GetPensNakopPart, куда и зашиты ставки. Просто нет механизма, позволяющего брать что-нибудь из тела процедуры. Если настроек каких то граф нет в Параметры\Настройка налоговых отчетов, необходимо их зачести по F7.

82. Вопрос: В документации к "Аккорду" в руководствах "Параметры и диалоги для программ формирования отчетов и печатных форм документов системы "Аккорд5" и "Переменные и функции алгоритмов системы "Аккорд5" отсутствуют описания параметров печатных форм и переменных и функций алгоритмов системы модуля "Кадры". В частности, хотелось бы использовать в своем отчете диалог, похожий на CHILD_DIALOG отчета "Список сотрудников с детьми", но без необходимости ввода в поле диалога информации о возрасте детей.

Ответ: Список отчетов для модуля "Кадры", как считает разработчик, исчерпывающий. Не предполагалось, что по кадровой информации пользователь будет писать собственные отчеты, потому подробного описания диалогов нет (впрочем, там их около десятка всего). К тому же, это единственный модуль, в котором имеется мастер кадровых отчетов для написания отчетов прямо из модуля. Но если есть необходимость в использовании имеющихся диалогов для собственных отчетов, можно спрашивать про эти диалоги. В частности, для нужного Вам диалога CHILD_DIALOG выходные параметры
:idCompany, :idDepart, :quYears, :dtBegin
Аналогичного диалога, но без но без необходимости ввода в поле диалога информации о возрасте детей в системе нет. В своем отчете, если Вы используете этот диалог, необязательно вводить эту информацию. В этом случае диалог просто не возвращает соответствующую переменную.

83. Вопрос: По формированию 2НДФЛ - как это сейчас в Аккорде сделано. Там все формируется отчетом. А какие параметры для отчета в "Настройке налоговых отчетов" должны быть настроены?

Ответ: Там все формируется в хранимой процедуре SalPerIncomeInfo. Надо смотреть по ней. Эта процедура готовит все данные в таблицу SAL_TEMP, а потом модуль выгружает из этой таблицы или в отчет, или в файл. Префиксы строк файла так же пишутся в процедуре.
В принципе в exeшнике нужно чтобы:
1. Генерировался GUID в текстовом виде в переменной, напр. SALPERS_GUID до вызова SQL процедуры
2. Из таблицы SAL_TEMP сохранялись значения VALUE2 как строки в ANSI кодировке (а не как сейчас с перекодировкой в OEM как в старом формате)
3. Имя файла генерировалось SQL процедурой и бралось при создании файла из переменной SALPERS_FILENAME

84. Вопрос: По формированию 2НДФЛ за 2005 год.

Ответ: Обновления, позволяющие формировать 2НДФЛ за 2005 год:
А152_2869.upd
скрипт new_ndfl.sql
программа-конвертер converter.exe преобразующая файл справок, формируемый моделем ЗАРПЛАТА, в XML формат
Порядок работы по формированию справок 2НДФЛ 2005:
1. Применить обновления.
2. В модуле ЗАРПЛАТА проверить соответствие адресов прописки и местожительства сотрудников действующему справочнику КЛАДР (в личных карточках сотрудников кнопка ОБЩИЕ СВЕДЕНИЯ, вкладка АДРЕСА).
3. Донастроить в модуле ЗАРПЛАТА (справочники-параметры-настройка налоговых отчетов) следующие переменные (если они там уже есть - поправить, если их нет - добавить):
Аббревиатура
Год
Название
Округление
Признак

СГДСумм
у всех 2005
СДФЛ - и далее по расшифровке в приказе ИФНС
До сотых
СДФЛ01

ОблСумм


До сотых
СДФЛ02

НИОблСумм


До целых
СДФЛ03

НУОблСумм


До целых
СДФЛ04

ВозврИФНСПЛ


До целых
СДФЛ05

ЗачСуммПЛ


До целых
СДФЛ06

УдСуммПЛ


До целых
СДФЛ07

ДолгНП


До целых
СДФЛ08

ДолгНА


До целых
СДФЛ09

ВзыскИФНС


До целых
СДФЛ10


Примечание: Только первые 4 обязательны! Так как программа проверки чувствительна к порядку появления мнемоник в разделе СГДНалПер, а они берутся из настроек налоговых отчетов, с сортировкой по полю "Признак", так что меняя его можно добиться нужного порядка. В соответствии с инструкцией он должен быть таким, как в таблице. Список всех переменных в настройке налоговых отчетов можно посмотреть запросом к базе:

select * from INCOMECATEG where REPSIGN like 'СДФЛ%'

4. Проверьте наличие в справочнике организаций у Вашей организации кода ОКАТО (вкладка РЕГИСТРАЦИОННЫЕ ДАННЫЕ)
5. Вывод справок 2НДФЛ осуществляется в меню документы-налоговые документы-справка о доходах физического лица. Все поля диалога должны быть заполнены.
6. После формирования файла из модуля ЗАРПЛАТА, необходимо обработать этот файл программой-конвертером.

85. Вопрос: Отчет 31003 "Реестр платежных документов". На его основании я написала практически заново отчет для бухгалтеров. Все как они хотели, кроме одного. Отчет должен выводиться на полстраничках, причем вверху и внизу на каждой полстраничке должны повторяться верхняя шапка и бэнд с подписями. Так вот с верхом я как-то еще справилась, а вот внизу совсем не знаю, как это организовать. Кроме того, я над этим отчетом вообще жутко извратилась, чтобы как надо выводились строки перед таблицей. Пришлось даже вставить скрытый бэнд (который выводится, но не печатается), а то шапка выводилась столько раз, сколько всего док-тов, каждый раз с приплюсованной следующей суммой. Сейчас, вроде, выводится правильно, но можно было как-то по-умному сделать.
И еще маленький вопросик. Часто при выполнении отчетов и выводе их на печать получаются лишние пустые страницы. Я заметила, что они пропадают, только если в редакторе сильно заузить все поля. Тогда пустых листов нет, но сами отчеты при этом очень узкие получаются. Как от этого можно избавиться.

Ответ: Для работы таких отчетов Вам необходимо прежде всего сформатировать страницу вывода - вручную посчитать сколько строк занимает шапка, сколько строк - подножье, сколько строк остается на вывод собственно документов. Далее, при написании отчета сначала через SQL ( функции SUM, COUNT) считаете сколько всего строк документов у Вас будет на вывод и запоминаете эту цифру. Затем формируется цикл по выводу строк документа (Вы уже знаете, сколько строк документов на каждом листе Вы должны вывести). Внутри цикла Вы сначала выводите шапку (через PageHeader, например), затем начинаете вывод строк документа. После вывода очередной строки документа счетчик строк вывода на одной странице уменьшается. При достижении счетчика значения нуля, выводите бэнд подножья. Далее выводите шапку новой страницы и т.д., пока не закончится вывод всего количества строк документов. Примерами таких отчетов могут служить ПЛАТЕЖНАЯ ВЕДОМОСТЬ (в модуле ЗАРПЛАТА), либо накладная ТОРГ-12 (в ССТ).
Это возникает из-за того, что Вы объявляете границы бэнда A1-Z1. Т.е. сами же включаете в бэнд лишние строки. Зачем? Объявляйте бэнд в тех границах, в которых это на самом деле необходимо, и пустых страниц вывода не будет.

86. Вопрос: По поводу "нажиманий" на кнопку "ИНИЦИАЛИЗАЦИЯ". К сожалению система не даёт изменять начальный остаток на КСУ, пока не удалишь все документы по ней. Подскажите, пожалуйста, как можно ЭТО обойти, чтобы поправить сразу всю базу , не удаляя документов (сриптом как на картинке)

Ответ: Недавно мы писали процедуру для изменения даты ввода документов и даты инициализации КСУ по этим документам. Никаких удалений документов при этом не делали. По аналогии Вы можете написать свой запрос для изменения КСУ. Важно! Перед изменением отключается триггер (exec setivariable 'import_rubin', 1), после изменения триггер включается (exec setivariable 'import_rubin', null) Вот текст этой процедуры:
create procedure ANN_UPDATE_DATE_SKLAD @IDCOMPANY integer
AS
BEGIN
declare @idDOC T_DOC
DECLARE c_Allskd CURSOR FOR select al.iddoc from dbo.TBL_ALLSKDOC al
where al.IDCOMPANY = @IDCOMPANY
and al.IDOPER = 2 and al.IDDOCTYPE = 3
FOR READ ONLY
exec setivariable 'import_rubin', 1
OPEN c_Allskd
While (1 < 2) begin
FETCH c_Allskd INTO @iddoc
if @@SQLStatus <> 0 break
update dbo.TBL_ALLSKDOC set IDDOCSTAT = 1, DOCSIGN = DOCSIGN where IDDOC = @iddoc
update dbo.TBL_ALLSKDOC set DTREG = '01.01.2006' where IDDOC = @iddoc
update dbo.TBL_ALLSKDOC set IDDOCSTAT = 5 where IDDOC = @iddoc
end
exec setivariable 'import_rubin', null
update dbo.TBL_KSU set DTINIT = '01.01.2006'
where IDCOMPANY = @IDCOMPANY
and DTINIT = '01.01.2005'
return
END

Вопрос: Отключение триггера (exec setivariable 'import_rubin', 1) не позволяет изменить начальный остаток на ксу (update ksu set quinit=0, quinitpart=0 where quinit=1 and quinitpart=1). Подскажите, что ещё можно сделать?

Ответ: Вообще говоря, Вы слишком уж впрямую подошли к решению вопроса. Пример был прислан Вам только как пример. Для таблицы КСУ в триггере ключом служит переменная REF_REQUEST_PLAN (конкретно какой ключ отключает/включает триггер конкретной таблицы нужно смотреть в теле самого триггера - Sybase Central). Для таблицы КСУ нужно было написать:
exec setivariable 'REF_REQUEST_PLAN', 1
А вот Ваш запрос
update ksu set quinit=0, quinitpart=0 where quinit=1 and quinitpart=1
поменяет ВСЕ!!!! КСУ в базе с такими условиями. Вы именно этого хотите?

87. Вопрос: В модуле «Администратор» установлен флаг "Контроль прав доступа по видам документов". Где прописывается информация о том, кто какие документы формировал (для документов в таблице PAYDOC)?

Ответ: Таблица user_changes.

88. Вопрос: Как подсчитать количество документов, созданных пользователем за указанный период?

Ответ: Нужно написать отчет, использующий для этой цели таблицу USER_CHANGES. В данной таблице используются следующие поля:
- IDTABLE код таблицы, в которой создается/изменяется запись (PAYDOC - 1001, ADVANCEDOC - 1002, ALLSKDOC - 1003, DOGOVOR - 1004)
- ID - код записи в измененной таблице (например, для таблицы ALLSKDOC записанное здесь значение будет равно соответствущему IDDOC таблицы ALLSKDOC)
- DT - дата изменения
- SUID - код пользователя
Связь кода пользователя (SUID) с именем пользователя определена в таблице ACCUSERGROUP. По ID и IDTABLE таблицы USER_CHANGES можно выбрать из таблицы ALLSKDOC документы нужных операций (фильтрация по полю IDOPER в таблице ALLSKDOC). Необходимо учесть, что в таблице USER_CHANGES запись о создании/изменении документа (одного и того же!!!) создается каждый раз, как только пользователь создает/изменяет этот документ. Т.е. для одного ID и одного IDTABLE в таблице USER_CHANGES может быть несколько записей, отличающихся IDUSERCHANGE (кодом изменения). При этом SUID у этих записей может быть одним и тем же (один и тот же пользователь создал, а потом изменял этот документ), либо разным (один пользователь создал этот документ, а другие его меняли).

89. Вопрос: Каковы значения первого параметра в функции СуммаВхВО для модуля ЗАРПЛАТА?

Ответ: Значения первого параметра могут быть следующими:
10 – начисления,
30 – удержания,
80 – начисления на ФОТ.

90. Вопрос: Как настроить расчет зарплаты по регрессивной шкале?

Ответ: 1. Пусть, например, начисления на ФОТ имеют следующие коды:
1 – Пенсионный фонд РФ
2 – ТФ ОМС
3 – ФФ ОМС
4 – ФСС
5 – Накопительная часть ПФ
6 – Страховая часть ПФ

2. Ввести в настройку годового дохода новую группу «ЕСН: Налогооблагаемые базы» со следующими колонками
41 Нал/база ПФ, Момент расчета – после удержаний, Последовательность – 2, Алгоритм – ГДЕСНПФ
if (КодКатегСотр('Льготы по ЕСН') <>1,
СуммаВхВО ( 80 , 1 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ПФ', 1)
+СуммаВхВО ( 80 , 1 , 0 , 0 , '' )<=280000, 0,
ГодДоход('Нал/обл база по ЕСН в ПФ', 1)+ГодДоход('Суммы льгот по ПФ', 1)
+СуммаВхВО ( 80 , 1 , 0 , 0 , '' )
-Max (280000, (ГодДоход('Нал/обл база по ЕСН в ПФ', 1)
+ГодДоход('Суммы льгот по ПФ', 1)))
)
)

42 Нал/база ТФ ОМС, Момент расчета – после удержаний, Последовательность – 2, Алгоритм – ГДЕСНТМ
if ( КодКатегСотр('Льготы по ЕСН') <>1,
СуммаВхВО ( 80 , 2 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ТФОМС', 1)
+СуммаВхВО ( 80 , 2 , 0 , 0 , '' ) <=280000, 0,
ГодДоход('Нал/обл база по ЕСН в ТФОМС', 1)
+ГодДоход('Суммы льгот по ТФОМС', 1)
+СуммаВхВО ( 80 , 2 , 0 , 0 , '' )
-Max (280000, (ГодДоход('Нал/обл база по ЕСН в ТФОМС', 1)
+ГодДоход('Суммы льгот по ТФОМС', 1)))
)
)

43 Нал/база ФФ ОМС, Момент расчета – после удержаний, Последовательность – 2, Алгоритм – ГДЕСНФМ
if ( КодКатегСотр('Льготы по ЕСН') <>1,
СуммаВхВО ( 80 , 3 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ФФОМС', 1)
+СуммаВхВО ( 80 , 3 , 0 , 0 , '' ) <=280000, 0,
ГодДоход('Нал/обл база по ЕСН в ФФОМС', 1)
+ГодДоход('Суммы льгот по ФФОМС', 1)
+СуммаВхВО ( 80 , 3 , 0 , 0 , '' )
-Max (280000, (ГодДоход('Нал/обл база по ЕСН в ФФОМС', 1)
+ГодДоход('Суммы льгот по ФФОМС', 1)))
)
)

44 Нал/база ФСС, Момент расчета – после удержаний, Последовательность – 2, Алгоритм – ГДЕСНСС
if ( КодКатегСотр('Льготы по ЕСН') <>1,
СуммаВхВО ( 80 , 4 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ФСС', 1)
+СуммаВхВО ( 80 , 4 , 0 , 0 , '' ) <=280000, 0,
ГодДоход('Нал/обл база по ЕСН в ФСС', 1)
+ГодДоход('Суммы льгот по ФСС', 1)
+СуммаВхВО ( 80 , 4 , 0 , 0 , '' )
-Max (280000, (ГодДоход('Нал/обл база по ЕСН в ФСС', 1)
+ГодДоход('Суммы льгот по ФСС', 1)))
)
)

3. Ввести в настройку годового дохода новую группу «ЕСН: Налогооблагаемые базы» со следующими колонками
51 Суммы льгот ПФ, Момент расчета – после удержаний, Последовательность – 1, Алгоритм – ГДЕСНЛПФ
if ( КодКатегСотр('Льготы по ЕСН') <>1, 0,
if ( ГодДоход('Суммы льгот по ПФ', 1)
+СуммаВхВО ( 80 , 1 , 0 , 0 , '' ) <=280000,
СуммаВхВО ( 80 , 1 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ПФ', 1)=280001, 0,
280000 - ГодДоход('Суммы льгот по ПФ', 1)
)
)
)

52 Суммы льгот ТФ ОМС, Момент расчета – после удержаний, Последовательность – 1, Алгоритм – ГДЕСНЛТМ
if ( КодКатегСотр('Льготы по ЕСН') <>1, 0,
if ( ГодДоход('Суммы льгот по ТФОМС', 1)
+СуммаВхВО ( 80 , 2 , 0 , 0 , '' ) <=280000,
СуммаВхВО ( 80 , 2 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ТФОМС', 1)=280001, 0,
280000 - ГодДоход('Суммы льгот по ТФОМС', 1)
)
)
)

53 Суммы льгот ФФ ОМС, Момент расчета – после удержаний, Последовательность – 1, Алгоритм – ГДЕСНЛФМ
if ( КодКатегСотр('Льготы по ЕСН') <>1, 0,
if ( ГодДоход('Суммы льгот по ФФОМС', 1)
+СуммаВхВО ( 80 , 3 , 0 , 0 , '' ) <=280000,
СуммаВхВО ( 80 , 3 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ФФОМС', 1)=280001, 0,
280000 - ГодДоход('Суммы льгот по ФФОМС', 1)
)
)
)

54 Суммы льгот ФСС, Момент расчета – после удержаний, Последовательность – 1, Алгоритм – ГДЕСНЛСС
if ( КодКатегСотр('Льготы по ЕСН') <>1, 0,
if ( ГодДоход('Суммы льгот по ФСС', 1)
+СуммаВхВО ( 80 , 4 , 0 , 0 , '' ) <=280000,
СуммаВхВО ( 80 , 4 , 0 , 0 , '' )+СуммаВхВО ( 80 , 11 , 0 , 0 , '' ),
if ( ГодДоход('Суммы льгот по ФСС', 1)=280001, 0,
280000 - ГодДоход('Суммы льгот по ФСС', 1)
)
)
)

4. Сформировать следующие шкалы для расчета начислений на ФОТ:
184 ЕСН ПФ, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 6
600000 – 2,4
99999999 – 0

185 ЕСН ПФ накопительная младшего возраста, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 4
600000 – 1,6
99999999 – 0

187 ЕСН ПФ накопительная старшего возраста, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
99999999 - 0
188 ЕСН ПФ страховая младшего возраста, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 10
600000 – 3,9
99999999 – 0

190 ЕСН ПФ страховая старшего возраста, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 14
600000 – 5,5
99999999 - 0

191 ЕСН ТФОМС, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 2
600000 – 0,5
99999999 - 0

192 ЕСН ФФОМС, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 1,1
600000 – 0,6
99999999 – 0

192 ЕСН ФСС, Уровневый, Ставка %, Максимальное значение 100, Шаг шкалы
280000 – 2,9
600000 – 1
99999999 - 0

5. Сформировать следующие алгоритмы расчета начислений на ФОТ
1 – Пенсионный фонд РФ
if ( КодКатегСотр('Льготы по ЕСН') = 2,2,1)* //иностранцы
if ( РегрШкЕСН<>1,
СуммаВхВО ( 80 , 1 , 0 , 0 , '' ) * ПДУ/100 ,
(Шкала(184, ГодДоход('Нал/обл база по ЕСН в ПФ', 0) )
- СуммаФОТ(1, 201)
)*СуммаВхВО (NULL, NULL, 0, 0, '')
/( СуммаВхВО ( 80 , 1 , 0 , 0 , '' )
)
)

2 – ТФ ОМС
if ( РегрШкЕСН<>1,
СуммаВхВО ( 80 , 2 , 0 , 0 , '' ) * ПДУ/100 ,
(Шкала(191, ГодДоход('Нал/обл база по ЕСН в ТФОМС', 0) )
- СуммаФОТ(2, 201)
)*СуммаВхВО (NULL, NULL, 0, 0, '')
/( СуммаВхВО ( 80 , 2 , 0 , 0 , '' )
)
)

3 – ФФ ОМС
if ( РегрШкЕСН<>1,
СуммаВхВО ( 80 , 3 , 0 , 0 , '' ) * ПДУ/100 ,
(Шкала(192, ГодДоход('Нал/обл база по ЕСН в ТФОМС', 0) )
- СуммаФОТ(3, 201)
)*СуммаВхВО (NULL, NULL, 0, 0, '')
/( СуммаВхВО ( 80 , 3 , 0 , 0 , '' )
)
)

4 – ФСС
if ( РегрШкЕСН<>1,
СуммаВхВО ( 80 , 4 , 0 , 0 , '' ) * ПДУ/100 ,
(Шкала(193, ГодДоход('Нал/обл база по ЕСН в ФСС', 0) )
- СуммаФОТ(4, 201)
)*СуммаВхВО (NULL, NULL, 0, 0, '')
/( СуммаВхВО ( 80 , 4 , 0 , 0 , '' )
)
)

5 – Накопительная часть ПФ
if ( КодКатегСотр('Льготы по ЕСН') = 2,0,1)* //иностранцы,
if ( ГодРождения = NULL,
InsertMessage( 'Нет даты рождения! ЕСН в ПФ рассчитан не верно у сотрудника с таб. номером '
+string( ТабельныйНомер )+', подразделение '+string( КодПодразделения ) ),,0,
if (РегрШкЕСН=1,
if ( ГодРождения <=1966,
Шкала(187, СуммаВХВО(NULL, NULL, 0, 0, 'факт')),
Шкала(185, СуммаВХВО(NULL, NULL, 0, 0, 'факт'))
),0))

6 – Страховая часть ПФ
if ( КодКатегСотр('Льготы по ЕСН') = 2,0,1)* //иностранцы,
if ( ГодРождения = NULL,
InsertMessage( 'Нет даты рождения! ЕСН в ПФ рассчитан не верно у сотрудника с таб. номером '
+string( ТабельныйНомер )+', подразделение '+string( КодПодразделения ) ),,
0,
if(РегрШкЕСН=1,
if(ГодРождения <=1966,
Шкала(190, СуммаВХВО(NULL, NULL, 0, 0, 'факт')),
Шкала(188, СуммаВХВО(NULL, NULL, 0, 0, 'факт'))
), 0))

6. Включить в настройках флаг регрессивной шкалы.

91. Вопрос: В модуле Финансы от 09.11.2005 размером 1623040 Bytes не работает полностью вся ветка Операции - от имени всех пользователей, кроме sa. Выдает следующую ошибку:
Недостаточно привилегий для выполнения операции. Операция отменена.
Детально:
General SQL error.
DELETE permission denied on object ALGVARIABLES, database Accord, owner dbo.
Проверили права доступа на виды документов - всё разрешено. В Настройках модуля Администратор\Общие установки системы пробовали ставить и убирать галку Контроль прав доступа по видам документов. В Настройках модуля Финансы\Общие установки системы - пробовали ставить и убирать галку Вести документы по видам. Всё равно ошибка осталась. В чём может быть дело?

Ответ: В Настройках модуля Финансы\Общие установки системы\Вести документы по видам галочка никак не влияет на права пользователей в системе. В связи с чем это у Вас возникло? Опишите подробно, что Вы такое сделали, что это у Вас выдается. Перешли на новый сервер? Тогда всего скорей Вы неправильно на новом сервере задали пользователей. Вообще говоря, у Вас из-за каких то Ваших действий в таблице ALGVARIABLES отключились права доступа для пользователей. Зайдите в Sybase Central, откройте свойства (Properties) этой таблицы, зайдите на вкладку Permissions. Там, кроме CyberMan (для него не раздается никаких прав, т.е. нет галочек в полях), должны присутствовать все ваши пользователи и у каждого во всех полях должна стоять галочка. Если пользователи есть, но в полях нет галочек - установите галочки запросом из SQL Advantage
Grant all on ALGVARIABLES to Bublic
Если никаких, кроме CyberMan, пользователей нет – перезаведите пользователей, как указано в документации и в файле вопросов и ответов (вопросы 35, 40)

92. Замечания: К обновлению A152_5002 (модуль ОС – групповые инвентарные карточки). Поле ТЕКУЩЕЕ КОЛИЧЕСТВО групповой инвентарной карточки считается автоматически по мере ввода новых инвентарных карточек (у каждой должен быть свой номер, так что в системе составляющие инвентарной карточки рассматриваются как отдельные, просто для составляющих групповую карточку доступны операции одновременно над многими ИК в интерфейсе групповой карточки).

93. Вопрос: Вот кусочек текста юнита (unit.pas)
if _idPostKSU = '' then _idPostKSU := 'null';
_IDKSUP := StrToInt(SystemProperties.ExecuteSelectSQL(
'Declare @RES T_DOC' +
' exec dbo.Ann_SST_FINDKSU ' + _IDCOMPANY +','+ _IDFGROUP +','+
intToStr(Query10r.FieldByName('idOBJ').AsInteger)+','+_IDDEPART+','+
_PRICE +',NULL,NULL,NULL,''01/01/2007'','+
'NULL,'+ _idPostKSU +',@RES Output Select @RES R').Values['R']);
_IDKSUR := StrToInt(SystemProperties.ExecuteSelectSQL(
'Declare @RES T_DOC' +
' exec dbo.Ann_SST_FINDKSU ' + _IDCOMP32a +','+ _IDFGROUP32a +','+
intToStr(Query10r.FieldByName('idOBJ').AsInteger)+','+_IDbadDEPARTa+','+
_PRICEKSU +',NULL,NULL,NULL,''01/01/2007'','+
'NULL,'+ _idPostKSU +',@RES Output Select @RES R').Values['R']);

В нем есть дата ''01/01/2007'' - какой ее формат - ДД/ММ/ГГГГ, или сначала месяц указывают?

Ответ: По-моему месяц, а вообще в AccUtils.pas есть AnyToStr функция. Можно заменить
,NULL,''01/01/2007'','+
на
,NULL,AnyToStr(ftDate, Date(1990, 12, 30)),’+... вроде так. И посмотри по другим исходникам, я вроде где-то использовал.

94. Вопрос: Как можно определить dbf формат у файла или нет. Экселом он не открывается, говорит неизвестный формат. Но этот файл из аккордовского клиент-банка формируется по шаблону ТАБЛИЦА, там же он должен в dbf выгружать.

Ответ: Есть какая-то сигнатура у dbf. Может не той версии? dbf были нескольких версий. Можно поставить плагин для FAR 1.70 и выше для просмотра dbf файлов. У FAR есть папка Plugins, в ней надо создать любую, например dnfview и туда распаковать архив плагина. FAR потом перезапустить. По клавише ENTER dbf файл будет открываться на просмотр/редактирование.
Поскольку экспорт идет через BDE alias, в BDE Administrator'е на драйвер DBASE есть параметр Level. По умолчанию его значение 7. Надо попробовать поставить там 3 (или 25), после этого Аккорд перезагрузить (и вообще все программы которые BDE пользуют) и заново экспорт сделать. Должен сформироваться нормальный dbf файл.
И еще, если нужна DOS кодировка выходного dbf файла, в BDE Administrator'е надо менять langdriver, там где меняли Level, должно быть dBASE RUS cp866 для DOS.

95. Вопрос: Требуется экспорт из аккордовского клиент-банка платежных поручений в текстовый файл, в котором каждый документ занимает ОДНУ!!! строку и поля отделяются один от другого символом «точка с запятой», вот так, например:
12/05/2007;0055;12300.45; ....
Можно использовать для этого только шаблон «Текст экспорт», но непонятно, как там вставлять разделитель полей «;».

Ответ: Должна помочь обычная замена при помощи программы-конвертера на VBScript'е, например, чтобы она читала из файла построчно, из строки извлекала подстроки, отрезала от них пробелы в начале и конце, а потом писала бы в другой файл. В принципе вот скрипт, его надо назвать например conv.vbs и выполнить:

File_path_Src = "d:\1.txt" 'Источник
File_path_Dst = "d:\2.txt" 'Сконвертированный будет здесь
Dim FileS, FileD
Set fso = CreateObject("Scripting.FileSystemObject")
Set FileS = fso.OpenTextFile(File_path_Src, 1)
Set FileD = fso.CreateTextFile(File_path_Dst, true)
do while not FileS.AtEndOfStream
S=FileS.ReadLine
S1=""
Fld = Trim(Mid(S, 1, 3))
S1 = S1&Fld&";"
'Предыдущие две строки повторить для всех полей, в последнем не надо &";"
FileD.WriteLine S1
loop
Set FileS = Nothing
Set FileD = Nothing

В операторе
Fld = Trim(Mid(S, 1, 3))
S – подстрока,
1 - начало подстроки,
3 - длина подстроки.
Он обрабатывает все строки файла, сколько во входном - столько и в новом будет. То есть те строки кода, где Mid - это для одного поля одной строки. Данный скрипт в выходном файле убирает все незначащие пробелы в каждом поле (между двумя вставляемыми символами «;»). Если нужны эти пробелы – надо убрать Trim (и, соответственно, последнюю скобку).
А еще в шаблоне «Текст экспорт» есть константа пользователя. Можно с ее помощью выводить символ «;» после вывода каждого поля.

96. Вопрос: У нас один отчет во всех организациях корпорации, кроме одной, нормально работает, а в одной подвисает. Чтобы найти где виснет, надо попробовать вставить вывод сообщений, т.е. функцию
StrMessage(Message: String; Flags: Integer): Integer
Вот кусочек отчета, надо бы вывести значения :IDOFFICE, :BEGDATE, :ENDDATE
begin
define
band = OFFHeader
fields
nmOffice
endfields
sql
declare
@idOffice T_OFFICE,
@begDate datetime,
@endDate datetime,
@begD datetime,
@endD datetime,
@dtYear T_Year
select @idOffice = :IDOFFICE, @begDate = :BEGDATE, @endDate = :ENDDATE
select @dtYear = DATEPART(year, @BegDate)
exec dbo.XGetDate 1, 1, @dtYear, @begD output
select @endd = DateAdd(Day, -1, @BEGDATE)
if @BegDate > @EndDate raiserror 50001 'Дата формирования отчета установлена не верно.'
select v.NMOFFICE, v.idOFFICE idOFF, @begd begd, @endd endd
from dbo.VIEW_OFFICE v, dbo.office o
where (@idoffice is null or v.IDOFFICE = @idoffice)
and v.IDOFFICE = o.idoffice
and o.orggrcode='2'
and exists(select 1
from dbo.SKDOKFACT s, dbo.ALLSKDOC a
where s.IDCOMPANY = :IDCOMPANY
and s.IDFGROUP = :IDFGROUP
and s.IDOPER = 2
and s.IDDOC = a.IDDOC
and s.IDKSU is not null
and a.IDOTPR = v.idoffice
and a.PRIZTTN <> 0
and a.idDOCTYPE <> 3
and s.DTOPER between @BEGD and :ENDDATE
or exists(select 1
from dbo.PAYDOC b
where b.IDCOMPANY = :IDCOMPANY
and b.IDFGROUP = :IDFGROUP
and (b.IDOPER = 101 or b.IDOPER = 111)
and b.DTCONDUCT between @BEGD and :ENDDATE)
)
order by NMOFFICE
endsql
fill

Ответ: Вместо
select v.NMOFFICE, v.idOFFICE idOFF, @begd begd, @endd endd
будет
select convert(varchar(20), @idoffice)+' '+ convert (varchar(20), @begdate)+' '+ convert (varchar(20), @begdate) Field1, v.NMOFFICE, v.idOFFICE idOFF, @begd begd, @endd endd
а вверху перед fields
calcfields
test: integer=StrMessage(Field1, 0)
endcalcfields
И раз уж вы все делаете через переменные, то between @BEGD and :ENDDATE замените на between @BEGD and @ENDD
Далее, там где and exists ... or exists... надо скобки поставить: and (exists... or exists...) остальное вроде нормально. Да, и еще в одном месте написано
and p.IDOPER in (101,111)
and p.IDOFFICEACCEPTOR = :idoff
может быть надо использовать и в первом запросе вместо IDOFFICEPAY поле IDOFFICEACCEPTOR
Может быть еще вот в этом куске проблема:
or exists(select 1
from dbo.PAYDOC b
where b.IDCOMPANY = :IDCOMPANY
and b.IDFGROUP = :IDFGROUP
and (b.IDOPER = 101 or b.IDOPER = 111)
and b.DTCONDUCT between @BEGD and :ENDDATE)
)
Как я понимаю, платежные документы надо бы тоже к организации привязывать, типа
or exists(select 1
from dbo.PAYDOC b
where b.IDCOMPANY = :IDCOMPANY
and b.IDOFFICEPAY = v.idoffice !!!!
and b.IDFGROUP = :IDFGROUP
and (b.IDOPER = 101 or b.IDOPER = 111)
and b.DTCONDUCT between @BEGD and :ENDDATE)
)

97. Вопрос: В модуле ФИНАНСЫ в авансах от контрагентов при разнесении аванса в поле СУММА ОСТАТКА ПО АВАНСУ появилась отрицательная сумма, равная сумме аванса.

Ответ: Отрицательная СУММА ОСТАТКА ПО АВАНСУ получилась из-за того, что в таблице AVANSPAY поле SMCONDUCT имеет удвоенное значение по сравнению с полем SMPRIHOD (возможно, что после формирования аванса правились документы платежное поручение, на основе которого сформирован аванс, или счет на оплату для этого аванса). Для исправления надо:
- в модуле ФИНАНСЫ зайти в ОПЕРАЦИИ-АВАНСЫ, открыть организацию, по которой это произошло и посмотреть значение AVANSPAY.IDAVANS для этого аванса,
- запустить SQL Advantage, выполнить запрос
select * from avanspay where idavans=<Ваш IDAVANS>
и убедиться, что поле SMCONDUCT отличается от поля SMPRIHOD
- запросом
update dbo.avanspay set smconduct=<Ваша сумма> where idavans=<Ваш IDAVANS>
сделать поле SMCONDUCT равным полю SMPRIHOD

98. Вопрос: Как можно перейти от учетной политики «по учетной цене» к «по средней цене»?

Ответ: При переходе на режим списания «по средней цене» можно порекомендовать следующую методику работы.
1. В меню НАСТРОЙКИ-ОБЩИЕ УСТАНОВКИ СИСТЕМЫ вкладка ОСНОВНЫЕ выбрать режим списания «По средней цене».
ВАЖНО!!! Данную настройку надо изменять с первого числа месяца (не с текущей календарной даты, а когда будут введены и обработаны ВСЕ!!! документы, соответствующие режиму списания «по учетной цене»). При этом на дату перехода на новый режим списания (и более поздние даты) не должно быть никаких приходных и расходных документов. Например, выбрана дата перехода 1 февраля 2008 года; до изменения режима списания необходимо ввести все документы прихода/расхода, дата которых - раньше 1 февраля 2008 года; документов прихода/расхода с датами 1 февраля и позднее в системе быть не должно.
ВАЖНО!!! После перехода на новый режим списания недопустимо вводить или корректировать документы прихода/расхода «задним числом» до тех пор, пока не спишутся в процессе работы все ОУ, которые были сформированы при прежнем режиме списания.
2. Поскольку на момент перехода на новый режим списания в базе на некоторые объекты учета (ОУ) имеются несколько карточек складского учета (КСУ) с разными ценами, необходимо приказом по организации сформировать следующую методику ввода и обработки приходных и расходных документов:
- при оформлении приходных документов в интерфейсе выбора ОУ, если для данного ОУ имеется несколько КСУ, для оприходования всегда выбирать первую (система автоматически на нее позиционируется при открытии интерфейса выбора); именно эта КСУ в дальнейшем и останется единственной, цена на ней при каждом приходе будет пересчитываться по формуле средней цены;
- при оформлении расходных документов в интерфейсе выбора ОУ, если для данного ОУ имеется несколько КСУ, для списания всегда выбирать последнюю; это даст возможность в процессе текущей работы «убрать» все КСУ, сформированные при прежнем режиме списания.

99. Вопрос: Ситуация такая. До 31.12.2004 в организации был Бюджетный план счетов и настройка журналов-ордеров была как на 1 рисунке. С 1 января 2005 перешли на Единый план счетов и перенастроили журналы-ордера как на 2 рисунке. При выводе журнала-ордера из нового плана счетов вылетает диагностика как на 3 рисунке.





Ответ: В тексте отчета с кодом 31301 Форма Н6 надо строки
var MainAcc: String = SQLValueByName('Select IDACCOUNTD from dbo.SETORDCOND where IDORDER=:idOrder and ISSALDOD<>0', 'IDACCOUNTD')
var MainSAcc_: String = SQLValueByName('Select IDSACCOUNTD from dbo.SETORDCOND where IDORDER=:idOrder and ISSALDOD<>0', 'IDSACCOUNTD')
var MainKAU_: String = SQLValueByName('Select IDKAUD from dbo.SETORDCOND where IDORDER=:idOrder and ISSALDOD<>0', 'IDKAUD')

заменить на
var MainAcc: String = SQLValueByName('Select IDACCOUNTD from dbo.SETORDCOND where IDORDER=:idOrder and IDPLAN=:idPlan and ISSALDOD<>0', 'IDACCOUNTD')
var MainSAcc_: String = SQLValueByName('Select IDSACCOUNTD from dbo.SETORDCOND where IDORDER=:idOrder and IDPLAN=:idPlan and ISSALDOD<>0', 'IDSACCOUNTD')
var MainKAU_: String = SQLValueByName('Select IDKAUD from dbo.SETORDCOND where IDORDER=:idOrder and IDPLAN=:idPlan and ISSALDOD<>0', 'IDKAUD')

(т.е. добавить and IDPLAN=:idPlan)

100. Вопрос: У нас при выводе отчета выдает ошибку:
General SQL error.
SELECT permission denied on column QUOPERF of object TBL_SKDOKFACT, database MLAccord, owner dbo
Причем под пользователем sa отчет выводится без проблем. Как сделать, чтобы другие пользователи тоже могли получать этот отчет?

Ответ: Что-то изменилось в правах юзеров. Должно лечиться следующим:
grant all on dbo.TBL_SKDOKFACT to bublic

101. Вопрос: При внедрении отчётов "Заполнение цен" и "Создание заявки" в работу, под рядовым пользователем вылетали ошибки "Недостаточно привилегий для выполнения данной операции", а далее говорилось, что нет прав доступа к таблицам dbo.TBL_DOGOVOR, dbo.TBL_SKDOKFACT, dbo.DOGTAX
Я в "Администраторе" задал следующие права всем пользователям и администраторам как на картинке (dbo.TBL_ALLSKDOC уже было раньше заведено, для чего - мне неизвестно). После таких манипуляций отчёты заработали из-под пользователя. Вопрос: можно ли так делать, ничего страшного в этом нет?



Ответ: Да, Вы все сделали правильно.

102. Вопрос: При многочисленном обращении к таблице Messages стали происходить зависания и блокировки (многопроцессорный сервер).

Ответ: Надо поменять схему блокировки таблицы MESSAGE на lock datarows Это уменьшит количество конфликтов при обращении к таблице.
Скрипт:

if exists(select 1 from sysindexes where id = object_id('MESSAGES') and name = 'PK_MESSAGES' and indid > 0 and indid < 255)
alter table MESSAGES
drop constraint PK_MESSAGES
go
alter table MESSAGES lock datarows
go
if not exists(select 1 from sysindexes where id = object_id('MESSAGES') and name = 'PK_MESSAGES' and indid > 0 and indid < 255)
alter table MESSAGES
add CONSTRAINT PK_MESSAGES PRIMARY KEY CLUSTERED ( HOSTID, NUMBER ) on 'default'
go
Могут быть и конфликты, связанные с таблицами ALGVARIABLES и TEMPCONDFHO, хотя не так выражено как с MESSAGES. Возможно нужно им тоже поменять схемы блокировки.

103. Вопрос: При переносе сервера, на котором установлен сайбейс, в другой домен и связанном с этим изменением имени администратора на этом сервере, в Sybase Central исчезла вся информация о серверах. Как это можно восстановить?

Ответ: В Sybase Central для нового имени не определен плагин собственно Sybase Central. Меню Tools-Plag-ins.. кнопка Change необходимо поставить галку у Sybase Adaptive Server Enterprise и нажать кнопку ОК. Далее перегрузить Sybase Central и все появится.


INVCARD.NMPARAM



Root Entry

Приложенные файлы

  • doc 7066431
    Размер файла: 1 MB Загрузок: 0

Добавить комментарий