BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

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

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


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8
Неудачная попытка скомпилировать файл в Бэсте 5 вер 3,3 SP 38
 
Цитата
nordk пишет:

Цитата
Пропишите ALTD() перед SayAndWait()
Откомпилируйте с отладчиком

Не помогло .
Видимо,что-то связано с " путями и именами".
Куда ,что и где я должен настроить ,чтобы оно заработало?
Заранее спасибо.
Неудачная попытка скомпилировать файл в Бэсте 5 вер 3,3 SP 38
 
Здравствуйте!
Не получается скомпилировать файл для Бэст 5 вер 3.3 SP 38
Выполняю все по инструкции.

1. Запустите дизайнер приложений Client\Bin\BestIde.exe. Сервер приложений должен быть запущен.
2. Выберите предприятие (Файл-Выбрать базу)
3. Далее Файл-Создать пользовательский проект. В результате создается заготовка для пользовательского проекта userlibpro.bpr. Все пользовательские проекты создаются в папке data\pro\userlibs. В состав проекта вошла программа userlibpro.prg.
4. В окне рабочей области установите курсор на программу Userlibpro.prg (Рабочая область 'userlibs.BWS' 1 - Userlibpro.BPR - Программы) и щелкните по ней мышкой. Откроется окно редактора, напишите в нем:
PROCEDURE MyTest()
SayAndWait("Hello,Best!")
RETURN
5. Нажмите F7 для компиляции. На Вопрос о сохранении ответьте утвердительно. На сообщения типа "Не указаны библиотеки.." или "Нет реализации:" не обращайте Внимание. В результате в папке data\pro\userlibs создалась библиотека userlibpro.bdll, которая будет вызываться БЭСТом по мере необходимости.
6. Поставьте точку останова на строке SayAndWait: (F9 или кликнуть слева от строки).
7. Проверьте настройки пункт меню Проект-Свойства проекта. Закладка Компиляция. Необходимо установить параметры:
 <Включить информацию для дебага>;
 <Всегда выполнять полную компиляцию>:
 <применить ко всем проектам(не перетирая их настройки)>.
8. Нажмите F7 для компиляции.
9. Запустите Best5.exe с параметром -d:
Client\Bin\Best5

Только вот п.6 никак не могу выполнить.Никак не ставится точка останова.
Галочка "соединение с Source Safe" снята.
Далее захожу в реестр накладных (Товары) по Ctrl-F5 ввожу
@MyTest и запускаю.
На экране что-то мелькает.Приветствие не выводится.
Что и куда надо еще поставить или зайти чтобы можно было запустить программку и ее отладить?
С уважением Габов Алексей
Поиск данных на листе в EXCEL
 
Здравствуйте!
Необходимо из Excel взять данные .
Фрагмент кода ниже.
Компиляция проходит.При пошаговом прохождении программа ругается на
строку :
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Пишет: "неизвестная функция".
С помощью данной конструкции можно корректно выделить весь диапазон данных
на листе.Через макросы это работает идеально.Придумал не сам, а взял из книги по EXEL.Очень удобная штука,ни когда не подводила.
Может быть кто подскажет как ее "прикрутить"

FUNCTION EXEL_DBF ()
#include "excel.ch"
#define xlLastCell 11
#define xlByRows 1
#define xlPrevious 2
#define xlByColumns 2
LOCAL oApp,oWorkBook,oWorkSheet,oRange,cFileName
LOCAL nLine:=3,iRow
cFileName:='C:\temp\main.xls'
dbPush()
TRY
oApp := CreateObject( "Excel.Application" ) //попытка создать объект Excel
CATCH
Alert("Excel не доступен!")
RETURN .F.
END
altd()
try
oWorkBook:=oApp:WorkBooks:open(OemToAnsi(cFileName),0)
catch
alert('Ошибка открытия входного файла. Не удалось открыть файл.')
RETURN .F.
end
try
oWorkSheet:=oWorkBook:worksheets(OemToAnsi('MAIN'))
catch
alert('Ошибка открытия входного файла. Не удалось открыть лист с данными')
RETURN .F.
end


//'поиск последней заполненной ячейки на листе
oWorkSheet:Select()
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Cells(Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByRows, xlPrevious):Row, Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByColumns, xlPrevious):Column):Select()
Else
Range("A1"):SpecialCells(xlLastCell):Select()
EndIf
iRow = Selection:Row

oApp:visible:=.T.
dbpop()
return
Использование переменных nNumber и nKOLSTROK в HFILEEVAL
 
