"Расширяемые" регистры и табличные части

Публикация № 127853

Разработка - Математика и алгоритмы

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

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

Целью данной заметки является краткое описание концепции, позволяющей создавать и поддерживать более широкие возможности – расширяемые регистры и табличные части. Реализация данных механизмов представляется оптимальной в виде подсистемы с высокой степенью портируемости и универсальности. Опишем объекты, входящие в подсистему, применив взятую для удобства нотацию имён. Нотация имён имеет рекомендательный характер.

План видов характеристик «Разрезы сочетаний». ПВХ описывает состав и типы данных для изменяемых функционалов, т.е., как и в классическом варианте, описывает «добавляемые» пользователем поля. Если в конфигурации есть несколько задач, решаемых описываемым способом, можно сделать ПВХ иерархическим. Реквизиты – на усмотрение разработчика. В зависимости от решаемых задач варьируются допустимые типы.

Справочник «Сочетания разрезов». Справочник собственно содержит конкретные данные всех изменяемых функционалов, значения «добавленных» пользователем полей. Рекомендуется делать его иерархическим с иерархией групп, что позволит повысить скорость работы с подмножествами его элементов через использование штатной механики платформы, но можно обойтись и без иерархии. Также можно задействовать связь по владельцу. Рекомендуется использовать представление в виде кода и сделать длину наименования нулевой. Если в конфигурации есть несколько задач, решаемых описанным способом, и по каждой прогнозируется рост объёмов данных, имеет смысл создавать отдельные справочники одинаковой структуры – это распараллелит нагрузку. Группа справочника может иметь реквизиты, ускоряющие её обнаружение и, через неё, работу с её элементами. Элемент справочника может не иметь шапочных реквизитов (это – на усмотрение разработчика), но обязательно должен иметь табличную часть «Состав сочетания», содержащую 2 реквизита: «Разрез» (ссылка на ПВХ «Разрезы сочетаний») и «ЗначениеРазреза» (характеристика ПВХ «Разрезы сочетаний»). Каждый элемент справочника содержит уникальное сочетание значений «ЗначенийРазрезов», таким образом, двух элементов с абсолютно идентичными табличными частями быть не должно. Это достигается функционалом общего модуля – поиском имеющихся сочетаний, и лежит на совести разработчика. Именно уникальность элементов принципиально важна.

Общий модуль «РаботаССочетаниями», с возможностью выполнения на сервере, где расположены нужные процедуры и функции. По сути можно предложить такие, как «НайтиСочетаниеРазрезов» и «СоздатьОбновитьСочетаниеРазрезов». Их аргументом будет таблица значений, аналогичная табличной части справочника «Сочетания разрезов», а их задачи будут заключаться в поиске имеющегося сочетания по указанному образцу и в создании либо обновлении имеющегося сочетания (ранее найденного по, возможно, другому набору значений разрезов). Очевидно, что для этого следует использовать характеристический механизм запросов с помощью СКД.

Примерный вид запроса для СКД:

ВЫБРАТЬ Сочетания.Ссылка КАК СочетаниеСсылка ИЗ Справочник.СочетанияРазрезов КАК Сочетания ГДЕ Сочетания.ПометкаУдаления = Ложь И Сочетания.Ссылка В ИЕРАРХИИ (&УслРодительскаяГруппа) // и любое другое условие, позволяющее ограничить объём выборки {ХАРАКТЕРИСТИКИ ТИП(Справочник.СочетанияРазрезов) ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ ПВХРазрезыСочетаний.Ссылка КАК ПВХРазрез, ПВХРазрезыСочетаний.Наименование КАК ПВХНаименование, ПВХРазрезыСочетаний.ТипЗначения КАК ПВХТипЗначения ИЗ ПланВидовХарактеристик.РазрезыСочетаний КАК ПВХРазрезыСочетаний ГДЕ ПВХРазрезыСочетаний.ЭтоГруппа = Ложь) ПОЛЕКЛЮЧА ПВХРазрез ПОЛЕИМЕНИ ПВХНаименование ПОЛЕТИПАЗНАЧЕНИЯ ПВХТипЗначения ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ Состав.Ссылка КАК Сочетание, Состав.Разрез КАК Разрез, Состав.ЗначениеРазреза КАК ЗначениеРазреза ИЗ Справочник.СочетанияРазрезов.СоставСочетанияРазрезов КАК Состав И Состав.ПометкаУдаления = Ложь И Состав.Ссылка В ИЕРАРХИИ (&УслРодительскаяГруппа) // и любое другое условие, позволяющее ограничить объём выборки ) ПОЛЕОБЪЕКТА Сочетание ПОЛЕВИДА Разрез ПОЛЕЗНАЧЕНИЯ ЗначениеРазреза} 

