Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Бухгалтерия 7.7, Релиз 625. Ошибка печати в Отчете "АктСверки". (http://forums.kuban.ru/f1040/buhgalteriya_7_7_reliz_625_oshibka_pechati_v_otchete_aktsverki-8100732.html)

perpetum 03.12.2016 14:11

Бухгалтерия 7.7, Релиз 625. Ошибка печати в Отчете "АктСверки".
 
Процедуру Печать(), следует переписать так:
Начиная со строки: ТаблицаДвижений.ВыбратьСтроки();

ТаблицаДвижений.ВыбратьСтроки();
Пока ТаблицаДвижений.ПолучитьСтроку()=1 Цикл

Операция = СокрЛП(ТаблицаДвижений.Операция);
Поз = Найти(Операция, "Счет-фактура");

Если Поз > 0 Тогда
Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз);
КонецЕсли;

ОперД = Операция;

Если Согласован = 1 Тогда
НомК = Ном;
ДебетК = ТаблицаДвижений.Кредит;
КредитК = ТаблицаДвижений.Дебет;

Если Лев(Операция, 8) = "Передано" Тогда
ОперК = "Принято" + Сред(Операция, 9);

ИначеЕсли Лев(Операция, 7) = "Принято" Тогда
ОперК = "Передано" + Сред(Операция, 8);

ИначеЕсли Лев(Операция, 7) = "Продажа" Тогда
ОперК = "Приход" + Сред(Операция, 8);

ИначеЕсли Лев(Операция, 6) = "Приход" Тогда
ОперК = "Продажа" + Сред(Операция, 7);

Иначе
ОперК = Операция;
КонецЕсли;
КонецЕсли;
Таб.ВывестиСекцию("Строка");
Ном = Ном + 1;
КонецЦикла;


//- Иначе - в печатную форму, в режиме Согласован=0, не выводятся данные поля "Наименование операции, документы".
- Разработчик 1С небрежно правил алгоритм и нарушил логику при внесении изменений.
- примите к сведению.

perpetum 03.12.2016 15:33

0-perpetum > Добавлю.
В релизе обновленный отчет АктСверки получил дополнительный флажок "ВыводитьСчетаФактуры",
при этом цикл заполнения выборки документов неоптимален:
- для режимов ВыводитьСчетаФактуры=1 и ВыводитьСчетаФактуры=0
- приходится всякий раз заполнять таблицу движений, что при значительном объеме выборки требует значительного времени.

Предлагаю для оптимизации - найти условие Если ВыводитьСчетаФактуры = 1 Тогда и закомментировать так:
//Если ВыводитьСчетаФактуры = 1 Тогда
Здесь заполняется таблица движений - ничего не закомментируем.
//КонецЕсли

- тогда в таблице движений будет всегда присутствовать строка с дополнением по Счет-фактуре.

[b]А в модуле Печать()[/b]/уже модифицированного документа по 0-perpetum >/, вместо:

Если Поз > 0 Тогда
Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз);
КонецЕсли;

[b]исправляем на:[/b]

Если Поз > 0 Тогда
Если ВыводитьСчетаФактуры=1 Тогда
Операция = Сред(Операция, 0, Поз - 1) + РазделительСтрок + Сред(Операция, Поз);
Иначе
Операция = Сред(Операция, 0, Поз - 1);
КонецЕсли;
КонецЕсли;

Тогда при печати, можно выводить в печатную форму акта сверки по значению флажка:
ВыводитьСчетаФактуры=1 - вывод со счет-фактурой,
или ВыводитьСчетаФактуры=0 - вывод без счет-фактуры,
без повторного заполнения таблицы движений.

Buhta 03.12.2016 16:17

0-perpetum > сразу заметила :( но если ставить галку "согласовано", то печатает нормально обе половины... некоторым вернула старый, некоторые потерпят до исправления...

oops! 04.12.2016 02:49

Кто-то в 1С очень осерчал на акты сверки - они их, в итоге, сломали во всех бухгалтериях. В БП3.0 обещали исправить в релизе 3.0.45...

MagAN 04.12.2016 03:25

Мои давно не пользуются типовым актом, в нем слишком много тупого дубака. Юзают мои переделки внешние.
У многих автомат стоит (в начале года добавляет распечатанные акты к накладным), почти у всех есть авторассылка актов ...
Так что, (3) - это хорошая новость из серии "тогда мы идем к вам" и вы узнаете что такое автоматизация, чего стоят типовые
от 1С и что работа в 1С превращается отдых, если отказаться от типового функционала в мою пользу ...

perpetum 04.12.2016 06:01

Кому надо, выложил rar-архив исправленного Акта Сверки с расшифровкой печатной формы по строкам документов.

Пакет доступен по ссылке:
[b][url]http://disk.tom.ru/tj3kqe3[/url][/b]

Чучундер 04.12.2016 12:42

у мну акты сверки печататся из торгбазы, поэтому всякие ошибки чужие - пофиг, своих хватает.. ;-)

