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

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

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


Форум

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

Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 20 След.
QInput для отчета
 
Цитата
Денис пишет:
Цитата Александр Титов пишет:

b_period это public переменная блок кода для ввода даты



При запуске или при работе плагина из главного меню при использовании b_period программа вываливается на функциях BHelpPush(), BHelpPop(), NewPeriod(). Их как-то можно подгрузить из salary.bdll?
P.S. не срочный.

Да, в этом случае, поскольку salary.bdll не загружена, следует написать
LoadLibrary("salary.bdll")
QInput для отчета
 
Цитата
Денис пишет:
И последний пока Вопрос. Я в плагине который, который запускал из реестра лицевых счетов использую переменные БЭСТ-а B_Period и cAPeriod, которые не смогу использовать при запуске из главного меню. С cAPeriod проблем нет. Эти данные возьму из salary\setting.dbf->S_Period.



А как задана в БЭСТ-е в зарплате B_Period?

b_period это public переменная блок кода для ввода даты

Код
   Public bCPer     := {;
                          |d, o|;
                          d := If(LastKey() == 43, 1, -1),;
                          o := GetActive(),;
                          If(!Empty(o:VarGet()),,;
                           (;
                              o:VarPut(M->S_PERIOD),;
                              o:UpdateBuffer();
                           )),;
                          o:VarPut(NewPeriod(o:Buffer, d)),;
                          o:UpdateBuffer();
                       }

   Public B_Period  := {;
                          |oGet|;
                          SetKey(43, M->bCPer),;
                          SetKey(45, M->bCPer),;
                          BHelpPush(),;
                          ScrTitul(24, "+/-:Период +:Ввод"),;
                          GetReader(oGet),;
                          SetKey(43, NIL),;
                          SetKey(45, NIL),;
                          BHelpPop();
                       }


QInput для отчета
 
Цитата
Денис пишет:
Цитата Александр Титов пишет:

Поставьте перед вызовом Qinput

ShowParent()



Спасибо! Проблема решена



На будущие подскажите, пожалуйста, есть еще известные отличия написания плагинов запускаемых из отчетов и плагинов запускаемых из главного меню?


Все отличия мы постепенно искореняем. В частности, в SP10 учтем и описанную ситуацию, чтобы не обязательно было писать ShowParent() перед QInput
QInput для отчета
 
Цитата
Денис пишет:
К сожалению мне ни кто не может подсказать, как надо изменить второй пример из сообщения #44, чтобы он заработал из главного меню. Пока я слоняюсь к тому, что проблема в БЭСТ-е. Думаю, что ее можно как-то обойти. Пока я не видел ни одного работоспособного из главного меню примера, где bScrInit возвращает NIL

P.S. К сожалению меня начинает поджимать время. В понедельник надо показывать...

Добрый день!
Поставьте перед вызовом Qinput
ShowParent()
Если проблемы останутся, выложите или пришлите мне на titov@bestnet.ru код и описание проблемы. А то тут столько написано, что концов не найдешь...
Замена типовой операции в реестре внутренного перемещения
 
Цитата
itman пишет:
БЭСТ-5 СП9

Типовая операция на внутреннее перемещение.

Вносим изменения в проводки, добавляем новую корреспонденцию.

Делаем новый документ, проводки формируются.

Хотим сформировать проводки по всем документам с начала месяца - новые проводки не формируются.

Выбираем замену операции по Ф5, даже если меняем операцию, то новая проводка упорно не формируется.

Сумма проводки формируется по условию if(,,), без условий формируется нормально.

Женя, надо на конкретном примере посмотреть.
Выложи мне куда-нибудь.
Вопрос по блокировке записей.
 
Цитата
Саак Шахламджян пишет:


Цитата Александр Титов пишет:

В этом случае обычно выставляется семафор, который не позволяет второму пользователю писать в эту запись, пока первый не выполнит задачу полностью. При этом семафор не блокирует запись, а просто извещает второго пользователя, что с записью работают.



