Вывод и печать таблиц и списков значений для 1С 7.7

02.09.09

Разработка - Инструментарий разработчика

Платформа 7.7 имеет весьма скудные средства для просмотра таблиц и списков значений, что особенно сказывается при отладке решений. Данная обработка значительно расширяет данные возможности.

Скачать файлы

Наименование Файл Версия Размер
ВыводУниверсальныхКоллекций.ert
.1251799697 200,50Kb
402
.1251799697 200,50Kb 402 Скачать
ПримерИспользованияВыводаТЗ.ert
.1251799884 31,50Kb
90
.1251799884 31,50Kb 90 Скачать

К возможностям обработки, помимо заявленных вывода и печати содержимого таблицы и списка значений, относятся:

  1. по DblClick на ячейке таблицы данных отображение содержимого вложенных таблиц и списков значений (открывается новая форма обработки)
  2. отображение структуры таблицы (выводятся только заполненные поля; поле «Заголовок» выводится только в случае если оно заполнено и есть хотя бы одно отличие от имени колонки) и типы значений списка
  3. отбор данных по заданным условиям по полям таблицы значений
  4. настройка сортировки таблицы значений
  5. настройка видимости колонок таблицы значений
  6. автоподбор ширины колонок в таблице на форме (по опции) и в печатной таблице
  7. расширенное представление значений: элемент справочника представляется по шаблону "Код | Наименование"; группа элементов — по шаблону "Код || Наименование"; документ, не зависимо от периодичности нумератора, — по шаблону "Представление (или идентификатор, если не задано) №НомерДок от ДатаДок"; строка заключается в кавычки
  8. если в таблице данных не задан тип поля, то в таблице структуры, для полей где поле "Тип" не заполнено, по DblClikck появляется контекстное меню, которое позволяет определить варианты типов для незаполненных реквизитов по табл. данных.

Баги на текущий момент:
В строке под таблицей данных (где выводится адрес текущей ячейки и расширенное представление текущего значения) данные могут не обновляться при переходе между колонками (проблема в том, что в этом случае не вызывается формула текстового поля).

Вместе с обработкой идет пример её использования.

Вызывать можно как из конфигуратора (можно и не модально), так и из отладчика. Делается это одной строкой (пример, когда обработка идёт как внешняя и лежит в корне диска С):

	ОткрытьФормуМодально("Обработка#", ТабЗн, "C:\ВыводУниверсальныхКоллекций.ert");

При вызове из конфигуратора можно передать в качестве параметра не просто таблицу значений, но и её заголовок и внутреннее имя обработки. Последнее необходимо для открытия вложенных таблиц и списков, когда обработка вызывается как внутренняя. Делается это следующим образом:

	СпПараметров = СоздатьОбъект("СписокЗначений");
	СпПараметров.Установить("ЗаголовокОбработки", "Номенклатура");
	СпПараметров.Установить("Данные", ТабЗн);
	СпПараметров.Установить("ИмяВнутрОбработки", "ВыводУниверсальныхКоллекций");
	ОткрытьФорму("Обработка.ВыводУниверсальныхКоллекций#", СпПараметров);

Буду благодарен за помощь в отлове багов (исправление, разумеется, на мне) и высказывание пожеланий. В планах есть дальнейшее развитие темы, так что следите за обновлениями.

См. также

Консоль запросов

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21558    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    165685    1864    Alexoniq    1596    

496