Цитата
AndrV пишет:
Для отладки плагинов работающих с реестром я вставляю код
Код
try
valtype(nnumber)
valtype(nkolstrok)
catch
private nnumber:=1, nkolstrok:=1
end
и можно отлаживать без проблем


Спасибо!Помогло .

Цитата
nordk пишет:

Цитата
Вы компилируете Ваше решение с отладчиком.
Запускаете его не из редактора, а непосредственно по CTRL-F5.
Открывается отладчик и Вы работаете.

В данном Вопросе следует помнить, что откомпилированный плагин не подменяется в памяти на новый откомпилированный, пока вы не выйдете из модуля и не зайдете заново.
Т.е. если до этого Вы запускали плагин откомпилированный без отладки, то в отладчик вы не попадете, не сделав действия, как я писал выше.
Для того, чтобы это не делать, была создана специальная клавиша старта плагина
SHIFT+Enter
По этой клавише плагин выгружается из памяти и загружается последняя откомпилированная версия. Т.е. при перекомпиляции решения с отладкой из реестра по
CTRL+F5 следует запускать решение по SHIFT+ENTER и тогда у вас откроется отладчик.
Дальше это уже Вопросы как пользоваться отладчиком.


Теперь так и буду делать.
Только бы еще так просто и понятно, как Вы изложили ,было написано в Help.
Но УВЫ!
Спасибо.
Алексей Габов.
Использование переменных nNumber и nKOLSTROK в HFILEEVAL
 
Здравствуйте!
А как в этом случае делать отладку пошагово,т.е.нажимая клавишу F8.
С уважением Алексей Габов.
Использование переменных nNumber и nKOLSTROK в HFILEEVAL
 
В справочнике партий нажимаю Ctrl+F5, затем F11.Захожу в отладчик.
Запускаю этот плагин.Вот и все.
Использование переменных nNumber и nKOLSTROK в HFILEEVAL
 
БЭСТ 4 sp 53
Отладчик ругается на переменные
nNumber и nKOLSTROK
Function main()
Private a
altd()
a:=nNumber
a:=nKOLSTROK
return

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


Может это Вам поможет.
С Уважением Габов Алексей.
Просмотр текстового файла при работе плагина в программе Бэст 5
 
Добрый вечер!
Цитата
Александр Титов пишет:

Цитата

Почему VIEW не работает?
Еще раз проверил на 3.3:
в реестре накладных подвесил плагин из одной строки:
VIEW("c:\1.txt")
Работает.

Я вначале проверил работу в Бэст5 в 3.3 функции VIEW() при выводе на просмотр одномерного массива. Программа заругалась .Работу этой функции с текстовым файлом уже и проверять не стал.
Габов Алексей
Просмотр текстового файла при работе плагина в программе Бэст 5
 
Цитата
itman пишет:
А если просто блокнот вызвать через run.


Попробовал в Бэсте 4+ запустить из плагина
puth:="c:\temp\1.txt"
RunShell( "notepad.exe",,puth )
Все прекрасно работает.
В Бэст 5 в 3.3 sp 33 - программа ругается на эту строку.
Попробывал просто запустить блокнот в Бэст 5 :
Run("notepad") или Run("notepad.exe" ) - то же ругается.
Какой синтаксис для этой задачи будет правильным?
Габов Алексей.
Формат даты при записи в dbf файл
 
Из Бэста 4+ экспортирую данные в DBF файл,который имеет строго заданный формат.
Причем поле даты по техусловиям в нем имеет длину 8 .
У меня в файле упорно получается 10 , т.е. dd/mm/gggg
Вот фрагмент кода :
Private puth_,aDbf,aSet,aSetKey
altd()
aSet:=SaveSet()
aSetKey:=SaveSetKey()

aDbf:={}
AADD(aDbf, { "Vid", "C", 1, 0 })
AADD(aDbf, { "Type", "C", 1, 0 })
AADD(aDbf, { "NUMDOC", "C", 6, 0 })
AADD(aDbf, { "DATE", "D", 8, 0 })
// и т.д.
dbpush()
puth_:=GlobalTmpPath+'alko1.dbf'

DBCREATE(puth_, aDbf)
NETUSE('ALKO1',puth_)
alko1->(addrec())
alko1->Vid :=" "
alko1->Type :=" "
alko1->NUMDOC :=" "
alko1->DATE :=ctod("01/01/08")
alko1->(F_DBUNLOCK())
ALKO1->(dbCloseArea())
RestSetKey(aSetKey)
RestSet(aSet)

