ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Формирование книги продаж по накладным

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Формирование книги продаж по накладным, Нужна помощь
 
Не нашел, в каком форуме месяц назад я задавал Вопросы на тему.

Короче. Фирма ведет рабочую БД, в которой формируются и печатаются накладные и счета фактуры.
В другую БД переносится часть накладных с помощью специальной программы. Здесь же ведется книга продаж.
Это - отчетная система.

Пришло время сделать программу для автоматического формирования записей книги продаж по накладным. То есть формирование BOOK по MDOC, отбирая конкретный диапазон дат.

Для этого я формирую файл BOOK_ADD, в который переношу все необходимое из MDOC, а затем присоединяю его к BOOK. Особенностью является MEMO поле SUM_DATA, в котором хранится информация о суммах и НДС по разным ставкам. Использую FOX (append blank и repl ).

Записи книги я формирую по ТИПУ "По ПРОЧИМ ПРОДАЖАМ". Это позволяет не связываься со счетами -фактурами (они есть в печатном виде из другой БД)


Структуру текста в MEMO поле легко определить опытным путем. Это строка, тппа (для НДС 18%)

"{{{{" & Trim(Str(SUM_WITH_NDS)) & ",.F.},{11,.F.},{" & Trim(Str(SUMNDS)) & ",.F.}},
{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}}}}"

где SUM_WITH_NDS, SUMNDS - величина суммы и суммы НДС, взятые из MDOC

Есть еще поле NNOPER, в котором хранится очередной внутренний номер ЗАПИСИ книги, формируемый по понятному алгоритму.

Короче, все формируется красиво. В мемо - поле все сидит на своем месте. Подставляю BOOK в REAL. Открываю БЭСТ - список записей вижу, но внутри MEMO поля не раскрываются в список сумм с НДС.

Два дня ковыряюсь - не могу найти причину.

Может у кого - нибудь есть соображения?

Особенно, у мудрейшего А.Титова. Так нужен толчок!
 
Попробуйте сначала собрать массив по ставкам {{},{},{}}, а затем положить его в опоясывающий массив:
aSumDat a:={}
aadd(aSumData, {{},{},{}})

И что такое " & Trim(Str(SUM_WITH_NDS)) & " ? Это форум так конвертирует или у Вас так написано?

С уважением, Новиков Алексей.
 
Я же основную часть пишу на VBA. Это оттуда. Формирование строки, которая потом заносится в MEMO поле FOXом
 
Александр я бы очень не советовал в базы БЭСТ-4 писать фоксом. Досовский фокс разрушает индексы БЭСТ-4 при записи в таблицы да еще с мемо-полями.
При работе пользователей это дело поплывет. У харбора свой драйвер CDX и от фоксовского он серъезно отличается. Даже из-под клиппера лучше этого не делать.
Проверено на практике.
 
Задачу надо решить!
Я пользуюсь, при необходимости, программками на FOX. (Переношу кассовые ордера и накладные из разных БД и др.).
Да, действительно, технология требует обязательной переиндексации. Но, игра стоит свеч. Если за один вечер таким образом переносится 3-5 тыс. накладных, то проиндексировать товары за пол-часа - не грех.

1.Меня очень интересует, правильно ли я понял структуру текстового поля SUM_DATA.


Исходя из образцов, которые я сфорировал в БЭСТ (Книга продаж, по прочим продажам), я вижу, что образцы имеют такую структуру (примеры с конкретными суммами и суммами НДС)
для НДС=18%
{{{{5600.23,.F.},{11,.F.},{854.29,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}}}}

для НДС=10%

{{{{2499.3,.F.},{2,.F.},{227.21,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}},{{0,.F.},{-1,.F.},{0.00,.F.}}}}

для записей, где есть НДС 18% и НДС 10%

{{{{1963.11,.F.},{2,.F.},{178.46,.F.}},{{20600.87,.F.},{11,.F.},{3142.51,.F.}},{{0.00,.F.},{-1,.F.},{0.00,.F.}},{{0.00,.F.},{-1,.F.},{0.00,.F.}}}}

