[ОТВЕТИТЬ]
Опции темы
29.05.2014 14:04  
AndreyZh
Цитата:
Сообщение от FinSoft
Андрей, спасибо, ты меня прямо ...
Скромность конечно "украшает", но даже Вы не будете возражать, что более сконцентрированно и глубоко, чем "Ваш покорный слуга" занимаетесь автоматизаций бизнес процессов...

Как Вы могли заметить, что от сайта и активного продвижения в рунет своего продукта, возможно временно решил отдохнуть... правда на загруженность работой это особо не сказалось... наверное действительно "работа дураков любит"?
 
зарегистрируйтесь, чтобы убрать эту рекламу
05.10.2014 10:55  
AndreyZh
Давайте рвсскажу и покажу, как создается новый режим системы. В частности это покажет насколько это реализуется "на коленке"...

1. В принципе уже несколько месяцев операторы озвучивали задачу "пакетной печати пачки документов (счетов-фактур и ТОРГ-12)" из режима предзаказов. От задачи "отбрыкивался", т.к. не понимал, как её легко решить, но периодически задумывался о способах её реализации в системе - всё это "черкалось" на черновиках дабы "не вылетели из головы полезные мысли" в процессе текущей работы. Да и одновременно решаемых, даже программных задач в "голове" множество, например на сейчас: изменение книг продаж/покупок и etc, алкогольный журнал, транспортная накладная и т.д.

2. Наконец оперы "достучались" до босса. Он "проникся" важностью данной задачи и решил даже нечто заплатить... и хорошо, так как в "голове" созрело уже красивое решение. Дальше мозговой штурм с операторами и умным, в частности их руководителем по возможным сложностям и нюансам.

3. Ещё подумав, испортив пяток листов черновиков написал для себя ТЗ, алгоритмы решения и необходимые для учета нюансы - этот листок потом попадет в папку "черновики системы предзаказов". Пока эту разработку в натуральном виде



4. Затем по ней методом нашлепывания по клаве и копипастом был набран черновой текст режима, комментируя основные технические моменты... Во первых другой должен понимать этот текст, да и сам через пару лет легко его должен вспомнить и понять. Конечно после его компиляции и отладки начали вылазить косяки программирования и разработки. Большую часть их, надеюсь исправил, но пока есть несколько "невылизанных" моментов - продолжу в понедельник. Далее приведу данную процедуру целиком (понятен стиль языка dBase, мой стиль оформления текста программ и их структурирования):