dbpop()

Заранее спасибо.
Габов Алексей.
Просмотр текстового файла при работе плагина в программе Бэст 5
 
1.Как плагине программы Бэст 5 в 3.3 sp 33 вывести для просмотра и печати содержимое текстового файла,который был создан в процессе работы плагина?
В плагине программы Бэст 5 в 3.3 sp 33 функция Str2File() работает.
А вот чем заменить функцию View() ?

2. В бэсте 4+ для получения реквизитов собственного предприятия в плагине
применялся такой код :
dbOpenBases({{'PARTNER',LoadPath()+'PARTNER.DBF'}})
IF !dbseek(LBL_OPER).AND.!dbseek("000001")
dbgotop()
ENDIF

OKATO := If(Empty(ALLTRIM(PARTNER->OKATO)),' ' , ALLTRIM(PARTNER->OKATO))
Tel := If(Empty(ALLTRIM(PARTNER->Telefon2)), ' ',ALLTRIM(PARTNER->Telefon2) )

INN_O := If(Empty(alltrim(LBL_INNKPP)) , ' ', alltrim(LBL_INNKPP))
IFNS_O := If( Empty(substr(alltrim(INN_O),1,4)), '0000', substr(alltrim(INN_O),1,4))

Buh_O := If( Empty(ALLTRIM(LBL_SHEF)), ' ', ALLTRIM(LBL_SHEF))
dbCloseBases({'PARTNER'})
А для Бэста 5 в 3.3 переменные типа LBL_INNKPP уже не работают?
Где- то можно посмотреть решение данной ситуации для Бэста 5 в 3.3?
Заранее спасибо .
Габов Алексей.
Конструктор отчетов число прописью
 
Здравствуйте!
А функция sumval(chislo,itr)
в конструкторе отчетов (VFP БЭСТ4 ) работать будет?
С уважением Габов А
Помогите советом по автоматизации розницы
 
Цитата
nordk пишет:
А в БЭСТе мы храним только 7. И потом на весы в справочник передаем только 7. Так что про 13 это мы говорим в момент продажи конкретной единицы.
А в момент прихода и в учете код товара 7 символов
Здравствуйте!

Извините меня,конечно,но я опять Вас не понял.
О каких 7 символах Вы говорите.Количество символов в номенклатурном номере -13 и в данном случае
все они полностью будут задействованы под значение штрих кода посставщика.
Вы пишите: " А в БЭСТе мы храним только 7. И потом на весы в справочник передаем только 7 "
и " А в момент прихода и в учете код товара 7 символов".
Где конкретно храняться эти 7 символов?
И из чего они складываются?
Помогите советом по автоматизации розницы
 
QUOTE]nordk пишет:
Наши собственные ведомости мини-инвентаризаций точно также лекго работают с весовым штрихкодом.
Все просто сам код 7 символов потом к немй добавляется
вес и контрольная цифра и получается 13.
Дак вот в номенклатурном номере нужно только 7.
Что и называется весовым кодом. [/QUOTE]
Здравствуйте!


Немного не понятно.
Структура весового кода:
23+номенклатурный номер (13 симв) из БЭСТа+ вес товара в граммах (5 симв)
Итого : 2+13+5=20 символов.
Если ограничение по количеству символов в штрих коде принципиально,то тогда
он не должен превышать 13 символов.
Тогда на долю номенклатурного номера в составе штрих кода будет оставаться
только 13- 2 (префикс) - 5 (вес) -1(контр.число) = 5 символов.
С учетом того что у данного клиента номенклатурный номер в складской базе данных
будет равен значению штрих кода поставщика может возникнуть следующая проблема:
Если для генерации весового штрих взять эти 5 символов из номенклатурного номера ,то
может создаться ситуация когда эти символы совпадут со значением номенклатурного номера(штрих кода производителя)
по другому товару. Как вы этом случае отслеживать уникальность кода ( со всеми вытекающими последствиями)?
Или ограничение в 13 символов не принципиально?
Или Вы что-то другое имели ввиду?


Цитата
nordk пишет:
мы давно уже так делаем (много лет)


Моделей терминалов сбора данных от разных производителей много.
И Вам в этом случае приходиться писать отдельно для каждой модели программу для считывания данных
с терминала и преобразования их подходящий для импорта в БЭСТ формат?
Или же механизм доступа к данным терминала сбора данных универсален для всех моделей
от разных производителей и достаточно лишь слегка подкорректировать программу?
По-моему когда -то кто-то на FTP exchange выкладывал пример подобной программы,только я
сейчас ее там найти не могу.

