gifts2017

Класс "ПоставщикДанных"

Опубликовал Александр Анисков (vandalsvq) в раздел Программирование - Инструментарий

Аналог табличного поля 1С 8.x, с возможностью автоматического подключения наборов данных (Дерево значений, Индексированная таблица, Список значений, Справочники, Документы, Журналы, Операции, Проводки, Регистры, Табличная часть документа, Отбор).
Доступны возможности: отборы, настройки колонок, печать содержимого, быстрый поиск, стандартный поиск, контекстное меню.

Поддерживаемые наборы данных для отображения в табличном поле:

  • Список значений
  • Индексированная таблица (1С++)
  • Дерево значений (Объекты_v8)
  • Отбор (Объекты_v8)
  • Справочник.
  • Документ.
  • Журнал.
  • ТабличнаяЧасть.
  • Операции
  • Проводки
  • Регистр.

Возможности реализованные в классе:

  • Динамическое чтение данных (для наборов связанных с метаданными конфигурации)
  • Возможность изменения запроса к данным (синтаксис класса "Прямой запрос")
  • События при обработке действий пользователя
  • Быстрый поиск по строке
  • Поиск стандартными средствами 1С
  • Расширенное управление видимостью и свойствами колонок
  • Возможность наложения отборов (при динамическом чтении)
  • Собственные объекты реализующие ДеревоЗначений и Отбор (см. аналогичные объекты 1С v8.х)
  • Расширенные возможности управления табличным полем (изменение состава и порядка строк, сохранение и восстановление настроек и т.д.)
Полноценный пример будет занимать в виде кода много места, поэтому приложу его отдельным архивом.

Данная разработка предназначена для демострации возможностей ЭУ табличное поле в 1Cv7. По сути это аналог табличного поля с соответствующими расширениями реализованный в 1Сv8.

Более подробное обсуждение, новости и прочее можно просмотреть на форуме 1С++. На ваши вопросы там ответят намного быстрее и подробнее.

Дополнение: на текущий момент могу сказать что данная разработка прошла успешное тестирование на нескольких проектах (реализованных не только мной). Как правило использование данных классов повышает скорость работы программы, удобство работы пользователей и значительно расширяет стандартные возможности 1Сv7.

Последняя официальная версия: 4.2.4 от 20.05.2011

Последняя неофициальная версия: 4.3.1 от 18.01.2012 (стабильный релиз)


P.S.
данная разработка распространяется бесплатно как для частного, так и для коммерческого использования. Поддержка осуществляется при наличии свободного времени. Возможно сотрудничество на предмет внедрения данной разработки в конкретные конфигурации.

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

Наименование Файл Версия Размер
Документация и классы v 4.3.1 от 18.01.2012 350
.rar 979,75Kb
18.01.12
350
.rar 979,75Kb Скачать
Документация и классы v 4.2.4 от 20.05.2011 11
.rar 764,43Kb
18.01.12
11
.rar 764,43Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артур Аюханов (artbear) 25.03.10 08:33
2. Александр Анисков (vandalsvq) 25.03.10 10:13
3. Епрст (Ёпрст) 25.03.10 10:22
Как то ты его здесь поздно выложил..
Его популярность и так далеко вперёд ушла..
4. Епрст (Ёпрст) 25.03.10 10:24
Как то ты его поздновато здесь выложил..
Он уже и так раскручен :)
5. Андрей (Свой) 25.03.10 10:40
в ДБФ базе это работает ?
6. Епрст (Ёпрст) 25.03.10 11:10
7. Александр Анисков (vandalsvq) 25.03.10 11:28
(3)(4)
Да все руки не доходили. Я даже ПрямойЗапрос тут обновить все никак не мог. К тому же нормального примера не было. В общем так по мелочи все мешало "выйти в люди".
8. Сергей (Che) Коцюра (CheBurator) 25.03.10 15:31
(7) спасибо. давно уже присматриваюсь. ибо как раз такие задачи - забодался строить всякие конструкторы условий/фильтров на основе отображения в ТЗ.
9. Алексей Орлов (_also) 25.03.10 15:41
Автору огромный респект, на прошлой работе написал конфу с его ипользованием. Отдельное спасибо за такую документацию :)
Присоединяюсь к (3)
10. Алексей Орлов (_also) 25.03.10 15:42
+(9) Да..и за прямой запрос спасибо :)
11. Роман Зиновьев (Широкий) 26.03.10 11:05
12. serpent Пентюхов С. Г. (serpent) 26.03.10 15:25
Подскажите что я сделал не так с тестовым примером???