За внешний вид запроса благодарю обработку Evg-Lylyk (хотя сделать переносы строк и вариант для не-управляемых форм было б невредно, ага)

Очевидно, что для поиска нужных сочетаний следует наложить условия на поля СКД, соблюдая их нотацию. Напомню, при наличии символов, недопустимых в именах системных полей, платформа выполняет неявное преобразование данных, переданных ей в ПОЛЕИМЕНИ, и следует соблюдать правила написания пути к данным в отборах СКД, т.е. нечто вида "СочетаниеСсылка.["+ПолеКакЕгоОбозвалаСКД+"]".

Собственно реализация может быть любой. Рассмотрим на примере регистра сведений с составом, управляемым пользователем. Предположим, нам нужен регистр сведений, хранящий отпускные цены, зависящие от заранее неизвестного набора значений, и состав этого набора непредсказуем. Так, пусть цена зависит от группы контрагентов и региона. Регистр будет иметь лишь одно обязательное измерение (остальное – на усмотрение разработчика), а именно «СочетаниеРазрезов», ссылку на справочник. Опустим интерфейсные ухищрения, заметим лишь, что для пользователя рабочая таблица регистра должна иметь привычный вид: колонки измерений, ресурсов и реквизитов, и что для организации такого интерфейса следует предпринять определённые усилия по написанию кода. Впрочем, можно лишь незначительно доработать форму списка, обеспечив прямой переход к просмотру/редактированию каждого элемента справочника.

Главное в работе с регистром то, что вместо статично заданных измерений пользователь имеет дело со строками табличных частей элементов справочника, являющегося измерением. Каждый элемент справочника уникален. При появлении нового сочетания значений создаётся новый элемент справочника. Таким образом, справочник содержит все имеющиеся варианты значений в их сочетаниях, и каждый набор сочетаний позволяет найти соответствующий элемент, а зная его, и запись в регистре. Изменения в составе разрезов могут и должны сказываться на составе табличных частей элементов справочника, но суть не изменится – единственным измерением будет сам этот справочник, хотя для пользователя он может быть сделан вообще «скрытым» чисто интерфейсными средствами или через RLS.

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

В общем случае количество строк в табличных частях разных элементов справочника может быть совершенно разным, поэтому вопрос актуализации и синхронизации целиком ложится на разработчика. Так, если ранее практиковались 2 разреза («Группа контрагентов» и «Регион»), а позже пользователь ввёл разрез «Категория товара», то табличные части элементов справочника, созданные ранее, могут остаться неизменными, если реализация рабочих модулей будет это учитывать; в противном случае следует продумать дописывание в табличных частях строки с новым разрезом и пустым значением (по сути, ту же операцию, что делает платформа при добавлении измерения в регистр разработчиком). Аналогично следует не забыть обработку случаев изменения типа значений ПВХ или удаления элемента ПВХ.

На следующем этапе развития подсистемы можно ввести понятие шаблона, образца сочетания разрезов, и обеспечить наполнение табличных частей не любыми разрезами и их значениями, а только входящими в образец. Это позволит ещё оптимизировать работу с содержимым справочника. Можно при описании образца указывать, является ли значение того или иного разреза обязательным или нет, можно создать механику избирательного доступа к тем или иным значениям разрезов и т.д., вплоть до конструирования псевдо-OLAP систем, т.е. принципа управляемой многомерности, чему, возможно, будет посвящена следующая заметка.

 