Цитата:
Цитата
nordk пишет:
Более детально именно нашу схему через хот-лайн.


Мне самому открыть на Хотлайне новую тему с данным вопросом? Тогда в каком разделе?
С уважением Габов А.
Помогите советом по автоматизации розницы
 
Здравствуйте!
1.Прием данных с терминала сбора данных на компьютер осуществляется с помощью дополнительного
программного обеспечения ,которое идет в комплекте с терминалом сбора данных.
Вы пробовали создавать программки,которые запускались бы прямо из БЭСТа и позволяли считывать
данные с терминала сбора данных и преобразовывать их в формат ,читаемый БЭСТом ( DBF,TXT).
Т.е. достаточно было бы только терминал сбора данных с данными подключить к компьютеру и прямо
в реестре складских докуменов БЭСТа через спецфункции вызвать программу считывания и преобразовывания
данных с терминала сбора данных.
Такой подход намного бы ускорил ввод информации в БЭСТ.

Цитата:
Цитата
nordk пишет:
Если магазины небольшие - то мы туда вообще ставим только КПМ... Вы уж сами выбирайте АТОЛ, КПМ или еще чего... Суть для нас в том, чтобы в магазин больше ничего не ставить - а загружать прямо туда и выгружать прямо оттуда в программу учета....

2 Я так это понимаю.После создания расходной накладной в БЭСТе оператор через нажатие CTRL+F5
запускает спецфункцию,которая формирует файл с отгруженными товарами. Затем при приемке в магазине товара
данные из этого файла импортируются в программу КПМ.
Вопрос.Этот импорт может осуществляется также через механизм спецфункций или как то иначе?
Кроме того за смену( день,месяц) таких приемок товара будет много.Как увидеть
реестр поступлений (приемки) товара в магазине с целью контроля и сверки с тем,что
было отпущено со склада.



3. У данного клиента номенклатурный номер в программе БЭСТ будет равным значению штрих кода ,нанесенным
поставщиком на упаковку данного товара .Но на части товара штрих-кода поставщика не будет,поэтому
номенклатурный номер будет произвольным.
Вопрос. Тогда в настройке подситемы лучше будет указать: ввод номеклатурного номера по штрих-коду?
Т.е отказаться от разбивки на группы.Но как тогда выделять тару оборотную.Она обычно
в учете " стоит особняком".
И еще.Штрих -код поставщика лучше хранить в поле номенклатурный номер или номенклатурный номер
вводить произвольно,т.е. по порядку,а штрихкод поставщика хранить в одном из атрибутов?

4. Немного не понятно
Цитата:
Цитата
nordk пишет:
Если весовой - значит номенклатурный номер достаточно сделать по весовому штрих-коду и передать его на весы


После взвешивания товара в процессе фасовки на него будет
прикреплен еще один штрих-код (весовой) ,имеющий следующее значение
23 + номенклатурный номер из БЭСТа +вес товара.Дальше- при отгрузке товара со склада в магазины
для нефасованных товаров сканируем штрих код ,нанесенный поставщиком,а для фасованных товаров сканируем
весовой штрих-код.Создаем в программе отгрузочную накладную ,импортируем туда со сканера строки по отгруженным
товарам,через спецфункцию создаем файл отгруженных товаров магазин,для импорта его в дальнейшем в КПМ.
Вопрос .Вы что-то другое имели ввиду ,написав :
"Если весовой - значит номенклатурный номер достаточно сделать по весовому штрих-коду и передать его на весы "?
5.
Цитата:
Цитата
nordk пишет:
Розничные цены мы чаще храним в параметре номенклатурного справочника стаднарт или параметр... По сложившемуся опыту эта схема наиболее удобна и не требует управления продажами...


Немного не понятен механизм хранения продажной розничной цены в случае партионного учета.
Ведь на складе могут оказаться несколько партий одного и того же товара с разной учетной
ценой (цены поставщика были разные или еще какая-то причина).А розничная цена в данном случае
на все партии этого наименования будет одинаковой и фиксированной.И как еще просмотреть
хронологию изменения ее в случае изменения розничных цен.Или же она будет иметь только справочный характер.
Какие у Вас по этой проблеме соображения?

