Бухгалтерия 7.7, Релиз 625. Ошибка печати в Отчете "АктСверки". Процедуру Печать(), следует переписать так: Начиная со строки: ТаблицаДвижений.ВыбратьСтроки(); ТаблицаДвижений.ВыбратьСтроки(); Пока ТаблицаДвижений.ПолучитьСтроку()=1 Цикл Операция = СокрЛП(ТаблицаДвижений.Операция); Поз = Найти(Операция, "Счет-фактура"); Если Поз > 0 Тогда Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз); КонецЕсли; ОперД = Операция; Если Согласован = 1 Тогда НомК = Ном; ДебетК = ТаблицаДвижений.Кредит; КредитК = ТаблицаДвижений.Дебет; Если Лев(Операция, 8) = "Передано" Тогда ОперК = "Принято" + Сред(Операция, 9); ИначеЕсли Лев(Операция, 7) = "Принято" Тогда ОперК = "Передано" + Сред(Операция, 8); ИначеЕсли Лев(Операция, 7) = "Продажа" Тогда ОперК = "Приход" + Сред(Операция, 8); ИначеЕсли Лев(Операция, 6) = "Приход" Тогда ОперК = "Продажа" + Сред(Операция, 7); Иначе ОперК = Операция; КонецЕсли; КонецЕсли; Таб.ВывестиСекцию("Строка"); Ном = Ном + 1; КонецЦикла; //- Иначе - в печатную форму, в режиме Согласован=0, не выводятся данные поля "Наименование операции, документы". - Разработчик 1С небрежно правил алгоритм и нарушил логику при внесении изменений. - примите к сведению. |
0-perpetum > Добавлю. В релизе обновленный отчет АктСверки получил дополнительный флажок "ВыводитьСчетаФактуры", при этом цикл заполнения выборки документов неоптимален: - для режимов ВыводитьСчетаФактуры=1 и ВыводитьСчетаФактуры=0 - приходится всякий раз заполнять таблицу движений, что при значительном объеме выборки требует значительного времени. Предлагаю для оптимизации - найти условие Если ВыводитьСчетаФактуры = 1 Тогда и закомментировать так: //Если ВыводитьСчетаФактуры = 1 Тогда Здесь заполняется таблица движений - ничего не закомментируем. //КонецЕсли - тогда в таблице движений будет всегда присутствовать строка с дополнением по Счет-фактуре. [b]А в модуле Печать()[/b]/уже модифицированного документа по 0-perpetum >/, вместо: Если Поз > 0 Тогда Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз); КонецЕсли; [b]исправляем на:[/b] Если Поз > 0 Тогда Если ВыводитьСчетаФактуры=1 Тогда Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз); Иначе Операция = Сред(Операция, 0, Поз - 1); КонецЕсли; КонецЕсли; Тогда при печати, можно выводить в печатную форму акта сверки по значению флажка: ВыводитьСчетаФактуры=1 - вывод со счет-фактурой, или ВыводитьСчетаФактуры=0 - вывод без счет-фактуры, без повторного заполнения таблицы движений. |
0-perpetum > сразу заметила :( но если ставить галку "согласовано", то печатает нормально обе половины... некоторым вернула старый, некоторые потерпят до исправления... |
Кто-то в 1С очень осерчал на акты сверки - они их, в итоге, сломали во всех бухгалтериях. В БП3.0 обещали исправить в релизе 3.0.45... |
Мои давно не пользуются типовым актом, в нем слишком много тупого дубака. Юзают мои переделки внешние. У многих автомат стоит (в начале года добавляет распечатанные акты к накладным), почти у всех есть авторассылка актов ... Так что, (3) - это хорошая новость из серии "тогда мы идем к вам" и вы узнаете что такое автоматизация, чего стоят типовые от 1С и что работа в 1С превращается отдых, если отказаться от типового функционала в мою пользу ... |
Кому надо, выложил rar-архив исправленного Акта Сверки с расшифровкой печатной формы по строкам документов. Пакет доступен по ссылке: [b][url]http://disk.tom.ru/tj3kqe3[/url][/b] |
у мну акты сверки печататся из торгбазы, поэтому всякие ошибки чужие - пофиг, своих хватает.. ;-) |
1-perpetum > Предполагается, что пользователь может в таблице отредактировать вид операции вручную после её заполнения. Поэтому писать туда лишнюю информацию про счета-фактуры, если она не нужна, не комильфо. Так что тут оставим как есть. |
0-perpetum > А вот косяк похуже: выданные счета-фактуры на аванс могут выписываться на основании документа "Выписка". И если на основании выписки, в которой есть оплата по нужному клиенту, выписан авансовый счет-фактура по другому клиенту, то этот СФ попадёт в чужой акт сверки. Для правки надо перед поиском СФ вставить проверку на вид документа-основания. Ну и ещё немножко: СФ может быть выставлен в течение 5 дней от отгрузки, а подчиненные документы выбираются строго за период отгрузки. Так что часть СФ может пролетать мимо акта сверки. И ещё мелочь: по каждому документу делается открытие выборки ВыбратьПодчиненныеДокументы() не зависимо от значения флажка "ВыводитьСчетаФактуры". Зачем? Ведь это не самая быстрая выборка, почему не убрать её в условие? Чёто как-то многовато косяков и косячков на 10 добавленных строчек кода. Удручающе. |
Для справочника "КлассификаторТНВЭД" форму списка забыли сделать - некрасиво... |
Ну и вангую - новая реготчетность не будет работать на конфигурациях ранее 625 из-за новой константы "КодОКВЭД2". |
[quote=Харлампий Дымба;43372358] 0-perpetum > А вот косяк похуже: выданные счета-фактуры на аванс могут выписываться на основании документа "Выписка". И если на основании выписки, в которой есть оплата по нужному клиенту, выписан авансовый счет-фактура по другому клиенту, то этот СФ попадёт в чужой акт сверки. Для правки надо перед поиском СФ вставить проверку на вид документа-основания. Ну и ещё немножко: СФ может быть выставлен в течение 5 дней от отгрузки, а подчиненные документы выбираются строго за период отгрузки. Так что часть СФ может пролетать мимо акта сверки. И ещё мелочь: по каждому документу делается открытие выборки ВыбратьПодчиненныеДокументы() не зависимо от значения флажка "ВыводитьСчетаФактуры". Зачем? Ведь это не самая быстрая выборка, почему не убрать её в условие? Чёто как-то многовато косяков и косячков на 10 добавленных строчек кода. Удручающе. [/quote] Безобразие, конечно, как работают спецы в 1С, но... - Не всё так плохо, как кажется! :-) - Действительно, этот [b]"спец" из 1С[/b] не потрудился проверить логику в части обработки подчинённых документов. Мало того, что [b]ОН[/b] в цикле ввёл [b]создание подчиненного документа и получить пустое значение Документа[/b], так он не отфильтровал подчиненные документы по [b]Контрагенту[/b] - ([b]ПодчДок.Контрагент=Контрагент[/b]) в запросе Акта сверки и по [b]Опер.Сумма[/b] - ([b]ПодчДок.Итог("Всего")=Опер.Сумма[/b]), в случае многострочного документа [b]Выписка[/b]... [b]Потребовалось ввести незначительное изменение кода и всё пошло на ять.[/b] Кстати, [b]по поводу якобы дополнительно большого объёма выборки по подчинённым документам[/b] - неверное утверждение... - проверка замером производительности под отладчиком, показала, что выборка по подчинённым документам, с уже отлаженным мной кодом, составила всего 2% времени от общего времени заполнения АктаСверки. Прикладываю ссылку на архив исправленного отчета АктСверки: [b]Пакет доступен по ссылке: [url]http://disk.tom.ru/f2pwaw1[/url][/b] - кому нужно - качайте, смотрите. |
12-perpetum > Помниться под SQL ВыбратьПодчиненныеДокументы() один из самых тормозных операторов, а уж если период не указан, то вдвойне. В любом случае, писать ВыбратьПодчиненныеДокументы(); условие; ПолучитьДокумент() - вообще не айс. |
[quote=Харлампий Дымба;43386545] 12-perpetum > Помниться под SQL ВыбратьПодчиненныеДокументы() один из самых тормозных операторов, а уж если период не указан, то вдвойне. В любом случае, писать ВыбратьПодчиненныеДокументы(); условие; ПолучитьДокумент() - вообще не айс. [/quote] Так вы посмотрели? - Чтобы не быть голословным, посмотрите замер производительности под отладчиком сами... - У меня весь модуль выборки и анализа подчиненных документов в цикле - не превысил 2% времени от общего времени заполнения АктаСверки. - Конечно, я провёл некоторую оптимизацию и такие затратные операторы, как создать "Документ" и получить пустое значение "Документ" - вывел за пределы циклов акта сверки, иначе добавилось бы ещё 2%. Поэтому результат получился неплохим.- Такой задержкой можно пренебречь. Кстати, в период выборки по подчинённым документам, таки, добавил ваше предложение - дополнительные 5 дней к верхней дате выборки. [b]- И вообще - спасибо, что не прошли мимо - ваше сообщение было важным![/b] :-) |
Про ВыбратьПодчиненныеДокументы() под SQL можно погуглить "30.12.9999". Я бурчал больше про то, что открывать выборку, а перебор загонять под условие - моветон. Режет глаз у любого программиста, жаль что не у писателя типовой. Про "2% после оптимизации" - напомнило школьную задачку про арбуз, усохший до 98% воды. Ведь можно так наоптимизровать, что функция, занимавшая 50% времени, станет отнимать всего 2%. Для этого надо [b]замедлить[/b] скорость формирования оставшейся части отчета в ~25 раз:-) |
[quote=Харлампий Дымба;43396734] Про ВыбратьПодчиненныеДокументы() под SQL можно погуглить "30.12.9999". Я бурчал больше про то, что открывать выборку, а перебор загонять под условие - моветон.... /пофиксено "бла-бла".../[/quote] Хм... "ПивоваровИван"="ХарлампийДымба" :-) Про проблему выбора подчинённых документов, связанную с интерпретацией нижней и верхней дат выборки в SQL - почитал, но к нашей теме - для базы [u]типовой[/u] эта проблема никак не относится. Такая же проблема имеет место быть и в запросах по OLE, однако, всё решается просто установкой непустых дат. [b]Теперь по существу.[/b] Приведите, пожалуйста, пример запроса для типовой - не под SQL - и чтобы выборка подчиненных документов, с условиями отбора "не резала глаз" любого программиста. - Приму к сведению - правда - учусь, учусь, да не в коня овёс...! :-) - Не было надобности, обходился простыми вещами, потому и не знаю иных дорог. - Да и было бы интересно сравнить производительность в Запросе и в Переборе по подчиненным документам выборки. |
15-perpetum > Пивоваров Иван - погоняло, суть "человек под вымышленным именем". Так у нас в интернате называл себя каждый, когда ночнушка зашухерит на девчачьем этаже. А Харлампий Дымба - настоящее имя. Что режет глаз: Док.ВыбратьПодчинененныеДокументы(); Если ВыводитьСФ=1 Тогда Пока Док.ПолучитьДокументы()=1 Цикл Что не режет глаз: Если ВыводитьСФ=1 Тогда Док.ВыбратьПодчинененныеДокументы(); Пока Док.ПолучитьДокументы()=1 Цикл Претензии были к конструкции: открыли выборку, посмотрели нужна ли она нам, начали перебор. А надо сначала посмотреть нужна ли нам выборка, а потом уже открывать. Всё. У типовой конфигурации проблемы с актом сверки нет, так как период в выборке указан. Но достаточно других мест, где период не указан. Достаточно сделать глобальный поиск по "ВыбратьПодчиненныеДокументы". Когда-то давно в комплексной базе под SQL я поимел кучу проблем из-за операции с пустой датой, с тех пор тупо ограничиваю период и сплю спокойно. Можно я больше не буду на тему подчиненных документов рассуждать и скорости замерять? А то у меня тут интересная опа образовалась в ЗИКе, требует пристального внимания. |
16-Харлампий Дымба > ОК, спасибо! :-) |
Аналогичная ошибка и в упрощенке :( |
А выложенный акт в упрощенке не работает :( |
[quote=shotsdv2008;43419785] Аналогичная ошибка и в упрощенке :( [/quote][quote=shotsdv2008;43419814] А выложенный акт в упрощенке не работает :( [/quote] - Ага - там АктСверки, вероятно, писал другой чел, со своими заморочками - но идея - та же. Сейчас выложу [b]АктСверки для упрощёнки[/b]. Ну вот: [b]Пакет доступен по ссылке: [url]http://disk.tom.ru/q1ewbzk[/url][/b] |
Спасибо, мил человеК :) Только, пожалуйста, на будущее, архивы не называй кириллицей :) |
Кой-чего подправили в 626. Выборку убрали под условие) Исправили ошибку пустой строки, если галка "Согласовано" не стоит. До "Выписки" и авансовых СФ пока не добрались. |
22-Харлампий Дымба > - Спасибо, пока ещё не скачивал. Но у себя [b]нашёл ошибку и сделал поправку[/b]. В случае, когда по выписке, по одному и тому же контрагенту есть несколько авансовых сч-фактур на одинаковую сумму, выбиралась только первая сч-фактура в выборке подчиненных документов, остальные из списка подчиненных пропадали. Для исправления ситуации,- ввёл список значений, в котором стал фиксировать обрабатываемую сч-фактуру и если она уже отработана, то теперь - проверкой в списке значений - обработанная сч-фактура исключается. Таким образом, ошибка дублирования ссылки на одну и ту же сч-фактуру, с одинаковой суммой, исключена, все фактуры с одинаковыми суммами попадают в АктСверки, как отдельные операции, с авансовым сч-фактурой и ссылкой на одну и ту же выписку. По просьбе пользователей АктаСверки, сохранил АктСверки для ОСН и УСН в [b]поименованный латиницей файл rar-архив[/b]. [url=http://disk.tom.ru/z2aw6nn]AktSverky_OSN_USN.rar[/url]. - Кому надо - скачивайте. |
СПАСИБО!!! |
Спасибо за разбор ошибки! |
В связи с выходом Бухгалтерий 7.7 - ОСН, Релиз 626; - УСН, Релиз 268, выложил обновления по отчету АктСверки. [b]Скачивайте файл:[/b] [url=http://disk.tom.ru/qy12tpj]AktSverky__OSN_626__USN_268.rar[/url] |
Большое спасибо! |
Текущее время: 06:47. Часовой пояс GMT +3. |