Tray Informer

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32877    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21197    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18029    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36103    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    34956    248    adhocprog    51    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1063 01.09.09 18:57 Сейчас в теме
>>>данные могут не обновляться при переходе между колонками
Это не бага, это многолетний баян..
Лечение - в одной строчке кода..
2. CheBurator 3119 01.09.09 19:52 Сейчас в теме
(1) Типа как в кресте на ТЗ..?
19. Altair777 644 02.09.09 18:47 Сейчас в теме
(2) Ой, и меня упомянули. Мелочь, а приятно :-)
4. Angelike 01.09.09 20:04 Сейчас в теме
[от имени Aexeel (аккаунт залочен, почему-то)]
(1) Просто раньше не встречалось, вот и не знал. Исправлю, как разлочат. Спасибо за информацию.
(3) В плане доработок, но не на первом месте. Так часто пользуешься отборами? Обычно это разовая операция. Гораздо важнее просмотр подчиненных ТЗ. А это реализовано.
6. Shaman100M 1150 02.09.09 08:15 Сейчас в теме
(1) А как, интересно? Две невидимых кнопки на форму с горячими клавишами, или попроще?
7. Ёпрст 1063 02.09.09 08:20 Сейчас в теме
(6) проще.
Форма.Обновить в функции на тексте... Можно и по условию.
8. aexeel 73 02.09.09 09:28 Сейчас в теме
(7) Проблема как раз в том, что формула ("функция на тексте") не вызывается.
13. Ёпрст 1063 02.09.09 14:35 Сейчас в теме
(8) >>>(7) Проблема как раз в том, что формула ("функция на тексте") не вызывается.