Класс: УправлениеФормой.Привязка - ошибка синтаксиса
Строка №275 Право <<?>>= Лево + Ширина;
Ожидается скалярное выражение (Право)
{C:\ййй\SystemData\Classes\УправлениеФормой\УправлениеФормой.Привязка.ert(275) }
Класс: УправлениеФормой.Привязка - ошибка синтаксиса
Строка №277 Расстояние = ЛевоС-Право<<?>>;
Ожидается скалярное выражение (Право)
{C:\ййй\SystemData\Classes\УправлениеФормой\УправлениеФормой.Привязка.ert(277) }
Класс: УправлениеФормой.Привязка Файл: C:\ййй\SystemData\Classes\УправлениеФормой\УправлениеФормой.Привязка.ert компиляция не выполнена!
УправлениеФормой::Конструктор() : Внимание! Инициализация класса: УправлениеФормой.Привязка закончилась неудачно!
ПривязкаЭлементов = СоздатьОбъект("УправлениеФормой.Привязка");
{C:\ййй\SystemData\Classes\УправлениеФормой\УправлениеФормой.ert(31) }

УправлениеФормой = СоздатьОбъект("УправлениеФормой");
{C:\ййй\СПРАВОЧНИК КОНТРАГЕНТЫ.ERT(160)}: УправлениеФормой::Конструктор() : Внимание! Инициализация класса: УправлениеФормой.Привязка закончилась неудачно!
ПривязкаЭлементов = СоздатьОбъект("УправлениеФормой.Привязка");
{C:\ййй\SystemData\Classes\УправлениеФормой\УправлениеФормой.ert(31) }
13. Павел Власков (Porshivec) 26.03.10 18:09
Подскажите пожалуйста! Как в документ Реализация добавить строку процент наценки(1С Торговля и склад ред. 9.2)? Чтобы его не было видно в накладной. Заранее спасибо.
14. Сергей (Che) Коцюра (CheBurator) 27.03.10 02:27
Взял сабж с ИС.
вроде выполнил все что описано в инструкции по установке.
При запуске обработки:
.
ПоставщикДанных.КоманднаяПанель::УстановитьНаборПиктограмм(Картинка Пиктограммы=, Число Ширина=16, Число Высота=16, Число Количество=26) : Неудачная попытка создания объекта
КартинкиПанелиУправления = СоздатьОбъект("MSComctlLib.ImageListCtrl");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.КоманднаяПанель.ert(330) }

ПоставщикДанных.ТабличноеПоле::Конструктор() : ПоставщикДанных.КоманднаяПанель::УстановитьНаборПиктограмм(Картинка Пиктограммы=, Число Ширина=16, Число Высота=16, Число Количество=26) : Неудачная попытка создания объекта
КартинкиПанелиУправления = СоздатьОбъект("MSComctlLib.ImageListCtrl");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.КоманднаяПанель.ert(330) }

КоманднаяПанель.УстановитьНаборПиктограмм(Сервис.КартинкаКоманднойПанели,16,16,26);
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(76) }

ПоставщикДанных::ПриЗаписи_ТипЗначений(Строка Параметр=Справочник.Контрагенты) : ПоставщикДанных.ТабличноеПоле::Конструктор() : ПоставщикДанных.КоманднаяПанель::УстановитьНаборПиктограмм(Картинка Пиктограммы=, Число Ширина=16, Число Высота=16, Число Количество=26) : Неудачная попытка создания объекта
КартинкиПанелиУправления = СоздатьОбъект("MSComctlLib.ImageListCtrl");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.КоманднаяПанель.ert(330) }

КоманднаяПанель.УстановитьНаборПиктограмм(Сервис.КартинкаКоманднойПанели,16,16,26);
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(76) }

ПоставщикДанных = СоздатьОбъект("ПоставщикДанных.Справочник");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ert(87) }

ПоставщикДанныхМногострочнаяЧасть.ТипЗначений = "Справочник.Контрагенты";
{C:\ПРИМЕР ДЛЯ КОНФИГУРАЦИИ БУХГАЛТЕРИЯ\СПРАВОЧНИК КОНТРАГЕНТЫ.ERT(20)}: ПоставщикДанных::ПриЗаписи_ТипЗначений(Строка Параметр=Справочник.Контрагенты) : ПоставщикДанных.ТабличноеПоле::Конструктор() : ПоставщикДанных.КоманднаяПанель::УстановитьНаборПиктограмм(Картинка Пиктограммы=, Число Ширина=16, Число Высота=16, Число Количество=26) : Неудачная попытка создания объекта
КартинкиПанелиУправления = СоздатьОбъект("MSComctlLib.ImageListCtrl");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.КоманднаяПанель.ert(330) }

