• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Отчет по движениям и остаткам регистров

  • Автор темы Hryv
  • Дата начала
H

Hryv

Готова новая версия 2.1

Основные отличия:
1. Теперь можно смотреть не только движения, но и остатки
2. Улучшено форматирование печатаемых данных
3. Для установки фильтра не обязательно печатать этот столбец

Буду благодарен всем, кто найдет ошибки :(


ПС: просьба к админам не перемещать тему в Разработки форумчан
там уже есть
https://codeby.net/threads/otchet-po-dvizhenijam-registrov.33731/
 
V

vbs

Улучшение существенно, но раз уж сам написал :
Буду благодарен всем, кто найдет ошибки
терпи. :)

1. ПериодПеч и ЗагПеч надо описать в голове - иначе при выводе (процедура "ВывестиСекцию") они не определены (к тому же, в секции "Рек" свойства соответствующих ячеек надо бы заменить на "выражение")
2. При проверке на ТиС 9.54 (Регистр "ОстаткиТМЦ") то и дело вылезает ошибка
"Номер за пределами значения" в строках 441, 449, 465 (ТЗ.ПолучитьЗначение...).
На мой взгляд, вообще нет необходимости вызывать ПолучитьСтроку перед ПолучитьЗначение,
гораздо существеннее проверять, МОЖНО ли ПолучитьЗначение. Подробнее не разбирался - автору виднее
3. Нет контроля на дупликацию группировок, к тому же, при установке Гр2 в "нет" (Гр1 и Гр3 установлены) -
ошибка при вызове функции СоздатьТаблицуГР
это, конечно, только ради защиты от дурака, но все же...

Теперь пожелания :
1. Переключатель фДвижОст стоит перенести в слой "Основной"
2. Раз уж Обновить Таблицу необходимо вызывать после изменения этого переключателя, резонно делать
при этом кнопку "Печать" недоступной, и активизировать ее после обновления
3. Удобно бы сделать групповую пометку ТЗИ
4. Секцию "Док", возможно, есть смысл разбить на две, ибо колонка "Док" нужна не всегда - управлять можно
флажком типа "показать документы движения"

Так что хорошую обработку можно превратить в ОТЛИЧНУЮ.

На критику не обижайся, все мы грешны. :(
Я, собственно, так подробно покопался, что процесс меня увлек - вещь-то очень полезная
 
H

Hryv

1. ПериодПеч и ЗагПеч надо описать в голове - иначе при выводе (процедура "ВывестиСекцию") они не определены (к тому же, в секции "Рек" свойства соответствующих ячеек надо бы заменить на "выражение")
Заметил сам и исправил, просто не выкладывал еще

1. Переключатель фДвижОст стоит перенести в слой "Основной"
Спасибо, тоже исправлено

2. При проверке на ТиС 9.54 (Регистр "ОстаткиТМЦ") то и дело вылезает ошибка
"Номер за пределами значения" в строках 441, 449, 465 (ТЗ.ПолучитьЗначение...).
На мой взгляд, вообще нет необходимости вызывать ПолучитьСтроку перед ПолучитьЗначение,
гораздо существеннее проверять, МОЖНО ли ПолучитьЗначение. Подробнее не разбирался - автору виднее
Пока до конца не понял в чем суть, но обязательно разберусь

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

3. Удобно бы сделать групповую пометку ТЗИ
4. Секцию "Док", возможно, есть смысл разбить на две, ибо колонка "Док" нужна не всегда - управлять можно
флажком типа "показать документы движения"
будет в очередных версиях
про группировки я и сам знал, но руки еще не дошли

2. Раз уж Обновить Таблицу необходимо вызывать после изменения этого переключателя, резонно делать
при этом кнопку "Печать" недоступной, и активизировать ее после обновления
Обновлять таблицу надо почти после любого изменения на форме, поэтому это делается по кнопке и перед печатью
Я считаю так нормально
Единственно, что если нажать обе кнопки подряд, то второй вызов лишний, но имхо - это мелочи
Если в этом направлении и буду что-то менять, то в последнюю очередь
 
H

Hryv

Также планируется сделать возможность настраивать очередность столбцов при выводе на печать
 
V

vbs

Это замечательно, но прежде все же надо побороться с ошибкой

"Номер за пределами значения"
В сегодняшней версии, она, увы, все еще жива
 
H

Hryv

на выходных попробую подправить
сейчас времени совсем нет
 
V

vbs

на выходных попробую подправить
сейчас времени совсем нет
"-Сначала работа, а потом развлечение, - сказал робот, закончив решать систему сингулярных уравнений и приступив
к пересчитыванию запятых в Большой Британской Энциклопедии"
Анекдот из 1960-хх ;)
 