Ну ё... Форма.Обновить() воткни - будет вызываться всегда..
3. CheBurator 3119 01.09.09 19:54 Сейчас в теме
(0) Не вижу сохранений сделанных настроек вывода ТЗ - если я много раз вывожу одинаковую по структуре ТЗ - я что, не могу воспользоваться заранее сделанной в первый раз настройкой??? Низачот!!! ;-)
.
сформируй для ТЗ уникальный ИД из наименований и типов колонок - и используй его...
5. aexeel 73 01.09.09 20:20 Сейчас в теме
Все разлочили. Счастье.
(3, 4) Аналогичная ситуация с сохранением списков сортировки и видимости колонок. Под это дело, кстати, создан неиспользуемый пока слой "Невидимый".
9. aexeel 73 02.09.09 09:43 Сейчас в теме
Обновил обработку. Изменения в текущей версии:
- исключена оставленная ранее отладочная информация;
- обработка больше не требует наличия в том же каталоге обработки-редактора условий отбора (в предыдущей версии она также не использовалась);
- при попытке вызова без указания в параметре формы списка или таблицы значений выдается соответствующее предупреждение и обработка не открывается;
- на закладках «Структура» и «Данные» выведены краткие подсказки.
10. Арчибальд 2706 02.09.09 10:05 Сейчас в теме
Автор, послушайся Ёпрста и Чебура. Они плохому не научат ;))
11. aexeel 73 02.09.09 10:32 Сейчас в теме
(10) Я сторонник политики Эппла: мнение пользователя, конечно, важно, но делать мы будем всё равно по-своему :))
А если серьезно, мнение Чебура, конечно, правильное — сохранению настроек быть. Но вот предложенное решение слегка поверхностное. ИД по имени-типу исключит отборы при незначительном изменении структуры (например, в процессе разработки добавили/удалили колонки, по которым отборы и не строились даже). К тому же, как я и написал раньше, пользоваться им будут единицы, а вот просмотр вложенных списков/таблиц куда более актуален. Да и сам отбор еще не до конца доделан. В следующем плановом обновлении будет отбор по (не)вхождению в список и в числовой интервал.
Ёпрсту был бы крайне признателен за рабочий пример. А то назвать проблему "баяном" и предложить нерабочее решение (заранее извиняюсь, если не правильно его понял) как-то не айс.
12. aexeel 73 02.09.09 11:20 Сейчас в теме
Обновил пример использования. Теперь в нем можно выбирать способ вызова обработки обработки: из внешнего файла или внутренней обработки. В первом случае необходимо будет указать полное имя файла (можно выбрать в соответствующем диалоге), во втором — идентификатор обработки (можно выбрать из списка).
14. aexeel 73 02.09.09 15:07 Сейчас в теме
Форма.Обновить() — это процедура. Её нельзя "втыкать" в формулу элемента диалога "текст". Если же написать функцию, обычно её называют "ОбновлениеФормы()", то она не вызывается при переходе между колонками, по крайней мере у меня. Если опять чего-то не понял, то буду благодарен за ссылку на рабочий пример.
17. Ёпрст 1063 02.09.09 17:55 Сейчас в теме
18. aexeel 73 02.09.09 18:42 Сейчас в теме
(17) Ну начнем с того, что как я и говорил, "Форма.Обновить(0)" в формуле текстового поля не напишешь, т.к. это процедура, так что, хотя бы в этом признал бы свою неправоту. Во-вторых, отбросив серьезную нагрузку на процессор, при интерактивной работе с таблицей (это если поставить условие на активный элемент) в твоем случае, попробуй пробежаться курсором (переход мышкой или с клавиатуры, без разницы) по первой строке. У меня форма опять же не обновилась (видео выложу чуть позднее), так что это не выход.
Чтобы быть до конца уж откровенным, при последующем переходе между строками , работать стало.
23. Ёпрст 1063 03.09.09 08:34 Сейчас в теме
(18) Детсад на марше ?
Не умеешь затавить обновится форму при открытии?
Чего, уже всё надо разжевывать?
16. aexeel 73 02.09.09 17:44 Сейчас в теме
(15) у себя проверял? уже несколько раз написал, что у меня не ловит перемещение между (!!!) колонками (!!!) таблицы на форме. При перемещении между строками той же таблицы все работает.
20. aexeel 73 02.09.09 19:37 Сейчас в теме
(17, 18): аналогичная проблема с любой другой строкой, которая становится текущей при открытии формы. Добавление метода в "ПриОткрытии()", "ВводНового()" или модуль инициализации не помогает. Пробовал даже программно менять закладки и в "ПриВыбореЗакладки" вызывать обновление формы, но результат тот же.
Как вариант, делать активной ту закладку, на которой нет таблицы. Но это абсолютно не рациональная полумера.
21. Altair777 644 02.09.09 19:50 Сейчас в теме
(20) Юзайте Формекс "ПослеОткрытия()" и будет Вам счастье. :-)
22. aexeel 73 02.09.09 21:13 Сейчас в теме
(21) Переход к использованию ВК равносильно отказу от универсальности. В этой обработке я стремлюсь, скорее, к последнему. А за "+" спасибо. Хоть я и не сторонник рейтинговых систем, но, ИМХО, она того стоит.
26. artbear 1448 03.09.09 09:39 Сейчас в теме
(22) Про ВК и отход от универсальности зря говоришь.
Как раз некоторые ВК и позволяют достичь универсальности :)
28. aexeel 73 03.09.09 10:32 Сейчас в теме
(26) Только давай без холивара на тему ВК :)) Согласен, они значительно расширяют функциональность, но вносят дополнительные требования к установленному набору. Даже если будешь постоянно носить все с собой (у военных, например, Интернет не подключен вообще), ни факт, что дадут права админа, чтобы это дело установить (фанатичная шизофреничность безопасников это обыденное явление).
(27) Это не редактор, а просмотр и работа с отборами/сортировками у меня реализована лучше, на большее пока не претендую.
29. Altair777 644 03.09.09 11:04 Сейчас в теме
(28) Не думаю, что с тем же FormEx'ом, например, могут быть проблемы при установке.
30. aexeel 73 03.09.09 11:16 Сейчас в теме
(29) м.б., но в данном случае удалось решить проблему без его использования
31. Altair777 644 03.09.09 11:31 Сейчас в теме
(30) Я раньше тоже был противником ВК.
Первое, что пришлось использовать - это 1С++ и только ради одного метода ReconnectNative().
Но жизнь в лице заказчиков(работодателей) заставляет совершенстоваться.
И очень много вещей, которые в последнее время мне приходиться реализовывать, просто немыслимы без расширения функционала с помощью ВК.
Не потому, что я отучился по-другому, а просто потому что их нельзя сделать иначе.

Кстати, и в своей повседневной работе тоже тяжко без OpenConf, Телепат, Colorer и т.д.
32. aexeel 73 03.09.09 11:47 Сейчас в теме
(31) OpenConf, Телепат, Colorer использую сам, благо влияют они только на процесс, а к конечному продукту они не имеют непосредственного отношения.

>> Я раньше тоже был противником ВК
Ты не совсем правильно понял. Я не являюсь противником ВК (особенно на внутренних проектах), но там, где без них можно обойтись, стараюсь обходиться. Кстати, внутренняя политика некоторых компаний (в т.ч. моей нынешней) запрещает их использование в разработке.