30

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. fuxic 292 15.05.12 18:37 Сейчас в теме
Было бы неплохо увидеть базу с примером использования. Заранее благодарю, если поделитесь
2. Yashazz 2889 15.05.12 19:10 Сейчас в теме
(1) Есть мысль доделать нормальную подсистему, постараюсь выложить в ближайшие дни. Сейчас оно так лихо интегрировано, что придётся выкладывать всю конфу, а это мне низя.
Изложенная концепция успешно используется на практике уже год, поэтому и решил поделиться. Если что-то не подробно, постараюсь детализировать.
3. khaoos 239 16.05.12 06:51 Сейчас в теме
Идея замечательная. Конечно, реализацию в виде готовой подсистемы хотелось бы иметь. Как дела с производительностью?
4. Yashazz 2889 16.05.12 08:26 Сейчас в теме
(3) Если делать на большие объёмы один неиерархический справочник - дела с производительностью так себе. Если же предпринимать усилия по всякой оптимизации, то очень даже неплохо. Упомянутый запрос у меня на ста тысячах элементов отрабатывает за пару секунд, и это на файловой базе.
Реализацию ещё выдрать из конфы надо. :)
7. khaoos 239 16.05.12 09:25 Сейчас в теме
(4) Хорошо, подождем. А по производительности: есть ощущение, если вместо табличной части справочника сочетаний использовать вспомогательный регистр сведений с его возможностью кластерного индекса, то будет быстрее. Хотя если и так все хорошо, то ломать не стоит :)
5. AVVG 16.05.12 08:56 Сейчас в теме
Да если глянуть примерчик было бы очень здорово но смущает выборка всего из 100000 и уже не быстро а что такое 100000? Поэтому смотреть и тестить. Заранее спасибо
6. Yashazz 2889 16.05.12 09:18 Сейчас в теме
(5) Когда планируется большое количество разрезов, т.е. большое количество вариантов их сочетаний без повторений (порядок разрезов считаем неважным), то, конечно, будет и много больше ста тысяч. Сам тоже "буду посмотреть", как оно живёт на SQL, т.к., повторюсь, база файловая.

Тут ведь в чём гадость: СКД не позволяет нормально оптимизировать выборки внутри секции запроса характеристик. Ни временных таблиц, ничего, увы. Это считаю узким местом.
8. electronik 16.05.12 11:07 Сейчас в теме
Интересно интересно.Мое мнение нужно ето дело увидеть на практике. Автору за идею и за работу спасибо, ну и конечно заслуженое 5+++++
9. gaglo 16.05.12 13:48 Сейчас в теме
Идея - безусловно - многообещающщщая, поставил закладку, буду вдумчиво перечитывать, и если подсистема появится - будет вообще здорово!
ЗЫ Однако терминология... Прочитав "Разрезы сочетаний" ...... "Сочетания разрезов" - минут 15 не мог сосредоточиться -
это ж "План по валу" - "Вал по плану!"
10. Yashazz 2889 16.05.12 15:28 Сейчас в теме
(9) Согласен, вернее, конечно, формулировка "Сочетания конкретных значений разрезов". Но длинно.
12. vvr908 398 16.05.12 17:14 Сейчас в теме
(10) по смыслу чем-то напоминает ключи аналитики из РАУЗ. Может, так и назвать: ПВХДопАналитика и КлючиДопАналитики?
11. Kamikadze 46 16.05.12 17:14 Сейчас в теме
"Значениz разрезов" - чем не подходит такое название?
13. Yashazz 2889 16.05.12 18:23 Сейчас в теме
(13) Можно, только и "ДопАналитика" бывает разная. Вообще да, вопрос терминологии довольно остро стоит для этой задачи. Какие ещё есть предложения?
Я посмотрю, какие варианты, и когда буду выкладывать подсистему, уже сделаю в ней именно такую нотацию.
14. Rustig 1207 17.05.12 06:44 Сейчас в теме
(0) как концепция статья понравилась. напишите пожалуйста изначальную постановку задачи. думаю, что задачу возможно решить более "легковоспринимаемым" способом.
а на практике за счет увеличения взамосвязей объектов метаданных происходит усложнение разработки, доработки, отладки: к примеру, как в Комплексной конфигурации реализованы регистры РАУЗ? Через такой же расширяемый регистр. Только в измерениях справочник - ключ, являющийся комбинацией всех своих реквизитов, в реквизитах тоже справочники-ключи, являющиеся комбинациями своих реквизитов. Можно продолжить ряд...
А такое видели? Справочник содержит предопределенные макеты на СКД - по сути запросы к базе. Теперь для любого элемента этого справочника можно выбрать реквизит - какой конкретно способ (по сути запрос) будет использоваться при закрытии месяца. кто в курсе меня поправит...
Или кто-нибудь видел БГУ? Там тоже много интересного: в каждом документе определяется ЛокальнаяПеременная через название, тип этой переменной изменяется в зависимости от переданного названия. Или как определяется доступность реквизитов и значения по умолчанию для документов в БГУ? Через справочник ВидОперации - который является ключевым реквизитом в таких справочниках как РеквизитыДокументовПрочие, РеквизитыЕСПБУ. Кто в курсе меня поправит :)
Это все примеры того, как на базовые объекты конфигурации (нижний уровень) накладываются сложные для восприятия взаимосвязи (средний уровень), и получаются механизмы иного порядка (верхний уровень). И тогда с помощью таких пирамид решаются задачи уже другого порядка.
Мда, для разработчиков настоящая головоломка...
16. Yashazz 2889 17.05.12 10:21 Сейчас в теме
(14) про РАУЗ ничего не знаю, честно. А этой концепции, которую я описал в заметке, уж года четыре. Просто решил опубликовать наконец.
20. AlX0id 18.05.12 12:13 Сейчас в теме
(16)
У меня лично при виде подобной статьи в первую очередь возникает вопрос: в РАУЗе-то оптимизирована структура для уменьшения возможности конфликтов взаимоблокировок.. а как тут?