С данным Вопрос тесно связана еще одна ситуация. Это пероценка товаров в магазине.
На складе по этому Вопросу проблем нет.Создаем вид движения по расходу-списание на переоценку,и по
приходу - прием с переоценки.И гоняем переоценеваемый товар туда-сюда.
А как быть в магазине ,когда есть еще на остатках товар по одной цене и поступил в магазин
этот же товар по другой цене.
а.Дооценять старый товар до цены нового.Но как провести эту операцию в КПМ?
б.Ничего не делать.Но тогда по какой цене списывать товар в случае его продажи?
6.
Цитата:

Цитата
nordk пишет:
Только именно по отгрузке существует 2 принципиальных подхода и тут важно описать принципы сбора и отгрузки на складе (организационные)

Если можно ,то изложите кратко, пожалуйста , в чем суть этих двух принципиальных подходов?
Почему я так дотошно все спрашиваю у Вас?
У нас в городе розничная торговля практически не автоматизирована,и,видимо, в скором времени
настанет и ее черед компьюторизироваться.
7. На вашем сайте не работает ссылка "Пояснительная записка к КПМ".
Заранее спасибо за ответ.
с Уважением Габов А
Помогите советом по автоматизации розницы
 
Здравствуйте!
Ко мне обратился один клиент с просьбой помочь автоматизировать розничную
торговлю. Я предложил ему попробовать сделать это в рамках программы БЭСТ4.
С автоматизацией розничной торговли я раньше никогда не сталкивался.
Ситуация такая:
У клиента имеется склад товаров и несколько розничных магазинов по торговле
промышленными и продуктовыми товарами.
Учет на складе пока ведется в рамках программы 1 с.
Приемка товаров осуществляется по штрих-коду поставщика.
Необходимо чтобы при отгрузке ТМЦ со склада ( по штрих-коду ) формировалась электронная накладная, которая затем при приемке ТМЦ в магазине автоматически импортировалась в программу.
Мои соображения поэтому поводу:
1.Клиент приобретает программу БЭСТ4 в составе:
Центральный комплекс- АРМ Гл.бух,учет товаров учет гот.продукции+экспорт-импорт строк накладных,
+ ввод по штрих коду,
торговый зал ( не знаю нужен ли торговый зал в данном случае)
Удаленный филиал- Удаленный склад товаров, удаленный торговый зал и программу Атол (не знаю без какого из этих модулей
можно обойтись?),
а также фискальный регистратор.
2.Т.к приемка товара на складе осуществляется по штрих-коду поставщика, то учет ,видимо, придется делать
партионный ( цены на один и тот же товар от одного поставщика будут меняться, а номенклатурный номер – нет и соответственно надо будет менять учетную цену на складе ).
3.Не знаю как лучше автоматизировать приемку товара с помощью сканера в данном случае.
а. Подключить его в разрыв клавиатуры .Но тогда при сканирование штрих-кода поставщика
которого еще нет в базе данных БЭСТа (номенклатурном справочнике) придется каждый раз подходить
к компьютеру и вводить данные вручную.
б. Использовать мобильный сканер. Но тогда возникает следующий Вопрос:
С мобильным сканером идет своя программа которая при считывании данных со сканера на компьютере
преобразует его, как правило, в текстовый файл. Значит надо написать FileEval, который преобразует
его в файл формата DBF для последующего импорта строк накладной в накладную в режиме "Импорт строк".

Подвязываем эту программку к событию в накладной "Вход в документ".
4. На складе выделяется участок фасовки товаров
На расфасованный товар клеятся этикетки с внутренними штрих-кодами ( по ним будет учитываться товар в розничной
торговле).Только не понятно как лучше сгенерировать этот штрих код ,т.е. это будет номенклатурный номер или номенклатурный номер+ еще что-то.
Кроме того если учет партионный, то учетную цену партии ( а ее вероятно удобней сделать равной
продажной (розничной) цене в магазине) при генерации штрих -кода взять негде. В шаблоне этикетки термопринтера нет параметра учетной цены партии .Получается нужно вести еще и прайс-листы. А для этой цели нужен еще модуль
"Управление продажами".
Или в шаблоне этикетки термопринтера сделать запрос на выбор партии с целью импорта из справочника партий учетной цены партии?
5. Отгрузка товаров со склада ведется по внутренним этикеткам штрих-кода.
Вопрос тот же: что лучше мобильный сканер или сканер в разъем клавиатуры?
6. На событие " запись документа " в расходной накладной навешиваем FileEval для формирования "электронной накладной".

7. При приемке товара в магазине со склада используем уже "электронную накладную".
Вопрос! Какой для этой операции необходим и достаточен программный модуль.
8. Магазин без самообслуживания. Продавец сам по просьбе покупателя берет с прилавка,полки товар и сканирует его,производит расчет с покупателем.
Какое для автоматизированного учета в магазине необходимо и достаточно программное обеспечение?
Атол ,вроде бы, имеет более широкий выбор сервисных возможностей.