КоманднаяПанель.УстановитьНаборПиктограмм(Сервис.КартинкаКоманднойПанели,16,16,26);
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(76) }

ПоставщикДанных = СоздатьОбъект("ПоставщикДанных.Справочник");
{G:\_DEMO\DEMO_BUH.DIR\SystemData\Classes\ПоставщикДанных\ПоставщикДанных.ert(87) }
15. Сергей (Che) Коцюра (CheBurator) 27.03.10 02:51
как всегда, выложено "неработающее", с неполными инструкциями... ;-)
.
в помощь при ошибке
http://www.forum.mista.ru/topic.php?id=298024
качаем http://www.dll.ru/dll/4410.html - comdlg32.ocx
http://www.microsoft.com/downloads/details.aspx?FamilyID=25437d98-51d0-41c1-bb14-64662f5f62fe&DisplayLang=en - устанавливаем
.
Автору: представляется целесообразным включить в инструкцию
an_2; serpent; Свой; +3 Ответить 1
16. Александр Анисков (vandalsvq) 27.03.10 11:37
(14)(15)
А я забыл написать что "Not all batteries are included"? :D

А вообще-то я в документации писал
"объект «КоманднаяПанель» реализуется при помощи ActiveX – “MSComctlLib.Toolbar.2” (данная библиотека устанавливается с пакетом MS Office после установки сам Microsoft Office можно удалить, библиотека при этом останется)".
Коммон контролы вроде проблемы не решит, не знаю. Да и чтобы их использовать надо иметь лицензию. Так что я не хочу включать в документацию данные ссылки. Но как информацию обязательно тут пусть остается.

Только просьба, подчисти текст ошибки и сформулируй ее в "двух словах". Не люблю массивы кода когда на самом деле там ошибка на две строки.
17. Евгений Стоянов (quick) 29.03.10 08:41
Так вот ты какой, цветочек аленький! :)
18. Евгений Долиновский (Dolly_EV) 20.04.10 10:26
(1) Это уже наверное не просто класс - это целая идеология! 8-)
19. Александр Орефков (orefkov) 01.06.10 11:51
У меня такое ощущение, что CheBurator всегда все проверяет на "голой" машине. Наверное у него для вмваре создан образ - поставлена винда по минимуму + 1С. И каждую поделку он сначала в нем прогоняет.
20. Александр Анисков (vandalsvq) 01.06.10 15:07
(19) кстати хороший вариант :D
21. Дмитрий Фамилия (freek) 28.12.11 14:07
22. Александр Гнитка (smitti911) 17.02.12 13:44
23. Александр Анисков (vandalsvq) 09.04.12 01:07
Следите за новостями. В ближайшем будущем будет значительное обновление.
Открою немного занавес: кто видел 8.2 управляемое приложение, ну или СКД, тот знает что там можно накладывать сгруппированные условия. Так вот, аналогичная возможность появится и в данном классе. Таким образом уровень возможностей местами не только приблизился вплотную к 8.х, но где-то даже превзошел ее. :)
24. andrey P (andrey314) 07.11.14 15:23
а есть возможность в табличном поле отображать данные внешних источников данных через ODBC?
25. Александр Анисков (vandalsvq) 07.11.14 16:41
(24) andrey314, вот почитай тут. Сам поставщик данных не адаптирован под произвольный запрос, но непосредственно ТП можно использовать. Читать тут - http://www.1cpp.ru/docum/html/TableField.html#odbc-odbcdataprovider. Также можно выполнять запрос, выкидывать в таблицу значений и ее уже через поставщик использовать. Если конечно нужна его "инфраструктура".
26. Сергей (Che) Коцюра (CheBurator) 07.11.14 18:08
(23) а где вариант сабжа со "значительным обновлением"...?
27. Александр Анисков (vandalsvq) 08.11.14 17:00
(26) CheBurator, группировка условий есть, в версии 5+. Но она только на 1С++ - http://www.1cpp.ru/forum/YaBB.pl?num=1273512019.
Были планы сделать условное оформление, а также группировку, но увы. Причина тому одна - я не занимаюсь 7-кой на коммерческой основе и поэтому не дорабатываю эти инструменты. Тестировать даже элементарно не на чем. Раньше и sql-ные базы были и файловые и разных конфигураций навалом. Сейчас вроде как только одна на которой была разработка и ту открывал очень давно.