2. Кроме файла BOOK, я понял, что еще необходимо изменять пару полей в файле MEMDAT в TOVAR (номер последней записи). Может быть еще какой -то файл отвечает за КНИГУ ПРОДАЖ (без счетов - фактур - по прочим продажам) ???
 
Действвительно, проблема состоит в отличии FPT файла, измененного FOX и видимо того, что создает БЭСТ. Я конролирую себя с помощью старой ДОС - программы BDBFS, которая позволяет смотреть и корректировать DBF файлы, в т. ч. и MEMO поля. Содержимое MEMO поля она показывает одинаково, однако править то, что создал БЭСТ - не дает, сообщение об ошибке. Поля же, подготовленные FOX корректируются, однако БЭСТ не видит изменений.

Пытаюсь воспользоваться встроенным HARBOUR. Однако, спотыкаюсь на каждом операторе.


На Fox у меня всего - то вот такой текст

set defa to c:\temp\
sele 1
use BOOK
* файл с книгой продаж. Все находится в папке c:\temp\
sele 2
use BOOK_ADD
* заранее подготовленный файл по накладным

sele 2
do while !eof()
n=NNOPER
o1=OPER_FACT
o2=OPER_ST
D1=TEK_DATA
n1=TEK_NOMER
t=alltrim(str(TYPE))
MEM=SUM_DATA
SF=SUMMA_FACT
SN=SUMMA_NDS
D2=DATA_OPL
ag=AG_CODE
D3=SH_DATA

sele 1

append blank

repl NNOPER with n
repl OPER_FACT with o1
repl OPER_ST with o2
repl TEK_DATA with D1
repl TEK_NOMER with n1
repl TYPE with t
repl SUM_DATA with MEM
* данный оператор вносит текст в MEMO поле
repl SUMMA_FACT with SF
repl SUMMA_NDS with SN
repl DATA_OPL with D2
repl AG_CODE with ag
repl SH_DATA with D3

sele 2
skip

enddo

use in 1
use in 2


Может быть кто - то подскажет аналогичные операторы в Harbour
 
В каталоге установки БЭСТа есть ".\news\develop\ng" - там документация по Клипперу в формате "ng" + "гляделка". Харбор полностью поддерживает команды и функции этого языка, однако документация как раз по Харбору может привести к продолжительным "танцам с бубном" при его использовании с БЭСТом, где скомпилировано далеко не все, что Харбор "умеет", поэтому надежнее использовать по началу именно доки от Клиппера. Единственное, на что необходимо обязательно обратить Внимание - подключение драйвера, используемого в БЭСТе - это "DBFCDX". Конкретно - до определения первой процедуры/функции в программе надо декларировать используемый драйвер: "Request DBFCDX", а в теле процедуры/функции "MAIN" назначить его "по умолчанию": "DbSetDriver('DBFCDX')"(это мне так больше нравится - использовать функцию, а не команду, возможно более корректным будет использование команды "SET DRIVER"). Дополнительно не помешает "таким же макаром" установить кодовую страницу: "Request HB_CODEPAGE_RU866" и "HB_SetCodePage('RU866')" соответственно. Еще может оказаться необходимым задание формата даты и времени в соответствии с форматом, принятым в БЭСТе. В мануале по Клипперу описаны "прототипы" этих функций и команд - в Харборе они работают точно так же.
 
Благодарю.
Посмотрел документацию.
Отметил для себя, что есть все необходимые команды. Начал пробовать как спецфункцию БЭСТ. Пока одни ошибки.
 
Скачайте инструментарий разработчика.
Там есть исходники различных функций разработчика, может помочь в ознакомлении.
Проблему с этим полем обсуждают уже несколько лет, в архиве форума, для интереса, сделайте поиск по sum_data.
С уважением,
Ильин Евгений
Страницы: 1
Читают тему (гостей: 1)