pivovarovivan 08.12.2016 01:35

1-perpetum > Предполагается, что пользователь может в таблице отредактировать вид операции вручную после её заполнения. Поэтому писать туда лишнюю информацию про счета-фактуры, если она не нужна, не комильфо. Так что тут оставим как есть.

pivovarovivan 08.12.2016 01:52

0-perpetum > А вот косяк похуже: выданные счета-фактуры на аванс могут выписываться на основании документа "Выписка". И если на основании выписки, в которой есть оплата по нужному клиенту, выписан авансовый счет-фактура по другому клиенту, то этот СФ попадёт в чужой акт сверки. Для правки надо перед поиском СФ вставить проверку на вид документа-основания.
Ну и ещё немножко: СФ может быть выставлен в течение 5 дней от отгрузки, а подчиненные документы выбираются строго за период отгрузки. Так что часть СФ может пролетать мимо акта сверки.
И ещё мелочь: по каждому документу делается открытие выборки ВыбратьПодчиненныеДокументы() не зависимо от значения флажка "ВыводитьСчетаФактуры". Зачем? Ведь это не самая быстрая выборка, почему не убрать её в условие?
Чёто как-то многовато косяков и косячков на 10 добавленных строчек кода. Удручающе.

pivovarovivan 08.12.2016 01:55

Для справочника "КлассификаторТНВЭД" форму списка забыли сделать - некрасиво...

pivovarovivan 08.12.2016 01:59

Ну и вангую - новая реготчетность не будет работать на конфигурациях ранее 625 из-за новой константы "КодОКВЭД2".

perpetum 08.12.2016 08:11

[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]
- кому нужно - качайте, смотрите.

pivovarovivan 10.12.2016 22:26

12-perpetum > Помниться под SQL ВыбратьПодчиненныеДокументы() один из самых тормозных операторов, а уж если период не указан, то вдвойне. В любом случае, писать ВыбратьПодчиненныеДокументы(); условие; ПолучитьДокумент() - вообще не айс.

perpetum 10.12.2016 23:32

[quote=Харлампий Дымба;43386545] 12-perpetum > Помниться под SQL ВыбратьПодчиненныеДокументы() один из самых тормозных операторов, а уж если период не указан, то вдвойне. В любом случае, писать ВыбратьПодчиненныеДокументы(); условие; ПолучитьДокумент() - вообще не айс. [/quote]
Так вы посмотрели?
- Чтобы не быть голословным, посмотрите замер производительности под отладчиком сами...
- У меня весь модуль выборки и анализа подчиненных документов в цикле - не превысил 2% времени от общего времени заполнения АктаСверки.
- Конечно, я провёл некоторую оптимизацию и такие затратные операторы, как создать "Документ" и получить пустое значение "Документ"
- вывел за пределы циклов акта сверки, иначе добавилось бы ещё 2%.
Поэтому результат получился неплохим.- Такой задержкой можно пренебречь.

Кстати, в период выборки по подчинённым документам, таки, добавил ваше предложение - дополнительные 5 дней к верхней дате выборки.

[b]- И вообще - спасибо, что не прошли мимо - ваше сообщение было важным![/b]
:-)

pivovarovivan 12.12.2016 19:15

Про ВыбратьПодчиненныеДокументы() под SQL можно погуглить "30.12.9999". Я бурчал больше про то, что открывать выборку, а перебор загонять под условие - моветон. Режет глаз у любого программиста, жаль что не у писателя типовой.
Про "2% после оптимизации" - напомнило школьную задачку про арбуз, усохший до 98% воды. Ведь можно так наоптимизровать, что функция, занимавшая 50% времени, станет отнимать всего 2%. Для этого надо [b]замедлить[/b] скорость формирования оставшейся части отчета в ~25 раз:-)

perpetum 12.12.2016 21:21

[quote=Харлампий Дымба;43396734] Про ВыбратьПодчиненныеДокументы() под SQL можно погуглить "30.12.9999". Я бурчал больше про то, что открывать выборку, а перебор загонять под условие - моветон.... /пофиксено "бла-бла".../[/quote]
Хм... "ПивоваровИван"="ХарлампийДымба" :-)
Про проблему выбора подчинённых документов, связанную с интерпретацией нижней и верхней дат выборки в SQL - почитал, но к нашей теме - для базы [u]типовой[/u] эта проблема никак не относится.
Такая же проблема имеет место быть и в запросах по OLE, однако, всё решается просто установкой непустых дат.
[b]Теперь по существу.[/b]
Приведите, пожалуйста, пример запроса для типовой - не под SQL - и чтобы выборка подчиненных документов, с условиями отбора "не резала глаз" любого программиста.
- Приму к сведению - правда - учусь, учусь, да не в коня овёс...! :-)
- Не было надобности, обходился простыми вещами, потому и не знаю иных дорог.
- Да и было бы интересно сравнить производительность в Запросе и в Переборе по подчиненным документам выборки.