А вообще вот последние изменения:
5.0.1 от 15.04.12 г.
- Изменена система отборов в динамических расширениях (Справочник, Документ, Журнал, Регистр, Операции, Проводки). Добавлена возможность произвольного построения условий с иерархией.
- В связи с изменением системы отборов внесены изменения в объекты-расширения «ПоставщикДанных.Журнал», «ПоставщикДанных.Проводки» «ПоставщикДанных.Документы», «ПоставщикДанных.Справочник», «ПоставщикДанных.Операции», «ПоставщикДанных.Регистр».
- Исправлено поведение кнопки «Отбор по текущей колонке». При нажатии не отключаются остальные отборы. Также если отбор включен, то он выключается.
- При активизации колонки изменяется отображение кнопки «Отбор по текущей колонке».
- Оптимизировано построение условия отборов по реквизитам.
- Исправлена ошибка потери текущей строки при изменении иерархического просмотра у объекта-расширения «ПоставщикДанных.Справочник».
- Отключено использование параметра «ВыводитьПиктограммуОтбора». Параметр оставлен для обратной совместимости.
- Объект «ПоставщикДанных.ОписаниеТипов» и «ПоставщикДанных.ВидыСравнения» выведены из состава поставщика данных. Вместо них используются общие объекты «ОписаниеТипов» и «ВидыСравнения» соответственно. Подробнее см. документацию по классам «Объекты_v8».
- Исправлено падение 1С при изменении типа значения объекта «ПоставщикДанных».
- Исправлены выявленные ошибки

5.0.2 от 24.04.12 г.
- Исправлена ошибка при укладке списков со строковыми значениями для отбора.
- Исправлена ошибка формирования запроса для объекта-расширения «ПоставщикДанных.Регистр» если у регистра стоит признак «Быстрая обработка движений»
- Исправлены выявленные ошибки.

5.0.3 от 22.05.13 г.
- Объект «ПоставщикДанных.ПрямойЗапрос» обновлен до версии 1.8.6 от 22.05.13 г.
- все классы собраны вместе в один архив + примеры

5.0.4 от 25.10.13 г.
- Исправлены выявленные ошибки

5.0.5 от 23.05.14 г.
- Исправлены выявленные ошибки при добавлении колонок данных
- Добавлена возможность построения древовидных структуры в доступных полях при добавлении колонок данных (фактически теперь можно объект "Отбор" использовать для построения отборов вроде СКД в 8-ке, но напильник must have)
28. Андрей Бегунов (wenzor) 23.11.15 07:46
А где сейчас можно взять версию 5.0.5? На форуме 1срр.ru файлов нет - удалили что ли все....
29. Александр Анисков (vandalsvq) 23.11.15 11:38
(28) wenzor, все обновления лежат в теме здесь
30. Андрей Бегунов (wenzor) 23.11.15 20:02
Вот что я вижу: Attachment deleted. Может нужно залогиниться, но мне не приходит письмо с подтверждением (вчера зарегистрировался). Вобщем перерыл весь интернет и нигде нет :)

Кстати сказать, скачал отсюда 4-ю версию, почитал документацию и впечатлился. Вы проделали огромную работу! Я делал нечто подобное. Но чтобы так подробно как Вы....просто нет слов :)
Прикрепленные файлы:
31. Александр Анисков (vandalsvq) 24.11.15 01:59
(30) wenzor, файл во вложении, пользуйтесь на здоровье
Прикрепленные файлы:
Query_ExtTF_other_001.zip
32. Михаил (Mikeware) 09.02.16 09:25
Пытаюсь запустить на машине с Win7/64.
Ошибка при создании объекта ОбъектImageListCtrl = СоздатьОбъект("MSComctlLib.ImageListCtrl");
Офис стоит 2010-й,
дополнительно comdlg32.ocx и MSCOMCTL.OCX поставил и зарегистрировал. Не помогло.
В реестре MSComctlLib.ImageListCtrl присутствует. Права на чтение вроде есть - ругани в Процмоне не вижу.
Что я не так делаю, и что сделать?
33. Александр Анисков (vandalsvq) 09.02.16 15:02
(32), Советую обратиться на форум 1c++. У меня уже 7-ки пару лет как вообще не стоит, подзабылись нюансы.
Заранее прошу прощения, что не могу оказать помощь.
34. Михаил (Mikeware) 09.02.16 17:17
(33) vandalsvq, спасибо за ответ. там как-то тоже все мертво...
клюшки отживают свой век...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа