nordk пишет:
Эта ошибка идет с SP-9.
По причине срочности отдельных вопросов SP-10 не включает в себя это исправление.
Полный пакет со всеми изменениями, включая исправление
этой ошибки SP-11 ожидается на след. неделе
В источнике stroki не нашёл дата поставки изделия.
Если открыть сам заказ (сводный, например), то у изделий есть дата поставки. У каждой строки своя. Попросили эту дату вытащить на печатный бланк. Где бы её взять?
Другие источники смотрел, так же не нашёл.
требуется корректировка существующего источника?/разработка нового?/или я искал?
nordk пишет:
Настройка дополнитльеных параметров.
автоматическое включение в прайс-лист
там два пункта есть, которые отвечают за это.
Кажется, нашёл. Только не в Продажи.Клиенты. В Товары->продукция есть еще опция по прайс-листу. И+ настройка счета учета ТМЦ. На счете учета ТМЦ поставить НЕТ еще надо...
Когда готовая продукция из цеха сдется (непосредственно из наряд-заданий) она почему-то появляется и в прайс-листе. Никак не могу найти настройку, чтобы этого не происходило.
Денис пишет:
По требованию, на вход в документ работает. А на "вход в прай-лист" в пункте Заказы продажи (счета) и в "Учете движения товаров" на "вход в картотеку" не получается.
А также в пунктах "Заявки на продажу" и "Сводные заказы" тоже не работает.
nordk пишет:
Я не утверждаю, поскольку на проверку каждого а детально не хватает пока ресурсов. Поэтому я спрашиваю
что Вы смотрели сами и что успели попробовать...
Еще есть вот такая функция.
Возможно это то, что Вам надо
Здорово, спасибо. На первый взгляд, то что надо, все работает, полностью ясно будет при непосредственном применении.
nordk пишет:
В поставке с БЭСТ-5 идет описание структуры БД.
Если Вы посмотрите на структуру интересующей Вас таблицы то увидите поле-признак корректировки заказа.
Пользоваться этим полем пробовали ?
Хотелось бы Вам верить, что все так просто, но я не нашёл такого поля.
Есть поле Input, но оно у всех равно "1", редактируется или нет документ в этот момент. В описании этого поля сказано: "Признак корректировки". В общем "внешне" сами записи в таблице принципиально ничем не отличаются:(
(Запись, которую в данный момент редактирую от остальных).
Написав несколько утилит для работы с заказами сейчас выявилась проблема.
Очень не нравится то, что у меня не учтена одновременная работа с однми и тем же документом.
1. Мне нужна проверка на то, что какой-либо документ в данный момент не редактируется.
2. При редактировании документа моей спецфункцией ставилась бы блокировка для остальных.
Расскажите, пожалуйста каким инструментом это можно сделать.
Конкретно речь идет об Rbook.dbf - заказы покупателей:
Сводные, заявки продажи.........
Блокировки стандартные БЕСТ'овские, которые видны в медежере сервера приложений (тамже и номер записи какой-то висит, когда документ блокируется)
В далекие далекие времена, когда кругом был один Б-4, логотип предприятия приходилось "лепить" на каждый печатный бланк....
Сейчас во времена Б-5 в карточке предприятия есть "Торговый знак", который по уверениям некоторых людей "Ну, не просто так же он там висит....". Хотелось бы узнать как же вывести его на бланки печатных документов.... Или придется так же как и в Б-4 на каждый бланк лепить? Чтобы было некрасиво и везде разных размеров?
Ирина Глухова пишет:
По поводу возможности в менеджере пользователя по пунктам меню пользователей станвливать доступ по ролям: включим в план.
Я имел ввиду при создании пользовательских форм (серых и синих). Те, формы, которые разрабатываются дизайнером приложений и подключаются при помощи файлика userbdll.txt.
Вы о них говорите?
Если да - было бы здорово.
Поставил так:
oWorkSheet:Range("B3"):WrapText:=.T.
Т.е. как бы обратился сразу к ячейке B3. Как правильно это назвать не знаю... Так работает!!! Спасибо!!
Но все-таки хотелось бы "правильное" решение :
oWorkSheet:cells(nLine,2):WrapText:=.T.
А оно почему-то не работает. Просто обращаться к ячейкам в цикле так:
Код
While ! Eof()
.....
oWorkSheet:Range("B"+Var2Char(nLine)):WrapText:=.T.
.....
enddo
Алексей Новиков пишет:
oWorkSheet:cells(nLine,nCol):WrapText:=.T.
У меня что-то не получается. А Вы не могли бы показать, где происходит инициализация объекта oWorkSheet, а то я что-то не очень понял что это такое...
Как я понял:
oWorkBook:=oApp:WorkBooks:Add()//рабочая книга
oWorkSheet:=oWorkBook:Worksheets():Add(),
В этом случае запись oWorkSheet:cells(nLine,2):WrapText:=.T. у меня не работает.
В хелепе к Б-4 написано, что "...методы и свойства Excel, описание которых можно найти
в справочных руководствах по объектной модели Excel." Где бы поискать эти описания?
nordk пишет:
Не совсем понятно давайте пойдем по другому.
1.Вы сделаете файл с длинной строкой как есть.
2.Включите в Excel создание Макроса
3.Сделаете с ячейкой преобразование, которое Вам надо.
4.Остановите запись макроса.
5.Покажете полученный текст макроса.
Боюсь, в этом случае долго будет... Если из Бэст сразу выгружать как надо, быстрее будет? Хотя это мне так кажется.
Да нужно чтобы было красиво.. Проще картинку прикрепить, но попробую на пальцах:
Под символом № - новер ячейки EXEL. Символ "."=" "
"Длинное название" - лежит в одной ячейке номер 2, Колонка 2 широной 50 так и осталась шириной 50, но "Длинное название" перенеслось так, что его видно целиком.
А сейчас, когда выгружаю в Exel, получаю:
От "Длинное название" видно только "Длинное наз", хотя, в ячейке оно целиком присутствует. Нужно, как бы высоту ячейки изменить, чтобы "Длинное название" было в несколько строк.
Выгрузка данных в Exel.
Очень хочется при выгрузке длинных текстовых строк, чтобы они в одной ячейке переносились.
Поставил символ окнчания строки (как в файле .txt формата), exel переносит, однако там появляется некрасивый символ. (м\б нужен другой символ?)
М\б есть номальный способ "заставить" Exel делать перенос строки, если она не помещается в колонку по ширине?
Код
Local cString1:="Одна маленькая строка",cString,nEnd:=2573
cString:=cString1+W2bin(nEnd)
cString+=cString1
........
oAS:Range("A2"):formula:=cString
//Пример из справочника к Б-4. oemtoansi() не пригодилось
Правда, как я понял запись oAS:Range("A2") - это запись в конкретную ячейку.
А запись вида
Запись в ячейку по номеру столбца, номеру ячейки и определение формата.... М\б Есть способ либо формат определить (во втором случае) или строку по-особому сформировать (как в первом). Подскажите, пожалуйта.
nordk пишет:
Все так но при условии что у Вас не будет сортировок под которые скоб не подходит...(индексы такие есть)
Да, это так. Правда , что основная часть индексов по UPPER(STATUS+GRUP....). И еще фильтр после этого не ставиться.
К стати при вызове спецфункции по работе в реестре на клиентской машине фокус не прошел, скоб слетает... Пользователь просто вызывает спецфункцию
А что по поводу прав доступа скажете?
itman пишет:
В свои функции можно сделать вызов функции, такого типа
Код
Local aAdmin:={'admin','itman','saak'}
Local aUser:={'admin','itman','oper1','buh1','buh2'}
AltD()
If AScan(aAdmin,ident_user)=0
sayandwait("У вас нет прав доступа")
Return
EndIf
Смысл в том, чтобы разделить юзеров на уровни доступа
и соответственно там уже как удобнее делать проверку.
Главное - переменная iden_user, а уж когда ее проверять - дело ваших задач.
Да смысл весь в том, чтобы вообще этого нового меню не было видно определенным пользователям... Я так понимаю, при проверке идентификатора пользователя на получение права доступа, не даст ему всего лишь войти в это новое меню и все. Такой вариант не устраивает:( и мной рассматривался.
Евгений Плешивцев пишет:
Первое что приходит в голову, написать свой реестр и сделать пункт в меню. Стандартный же вход в номенклатурный справочник для пользователя закрыть.
Нашёл более простой способ!!! Можно поставить скоб! К стати, можно даже индекс поменять текущий, по которому выводиться список номенклатуры!!! Скоб ставиться в спецф-ии по работе в реестре. А внутри - проверка пользователя, если нужный, ставим скоб. Либо пользователь вручную вызывает спе-ю.
Цитата
Ирина Глухова пишет:
Включим в план доработок по правам доступа.
Боюсь не поможет:(. Проблема в том, что ограничить нужно ТОЛЬКО при работе в самом реестре номенклатуры, а вот при вызове рееста номенклатуры на просмотр при составлении спецификаций пользователю нужны совсем другие группы.
К стати, по поводу написания своего реестра. Вчера впервые "внедрил" текстовую форму. Теперь, в общем-то написание своего реестра не кажется таким уж страшным делом, тем более функционал, оторый требуется реализовать в десять раз меньше, чем у разработчиков.
Но есть , который заинтересовал еще когда пробовал графические формы внедрять в Б-5, самый главный :
Каким образом ограничивать доступ пользователям к вновь введенным меню в Б-5? (Т.е. сделали новое меню - "Аптека" или еще что-либо, в менеджере пользователей ограничить не получиться....) Раздача прав на вновь введенное меню Б-5...
Этот очень сильно волнует. Единственное, что приходит в голову, это, возможно, если описать свою новую форму так же как и описаны все формы в Б-5 (у них там уник идентификаторы и много еще какой информации по ним), вручную добавив информацию в таблицы, отвечающие за работу с ними, и м\б тогда появиться новое меню и менеджере пользователей?
Саак Шахламджян пишет:
Похоже разобрался с тем, чтобы сделать нормально. Функция SAVESCREEN() работает неправильно\не работает\не так как надо. В общем, именно она является лишней.
При использовании QinitPush() и QinitPush(.T.) все прекрасно работает, не нужны никакие Do while'ы для прорисовки "первого" InitList (у меня двойное вложение так что последний InitList 3й по счету вложенности).
Надо все переделать...
Перед вызовом второго InitList QinitPush() и QinitPush(.T.), по окнчанию соответственно два QInitPop+"сохранение клавиш" (RestSetKey, SaveSetkey).
Так что придется переделать.
Срабатывало "как-то через раз". Просто, как я понял, иногда при выходе из моих "Операций" "экран обновлялся",а иногда нет. Добавил еще и QIni(20,2) по выходу из своих операций (у меня 20ть строк), теперь более-менее прилично стало. Единственное, конечно, немного неудобно, приходиться запоминать сколько строк и где именно вызывать QIni(20,2).
Похоже разобрался с тем, чтобы сделать нормально. Функция SAVESCREEN() работает неправильно\не работает\не так как надо. В общем, именно она является лишней.
При использовании QinitPush() и QinitPush(.T.) все прекрасно работает, не нужны никакие Do while'ы для прорисовки "первого" InitList (у меня двойное вложение так что последний InitList 3й по счету вложенности).
Надо все переделать...
Перед вызовом второго InitList QinitPush() и QinitPush(.T.), по окнчанию соответственно два QInitPop+"сохранение клавиш" (RestSetKey, SaveSetkey).
Так что придется переделать.
nordk пишет:
Саак я могу сказать, что позаказное производство сделано совершенно с другими целями, а не теми, что Вы пытаетесь навязать для работы с заказами.
Данные задачи были определены конкретными заказчиками именно такой схемы производства и таких типов производств не мало. И им НЕ НАДО НИКАКОГО ПЛАНИРОВАНИЯ.
Позаказное производство не предполагало и не предполагает то, что Вы тут критикуете.
Если Вам такая схема не подходит - это не значит, что всем она не подходит. Если для какого-то вида производства сделали эту задачу, ЭТО НЕ ЗНАЧИТ что теперь надо критиковать за то, что это не делали под все виды производств сразу.
Так что Лариса Ивановна НЕ ТЕОРЕТИК !!!!
В вопросах производства она разбирается ОЧЕНЬ .
Вы имеете право высказывать Ваши пожелания (и это приветствуется !!!) и их готовы рассмотреть и даже как я понял реализовать. Так что, если Вам действительно надо - переходи к конструктивному описанию, как было бы удобно Вашему производству.
Но навязывать свой взгляд на автоматизацию производства не надо. И уж тем более называть теоретиком человека, который много лет занимается этим вопросом и очень им владеет.
, , убедили, я особо по поводу того, что Вы написали и не спорил. Просто все равно не вериться, что удобно работать с самими заказами, без сведенной информации о продукции в самих заказах.
Сколько я не думал, то под эту модель подходит производство, где самих заказов мало. И величина заказа "перекрывает" производственный цикл по объёму выпуска. Как только начинаю представлять ситуацию с тем, чтобы были мелкие заказы не представляю как с ними работать.
Так что если "пара заказов в неделю однотипной продукции", наверное, более чем подходит. Однако, это охватывает очень узкий спектр типов про-ва, опять же по моему мнению, которое я высказываю. И сделав "небольшие" усилия его можно было бы серьезно расширить.
nordk пишет:
Саак посмотрите событие вход в прасй-лист.
В БЭСТ-4 оно называется где прайс-лист где картотека товаров. На старом форуме эту возможность описывали и на этом не помню - вроде тоже.
Суть.
Внутри заказа при нажатии F4 запускается Ваш плагин в который передается массив строк заказа если они были
и Вы делаете свой собственный экран создания строк заказа (набора этих строк). В конце Ваш плагин должен вернуть этот же массив со строками заказа.
Если главная функция Вашего плагина вернет .T. , то запустится после выполнения плагина штатный набор в заказ, если .F., то запускаться не будет.
Полный подробный пример в исх. для БЭСТ-4 я публиковал.
В БЭСТ-5 появились аналитики а в остальном я думаю все тоже самое. По краней мере можно разобрать принцип работы. Если у Вас будет совершенно свой способ наполнения заказа - этот пример Вам не актуален.
Последнее, что мы обсуждали - принцип создания нового заказа. Было предложено 3 варианта:
Цитата
Саак Шахламджян пишет:
1. Сам реестр текущего заказа хочу хранить в памяти и отображать initlist'ом. Как "запихать" массив в InitList?
2.Вариант делать временный файл-таблицу невариант, очень уж не хочется!!! (Долго работает и т.п.)
3.Сразу и писать в таблицу, где храняться строки заказа (rbookm). Тоже не очень при отмене придется все удалять.
Был выбран второй вариант - текущ заказ хранить во временном файле.
Уже все доделал. Единственное пришлось, все-таки емного "поизвращаться", причины:
1. SAVESCREEN() не запоминает экран. Она запоминает лишь буковки, которые выведены в этот момент на экран. Ни цветов, ни строк InitList'a, ничего, кроме символов экрана. Это естественно не устраивает при переключении между разными InitList.
2. При вызове 2го InitList все кнопки, "нарисованные на первом" исчезают. Это пожалуй, самая веская причина для "изврата" (Пришлось Do while'ом рисовать первый initlist).
А так, все прекрасно работает, сохраняется, просто здорово.
Лариса Щербина пишет:
Уважаемый Саак!
Разработчики программы БЭСТ- не теоретики. При разработке новых модулей мы ориентируемся на либо на действующее законодательство, либо, как это было при разработке модулей планирования, на принятую практику планирования наших заказчиков или заказчиков наших партнеров. В том случае, если у Вас есть конкретный заказчик, методика планирования которого не укладывается в описанные выше схемы, нам необходима следующая информация:
- характер производства (тип выпускаемой продукции);
- перечень и образцы плановых документов;
- пояснения о порядке их формирования и правилах контроля за исполнением планов.
При наличии таких документов от конкретного производственного предприятия мы готовы рассмотреть о дальнейших доработках плановых процедур. С уважением, постановщик приложения "Производство" Щербина Л.И.
Ощущение как раз обратное - теоретики.
Законодательством, на сколько я знаю, у нас четко определена бухгалтерия, по поводу производства кто как хочет так и работает, учитывая эту самую бухгалтерию (отчет по материалам и пр.).
Боюсь к тому времени, как будут переданы документы и сделана доработка в ней уже смысла не будет-сами переделаем. Жалко только, что "чуть-чуть не так как хотелось бы".
Лариса Щербина пишет:
ПРОИЗВОДСТВЕННЫЕ ЗАКАЗЫ – плановые документы, реализующие процедуру «минипланирования» производства для небольших производственных предприятий, работающих исключительно по заказам покупателей, поступающим в небольших объемах.
Отличительные черты данной схемы планирования:
1. Каждый производственный заказ формируется на основе одного заказа покупателя (обычного, а не сводного). Он содержит всю плановую информацию, необходимую для выполнения конкретного заказа: данные о продукции и сроках ее потребности из заказа пользователя; задания производственным подразделениям на выпуск продукции и полуфабрикатов; расчет потребности в материалах . Таким образом производственный заказ – это своеобразный сопроводительный лист, сопровождающий заказ клиента от момента его запуска в производство до оприходования продукции. Однако следует иметь в виду, что при запуске производственного заказа программа также не контролирует сроки изготовления с точки зрения наличия свободных производственных мощностей: этот контроль возлагается на управленческий персонал.
2. На основе производственных заказов, без использования НЗ и ЛЗК, можно формировать требования на отпуска материалов и документы на оприходование продукции для конкретного заказчика. После того, как вся продукция по конкретному производственному заказу оприходована, связанный заказ покупателя получает статус «готов к отгрузке»
Таким образом производственное предприятие может выбрать для себя ту схему планирования которая ему подходит. В заключение заметим, что в рамках одного предприятия можно использовать обе схемы: для VIPов, и для всех остальных.
У Вас, извините, просто пропасть между первой схемой планирования и второй, которую цитирую. В первой дискретность помесечная, здесь же позаказная.
В первом случае, еще как-то можно спланировать работу по выпуску изделий, а во втором нет. Она "сама планируется" на основе заказов. Планирования же по выпуску именно изделий во 2м случае получается просто нет. И нет возможности это сделать. Во 2м случае, видимо, работа производства идет по мере поступления заказов, причем смысла в их планировании нет, т.к. "не видно что внутри" заказы "внешне" только датами отличаются. И, честно говоря, мне лично неясно какое "минипланирование" тут происходит? В чем оно заключается и что планируется? Схема как я понял такая:
Заказ->Производство...
А смысла в перестановке заказов просто нет, т.к. критерий у них один - дата сдачи заказа. (Даже по трудоемкости нельзя толком их сравнить между собой)
Думается, даже для предприятий, выпускающих однотипную продукцию также не совсем удобно.
Ведь, например, м\б удобным загрузить сразу 2 или 3 или 10ть заказов в производство. А "объединить" их, опять же можно только в уме, перебрав их все по очереди...
nordk пишет:
Саак я до понедельника в командировку.
Хочу сказать что вообще-то на F4 свой заказ такое событие есть при создании заказа еще с БЭСТ-4.
МОжет опять осветить возможности ?
И даже на старому форуме есть оргинал исходника к БЭСТ-4 по подобному решению в одной из тем.
Но прошу прощения только после выходных.
Да суть а не в этом F4, а в том, что дальше происходит. В том как лучше решить задачу: "Функция создания заказа". Где хранить переменные, как их рисовать. К стати от информации как навесить на F4 свою функции я тоже не откажусь:)