А не проще ли вместо семафорофа будет в данном случае применить блокировку записи??? И не нужен никакой семафор. (Интересно даже каким должен быть тут семафор? Еще интереснее где его инициализировать?)

И как в Б-5 работать с семафорами, потоками?

Конечно, в простых случаях применяются простые блокировки.
Нужно только иметь ввиду, что блокировка не должна выставляться на длительное время, чтобы не ограничивать в работе других клиентов. Это время определяется количеством попыток блокировки с других станций. А серверные семафоры используются для длительных процессов, когда, например, документ вызван на редактирование, и надо сообщить об этом другим пользователям, чтобы они его не могли в это время редактировать. На остальные Вопросы готов ответить, если Вы практически подойдете к необходимости их решения.
Вопрос по блокировке записей.
 
Цитата
Саак Шахламджян пишет:
Цитата Александр Титов пишет:

Добрый день!Если я правильно понял пример, то не надо делать промежуточной разблокировки записи, пока не закончится выполнение задачи полностью. Мы обычно в таких случаях решаем задачу в оперативной памяти, и, как только все данные для записи будут готовы, блокируем ее, изменяем и разблокируем.

Здравствуйте! Посмотрите, пожалуйста внимательнее пример. Там 2 пользователя. Действия второго с добовлением буквы б. И он не производит промежуточой разблокировки (Речь о ДВУХ пользователях). Один записывает, другой читает.

Само собой, если первый сразу все прочитает - проблем не будет. Я просто придумал такой пример, когда чтение идет дольше записи.

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


Так вот об этом речь и идет!

Давайте подробнее, раз я так не могу объяснить.



Код 1. Прочесть Поле1: Переменная1:=Поле1 (5.14)



( Состояние ячейки: 5.14   6   7

Переменная1=5.14)



1б. Заблокировать запись. ЗАПИСАТЬ в Поле1:=1.

ЗАПИСАТЬ в Поле2:=3. ЗАПИСАТЬ в Поле3:=3.



( Состояние ячейки по прежнему: 5.14   6   7  Переменная1=5.14)



2б. Разблокировать. Поле1 стало равным 1. Поле2 изменилось. Поле 3 изменилось.

( Состояние ячейки: 1   2   3. Переменная1=5.14)



2.Если (хитроумные математические действия(Переменная1)==3.14)

// Хотя на самом деле уже истинно

//(Хитроумные математические действия(Переменная1)==18.14)

( Состояние ячейки: 1   2   3. Переменная1=5.14)

3. Прочесть Поле2: Переменная2:=Поле2 (Поле2 заметьте уже совсем другое, по замыслу Поле2 интересовало нас при Поле1 равном 5.14)

4. КонецЕсли





