|
v7: 1С 7.7 ПУБ Отлечить повторение от зацикливания. | ☑ | ||
---|---|---|---|---|
0
kobzon2
09.02.15
✎
09:03
|
Доброго утра.
Есть отчет о Нормативах расходов. Раскладывает продукцию на полуфабрикаты и на материалы. Есть продукция, в которой полуфабрикат повторяется. Программа предупреждает что есть повторения и сводно не раскладывает повторившийся полуфабрикат. Это происходит в функции проверки на зацикливание. Всю голову сломал, не могу придумать как можно в данном случаи повторение отличить от зацикливания? Может у более опытных коллег появятся какие-то мысли? Вот функция: Функция ПроверкаНаЗацикливание(НормаЗатрат, Количество, КоличествоПродукции, КолПрод, Сумма, Норма, Уровень, Последние,ИтогоПоВетке, ИзДетальногоОтчета) Элем = ?(НормаЗатрат.Вид() = "НормыРасходов", НормаЗатрат.Элемент,НормаЗатрат); Если (СписокВнешнихЗатрат.НайтиЗначение(Элем) > 0) и (Уровень > 1) Тогда Если ИзДетальногоОтчета = 1 Тогда Последние.УстановитьЗначение(Уровень,1); Сформировать_Колонки(Таб, НормаЗатрат, Количество, КоличествоПродукции, КолПрод, Сумма, Норма, НормаЗатрат.ВидЭлемента, Уровень, Последние,ИтогоПоВетке, 1); КонецЕсли; СтрокаСообщения = "При разборе " + СокрЛП(СписокВнешнихЗатрат.ПолучитьЗначение(1)) + " обнаружено повторение элемента " + СокрЛП(НормаЗатрат.ТекущийЭлемент()); Если Найти(ТекстОшибки, СтрокаСообщения) = 0 Тогда ТекстОшибки = ТекстОшибки +?(ПустаяСтрока(ТекстОшибки) = 0,Разделительстрок,"") + СтрокаСообщения + РазделительСтрок + "Проверьте корректность составления калькуляции во избежание неправильной работы программы!"; КонецЕсли; Возврат 1; Иначе Если Уровень = 1 Тогда СписокВнешнихЗатрат.УдалитьВсе(); КонецЕсли; СписокВнешнихЗатрат.ДобавитьЗначение(Элем); Возврат 0; КонецЕсли; КонецФункции |
|||
1
zulu_mix
09.02.15
✎
09:11
|
Так у тебя повторение заболело зацикливанием? Тут да. Надо лечить
|
|||
2
ifso
09.02.15
✎
09:13
|
(0) чем повторение от зацикливания отличается ?
|
|||
3
MKMK
09.02.15
✎
09:16
|
(0) В спецификации 2 раза один и тот же полуфабрикат?
|
|||
4
kobzon2
09.02.15
✎
09:17
|
(2) (3) Да. Но он не выпускает сам себя. Сейчас опишу.
|
|||
5
kobzon2
09.02.15
✎
09:20
|
Есть готовая продукция 2 вида. Пусть это печенька одна со сгущенкой, вторая с ванилью. Одна в белой глазури, вторая в черной. У них у каждого свой пф - начинка + тесто. А этот п/ф делится на п/ф - начинку и п/ф тесто. Вот тесто одинаковой. Теперь эти 2 вида продукции объединили в ассорти. И программа теперь ругается.
|
|||
6
kobzon2
09.02.15
✎
09:21
|
+(5) Добавили еще 1 промежуточный п/ф перед готовой продукцией, который состоит из 2х видов продукции.
|
|||
7
Тактик
09.02.15
✎
12:06
|
"Отлечить" - проверочное слово "отличие"
|
|||
8
fedoss
09.02.15
✎
12:40
|
Простой костыль - заменить проверку вхождения Элем в СписокВнешнихЗатрат на проверку количества вхождений. Если Нашли в СписокВнешнихЗатрат больше Х вхождений Элем - значит зациклились.
Но не факт, что там остальная логика расчета нормально посчитает нормативы при дублировании полуфабрикатов, надо потестиь. |
|||
9
kobzon2
09.02.15
✎
12:59
|
(8) Как вариант.
Остальная логика работает нормально. Не стал тут ничего придумывать, сделал так чтобы даже повторяющийся тоже раскладывался на сырье. Программа же не помрет? Просто будет бесконечно формировать отчет, пока не прервешь выполнение обработки. Решил напишу проверку в справочнике Норм и расходов, при выборе п/ф. Полез, а она там уже есть. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |