nordk пишет:
Поздравляю
Нужны будут еще имена функций- обращайтесь
Да вот, к стати придумываю как бы лучше ОКПП сохранять. Пришла мысль, а может быть есть возможность как-нибудь задать строки ОКПП через переменные, а потом вызвать функцию БЕСТ-5 сохранить ОКПП??? (Или классы, наподобие тех, что при работе с документами прихода\расхода)
Сейчас объясню что именно требуется.
При штатном формировании ОКПП берутся строки сводных заказов из rbookm все подряд, попадающие под план период. Мне бы хотелось выборочно брать эти строки и после этого сохранять ОКПП... Вот. Сейчас начал делать сам, но может быть....????
Здорово, спасибо. На первый взгляд, то что надо, все работает, полностью ясно будет при непосредственном применении.
Семафор работает. Пока никто не жаловался. Я их использую сейчас только для таблицы rbook .
Сейчас возник :
"А нельзя ли сразу снять все блокировки с одной таблицы?" Вернее даже "групповое" снятие блокировки через массив значений!? Или снятие блокировок относительно одной рабочей области - этот вариант, вообще идеальный...
nordk пишет:
Если делаете через массив временный фацл не нужен, если делаете через временный файл - массив не нужен - непонятен .
Количество Вас никто не завтсавляет выводить - выводите только СHR() - никак не могу понять суть проблемы
Да, собственно нет никакой проблемы уже. Мы просто обсуждаем каким образом организованы метки в Б-5 и что лучше всего метки "делать" в памяти, в массиве...
1. Два пользователя зашли в Планирование производства-> объемно-календарные планы.
2. Нажали F4(сначала один, затем второй).
3. Нажали сохранить (сначала один, затем второй).
Создалось 2 ОКПП с одним и тем же номером.
Можете меня поздравить!!!
Только что воспользовался данной функцией и посчитал потребность к выпуску и потребность в материалах.
Для этого всего-навсего создал PUBLIC и PRIVATE переменные, открыл все нужные таблицы, что вычислил при помощи отладчика.
Все посчиталось...
Нужная dll PLN.BDLL. Открываю необходимые таблицы и получаю ошибку о том, что НЗ уже сформированы...
Хотелось бы узнать как бы теперь "задать" тот самый, нужный план для расчета!!!?
в файлике
userbdll.txt дает новое меню, но вот при клике на него получаю ошибку:
Нет функции ViewAmounts в LaunchedProd. bdll, скомпилированные в старом дизайнере прекрасно работают!!!
Что поменялось???
У меня была запись вида:
STATIC PROCEDURE ViewAmounts()
......
Убрал STATIC ошибка не пишется, однако при клике на меню не происходит вообще ничего. Серые меню отключили?
SOS!!!
К стати она работает!!!
При вызове Calculate() из меню потребность материалов он работает и похоже все расчитывает... Осталось только узнать какая dll мне нужна... А?
nordk пишет:
Метки вообще-то организованы массивом.
На старом форуме был как-то урок по организации меток
А как же тогда временный временный файл с алиас METKA_? Мне-то как раз кажется, что именно там и храняться номера отмеченных записей....
Я сделал массивом, в памяти, так:
Сначла тоже сделал с временным файлом, но мне не подошло, т.к. выводиться еще кроме "галочки" (CHR(158)) еще и количество.
А при нажатии клавиши метки в массив записывается номур записи и нужное количество...
При открытии спецификации на вкладке компоненты напрочь исчезли наименования этих самых компонентов. (Вернее сказать можно посмотреть их, только пролистывая список, по-одному)
Пока еще СП11 не стоит на рабочей базе, но думаю это просто плачевно может сказаться на работе людей, имеющих дело со спецификациями. Несколько неудобно...
Просто интересно знать, неужели кто-либо обращался с такой просьбой как убрать названия?
Для нас, например, поле группа не столь информативно и поле база нормирования.
Доброго времени суток всем!!!
Есть нескромная просьба! Нельзя ли, пожалуйста, дать функцию расчета план-рафика выпуска(что одновременно является и расчетом потребностей материалов)!??
Очень не хочется писать самому!!! (Формирование НЗ с меня хватило...)
Заранее спасибо при положительном ответе!!!!
Саак Шахламджян пишет:
А если файл открыт в какой-либо другой рабочей области? Или с другой машины?
Я написал только то, что написал. Мы проверяем существование алиаса, но в случае если алиас не существует мы получаем не информацию, а сообщение об ошибке. Согласитесь, что это немного неправильно. Этот фрагмент я предлагаю заменить. В остальном автор прав.
Ну, в общем-то да. Просто я показал как проверить использование файла...
А если файл существует и используется, то DbCreate( LOADPATH()+"report", aStructure) вернет ошибку, не создав такой файл... Если же не занят, то все пройдет нормально....
Алексей Новиков пишет:
Здесь я бы написал так:
Код
if(select('report')>0, report->(dbclosearea()), nil)
А если файл открыт в какой-либо другой рабочей области? Или с другой машины?
2 olegue olegueЧто именно требуется, уточните. Проверка использования файла вообще, кем бы то ни было? Или в текущей рабочей области?
Проверку на то открыт ли какой-либо файл сделать нельзя. Во всяком случае я когда-то подннимал данный вопрос и проверить можно, раве только существование файла. А вот то открыт он где-то еще или нет не получиться...
Единственным способом такой проверки является TRY ... CATCH и BEGIN SEQUENCE . Где можно "попытаться" эксклюзивно открыть .dbf файл (если речь идет о нем), если же какой другой файл, то...
Например так:
Код
.....
Local sPathNZ:=LoadPath()+"PLN\NZ"
TRY
Use (sPathNZ) New EXCLUSIVE
bAllOk:=.T.
Catch oErr
bAllOk:=.F.
SayAndWait("Внимание! Таблица с наряд-заданиями уже используется!")
end
.....
nordk пишет:
А причем тут метки и aHeads ?
В БЭСТе метки тоже ставятся в памяти.
Не путайте вывод на экран и ввод данных.
И потом кто сказал что в aheads должны быть именно поля.
Говорю еще раз. Все что может DIALOG aheads делает
легко - по сути он превыше DIALOG и в Инитлист именно
им стоит научиться пользоваться. Все остальное просто не к месту для таких задач.
О каких метках идет речь?
Мне казалось метки в БЭСТ ставяться как раз-таки в дом файле Алиас Metka если память не изменяет. Файл лежит по пути doc...and..setting\local setting\temp\tmp\....
в этом файле и лежат номера записей...
Надо будет обязательно попробовать, по поводу возможности впихнуть в aHeads не поля был не в курсе, интересно.
В СП11 как я понял вновь появилась стандартная возможность описания пользовательских индексов (правда я так и не понял нужно ли все-таки их также в bases_nn описывать или достаточно в User\bases_us.dbf описать).
В этой связи 2 а:
1. Не совсем понял что имелось ввиду под:
"В этом случае при индексации базы данных эти индексы будут учитываться и переносится при выполнении процедуры Upgrade"
Как это понять(по поводу Upgrade краем уха слышал и давно)? Последующие СП-ки как-то по-особому нужно ставить, чтобы пользовательские индексы не слетали или как обычно? 2. Пришлось поменять 2 или 3 системных индекса. Например 1н в таблице rbook. Это индекс Rbook_O (№ 11) в поле For_key для построения индекса вместо [(STATUS="1")... ]стало [(STATUS="1".OR.STATUS="4")...]. Сделано было по причине того, что при реализации со склада нет возможности указать продукцию из сводного заказа. Из заказы продаж есть возможность, а вот из сводных нет. Странно немного.
Так вот . Есть ли возможность сохранять изменения(и добавление новых) системных индексов при установке последующих СП-ков?
Наконец-то многое в XBA редакторе поменялось. Заранее стало приятнее работать. Компилятор поправили. Добавили отмену/повтор. Похоже и глюк с "мультиокнами" тоже пропал, что очень раздражало.
Спасибо!!!
Будем наблюдать дальше!
Вполне может быть.
Надо бы по индексному ключу проверку делать.
Вручную то выдаст диалог, что такой номер уже есть и не побрезгует.
Наверно тут надо организационн разделять ручные и не ручные документы или видами движений или кодами документов.
Так и сделал. Но та причина по которой не хотел "делать этого сам" и произошла - кажется, я ошибся с тем по какому ключу и данным делать проверку. Хотя wdoc Тоже не спасает, там ведь тоже параметры надо знать наверняка. И есть разница между Sclad и AgentCode. В общем очень тщательно надо подойти к у.
не хотел по причине того, что WDOC является функцией разработчиков и при изменения (аплейтах) они буду "отвечать" за правильность номера (мало ли какие нововведения появятся).
Во первых это не только ввод и корректировка, но и фильтр и суммирование
Плюс нестандартные способы.
Во-вторых диалог построен абсолютно на нем.
Там тоже постусловие и предусловие и так далее.
Заполнять Вы их не обязаны....
Ввод новой записи отключается в bScrInit анализом
параметра nApp
aHeads не подходит. Только сейчас вспомнил самое главное. У меня ставяться метки! И количество изделий для каждой метки храниться в опер памяти. Только после запуска функции "Сдать" происходят изменения в базе.
Механизм посмотрю но делать свой не стоит.
Можете сразу весь модуль свой писать.
Это точно также как не стоит самому стремится работать
с остатками на складе и так далее.
Основнополагающие механизмы надо брать из БЭСТа, чтобы
потом не искать причину расхождения в таблицах.
Тем более что Ваши уверения об ошибках будут проверять на
демобазе и там они могут не подтвердится.
По поводу ошибки я код привел и он как раз для демо базы. С остатками, думаю конечно будет перегиб самому работать. Писать свой модуль, наверное, просто физически почти невозможно. Почитал то, что есть в СП11. Думаю, что стоит на F8 поставить свою обработку и всё. Хотя, не очень-то это и надежно.
Memvar pLastNum,pNextNum,PATH_DBA
Public PATH_DBA:="D:\DB\Clean8\ZAPAS\ARC\"//так, во всяк случае написано при просмотре других плагинов чз отладчик
Private plastnum,pNextNum
Только она мне не очень понравилась.
Сдал продукцию - автоматом присволся № 273
Сдал еще раз - автоматом присволся № 274
Сдал еще раз, вручную - вручную присвоил номер 275
Сдал продукцию - какой номер присвоился не занаю, но Empty(oErr) - true (я так проверяю успешность создания документа). Полагаю, WDoc вернула 275.
FUNCTION WDoc(cField,xKey,lPere,cPre,nLen,lNoPre_,cTag,cPath) //PRIVATE pNextNum,pLastNum
//lPere!=NIL для смежного документа при перемещении
//lNoPre_ - не подставлять букву во вновь сформированный номер
Должна работать в складской DLL.
Для использования функции при запуске из главного меню попробуйте LoadLibrary("[имя файла].bdll"
По этому принципу БЭСТ создает новый номер но проверка
по уникальности делается дополнительно в БЭСТе насколько
я понимаю.
Меня, собственно и интересовало это самое [имя файла]. Какой именно? Я не в курсе. Похоже, sclad.bdll?
З.ы. сразу что-то не сообразил посмотреть названия *.bdll файлов в папке bin...