И - да, на порядок возрастает сложность доработок подобных систем, если они обоснованно необходимы, конечно.
17. samamoiloff 858 17.05.12 12:44 Сейчас в теме
(14)Занятно. Может статейку кто накрапает о подобных принципах? Думаю, будет популярна. Самому вскоре придется что-то придумывать на эту тему, было бы интересно иметь сведения из практики. А то лезут в голову всякие мысли иногда, типа "возможно ли внешнее регламентное задание..." :)
18. Yashazz 2889 17.05.12 18:53 Сейчас в теме
(14) Изначальной задачей был регистр сведений с неизвестным заранее набором измерений. Ровно то, что описано в примере. Возможность пользователя менять мерность и характер измерений регистра.
19. Rustig 1207 17.05.12 19:39 Сейчас в теме
(18) Это же постановка задачи на языке разработчика. А постановка задач на языке клиента есть? Все ли меня понимают, о чем я прошу? :)
21. Yashazz 2889 18.05.12 19:17 Сейчас в теме
(19) А на языке клиента ничего конкретного не было. Клиент сам не знал, от чего будут зависеть цены, и всё сводилось к обычному "сделайте, чтобы работало и мы могли сами поменять". Даже нормального ТЗ не состоялось.

(20) Возможно, скажу глупость, но - а какие тут могут быть взаимоблокировки? Это ведь справочник. чтение - есть чтение, без блокировки для изменения. Каждое действие происходит только с одним элементом, чистая объектная блокировка силами платформы. Или я не понял, о чём речь?

Насчёт возрастания сложности на порядок - не соглашусь. Если не дорабатывать сам механизм, а просто его юзать, то ничего особенного, сужу по своим коллегам.
15. ms200999 17.05.12 08:37 Сейчас в теме
Любопытно. Буду следить за развитием идеи.
22. Ksu 03.09.12 12:14 Сейчас в теме
Идея не плохая. У нас сейчас стоит та же задача. Поэтому очень интересно Ваше решение.
23. Yashazz 2889 06.09.12 13:42 Сейчас в теме
(22) Ни сил, ни времени выламывать подсистему из готовых решений, к сожалению, нет. Могу разве только совсем грубо "кусок выдрать".
24. Ksu 07.09.12 15:28 Сейчас в теме
Если не затруднит, то было бы здорово!
Оставьте свое сообщение

См. также

"Хочу универсально!" [Часть 1] 65

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования Разработка

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

02.09.2019    5018    SeiOkami    35       

Иерархия без "В ИЕРАРХИИ" 117

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    4965    ildarovich    16       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов 62

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    4295    ids79    7       

Обработчики событий при записи объектов. Зачем и что за чем? 202

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    12922    4    AlbinaAAA    23       

Как проводятся документы в типовых конфигурациях от 1С 137

Статья Программист Нет файла v8::ОУ ERP2 УТ11 Россия УУ Windows Бесплатно (free) Математика и алгоритмы Практика программирования Разработка

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    16158    skv_79    32       

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются... 8

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    2899    vandalsvq    16       