текст программы:
Код:
* ---------------------------------------------------------------------------
*   Печать пачки накладных и счетов фактур по запросу. Повтор параметров спе-
*   циализированной печати для группы документов определяемых в запросе
PROC pPrePrDoc()
    LOCA cOldCol:=SetColor(), nRec:=RecNo(), nOrd:=zOrd()
    LOCA GetList:={}, lExit:=TRUE, nSec:=0
    LOCA nTip:=3, dBeg:=Date(), dEnd:=Date(), cBeg:=Spac(12), cEnd:=Spac(12)
    LOCA sOp:="0755"
    S_PROC

    //  Определяю справочные переменные
    cClient     := Spac(4)

    //  Из экранной формы читаем параметры режима печати документов.
    fSwopen(16,22,7,55,cOther,3)
    @ 1,1 SAY "Пожалуйста введите код покупателя (F3) или ничего"       GET cClient             VALI IF(Empty(cClient),TRUE,Eval(bClient,cClient))
    @ 2,1 SAY "Дату начала периода документов (заказов)     "           GET dBeg
    @ 3,1 SAY "и дату окончания периода для пачки заказов   "           GET dEnd                VALI lValid({||dEnd >= dBeg},"Меньше начальной - нельзя!")
    @ 4,1 SAY "Начальный номер интервала номеров заказов"               GET cBeg
    @ 5,1 SAY "конечный номер.Номера переводятся в число"               GET cEnd
    @ 6,1 SAY "Печатаем: 1-только ТТН, 2-сч.фактуры, иначе все     "    GET nTip                PICT "9"
    READ
    fDeact(cOldCol)
    AP__INPUT

    /*  Проверяю, что был произведен режим специализированной
        печати накладных и (или) счетов фактур, т.е. программу обучили,
        как печатать документы, удовлетворяющие запросам режима */
    IF (nTip = 1) .OR. (nTip > 2)   //  Проверяем накладные
        IF ValType(apFact[1]) <> "N"
            ErrMess("В начале сделайте специализированную печать, как обычно!",cError)
            RETU
        ENDI
    ENDI
    IF (nTip = 1) .OR. (nTip > 2)   //  Проверяем счета фактуры
        IF ValType(apFact[13]) <> "N"
            ErrMess("В начале сделайте специализированную печать, как обычно!",cError)
            RETU
        ENDI
    ENDI

    /*  Проверяем запущенность ХБК, если печать документов в графическом формате
        Заведомо переменная определена, т.к. режим спецпечати уже вызывался */
    IF apFact[26] > 0 .OR. apFact[13] > 0
        IF !lgCheckXbm() THEN RETU
    ENDI

    //  Сканирую список документов по ограничителям режимов. Можно прервать процесс печати
    ftxt_act("             Прерываемо. Пожалуйста подождите окончания печати...",cHelpc,TRUE)

    zSet(PR_DAT_NUMBER)
    SET SOFT ON
    DbSeek( Dtos(dBeg) )
    SET SOFT OFF
    DO WHIL !Eof() .AND. dat <= dEnd
        BR_REPORT
        @ 1,1 SAY number
        Inkey(1)

        //***   Блок отсева записей заголовков предзаказа
        SELE PRE_SELL
        IF !Empty(cClient) .AND. client <> cClient
            DbSkip(); LOOP
        ENDI
        IF !(Val(Alltrim(number)) <= Val(Alltrim(cEnd))) .AND. (Val(Alltrim(number)) >= Val(Alltrim(cBeg)))
            DbSkip(); LOOP
        ENDI

        /*  Ожидаем ограниченное время завершения предыдущей печати системы ХБК
            в графическом режиме иначе даю небольшую паузу для досовой печати  */
        IF apFact[26] > 0 .OR. apFact[13] > 0
            lExit   := FALSE
            nSec    := 0
            WHIL nSec++ < 60    //  Попытки делаем минуту... например для заправки бумаги
                IF !(File(cPathXBK+"torg.dbf") .OR. File(cPathXBK+"dtor.dbf") .OR. File(cPathXBK+"wtorg.dbf") .OR. File(cPathXBK+"wdtor.dbf"))
                    lExit   := TRUE
                    EXIT
                ENDI
                Inkey(1)
            END
        ELSE
            Inkey(0.5)
        ENDI
        IF !lExit .OR. !zPrintReady()
            ErrMess("Сбой печати, закончилась бумага, проблемы с ХБК. Завершаю попытки печати документов!",cError)
            EXIT
        ENDI

        //  По предзаказу печатаю указанный тип документа.
        @ 1,1 SAY number
        IF nTip = 1 .OR. nTip > 2   //  Накладную в указанном формате
            pVirt(6)
        ENDI

        IF nTip = 2 .OR. nTip > 2   //  Счет фактуру в указанном формате
            IF apFact[26] > 0
                nSec    := 0
                WHIL nSec++ < 20
                    IF !(File(cPathXBK+"torg.dbf") .OR. File(cPathXBK+"dtor.dbf") .OR. File(cPathXBK+"wtorg.dbf") .OR. File(cPathXBK+"wdtor.dbf"))
                        EXIT
                    ENDI
                    Inkey(1)
                END
            ELSE
                Inkey(0.5)
            ENDI
            pVirt(5)
        ENDI

        SELE PRE_SELL SKIP
    ENDD
    fDeact( cOldCol )

    //  Восстанавливаю состояние среды программы
    zSet( nOrd )
    DbGoTo( nRec )
    RETU


Далее Вам решать, насколько это самописка?
 
05.10.2014 16:00  
FinSoft
Привет, Андрей.
Скорее всего сложности возникли из того, что разные документы хранятся в разных таблицах.
В Купце отгрузочная накладная является единым электронным документом, из которого можно печатать много разных форм (на память, на практике достигает до 20). Массовая печать организуется достаточно просто.
1. Имеется список наборов печатных форм документов. Его можно прицепить к разным документам. Список наборов расширяемый, для одного вида документов может быть задано несколько наборов.
2. В состав конкретного набора входят печатные формы. Список расширяемый. Для каждой печатной формы указывается шаблон. Шаблоны можно создавать/изменять прямо в программе, используя встроенный графический дизайнер. Для каждой печатной формы можно задать некоторые настройки, например, количество экземпляров, двустороннюю печать и т.п.
3. Если для вида документа определены наборы, то в экранной форме документа имеется кнопка печати наборов.
4. Для каждого контрагента можно задать набор для печати из отгрузочной накладной. Например, кому-то нужна счет-фактура, кому-то нужен товарный чек и т.п.
5. Когда формируется рейс на доставку, операторы проставляют в отгрузочных накладных экспедитора, который везет товары.
6. Имеется специальная обработка для печати документов для рейса. В ней жмется кнопка заполнить, выбирается экспедитор и формируется список отгрузочных накладных. Далее по нему печатаются различные формы - накладные на склад для затаривания товаров (в разрезе отделений склада), шахматка для отметок на складе, печать первичных документов по заданным для контрагентов наборам.
7. В наборах имеется специальный режим печати формы договоров. В отличии от другой первички, шаблоны договоров хранятся в rtf-файлах. Для их печати вызывается дефолтная программа для работы с rtf-файлами (как правило, ms word). Это используется, когда нужно для каждой накладной делать отдельный договор, чтобы обойти ограничение закупок за нал (насколько помню, не более 100 тыр на один договор).
 