Причем дейсвие 1 (Присвоение Переменной значения поля может быть и в функции Хитроумные математические действия(). Просто тогда остальные действия 2го пользователя должны быть передвинуты соответственно.



Добрый день!
Если я правильно понял пример, то не надо делать промежуточной разблокировки записи, пока не закончится выполнение задачи полностью. Мы обычно в таких случаях решаем задачу в оперативной памяти, и, как только все данные для записи будут готовы, блокируем ее, изменяем и разблокируем.
А когда планируется SP 10
 
Цитата
Станислав Кубиковский пишет:
Ждем уже месяц, примерно сроки сообщите?

Добрый день!
SP10 планируется в сентябре.
Вопрос по блокировке записей.
 
Цитата
Саак Шахламджян пишет:
Так Вы "не заметите" как она изменилась. Вы как бы часть данных прочли со старой записи, "зависли" а потом прочли с новой. Например так:
1. Прочесть Поле1 (5.14)
1б. Запись изменилась. Поле1 стало равным 1.
2.Если (хитроумные математические действия(Поле1)==3.14)
// Хотя на самом деле уже истинно
//(Хитроумные математические действия(Поле1)==18.14)
3. Прочесть Поле2
4. КонецЕсли

Добрый день!
Не совсем так.
Обычно перед записью осуществляется ее блокировка. На время блокировки записи, другие пользователи видят ее прежнее содержимое, пока она не будет разблокирована. Активный юзер (который заблокировал запись) начинает изменять запись (пишет в поля), но другие пользователи пока это не видят. Как только запись будет разблокирована, другие пользователи увидят сразу все обновленные поля записи.
Для более сложных случаев (для каскадных изменений например) в БЭСТе (3.4) применяется система семафоров и транзакций.
Используется неверный тег при сортировке БД описания таблиц БЕСТ.
 
Цитата
Саак Шахламджян пишет:
1. Бест-5 -> Настройка -> Базы данных -> Технологические операции -> Описание структуры БД -> Продажи.Клиенты.
2. Нажимаем F3. Выбираем Сортировать по: русскому наименованию. Enter.
3. Читаем:
Вызов из (...) стр: функция _ORDSETFOCUS
В [C:\Program files\BEST\BEST5_34\Server\DATA\PRO\dic\b5tables.cdx] нет teg-a [DALIAS]

Спасибо, поправим в SP10.
Крит ошибка компилятора., Вылетает критическая ошибка при элементарной операции.
 
Цитата
Саак Шахламджян пишет:
Знаете, если честно устал писать в редакторе XBA. Не хотелось жаловаться, не приводя конкретных глюков, как например один из которых описан выше, но, правда, ощущение такое, что просто наплевательски отнеслись к пользователям.
1. При отладке программы, написанной в редакторе, один и тот же файл открывается по 2-3 раза, т.е. в меню "Окна" один и тот же файл указан в 2х 3х или даже более экземплярах. Когда это происходит я не знаю, но при постоянное работе с отладкой такое происходит.
2. Неужели было сделать трудно сделать такой запрос:
"Файл был измененен, сохранить изменения?" - "Да.Нет. Отмена".
(Из-за 1го постоянно происходит следущее:
Сохраняю одну из копий файла, а в других копиях изменения не сохранились...)
3. CTR-Z (отмена последнего действия) и CTR-Y(повтор действия). ХОТЯ бы на одно последнее ДЕЙСТВИЕ, даже в БЛОКНОТЕ есть такое!!!!
(стоит только перепутать crl+x с Ctrl+v потом сиди ломай голову...)
Ну, правда, знаете сколько нервных клеток уже убил Ваш XBA редактор...

Добрый день!
Спасибо за замечания, мы работаем над их устранением.
Крит ошибка компилятора., Вылетает критическая ошибка при элементарной операции.
 
Цитата
Саак Шахламджян пишет:
Критическая ошибка:
1. Запускаем БЕСТ
2. Меню Сервис->Запустить редактор XBA
3. Открываем папку MNF
4. Создать новый файл. Задаем имя, нажимаем СОЗДАТЬ.
( Попутно еще глюк: тут программа выдает запрос: "Файл с таким именем существует.Заменить на новый?" Хотя такого файла и в помине нет!!!!)
5. Нажимаем да. (на запрос)
6. Открывается файл. Наводим курсор на 1ю строку (мышью).
7. Нажимаем клавишу END.....
Все... бест рухнул... и редактор XBA и окно беста с открытой базой. Крит:
"Исключение неизвестное программное исключение (0х0eedfade) в приложении по адресу 0x7c81eb33".
Такое часто выходит, однако этот случай могу описать и такое всегда происходит.

Спасибо за сообщение, исправим в SP10.
Вызов WinReport из меню, Возможно?
 
Цитата
Денис пишет:
Цитата Александр Титов пишет:
Ситуацию повторили. Исправим в SP10.
Спасибо! А как сейчас исправить, чтобы из спецфункции можно было WinReport запускать?
СП10 в августе будет?

Если по простому:
- заменить строки
FUNCTION WRPTest()
Local aTable, cFile, cName, cFileStruc, cNameStruc, cPriv
на
PRIVATE aTable, cFile, cName, cFileStruc, cNameStruc, cPriv
- привязать по Ctrl-F5 без компиляции programm.prg
и все.
Второй вариант - откомпилить в hrb и привязать .hrb.
Третий вариант - через userlibpro.bdll и вызывать функцию.
SP10 будет в августе.
Изменено: Александр Титов - 18.07.2008 11:18:16
Вызов WinReport из меню, Возможно?
 
Цитата
Денис пишет:
Что-то у меня все перестало работать...

Ситуацию повторили. Исправим в SP10.
Вопросы по работе с удаленными филиалами
 
Цитата
Станислав Кубиковский пишет:
Цитата Александр Титов пишет:



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



Можно попросить описать конкретную ситуацию, при которой делались изменения цены у номенклатуры, каким способом, а потом при передаче данных цена оставалась прежней в филиале ?




Проверил сегодня утром цену меняем через "Продажи.Клиенты.- Ведение прайс-листов - Основной Прайс-лист" изменили две цены на две номенклатуры. В филиале после приема данных цена не изменилась.
Прикрепил файлик с данными


Ok! Сейчас попробуем выйти на ситуацию.
Вызов WinReport из меню, Возможно?
 
Цитата
Денис пишет:
Можно ли вызвать плагин (цель которого сформировать отчет с помощью WinReport) (с предварительными запросами данных (к примеру с помощью QInput) и без таких запросов) из меню БЭСТ5 3.4 СП9 с помощью файла userbdll.txt?

Да, конечно. Если какие проблемы возникнут - решим.
Вопросы по работе с удаленными филиалами
 
Цитата
Денис пишет:
Цитата Александр Титов пишет:

Настройка-Базы данных-Технологические операции-Описание структуры БД по Ctrl-Enter

Посмотрел этот пункт и создалось впечатление, что центральный комплекс может обмениваться с удаленным филиалами данными из файлов (и целых приложений) добавленных самостоятельно "пользователем". Я правильно понял?

В принципе да.
Вопросы по работе с удаленными филиалами
 
Цитата
Станислав Кубиковский пишет:
Проверено лично при выдаче данных с изменением одной цены на одной номенклатуре не проходило в филиале. С настройками проходило.
И еще задвоилась в торговом зале типовая операция Возврат Товара в филиале, в центре нормально (одна).


1. По изменению цены. Проверили: изменяли цену разными способами (через документы, номенклатурный справочник, прайс, расчет себестоимости). После каждого изменения делали выдачу изменений документов в филиал. В филиале цена менялась.
Можно попросить описать конкретную ситуацию, при которой делались изменения цены у номенклатуры, каким способом, а потом при передаче данных цена оставалась прежней в филиале ?
2. Про задвоение типовой операции.
Не смогли выйти на ситуацию.
При первом приеме настроек в филиале справочник типовых операций очищается, и все типовые операции принимаются с теми же RowId (уникальный номер строки), как и в центральном комплексе. Поэтому задвоение исключено.
При последующих приемах уникальные номера строк уже будут совпадать. Такая ситуация могла бы получиться, когда у одной и той же операции был разный RowId в центре и в филиале, например после ручного копирования строки, но программно выйти на ситуацию не удалось.
Вопросы по работе с удаленными филиалами
 
Цитата
Станислав Кубиковский пишет:
Цитата Александр Титов пишет:



Номенклатурный справочник с ценами передается и при выдаче настроек и при выдаче документов, тем более, что там и там есть режим выдачи по изменениям. Поэтому все время гонять настройки не надо.







Проверено лично при выдаче данных с изменением одной цены на одной номенклатуре не проходило в филиале. С настройками проходило.



И еще задвоилась в торговом зале типовая операция Возврат Товара в филиале, в центре нормально (одна).

Спасибо, проверим.
Вопросы по работе с удаленными филиалами
 
Добрый день!
Цитата
Станислав Кубиковский пишет:
1. Что входит в настройки а что в данные при передаче? Сейчас приходиться передавать одну изменившуюся цену на номенклатуру вместе со всеми настройками. Выгонять там и здесь пользователей.

Передаваемые таблицы и поля можно посмотреть в режиме
Настройка-Базы данных-Технологические операции-Описание структуры БД по Ctrl-Enter. Номенклатурный справочник с ценами передается и при выдаче настроек и при выдаче документов, тем более, что там и там есть режим выдачи по изменениям. Поэтому все время гонять настройки не надо.
Цитата
Станислав Кубиковский пишет:
2. Настройки на кассы в торговом зале в филиалах происходит с ошибкой (смотрите скрин), при попытке завести настройку на кассу в первом поле "КОД МАГАЗИНА" недоступен справочник, заполняем ручками, не дает спуститься вниз, выходим. Предлагает сохраниться, говорим да, пишет что не заполнено все остальное и перескакивает на третье поле, далее все штатно заполняем. Так должно быть?

Это поправим в SP10.

Цитата
Станислав Кубиковский пишет:
3. Про монопольный режим вообще грустно писать. Чтобы принять данные с филиалов (11 шт) нужно потратить уйму времени (минут 40-60), чтобы выдать им изменения (цены, партии, номенклатуру) еще столько же. Мы могли бы пойти на это если бы не МОНОПОЛЬНЫЙ РЕЖИМ в действующей реализации. Представляете центральный офис из 15 человек (менеджеры, бухгалтерия, экономисты, шефы, кадровики) и сказать им чтобы они примерно на 2 часа рабочего времени не входили в базу (не разносили выписки, не формировали отчеты, не оприходовали ГТД)?

Использование монопольного режима позволило увеличить скорость выполнения операций выдачи и приема данных примерно в 200 раз (проверяли на больших объемах).
Тем не менее, в SP10 мы проведем доработки, которые позволят отказаться от монопольного режима при выдаче данных, не теряя сильно в скорости, а при приеме постараемся увеличить скорость обработки.
Проблемы, Вывод в Excel
 
Цитата
Александр Таранов пишет:
с DOS в Excel переходит быстрее, чем просто в ексель.
А как быть просто с екселем? Не всем удобно альт-ф2 нажимать.
Может как то можно ускорить процесс с екселем?

Хорошо бы на конкретной базе посмотреть. Можете выложить базу?
Работа с OpenOffice Calc, Работа с OpenOffice Calc
 
Цитата
Игорь Борисов пишет:
А где можно почитать инструкцию по функциям, методам в OO Calc.

Можно вот тут примеры посмотреть:
http://content.mail.ru/arch/22913/1486600.html
http://community.i-rs.ru/index.php?topic=8353.0
http://www.delphisources.ru/pages/articles/2007_year/art_14_05_07/art_14_05_07_1.html
Работа с OpenOffice Calc, Работа с OpenOffice Calc
 
Цитата
Игорь Борисов пишет:
Я по этому примеру и делаю.
Но в нем нет как взять значение ячейки, а только присвоить.
И что означает строчка в примере
oSheet:getCellByPosition(6,38):setString("Ячейка G39")
Присвоить ячейки G39 значение Ячейка G39.
Пишу oSheet:getCellByPosition(6,38):value не работает.
Помогите.

Для чтения данных из ячейки сначало необходимо узнать какой тип данных в ней находится. Для этого можно воспользоваться методом getType. Возвращаемые значения:
0 - пустая ячейка;
1 - число;
2 - текст;
3 - формула.
В зависимости от полученного результата используются методы getString, getValue, getFormula.
Работа с OpenOffice Calc, Работа с OpenOffice Calc
 
Цитата
Игорь Борисов пишет:
Помогите перевести эту строчку на OO Calc.
nn1:=oWorkSheet:Cells(i,2):value
Никак не могу понять как взять значение ячейки.

Добрый день!
Вот тут пример можно посмотреть:
http://www.bestnet.ru/support/forum/index.php?PAGE_NAME=read&FID=11&TID=341&MID=s
Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 20 След.