Управление качеством кода 136

Статья Программист Руководитель проекта Нет файла v8 Бесплатно (free) Математика и алгоритмы Рефакторинг и качество кода

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    8361    Stepa86    29       

Что делает "В ИЕРАРХИИ" в запросе? 94

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    8336    YPermitin    34       

Создание отчетов с помощью СКД - основные понятия и элементы 209

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    21245    ids79    17       

Реализуем Стек, Очередь и Приоритетную очередь в 1С 52

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

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

24.06.2019    7858    RonX01    63       

Организация хранения промежуточных данных 3

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    1983    scientes    1       

Вычисление 200 тысяч знаков числа pi 73

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

28.05.2019    4020    Oleg_nsk    93       

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты 84

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    11239    YPermitin    5       

Даем названия переменным: как префиксы экономят наше время 10

Статья Программист Стажер Внешняя обработка (ert,epf) v8 Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

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

06.05.2019    3276    Designer1C    69       

Заметки по SQL: Срез последних - аналог запроса 15

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Математика и алгоритмы

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    6366    IVC_goal    5       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    22395    ids79    40       

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 147

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы Практика программирования

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    23031    Rain88    42       

Теорема номер тринадцать 15

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Использование математических методов для языка запросов.

15.03.2018    9393    vasilev2015    24       

Введение в CI для 1С 87

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

21.11.2017    19369    real_MaxA    22       

Как работает серверный вызов в 1С 459

Статья Программист Нет файла v8::УФ Бесплатно (free) Математика и алгоритмы

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    44316    pahich    77       

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода 43

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы Универсальные функции

Зачастую почти любой модуль в 1С содержит от одного до несметного множества вызовов других модулей. Как с этим бороться, чтобы было проще куда-то что-то переносить - в этом посте.

12.10.2017    14845    for_sale    58       

Групповая разработка конфигураций в крупном холдинге 68

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

О чем мы сегодня поговорим? • О становлении и развитии групповой разработки конфигураций 1С в крупном холдинге с использованием хранилища конфигураций. • Обсудим практически все аспекты использования хранилища в командной разработке. • Я расскажу про те методы и идеи, которые мы пробовали использовать, какие используем до сих пор, от каких отказались и почему.

15.08.2017    17585    stas_ganiev    15       

Автоматизация процесса 1С-разработки 91

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

В статье речь пойдет о том, как при разработке в 1С добиться автоматизации и универсальности, о тех инструментах, которые помогают нам, разработчикам 1С, сохранять самое ценное, что у нас есть – наше время.

07.06.2017    23070    ekaruk    9       

Пишем игру Минер. Обработка событий ActiveX в 1С 29

Статья Программист Нет файла v8 Россия Windows Бесплатно (free) Практика программирования Математика и алгоритмы

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    12769    user621724_Dimav1979    11       

Как я доступ на kb.1c.ru получал 91

Статья Программист Нет файла v8 Россия Бесплатно (free) Решение задач на 1С:Специалист Математика и алгоритмы

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    22566    ikekoval    33       

Улучшение стандарта "Структура модуля" 6

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Математика и алгоритмы

Описывается структура областей модулей, которую я использую при разработке на своих проектах. Обсуждаются недостатки стандарта 1С "Структура модуля". Предложен улучшенный подход к работе со структурой модуля.

26.03.2017    12376    o.nikolaev    23       

"Распределение в запросе" или "избавляемся от перебора" 185

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Математика и алгоритмы Универсальные функции

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    28702    alexandersh    48       

Планы обмена. Квитировать или гарантировать? 24

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Математика и алгоритмы

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    14596    zhichkin    9       

Некоторые принципы оптимизации запросов 1С (+SQL) 115

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    8934    ture    40       

Использование git для доработки типовых конфигураций 1С 230

Статья Программист Нет файла v8 Беларусь Украина Россия Бесплатно (free) Математика и алгоритмы

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    188693    pumbaE    31       

Оптимизация запросов 1С:Предприятие – от теории к практике 116

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

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

07.10.2016    32152    bpc222    20       