Основное ,вроде бы, все.
С уважением Габов А.
Как уменьшить дату на х месяцев
 
Здравствуйте!
Попробовал применить эту функцию - код представлен ниже.

Private d,n
d:=ctod("01/01/08")
n:=8
AddMonth( d, n )
sayandwait(dtoc(d))
Почему-то на экран выдает "01/01/08".
Я видимо, что-то не так понял?
С уважением Габов А.
Использование специальной вставки при экспорте в Excel
 
Алексей ,спасибо!
Заменил Selection на oAS:Range("B17") и
oRange:Copy(oAS:Range("B17")) на oRange:Copy()
(это моя ошибка) и "специальная вставка" заработала.

Только есть еще проблема.
После выполнения кода написанного мной ,так и после
который Вы указали :
Цитата
Алексей Новиков пишет:
oRange:=oWorkSheet:Rows(nCopyLine), ;
oRange:activate(), ;
oRange:Copy(), ;
oRange:=oWorkSheet:Rows(nLine), ;
oRange:activate(), ;
oWorkSheet:Paste(), ;

тот диапазон ячеек ,который копировали, остается
выделенный пунктирной рамкой.
Как снять выделение и очистить буфер обмена?
Попробовал посмотреть через макросы - получилось
oApp:CutCopyMode =.F.
Но это не помогает.

Цитата
Александр Титов пишет:
Не очень понял насчет использования PasteSpecial, наверное лучше описать задачу словами


Необходимо создать n количество строк, ячейки в которых должны быть отформатированы по определенному шаблону раннее уже прописанному в коде программы.
Вот и возникла Идея как это быстро и компактно сделать.
Выделяем уже отформатированный диапазон ячеек и через специальную вставку копируем только форматы.
Может это делается как то иначе?
И еше Вопрос.
Можно ли как-то определить правила написания кода для EXEL ,которые в VBA работают, а в харборе нет .Например, то что указал Алексей Новиков
Цитата
Алексей Новиков пишет:
Ошибка "Переменная не существует" выдаётся потому, что в вызове "Selection:PasteSpecial (-4122, -4142, .F., .F.)" Harbour видит переменную selection, которой не существует. Так можно делать в VBA, а в Harbour требуется иметь ссылку на каждый
объект.
Использование специальной вставки при экспорте в Excel
 
Здравствуйте!
Заменил код на
Selection:PasteSpecial (-4122, -4142, .F., .F.)
Но сообщение об ошибке все равно появляется.
С уважением Габов Алексей.
Использование специальной вставки при экспорте в Excel
 
Здравствуйте!
Начал разбираться с экспортом в EXCEL из БЭСТ4 средствами харбора,столкнулся со следущей проблемой .
Не получается записать код программы для копирования только форматов с использованием специальной вставки .
Может кто подскажет как это сделать?
FUNCTION MAIN
LOCAL oApp,oWorkBook,oRange,oAS
LOCAL nLine:=3
#define xlRight -4152
#define xlBottom -4107
#define xlLeft -4131
#define xlCenter -4108
#define xlLandscape 2
#define xlPasteFormats -4122
#define xlNone = -4142
dbPush()
TRY
oApp := CreateObject( "Excel.Application" )
CATCH
Alert("Excel не доступен!")
RETURN .F.

END

altd()

oWorkBook:=oApp:WorkBooks:Add()
oAS:=oWorkBook:Worksheets():Add()
oAS:Name:="Test"
Вот так выглядет макрос автоматически созданный в EXCEL:

Range("B16:Y16").Select
Selection.Copy
Range("B17").Select
Selection.PasteSpeial Paste:=xlPasteFormats,_ Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Вот я так его переписал:

oRange:=oAS:Range("B16:Y16")
altd()
oRange:Copy (oAS:Range("B17"))
oAS:Range("B17"):Select()
// Selection:PasteSpecial (Paste:=xlPasteFormats,_ Operation:=xlNone, SkipBlanks:=.F., Transpose:=.F.)

Ругается на ошибку в этой строке - "Переменная не существует":

Selection:PasteSpecial (Paste:=-4122, Operation:=-4142,_ SkipBlanks:=.F., Transpose:=.F.)


oApp:visible:=.T.
dbPop()
RETURN
Страницы: Пред. 1 2 3 4 5 6 7 8