Форум » » Помогите найти ошибку в фрагменте » Ответить

Помогите найти ошибку в фрагменте

kolyuchiy: Здравствуйте. Прошу помощи у знатоков "фрагментов". Решил попробовать разобраться с фрагментами в АВК-5 и создать на Земляные работы свой фрагмент. Вроде все работает. Но никак не могу задать поправку 1-46 на мокрый грунт. При этом все остальные поправки берет нормально. Уверен что ошибка пустяковая и очевидная, но я ее в упор не вижу. Текст программы упростил до минимума для удобства. Помогите, кто может ФП1КЖ-ЗемРаб`Земляные работы`Ю.С.В.* :ДГРУППА`^Задать группы грунта&Задати групи грунта`11`1#1:2:3:4:5:6`2* :ДОБКОВША`^Ввести объем ковша эксковатора или указать ручную разработку "Р"&Ввести місткість ковша ексковатора, або вказати ручне розроблення "Р"`10`1#2,5 м3(1,5-3,0):1,6 м3(1,25-1,6):1,25 м3(1,4-1,5):1,0 м3(1,0-1,2):0,65 м3(0,5-1,0):0,5 м3(0,5-0,63):0,4 м3(0,3-0,45):0,25 м3:Р`0,5 м3(0,5-0,63)* :ДКОЛ`^Ввести колличество разрабатываемого грунта&ввести кількість розроблюємого грунту`12* :ДОБРЗАС`^Ввести колличество грунта на обратную засыпку&Ввести кількість грунту для зворотньої засипки`12* :ДМОЩН`^Ввести способ обратной засыпки&Ввести спосіб зворотньої засипки`10`1#Бульдозер 59 кВт:Бульдозер 79 кВт:Бульдозер 96 кВт:Бульдозер 121 кВт:Бульдозер 132 кВт:Бульдозер 243 кВт:Р`Бульдозер 132 кВт* :ДГЛУБИНАК`^Поправка при глубине котлована до 3м, независимо от объема котлована или его площади&Поправка при глибині котловану до 3м незалежно від об'єму котловану або його площі`10`2#^Только для механизированной разработки&Лише для механізованої розробки#1-37-Г* :ДОБЪЕМК`^Поправка при объеме котлована до 300 м3&Поправка при об'ємі котловану до 300 м3`10`2#^Только для механизированной разработки&Лише для механізованої розробки#1-37-Г* :ДПЛОЩК`^Поправка при площади котлована до 100 м2&Поправка при площі котловану до 100 м2`10`2#^Только для механизированной разработки&Лише для механізованої розробки#1-37-Б* :ДТРАНШК`^Поправка при разработке траншей&Поправка при розробці траншей`10`2#^Только для механизированной разработки&Лише для механізованої розробки#1-37-Д* :ДМОКГРУН`^Поправка при разработке вязкого грунта повышенной влажности, сильно налипающего на инструмент&Поправка при розробці в'язкого грунт, що сильно налипає на інструмент`10`2#^При механизированной разработке&При механізованій розробці#1-46:^При разработке вручную&При розробці вручну#1-176* :Д* :ЕГЛУБИНАК(=)1-37-Г`102`101* :М101`:ВГЛУБИНАК=* :М102`:ЕОБЪЕМК(=)1-37-Г`104`103* :М103`:ВОБЪЕМК=* :М104`:ЕПЛОЩК(=)1-37-Б`106`105* :М105`:ВПЛОЩК=* :М106`:ЕТРАНШК(=)1-37-Д`108`107* :М107`:ВТРАНШК=* :М108`:ЕМОКГРУН(=)1-46`111`110* :М109`:ЕМОКГРУН(=)1-176`111`110* :М110`:ВМОКГРУН=* :М111* :ХГРУНТМ=0* :Ц+ГРУППА`ОБКОВША`КОЛ`ОБРЗАС`ГЛУБИНАК`ОБЪЕМК`ПЛОЩК`ТРАНШК`МОКГРУН* :ТОБКОВША(=)0,5 м3(0,5-0,63)* :ТГРУППА(=)2* :ВНОМ1=1-12-14`НОМ2=1-17-14`ПОП1=?ГЛУБИНАК.`ПОП2=?ОБЪЕМК.`ПОП3=?ПЛОЩК.`ПОП4=?ТРАНШК.`ПОП5=?МОКГРУН.* :ОНеправильно определена група грунта для эксковатора 0,5 м3(0,5-0,63) * :ТК* :ОНеправильно определен объем ковша * :ТК* :ХКОЛ2=?КОЛ.-?ОБРЗАС.* :ЛЕ?НОМ1.`?ОБРЗАС.`Т5=?ПОП1.#?ПОП2.#?ПОП3.#?ПОП4.#?ПОП5.* :ЛЕ?НОМ2.`?КОЛ2.`Т5=?ПОП1.#?ПОП2.#?ПОП3.#?ПОП4.#?ПОП5.* :Ц* <Ф*