Регистры сведений 1С. Как это устроено. 729

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Основная идея публикации - собрать в одном месте информацию о внутреннем устройстве такой абстрактной сущности, как "Регистр сведений 1С" и ответить на ряд вопросов: Что происходит при записи регистра в различных режимах? Что такое на самом деле "СрезПервых" и "СрезПоследних"? Как оптимально выбрать структуру регистра? Это та информация, владея которой, начинаешь лучше понимать как это работает и как правильно использовать регистры сведений.

05.08.2016    151216    Sergey.Noskov    155       

Переводим расширения на 8.3.8. Памятка. 79

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Математика и алгоритмы

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    39787    mrXoxot    12       

Опыт практического применения методики BDD на 1С. Написание сценариев 121

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

Эта статья открывает цикл публикаций, в которых я хочу поделиться опытом использования методики BDD при разработке на 1С. В этой статье речь пойдёт о написании сценариев.

03.07.2016    20372    oleynik.dv    132       

Заметки про запросы. Последовательность. 110

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы Практика программирования

Рассуждения, основанные на контрпримерах. Определяем последовательность операций с помощью одной только консоли запросов. Версия 2.

27.05.2016    29684    vasilev2015    31       

Оптимизация планирования доставки грузов. Алгоритм кластеризации k-means (метод K-средних). 26

Статья Программист Нет файла v8 УТ10 УПП1 Windows Бесплатно (free) Математика и алгоритмы

Что такое кластеризация? Это объединение объектов в непересекающиеся группы, называемые кластерами, на основе близости значений их атрибутов (признаков). В результате в каждом кластере будут находиться объекты, похожие по своим свойствам друг на друга и отличающиеся от тех, которые расположены в других кластерах. При этом, чем больше подобие объектов внутри кластера и чем сильнее их непохожесть на объекты в других кластерах, тем лучше кластеризация.

10 стартмани

09.02.2016    26588    mi1man    4       

Контур.EDI изнутри, или история командной разработки тиражного продукта на 1С 174

Статья Программист Нет файла v8 Россия УУ Windows Оптовая торговля Бесплатно (free) Интеграция Практика программирования Математика и алгоритмы

“Система - больше, чем просто совокупность ее элементов”; “Несколько разработчиков - это еще не команда разработки”. Расскажу, как мы прочувствовали эти очевидные утверждения на своей шкуре.

17.11.2015    36098    skif47    88       

Порядок записи движений регистров при проведении документа 95

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

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

13.11.2015    80634    triton_tver    8       

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия 51

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Разработка внешних компонент Математика и алгоритмы

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    42239    Serginio    35       

Три способа получить дерево элементов иерархического справочника 52

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Рассматривается применимость и недостатки следующих способов получения дерева 1) Запрос с использованием итогов по иерархии 2) Формирование дерева обходом выборки с упорядочиванием по иерархии 3) Формирование иерархии по списку элементов транзитивным замыканием

11.11.2015    63202    32ops    9       

Мультиинструментальный Brute Force 4

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы

Решение задачи из Project Euler с помощью 1С, а также дополнительных программ, серверов и прочих хитростей.

30.10.2015    10474    scientes    4       

1С с "плюсами" 74

Статья Программист Нет файла v8 Бесплатно (free) Разработка внешних компонент Математика и алгоритмы Универсальные функции

- Разработана методика подключения внешней компоненты, снимающая ограничения на типы данных аргументов и возвращаемого значения. - Проведено документирование основных типов данных (объектов, интерфейсов) платформы. - Разработан объект «Делегат» для реализации функциональных объектов (указатель-на-функцию). - Разработана концепция итератора произвольного доступа для основных контейнеров платформы с целью сопряжения со стандартной C++ библиотекой. - В процессе разработки механизм 1С классов (наследование, интерфейсы) для возможности использования парадигм объектно-ориентированного программирования на уровне кода.

14.10.2015    20009    IntelInside    47       

Знакомство с технологией Automation-сервер на примерах 33

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы

В статье рассмотрены принципы работы технологии Automation-сервер на конкретных примерах.

28.09.2015    26227    niko11s    10       

Критерии отбора 83

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Математика и алгоритмы

Статья посвящена объекту конфигурации - критерий отбора. Поговорим о сущности этого объекта и о методах работы с ним.

24.09.2015    49542    niko11s    13       

По ссылке или по значению? Ключевое слово Знач и с чем его едят 196

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

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

12.08.2015    37253    Evil Beaver    239