pivovarovivan 13.12.2016 00:01

15-perpetum > Пивоваров Иван - погоняло, суть "человек под вымышленным именем". Так у нас в интернате называл себя каждый, когда ночнушка зашухерит на девчачьем этаже. А Харлампий Дымба - настоящее имя.

Что режет глаз:
Док.ВыбратьПодчинененныеДокументы();
Если ВыводитьСФ=1 Тогда
Пока Док.ПолучитьДокументы()=1 Цикл
Что не режет глаз:
Если ВыводитьСФ=1 Тогда
Док.ВыбратьПодчинененныеДокументы();
Пока Док.ПолучитьДокументы()=1 Цикл
Претензии были к конструкции: открыли выборку, посмотрели нужна ли она нам, начали перебор. А надо сначала посмотреть нужна ли нам выборка, а потом уже открывать.
Всё.

У типовой конфигурации проблемы с актом сверки нет, так как период в выборке указан. Но достаточно других мест, где период не указан. Достаточно сделать глобальный поиск по "ВыбратьПодчиненныеДокументы". Когда-то давно в комплексной базе под SQL я поимел кучу проблем из-за операции с пустой датой, с тех пор тупо ограничиваю период и сплю спокойно.

Можно я больше не буду на тему подчиненных документов рассуждать и скорости замерять? А то у меня тут интересная опа образовалась в ЗИКе, требует пристального внимания.

perpetum 13.12.2016 00:19

16-Харлампий Дымба > ОК, спасибо! :-)

shotsdv2008 16.12.2016 12:04

Аналогичная ошибка и в упрощенке :(

shotsdv2008 16.12.2016 12:07

А выложенный акт в упрощенке не работает :(

perpetum 16.12.2016 12:40

[quote=shotsdv2008;43419785] Аналогичная ошибка и в упрощенке :( [/quote][quote=shotsdv2008;43419814] А выложенный акт в упрощенке не работает :( [/quote]
- Ага - там АктСверки, вероятно, писал другой чел, со своими заморочками - но идея - та же.
Сейчас выложу [b]АктСверки для упрощёнки[/b].
Ну вот:
[b]Пакет доступен по ссылке: [url]http://disk.tom.ru/q1ewbzk[/url][/b]

shotsdv2008 17.12.2016 20:50

Спасибо, мил человеК :)
Только, пожалуйста, на будущее, архивы не называй кириллицей :)

pivovarovivan 27.12.2016 16:20

Кой-чего подправили в 626. Выборку убрали под условие) Исправили ошибку пустой строки, если галка "Согласовано" не стоит. До "Выписки" и авансовых СФ пока не добрались.

perpetum 27.12.2016 20:15

22-Харлампий Дымба > - Спасибо, пока ещё не скачивал.
Но у себя [b]нашёл ошибку и сделал поправку[/b].

В случае, когда по выписке, по одному и тому же контрагенту есть несколько авансовых сч-фактур
на одинаковую сумму, выбиралась только первая сч-фактура в выборке подчиненных документов,
остальные из списка подчиненных пропадали.

Для исправления ситуации,- ввёл список значений, в котором стал фиксировать обрабатываемую сч-фактуру
и если она уже отработана, то теперь - проверкой в списке значений - обработанная сч-фактура исключается.

Таким образом, ошибка дублирования ссылки на одну и ту же сч-фактуру, с одинаковой суммой, исключена,
все фактуры с одинаковыми суммами попадают в АктСверки, как отдельные операции, с авансовым сч-фактурой
и ссылкой на одну и ту же выписку.

По просьбе пользователей АктаСверки, сохранил АктСверки для ОСН и УСН
в [b]поименованный латиницей файл rar-архив[/b]. [url=http://disk.tom.ru/z2aw6nn]AktSverky_OSN_USN.rar[/url].
- Кому надо - скачивайте.

shotsdv2008 27.12.2016 20:46

СПАСИБО!!!

Hodorkovskiy 28.12.2016 12:39

Спасибо за разбор ошибки!

perpetum 28.12.2016 19:14

В связи с выходом Бухгалтерий 7.7
- ОСН, Релиз 626;
- УСН, Релиз 268,
выложил обновления по отчету АктСверки.
[b]Скачивайте файл:[/b]
[url=http://disk.tom.ru/qy12tpj]AktSverky__OSN_626__USN_268.rar[/url]

AlexX 03.01.2017 22:10

Большое спасибо!


Текущее время: 06:47. Часовой пояс GMT +3.