H

Hryv

Это замечательно, но прежде все же надо побороться с ошибкой

"Номер за пределами значения"
В сегодняшней версии, она, увы, все еще жива

Неожиданно время появилось
А можно скрин отчета с какими параметрами эти ошибки появляются?
 
V

vbs

вроде так
 

Вложения

  • Doc1.xml
    149,7 КБ · Просмотры: 268
  • Doc2.xml
    138,3 КБ · Просмотры: 258
H

Hryv

Странно, я никак у себя такую ошибку не могу создать

А что содержит столбец СКЛАД в на второй закладке? Нормально заполняется?
 
V

vbs

Как я и предполагал, то и дело не отрабатывает ПолучитьСтроку(), когда строки в таблице заканчиваются.
Следовательно, НомерСтроки в этом месте равен 0 - отсюда и ошибка.
Так что, ТЗ.ПолучитьЗначение надо делать только после проверки на ПолучитьСтроку() = 1

И еще пожелание в Приходе-Расходе сделать сортировку таблицы по дате
 
H

Hryv

Как я и предполагал, то и дело не отрабатывает ПолучитьСтроку(), когда строки в таблице заканчиваются.
Следовательно, НомерСтроки в этом месте равен 0 - отсюда и ошибка.
Так что, ТЗ.ПолучитьЗначение надо делать только после проверки на ПолучитьСтроку() = 1

Я это изначально подозревал, но проблема в том, что по алгоритму такого не должно случаться
Проверку поставить не сложно, но непонятно что делать, когда это происходит
Сейчас попробую что-нибудь придумать


Добавлено: Дошло!

Видимо, на каком-то из складов нет такой номенклатуры
Сейчас проверю
Если подтвердится, то буду думать как решить

Добавлено: Не подтвердилось

Вопрос ко всем: если в ТЗ в одном из столбцов есть пустые значения, то после свертки ведь все равно будет строка с пустым значением?

Добавлено: Раз так происходит, значит это возможно
Но я даже в теории не могу смоделировать ситуацию, чтобы строки в ТЗ3 кончились раньше времени
 
V

vbs

Но я даже в теории не могу смоделировать ситуацию, чтобы строки в ТЗ3 кончились раньше времени
Но тем не менее, то и дело это происходит, причем эффект обнаруживается не всегда и только при группировке по Номенклатуре :*цензура*you:
 
H

Hryv

Сделаю версию с отладочными логами
Логи посмотрю, тогда может что-то пойму
 
H

Hryv

А сколько весит?
Если в пределах 20 мег, то можно
 
H

Hryv

Ошибку выяснил: есть элементы номенклатуры с одинаковым наименованием

Задал явно тип всех колонок ТЗ, но это не помогло
1С все равно соритрует их вперемешку

Сегодня уже не исправлю
Завтра может поборю
 
H

Hryv

Выкладываю свежую версию

Основные отличия касаются печатной формы
Ошибка группировки не решена, но обработана исключением

Ближайшие планы по усовершенствованию отчета

1. Решение проблемы группировки
2. Выбор очередности вывода столбцов
3. Групповая отметка в таблицах измерений и ресурсов
 
V

vbs

Ошибка группировки не решена, но обработана исключением
Все же на правильность работы сортировка влияет существенно


Добавлено: Вот такого рода каша получается.

А если для универсальности сделать так : если тип группировки "справочник", формировать таблицу с дополнительным столбцом,
дабы получить уникальную сортировку
 

Вложения

  • Test.rar
    825 байт · Просмотры: 144
  • Test.rar
    825 байт · Просмотры: 149
H

Hryv

vbs, каша получается и в той базе, что ты давал
Добавление кода к наименованию решит проблему, но не на все случаи жизни
Я попробую сделать еще лучше, правда надо время
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!