Ответов - 20

В.Н.: Оператор ввода значений переменных параметров :В должен принимать значение до логических манипуляций, типа Если или переход на метку. ================ :М108`:ЕМОКГРУН(=)1-46`111`110* ================ Здесь -мокрый грунт МОКГРУН=пустой, т.е. не введено в его переменную значение до момента обращения к логическим операциям. Что и с чем сравнивать, машине не понятно. Нужно :ВМОКГРУН=* разместить выше М108 и без всяких меток. :ВМОКГРУН -должен приобрести значение поправки, выбранное из формы (1-46 или 1-176) =================== :ДМОКГРУН`^Поправка при разработке вязкого грунта повышенной влажности, сильно налипающего на инструмент&Поправка при розробці в'язкого грунт, що сильно налипає на інструмент`10`2#^При механизированной разработке&При механізованій розробці#1-46:^При разработке вручную&При розробці вручну#1-176* =================== И лишь после этого будет работать оператор ЕСЛИ: :ЕМОКГРУН(=)1-46 Нужно было так: =================== :Д* :ВГЛУБИНАК=* :ВОБЪЕМК=* :ВПЛОЩК=* :ВТРАНШК=* :ВМОКГРУН=* =================== ..да и МОКГРУН для корректного присвоения значений нужно было обработать в таблице в цикле...(:ТХХХ...:ТК*) А потом вытворять с переменными...ПОНЯТНО?? ПС: логика в этом фрагменте очень тяжелая и запутанная и не наглядная... А то, что работает, не всегда означает, что правильно работает. ....при включении режима "Отладка" на уровне программы можно найти все свои ошибки в папке РАБ в соответствующих файлах. .ФП1КЖ-ЗемРаб.trf

kolyuchiy: Про цикл уже и сам понял. Внес поправки во внутрь. А вот насчет В.Н. пишет: :Д* :ВГЛУБИНАК=* :ВОБЪЕМК=* :ВПЛОЩК=* :ВТРАНШК=* :ВМОКГРУН=* не совсем понял. Ведь таким образом вводимые ранее данные через :Д будут заменены пустыми значениями?.. Или я что-то не понимаю... В.Н. пишет: ПС: логика в этом фрагменте очень тяжелая и запутанная и не наглядная... Это мой самый первый фрагмент (его отрывок) так что строго не судите Разбираться приходится во всем самому, при чем, в основном, методом тыка. Если кто знает толковую литературу (кроме той, что предоставлена в АВК), посоветуйте пожалуйста.

Tatiana: kolyuchiy, Ваше стремление разобраться досконально и сделать самому вызывает только уважение. Успехов!


В.Н.: kolyuchiy пишет: Ведь таким образом вводимые ранее данные через :Д будут заменены пустыми значениями?.. Или я что-то не понимаю... Наверное так.. Пишите на neofit@ukr.net Постараемся разобраться вместе.(не раньше позднего вечера). С уважением, В.Н. Tatiana пишет: kolyuchiy, Ваше стремление разобраться досконально и сделать самому вызывает только уважение. Успехов! И у меня тоже вызывает только уважение.

kolyuchiy: Спасибо.

АВК: А у меня кроме уважения еще и сожаление.... О том, что самому некогда этим заниматься. А хотелось бы разобраться)))

lina: kolyuchiy, мне тоже не понятно почему не работает поправка 1-46. Конечно, организация внутри фрагмента оставляет желать лучшего, но мы сейчас не об этом. У Вас все написано правильно. И поправка ДОЛЖНА работать при такой логике. И не нужно ни менять строки местами, ни добавлять новые (после замены 110 на 109 в строке М108). Постараюсь показать почему я в этом уверена: Замените в строке :ДМОКГРУН`^Поправка при разработке вязкого грунта повышенной влажности, сильно налипающего на инструмент&Поправка при розробці в'язкого грунт, що сильно налипає на інструмент`10`2#^При механизированной разработке&При механізованій розробці#1-46:^При разработке вручную&При розробці вручну#1-176* и в строке :М108`:ЕМОКГРУН(=)1-46`111`109* "1-46" на, например, "1-37-Д" И если при обращении к фрагменту задать МОКГРУН=1-37-Д, то все сработает и к позиции будут приняты коэффициенты по "Поправке при разработке траншей". Это говорит о том, что с логикой здесь все в порядке. А вот если вместо "1-37-..." написать 1-48 или 1-49, то ничего не сработает. По крайней мере у меня не получилось. В чем же тут дело? Очень надеюсь, что на этот вопрос мы все-таки найдем ответ. Пока я его не знаю. Причем не знаю уже много лет. При составлении фрагментов мне не один раз приходилось сталкиваться с тем, что та или иная библиотечная поправка не работает. Сейчас я конечно не вспомню из каких сборников и на какие работы. Но мне не раз приходилось из-за этого задавать во фрагментах коэффициенты с помощью числовых параметров (Н).