"Спасибо" FinSoft от:
05.10.2014 17:15  
AndreyZh
Цитата:
Сообщение от FinSoft
Привет, Андрей. Скорее всего сложности возникли из того, что разные документы хранятся в разных таблицах...
Цитата:
Сообщение от AndreyZh
....От задачи "отбрыкивался", т.к. не понимал, как её легко решить, но периодически задумывался о способах её реализации в системе....
Учитывая постоянную работу "за тарелку супа" ещё раз выделил основную "мою" проблему, а так задача, как задача - ничего особенного
 
Вчера 11:34  
AndreyZh
Вспомнил о наличии данной темы, в связи с мониторингом ряда ЕГАИСных тем форума. Перечитал её, а особенно критичные возражения OlegOn...

Ну и какая из систем является "самопиской"? Может быть для "подсказки" почитать маленькие темы?

С одной стороны эту: https://olegon.ru/showthread.php?t=27222, а лучше эту: https://olegon.ru/showthread.php?t=27218

С другой стороны, для сравнения можно просмотреть страничку: https://olegon.ru/showthread.php?t=23281&page=6
 
Вчера 11:43  
OlegON
Я смотрю, зацепил :) Как уже говорил ранее, в термин закладываю всего лишь количество поддерживающих и разрабатывающих лиц. Абсолютно ничего обидного нет. Мои софтинки - абсолютные самописки, хотя некоторые из них я холю и лелею.

Что касается косяков, то да, они есть у всех. Вспоминаем WannaCry, улыбаемся и машем. В некоторых случаях самописки проигрывают за счет некомпетентности или занятости автора, но не реже большие конторы проваливаются за счет привлечения разработчиков, которые работают за едубез достаточной мотивации и знаний.
 
Вчера 12:17  
AndreyZh
Цитата:
Сообщение от OlegON
Я смотрю, зацепил :)
Конечно зацепил... ещё тогда, да и сейчас для моих программ - это является "любимым" клеймом со стороны айтишников, а тем более "при 1с"

В то же время, так уже долго "получается", что как раз, программы семейки "УС Лэнд" развиваются по промышленным принципам:

1. Задача с определенным сроком;
2. Документированная разработка;
3. Отладка и подробно описанный исходный код;
4. Бета версия и тестовые отладки новых режимов, алгоритмов;
5. Передача в "люди" для промышленной эксплуатации ЗАБЛАГОВРЕМЕННО;
6. Написание руководства пользователя и издание готового решения.

Что по ссылкам... могу добавить несколько ещё разделов (не тем)... Переход на v2 объявлен был год назад, известно о необходимости совместной по v1 & v2, т.е. хотя бы 1./2./3. можно было спокойно сделать, а не вываливать сделанную на "коленке" поделку, а затем оперативно рассылать правки "багов"... Право - это стиль некоторых программистов "1С", которые хотят постоянно держать заказчиков "на крючке" --- ИМХО!

Кроме того меня так же "беспокоит" игнор моих разработок со стороны "продвинутых пользователей" или эникейщиков при **+ - они готовы топить бизнес, к простою магазинов... но лишь бы не использовать эти утилитки... Когда-нибудь напишу памфлет на эту тему, но последствия для меня на форуме будут плохие, а аллергию их к "УС Лэнд" - это не излечит!
 
Вчера 13:03  
OlegON
Цитата:
Сообщение от AndreyZh
они готовы топить бизнес, к простою магазинов... но лишь бы не использовать эти утилитки...
не забываем, что у наемного работника в большинстве случаев цель не сделать хорошо, а получить зарплату
 
Вчера 13:53  
AndreyZh
Цитата:
Сообщение от OlegON
не забываем, что у наемного работника в большинстве случаев цель не сделать хорошо, а получить зарплату
Я являюсь наёмным эникейщиком и прекрасно представляю "кому" сейчас достаются все "шишки" по глюкам, очень мной уважаемой программы... Уже объяснял "идею" развития "УСЕга" - работы по ней не меняют уровень моей з/пл, т.ч. мог для фирмы купить любую, но осознавая, что ЕГАИС тоже "не самописка" - лишь контролируя все нюансы работы с ним могу быть уверен, что зарплата "сохранится". Так же в расчете на возможное другое п/о для ЕГАИСа развиваю её, как утилиту, не трогающую данные в УТМ и учетных программах. В частности, по он-лайн кассам - ведь выбрал сторонние решения, хотя и с интеграцией с моими программами
 
Вчера 14:08  
OlegON
Прошу прощения, если какое-то подозрение есть, что тень навожу. Я говорил об общем впечатлении по наемным работникам, с которыми мне приходится сталкиваться. Просто, как объяснение, что никому ничего не нужно...
 
"Спасибо" OlegON от:
 


Опции темы



Часовой пояс GMT +3, время: 23:40.

Все в прочитанное - Донат - RSS - - Карта - Вверх

Форум сделан на основе vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.