>> ReconnectNative()
Прям на больную мозоль стал :). Согласен, проблема реконнекта у нас решена не самым оптимальным способом. Но решена и прирост производительности есть.
34. Altair777 644 03.09.09 11:56 Сейчас в теме
(32) А, понятно. Если запрещено, тогда да...

Но я вот думаю, что для всех остальных (в том числе для ИС) можно и с использованием ВК делать. По крайней мере, проверять загружена ли необходимая длл-ка.
И такая разработка, удет быстрее всего и красивее, и быстрее.
24. Ёпрст 1063 03.09.09 08:47 Сейчас в теме
25. aexeel 73 03.09.09 09:30 Сейчас в теме
(23, 24) Блин, круто. Не знал. Спасибо.
27. artbear 1448 03.09.09 09:41 Сейчас в теме
Посмотри автора ADirks здесь и/или на проклубе, у него давно уже есть отличный "Редактор ТЗ", в котором нами сделано очень многое, в т.ч. и просмотр, и печать, и редактирование ТЗ, СЗ и даже ИТЗ из 1С++.
33. vligm 22 03.09.09 11:56 Сейчас в теме
Понравилось.
Есть пожелание - для документов сделать отбор по списку.
А еще лучше - по подчиненным для какого-либо дока.
Это так, на вскидку в ключе моих личных проблем :-)))
35. aexeel 73 03.09.09 12:10 Сейчас в теме
(33)Спасибо за отзыв и "+"

>>отбор по списку
Вроде где-то в комментах упоминал. Первая в очереди (уже в процессе разработки т.е.). Скоро будет. Следите за обновлениями.

>>подчиненным для какого-либо дока
Тоже запланировано, но следующим этапом, т.к. связано со отбором по списку

(34) :) "там где можно обойтись, стараюсь обходиться".
Насчет быстрее/красивее очень спорно. Говорить о скорости при интерактивной работе при текущем уровне развития выч. средств не шибко актуально. Самой медленной составляющей системы в этом случае остается пользователь.

Кстати, в тему загрузки процессора (тоже где-то раньше было). Погонял на разных машинах. В принципе, не сильно-то он и загружается при обновлении формы. Так что, еще раз спасибо Ёпрсту, окончательный вариант вполне работоспособен.
36. vligm 22 22.09.11 13:20 Сейчас в теме
я часто использую в таблицах "ЗначениеВСтрокуВнутр"
Для просмотра списков и таблиц, упакованных таким образом, я добавил немного кода в процедуру
"ТЗ_Форма_ОбработкаВыбора()":

ИначеЕсли ТипЗначенияСтр(ЗначТекЯчейки) = "Строка" Тогда
Если (Лев(ЗначТекЯчейки,5) = "{""VT""") ИЛИ (Лев(ЗначТекЯчейки,5) = "{""VL""") Тогда
Данные = ЗначениеИзСтрокиВнутр(ЗначТекЯчейки);
КонецЕсли;// Если Лев(ЗначТекЯчейки,5) = "{""V...
СпПараметров = СоздатьОбъект("СписокЗначений");
СпПараметров.Установить("ЗаголовокОбработки", ЗаголовокОбработки + " -> R" + НомТекСтр + "C'" + ИмяТекКол + "'");
СпПараметров.Установить("Данные", Данные);
СпПараметров.Установить("ИмяВнутрОбработки", "Undef");
Если ПустаяСтрока(ПолнИмяФайлаОбработки) = 0 Тогда // внешняя обработка
ОткрытьФорму("Отчет#", СпПараметров, ПолнИмяФайлаОбработки);
Иначе
Попытка
ОткрытьФорму("Обработка." + ИмяВнутрОбработки + "#", СпПараметров);
Исключение
Предупреждение("Не удается открыть форму внутренней обработки " + ИмяВнутрОбработки);
КонецПопытки;
КонецЕсли;
37. klen17 03.11.11 15:20 Сейчас в теме
Спасибо! Часто использую для отладки сложных модулей с навороченными таблицами.
38. пользователь 06.06.12 15:36
Сообщение было скрыто модератором.
...
Оставьте свое сообщение