В.Н.: lina пишет: У Вас все написано правильно. И поправка ДОЛЖНА работать при такой логике. Логика будет работать только в том случае, когда есть данные и все переменные ими напичканы. lina , а Вы напишите фрагмент из 3-х строк (форма, норма, логика) и запустите поправку (Т5=)в логику, которая Вас мучает многие годы. Включите отладчик и посмотрите...... Иначе тема перерастет в флуд.

В.Н.: Только что своим конструктором фрагментов создал маленький фрагмент с поправкой 1-46: ====================== ФПЕ533`Зем-раб* :ДУ`Нажмите кнопку "Сохранить" `0* :Д* :К===============================================================* :XКОЛ=0* :XКОЛ=?КОЛ.+12* :К=====земляные работы мокрый грунт* :Ш ЗЕМЛЯНЫЕ РАБОТЫ* :ВР=Е1-12-14* :Л?Р.`R2(?КОЛ.х1)`Т5=1-46* <Ф* ====================== Все работает, как часики. Не могу понять вышесказанных проблем.

kolyuchiy: Тут проблема похоже в том, что не смотря на указанный в строчке :Д ввод масива текстовых значений: kolyuchiy пишет: :ДМОКГРУН`^Поправка при разработке вязкого грунта повышенной влажности, сильно налипающего на инструмент&Поправка при розробці в'язкого грунт, що сильно налипає на інструмент`10`2#^При механизированной разработке&При механізованій розробці#1-46:^При разработке вручную&При розробці вручну#1-176* происходит вычисление: 1-46 По крайней мере вышел я из ситуации с помощю добавления буквы: ПБ1-46 и строчек условного перехода :ЕПОП5(=)ПБ1-46`154`151* :М151`:ЕПОП5(=)ПБ1-176`153`152* :М152`:ВПОП5=* :П999* :М153`:ВПОП5=1-176* :П999* :М154`:ВПОП5=1-46* :М999* В.Н. пишет: ФПЕ533`Зем-раб* :ДУ`Нажмите кнопку "Сохранить" `0* :Д* :К===============================================================* :XКОЛ=0* :XКОЛ=?КОЛ.+12* :К=====земляные работы мокрый грунт* :Ш ЗЕМЛЯНЫЕ РАБОТЫ* :ВР=Е1-12-14* :Л?Р.`R2(?КОЛ.х1)`Т5=1-46* <Ф* ====================== Все работает, как часики. Проблема в том, что для моего фрагмента должно быть условие: если поправка нужна, то она вводится через ввод данных, а если нет, то надо чтобы переменная присутствовала с пустым значением. А через :Д не получается ввести поправку типа "Число" - " число" При вводе через переменную, или, темболее, напрямую в строчку :Л таких проблем нет

В.Н.: МОКГРУН -нужно обрабатывать в таблице: ========== :ТМОКГРУН(=)1`(=)2* :ВПОПРТ5=* :ВПОПРТ5=* :ТК* ========== Тогда в переменную ПОПРТ5 (поправка Т5) попадет именно выбранное в форме значение. Мне очень не понравилось предложенное выше решение. Будет время ( в праздники), переформатируем фрагмент в более удобный и рабочий вид.

kolyuchiy: В.Н. пишет: :ТМОКГРУН(=)1`(=)2* :ВПОПРТ5=* :ВПОПРТ5=* :ТК* Действительно, так намного проще Получилось что-то вроде: :ТМОКГРУН(=)1`(=)2`(=)Нет* :ВПОП5=1-46* :ВПОП5=1-176* :ВПОП5=* :ОНеправильно определена поправка на мокрый грунт * :ТК* Спасибо

kolyuchiy: И еще... Может кто-нибудь знает, как ввести через фрагмент перевозку грузов по С331?

Геля: kolyuchiy пишет: происходит вычисление: 1-46 Похоже, Вы правы Я тут попробовала поменять в :М108 местами 111 и 109.При обращении ко фрагменту поправка 1-46 работает!

В.Н.: kolyuchiy , фрагмент фрагмента отослал на мыло. + прочитайте темку: http://avk5.forum24.ru/?1-0-80-00000896-000-0-0 Я не думаю, что разработчики уже вернутся к теме ПФ. Или изощряйтесь или переходите на КП.

kolyuchiy: Спасибо всем. Фрагмент заработал

Y: Народ стандартный Фрагмент Ф53 у всех работает или нет ?

Сергей.К: у меня работает

lina: У меня тоже работает. Он не работает, если не задать параметр "КЛ - признак выбора расценки". Это самая распространенная ошибка

Y: Век живи, век учись всем спасибо



полная версия страницы