Эргономика рулит, или как добиться от 1С возможности редактирования объекта в списке / Попытка применения MVC паттерна в среде 1С Предприятия 8.2

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

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

25
Все началось с того, что в ходе разработки одного интерфейса меня стали посещать мысли, как легко все, что мне требовалось, достигалось в среде MS Access XP/2003.. ну в самом деле, отчего такая несправедливость?! В общем..

.. у меня на форме были несколько связанных между собою списков, где информация в зависимом списке отображалась по ключу записи, выбранной в "родительском" (точнее - владельце) списке. И требовалось всего лишь иметь возможность редактирования на форме только лишь тех полей, что в ней были отображены - причем наиболее эргономично это было бы делать непосредственно в списке, не вызывая для редактирования форму объекта.. 
Ну и создание новых элементов списка, удаление их.. все должно было выглядеть как не в 1С приложениях - т.е. формы объектов вызываться не должны были, вся работа в списке и только с видимыми полями.. 

.. в итоге этого получилось достичь достаточно просто - но гибкости явно недоставало, что при внесении изменений (а они обязательно появляются в самый неудобный момент, не так ли?) привело бы к необходимости муторного переписывания кода - а я этого не очень люблю.. ну максимум - согласен на не_муторное!

В результате молитв, возносимых к богам ООП, снизошло озарение в виде луча ГАММА спектра, который проник ко мне через черепную коробку и породил брожение мыслей :)) И приснились мне паттерны и шаблоны.. и один из них - MVC (Model-View-Controller) - возвышался среди всех, что был мне знак..

В общем, долго ли, коротко ли - но на свет родилось следующее решение, которое врят ли является абсолютным "универсуумом" в плане потребительском, но вполне может сгодится (я надеюсь) аналогом паттерна MVC, широко применяемого при проектировании ООП приложений.

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

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

Итак, осмелюсь представить на суд аудитории сие "чудо в перьях".. Встречаем, как сказал бы Карлсон, Первую и Единственную (пока?) реализацию.. т.е. попытку применения паттерна Model View Controller в среде 1С Предприятие 8.2 на уровне конфигуратора, т.к. думаю.. (или надеюсь?), что внутри самой платформы он используется не единожды.

Пример работает для справочников, а для документов.. ну пока что не реализовано (надобности не было)..

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


Большая просьба, при использовании данного подхода в своих разработках, давать ссылку на эту публикацию.. ну типа, авторское право, что ли.. Я же даю ссылку на книгу "Паттерны проектирования". Авторы: Эрих Гамма. Ричард Хелм. Ральф Джонсон. Джон Влиссидес..

PS.
- Этот подход будет работать для платформы 8.х в целом.. Во всех версиях есть использованные в работе средства и инструменты (т.е. типы данных и методы)
- То что есть, писалось для тонкого клиента.. в web клиенте не проверял работает.. Если кто проверит - отпишитесь, как оно себя ведет.. в общем, я думаю, что работать должно. Если нет - буду допиливать.

ОБНОВЛЕНО 17/09/2010

+ теперь работает в web клиенте (протестировано в IE и Chrome)

25

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

Наименование Файл Версия Размер
MVC_web.dt
.dt 36,56Kb
14.01.13
116
.dt 36,56Kb 116 Скачать
TestKurs22_03.dt
.dt 33,98Kb
14.01.13
103
.dt 33,98Kb 103 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. zaebidze 31.08.10 01:47 Сейчас в теме
Молодчик!Только MVC с 1С-ной как-то не айс вяжется))))Программер который будет читать код не зная данного паттерна, быстрее застрелица! Да и для ООП он более актуален!А идея супер!
2. kote 499 31.08.10 03:13 Сейчас в теме
(1) .. думал я один бессоницей маюсь :) А на счет не айс, в общем согласен.. но давно было желание попробывать реализовать в 1С эти идеи.. как начал знакомиться с Java для самообразования.

Обидно как то за то, что лучшие мировые наработки использовать 1С не дает.
3. V_V_V 31.08.10 12:29 Сейчас в теме
Я конечно далек от ООП, но в чем конкретно была проблема с связями списков в 1С 8.2? О каком перепрограммировании (муторном) связи с Владельцем идет речь, если эта связь настраивается парой щелчков мышки? При этом становятся видны (и доступны на редактирование) только подчиненные элементы. Что сложного в редактировании элемента в списке без вызова форм?
4. kote 499 31.08.10 13:31 Сейчас в теме
(3) Ну и.. в общем я такого же мнения был, пока не начал делать такую форму.. Бъюсь об заклад, штатными средствами - без написания кода - у Вас ничего не выйдет.. особенно при создании нового объекта.
А если я не прав - пожалуйста, расскажите как сделать то же простыми настройками, буду очень благодарен Вам.

Ну и попробую ответить, как смогу..

"Что сложного в редактировании элемента в списке без вызова форм?"- ну хотя бы то, что на месте можно редактировать _только данные табличных частей_, но никак не поля списка, данные в котором, - элементы справочника.. ну и при этом - в списке же - нужно не только изменять поля, но и добавлять новые элементы - тоже без вызова формы объекта..

"О каком перепрограммировании (муторном) связи с Владельцем идет речь, если эта связь настраивается парой щелчков мышки?" - .. по опыту поддержки значительно"меняных" конфигураций - особенно в части форм - при обновлении настройки, "нащелканные" мышкой как правило слетают и/или забываются.. код поддерживать проще, быстрее и дешевле.. а если изменения (или построение) форм прописать в код, в событие ПриСоздании, например, - то перенос изменений форм при обновлении ГОРАЗДО быстрее.. Единственное неудобство поначалу - в конфигураторе сразу не видишь форму в доработанном виде.. но это поначалу - когда по привычке лезешь смотреть макет формы :)

5. tsd 148 31.08.10 15:24 Сейчас в теме
(4) а при чем здесь Гагарин? :)
nonamek27; LelikOFF; +2 Ответить
6. kote 499 01.09.10 00:02 Сейчас в теме
(5) Тык, это я шлем примеряю.. Видимо, придется в космосе искать 1Сников, интересующихся шаблонами проектирования ;)
18. zfilin 2092 08.06.11 22:37 Сейчас в теме
10. Збянтэжаны Саўка 02.09.10 17:25 Сейчас в теме
(5) Присмотритесь. Это не Гагарин, возможно это фото автора или еще кого-то, но никак не Гагарина.
11. tsd 148 02.09.10 17:40 Сейчас в теме
(10) уже присмотрелись. Как признался автор, энто он примеряет старые шмотки.
Видать взлететь собрался :D
12. kote 499 03.09.10 10:25 Сейчас в теме
(10)(11) .. Для желающих отправиться со мной - скафандры выдают на http://www.tinza.ru/flash.photofx.php 8-)
7. tango 484 01.09.10 09:51 Сейчас в теме
так это - (0) - шаблон проектирования?
всегда казалось, что ШП - это типовые конфигурации
8. kote 499 01.09.10 12:40 Сейчас в теме
(7) типовые конфигурации - все таки готовые решения.. а вообще 1С страдает тем, что заимствует термины, но понятия в них вкладывает свои, что порой приводит к путанице.. я не слышал, но может и типовые конфигурации они обозвали шаблоном проектирования.
9. tango 484 01.09.10 16:04 Сейчас в теме
(8) "1С страдает" - ...жЖоООжЬ... :)
13. Rabajaba 318 07.09.10 17:37 Сейчас в теме
Плюс за попытку реализации.
Немного размышлений вслух:
1. Зачем редактировать в списке, если есть форма объекта? Я переход к SDI интерфейсу вижу как попытку сделать ввод и чтение данных процессом последовательным, т.е. если что-то начал делать, то делай до конца, а не переключайся между окнами нонстопом. Эта идея 1С мне очень нравится, у пользователей теперь не по 20-25 окон а 3-4, спустя месяц работы говорят удобнее;
2. По трафику реализация - жесть. Фильтровать список отбором динамического списка 50к элементов в 15-30 позиций это 100-500Б у меня, у вас на 2-3 элемента 5-6кБ;
3. В реалиях 1С идея мало необходима, т.к. в конечном итоге все равно описываются реквизиты, штатными же средствами необходимо установить точные вызовы событий, ИМХО вид в профиль. 1С штука прикладная, поэтому, на мой взгляд, делать сверхуправляемыми списки, при наличии типа "Динамический список" с произвольным запросом, мало необходимо;
4. Пример простой работы с отборами в списках (2 метода в глобальном модуле):
Функция ПолучитьЭлементОтбораКомпоновки(Отбор, ИмяПоля) Экспорт
	// разберем по типам отбора
	Результат = "";
	флПоиска = ЛОЖЬ;
	// сначала попробуем найти
	Для каждого Элемент из Отбор.Элементы Цикл
		Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля) Тогда
			Результат = Элемент;
			флПоиска = ИСТИНА;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	// не нашли - создадим
	Если НЕ флПоиска Тогда
		Результат = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Результат.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции
Функция УстановитьЗначениеЭлементаОтбораКомпоновки(Отбор, ИмяПоля, Значение, ВидСравнения = "") Экспорт
	ЭлементОтбора = ПолучитьЭлементОтбораКомпоновки(Отбор, ИмяПоля);
	ЭлементОтбора.Использование = ИСТИНА;
	ЭлементОтбора.ПравоеЗначение = Значение;
	Если ВидСравнения = "" Тогда
		ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	КонецЕсли;
	ЭлементОтбора.ВидСравнения = ВидСравнения;
	
	Возврат ЭлементОтбора;
КонецФункции
Показать

Итого как у меня выглядит связь двух списков:
&НаКлиенте
Процедура ТаблицаСпискаПриАктивизацииСтроки(Элемент)
		УстановитьЗначениеЭлементаОтбораКомпоновки(РеквизитФормыТаблица.Отбор, "Объект", Ссылка);
КонецПроцедуры
14. kote 499 08.09.10 12:29 Сейчас в теме
(13) Спасибо за интерес..
"Зачем редактировать в списке, если есть форма объекта?"
.. ну а зачем пользователю показывать ненужные ему поля, которые в форме объекта представлены все? Или под каждую роль делать отдельную форму с отдельным набором полей? У меня набор полей определяется запросом, являющимся источником данных для конкретного списка - проще манипулировать полями запроса, чем делать формы под каждую роль или использовать штатные средства управления доступом на уровне полей в платформе, ИМХО.

"..SDI.. а не переключайся между окнами нонстопом. Эта идея 1С мне очень нравится.."
.. как правило, подробно разработанная модель данных, при использовании 1С, вызывает то, что появляются множество объектов, и, соответственно, множество форм - для редактирования каждого из них.. именно от этого и хотелось уйти, т.е. получить удобный SDI интерфейс + сохранить свободу в реализации модели данных..

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

"В реалиях 1С идея мало необходима, .. делать сверхуправляемыми списки, при наличии типа "Динамический список" с произвольным запросом, мало необходимо.."
Мне, прежде всего, было необходимо иметь возможность редактировать поля объекта непосредственно в списке - вот этого в 1С нет. Остальное - последствия.
16. Rabajaba 318 09.09.10 11:46 Сейчас в теме
(14)
.. как правило, подробно разработанная модель данных, при использовании 1С, вызывает то, что появляются множество объектов, и, соответственно, множество форм

попробую более подробно описать как я вижу работу с интерфейсами 8.2:
1. Пользователю нужно что-то выбрать из списка - форма списка должна быть легкой, интуитивно понятной и не нагруженной кнопками и формами. Если в списке чего-то не хватает, то пользователь жмет добавить и открывается полная форма объекта. Как результат: окна модальны относительно родителя, т.е. он не сможет вернуться в документ, в котором выбирал номенклатуру, пока не закончит ввод номенклатуры. Из-за этого у меня было много проблем с семеркой (там при открытии модально списков нельзя было добавлять элементы). Т.е. никогда не остается открытых не понятно откуда окон.
2. Управление видимостью элементов ИМХО проще, чем динамически генерить тексты запросов. Да и не забываем, что это управляемый интерфейс. Я уже своих научил - сначала на форму я размещаю все реквизиты все, потом пользователи снимают видимость того, что их не интересует. Т.е. проще управлять видимостью реквизитов от ролей, нежели генерить разные запросы от ролей. Можно даже унифицировать (пробовал уже) и хранить настройки видимости реквизитов в каком-нибудь справочнике, для централизованного управления;
3. Небольшое удобство для программиста - не нужно определять все проверки и события модификации объекта как в форме списка, так и в форме объекта. Я уже сам привык (даже как-то удобнее), что справочник на два реквизита редактируется в отдельной форме.
4. Динамический список удобнее таблицы значений, т.к. его можно настроить как угодно (отборы, сортировки и условное оформление).
ИМХО:
Не вижу смысла редактировать объекты в списке.
Применение вашей реализации вижу удобным только для различных универсальных журналов, списков и т.п.
17. kote 499 10.09.10 11:11 Сейчас в теме
(16) спасибо за подробное изложение опыта.. буду изучать.

PS // чую, что скоро ценность комментариев станет больше, чем самого сабжа статьи ;)
15. kote 499 09.09.10 10:22 Сейчас в теме
(13) А вообще, думается, что можно на основе динамических списков сделать все это.. Как нибудь попробую попробовать сотворить это с использованием модели MVC.. Спасибо, еще раз, за общение.
19. zfilin 2092 08.06.11 22:48 Сейчас в теме
20. AlexO 127 08.12.11 01:24 Сейчас в теме
Я так понимаю, что это интерактивная связь двух динамических списков?
21. kote 499 22.12.11 04:03 Сейчас в теме
(20) Если смотреть чисто функционально - то можно и так сказать.. но сам подход - везде доказал свою жизнеспособность и эффективность. Только до прикладных программистов 1С не дошел - в силу специфичности платформы и продвигаемых фирмой 1С наилучших практик использования своей платформы..
.. на практике - могу сказать, что этот, ээээ.. "скилл" :) помог мне ускорить работу пользователей на большой базе местного лидера рынка по продажам 1С - в среднем в 8 раз.. а на самом "напряжном" моменте - в 22 раза, примерное. Просто переписал интерфейс CRM системы (подсистема от фирмы Рарус). А там многие "спецы" сломались - используя стандартный подход и рекомендации от 1С.
22. Rustig 1195 15.01.12 19:47 Сейчас в теме
(0) покажите в публикации алгоритмы, чтобы не скачивать ваши файлы. сначала заинтересуйте алгоритмами, прежде чем вынуждать людей скачивать что-то. за это минус.
в описании много лишнего (по-моему): космос, пространные мысли об ООП, каких-то Модель-Вью-Контрол...
Только из комментарий стало ясно, по какому поводу разговор. Сталкивался с этой проблемой. Скажу так, что в 1С (дополнительно к типовым спискам документов и элементов справочника) редактирование в списке реализуется через ТаблицуЗначений, в которую вы сами заливаете нужные вам поля нужных вам объектов (справочников, документов, характеристик), далее для этой таблицы значений через командную панель сами программируете "Добавить", "Удалить", "Добавить копированием" и так далее. Объем писанного кода безусловно увеличивается в разы, если сравнить с типовыми средствами редактирования в списках элементов справочника.
Но если вы это сделаете, вы будете в плюсе, потому что это понравится вашим клиентам. :)
Потому что это реально удобно пользователям, но уже не так гибко разработчикам.
zainaz; KAPACEB.AA; +2 Ответить
23. Rustig 1195 15.01.12 22:48 Сейчас в теме
Пример, представленный в файлах, выбран неудачно, потому что все равно остаются непонятными преимущества перед стандартными динамическими списками. Также, особых комментариев в коде нет, что усложняет расшифровку заложенных алгоритмов и самой идеи. В коде есть отбор списка при активизации элемента в другом списке, собственное перепрограммирование создания и удаления элементов списка, то есть в целом ничего нового... Может я что не увидел? ;)
24. kote 499 19.01.12 18:39 Сейчас в теме
(23) Вы, видимо, сути так и не поняли - суть не в организации связанных списков. Суть - в возможности редактирования элементов справочников в списке, _без открытия формы элементов_.

Если Вы сможете с помощью _любых штатных 1С-ских механизмов_ организовать редактирование на одной форме _в списке_ элементов документов/справочников - то я бы признал Вашу правоту.
25. w-divin 18.05.12 10:07 Сейчас в теме
.. ну а зачем пользователю показывать ненужные ему поля, которые в форме объекта представлены все? Или под каждую роль делать отдельную форму с отдельным набором полей? У меня набор полей определяется запросом, являющимся источником данных для конкретного списка - проще манипулировать полями запроса, чем делать формы под каждую роль или использовать штатные средства управления доступом на уровне полей в платформе, ИМХО.

Специально для этого придумали ФункциональныеОпции, ВидимостьПоРолям ну и как уже говорилось произвольный запрос у динамического списка

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


Интересно было бы посмотреть на работу такого механизма в веб-клиенте при 500-800 тыщь строк...
26. kote 499 09.06.12 02:57 Сейчас в теме
(25)
Интересно было бы посмотреть на работу такого механизма в веб-клиенте при 500-800 тыщь строк...


Не, спасибо :) Тут вот на примере тестов все сделано - вот для таких вот случаев оно в самый раз..

А где это на стандартных то механизмах можно посмотреть? Мне кажется - такого на практике не бывает, чтоб пользователю нужно было показать все это разом.
Оставьте свое сообщение

См. также

Рекомендательный сервис на основе коллаборативной фильтрации на 1С. Расширение формы подбора для УТ 11.4 30

Инструменты и обработки Программист Расширение (cfe) v8 ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m) Оптовая торговля Розничная торговля Практика программирования Математика и алгоритмы

В данной разработке реализован механизм рекомендаций товаров по принципу схожести товаров в корзине на основе алгоритма Item-to-Item от Amazon. Разобран алгоритм с демо базой и сделано расширение для УТ11.4 которое добавляет в форму подбора таблицу рекомендаций. Протестировано на 8.3.13.1865 на Управление торговлей, редакция 11 (11.4.8.63)

3 стартмани

25.09.2019    1766    5    informa1555    21       

Конвейер проверки качества кода 117

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования Математика и алгоритмы Разработка

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    4716    10    Stepa86    35       

Еще раз о рабочих днях. Быстрый способ расчета в запросах 4

Статья Программист Архив с данными v8 Абонемент ($m) Практика программирования Математика и алгоритмы Разработка

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

1 стартмани

20.06.2019    1681    Alxby    3       

Функциональное программирование в 1С 6

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Математика и алгоритмы Разработка

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

1 стартмани

28.03.2019    5486    alexey.kutya    26       

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

Статья Программист Архив с данными v8 Абонемент ($m) Практика программирования Математика и алгоритмы Разработка

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

1 стартмани

04.03.2019    2535    Alxby    4       

Жизненный цикл управляемой формы. Шпаргалка разработчика 233

Статья Программист Архив с данными v8::УФ 1cv8.cf Абонемент ($m) Практика программирования Математика и алгоритмы

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

1 стартмани

29.06.2018    21192    51    stas_ganiev    22       

Принципы ООП в 1С на примере реализации pattern Decorator 18

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Математика и алгоритмы

В данной статье будет рассмотрен пример реализации GoF паттерна проектирования decorator в среде разработки 1С. Основная цель данного шаблона, это возможность динамического расширения функциональности базового класса. Сразу оговорюсь, т.к. в 1С нет ООП, это будет не чистый пример реализации данного шаблона, однако свою задачу данный пример будет решать.

1 стартмани

21.06.2018    7817    4    lazarenko    6       

Строим "фасады" в 1С 60

Статья Программист Конфигурация (md, cf) v8 Россия Абонемент ($m) Практика программирования Математика и алгоритмы

Как реализовать функционал, чтобы не было “мучительно больно” при расширении требований.

1 стартмани

04.05.2018    14412    3    ktb    41       

Нечеткое сравнение строк. Метод Джаро-Винклера на 1С 128

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8::УФ 1cv8.cf Абонемент ($m) Математика и алгоритмы

Схожесть строк. Метод Джаро-Винклера. В обработке реализован алгоритм нечеткого сравнения строк.

3 стартмани

20.04.2018    14126    66    Serg1701    19       

"Взлом" теста "1С:Профессионал" методом машинного обучения 83

Статья Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Практика программирования Математика и алгоритмы

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    15095    88    ildarovich    18       

Случайность, совпадение, закономерность. Генератор случайных чисел 6

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Математика и алгоритмы Игры

Объект ГенераторСлучайныхЧисел удобно выдает случайные числа в заданном интервале значений. Исследование особенностей, рассуждения на тему случайных чисел, практика применения. Увлекательно в игровой форме можно исследовать работу генератора случайных чисел.

1 стартмани

20.01.2018    15577    2    Ликреонский    58       

Github и 1С. Пошаговая инструкция на конкретном примере 219

Статья Программист Архив с данными v8 Абонемент ($m) Математика и алгоритмы

Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1С), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue.

1 стартмани

26.10.2017    34303    5    BlizD    51       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38358    166    DarkAn    86       

Планы обмена. Скрестить ужа с ежом ... миссия выполнима =) 16

Статья Программист Архив с данными v8 Windows Абонемент ($m) Практика программирования Математика и алгоритмы

Небольшое исследование возможности улучшить работу планов обмена 1С средствами SQL Server: view and triggers. Результаты имеют больше теоретическое, чем практическое значение. Однако тем, кто ищет нестандартные решения, статья может понравиться =)

1 стартмани

10.01.2017    10584    3    zhichkin    4       

Многопоточная выгрузка одного сообщения обмена 15

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8

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

1 стартмани

05.12.2016    11917    2    zhichkin    24       

1С+Классы. Версия-0 52

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент Математика и алгоритмы

Разработано ООП-расширение языка 1С, включающее (но не ограничивающееся): Классы как абстрактные типы данных с элементами «переменная», «свойство», «функция», «процедура»; Интерфейсы как абстрактные классы без элементов состояния («переменная») и без привязки к реализации методов (свойств, процедур, функций) при определении; Имплементация (реализация) интерфейсов классами; - одиночное открытое наследование; Области видимости «внутренняя» (private), «экспорт» (public), «защищенная» (protected); Статические элементы классов (общие для всех экземпляров класса); Замещение (переопределение реализации) методов при наследовании – «виртуальные методы, свойства»; Сокрытие (затенение) обычных (не замещаемых) элементов при наследовании; Перегрузка процедур и функций по количеству и типам данных аргументов; Конструкторы класса; Деструктор класса; Слабые ссылки; Делегаты.

1 стартмани

28.10.2016    16423    14    IntelInside    68       

Генетический алгоритм для решения простой задачки 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы

Генетический алгоритм в решении задачи: Необходимо расставить правильно (по другому) скобки, чтобы получилось 850 (1 + 2) (3 + 4) (5 + 6) (7 + 8) (9 + 10) (11 + 12) (13 + 14) + 15

1 стартмани

26.09.2016    7599    4    eugeniezheludkov    4       

Объектные блокировки 25

Инструменты и обработки Программист Конфигурация (md, cf) v8 Россия Абонемент ($m) Практика программирования Математика и алгоритмы

При работе с объектными данными (справочники, документы, планы счетов и т.д.) система «1С:Предприятие» обеспечивает два вида объектных блокировок: пессимистическую и оптимистическую. Они позволяют выполнять целостные изменения объектов при одновременной работе нескольких пользователей.

1 стартмани

17.08.2016    21715    7    Ranis1286    5       

Использование методов глобального контекста в системе компоновки данных или недокументированные возможности СКД 160

Инструменты и обработки Программист Внешний отчет (ert,erf) v8::УФ v8::СКД 1cv8.cf Windows Абонемент ($m) Практика программирования Математика и алгоритмы

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

1 стартмани

05.08.2016    30397    27    klinval    39       

Еще один способ расчета остатков на каждый день в запросе 128

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 Абонемент ($m) Математика и алгоритмы Практика программирования

Предлагается новый способ расчета остатков на каждый день (час, минуту, секунду) в запросе. Способ не требует предварительного формирования таблицы дат и также подходит для расчета курсов валют, цен номенклатуры и других периодических сведений на каждую дату периода. На больших объемах данных предлагаемый способ может превосходить по быстродействию ранее известные методы из-за линейной (в лучшем случае) зависимости трудоемкости от длины периода.

1 стартмани

24.04.2016    28429    46    ildarovich    21       

Пример рекурсивной выгрузки иерархической структуры в XDTO 21

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы Внешние источники данных WEB

Решил реализовать иерархию в пакете XDTO и выгрузить ее рекурсивно. Задача оказалась нетривиальной, хотя и весьма простой. Изысканиями решил поделиться с народом, чтобы не пропадало народное добро.

1 стартмани

26.02.2016    29212    14    starik-2005    3       

Нелинейная многомерная оптимизация - это просто. Часть 3. Имитация отжига 39

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Математика и алгоритмы Универсальные функции

Метод имитации отжига для поиска оптимального решения. И, как обычно, универсальная функция поиска этого самого решения.

1 стартмани

13.10.2015    14840    22    dusha0020    5       

Пример сериализации объектов в 1С 8.3 и их восстановления из сериализованных данных 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Математика и алгоритмы Обмен через XML Перенос данных из 1C8 в 1C8

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

1 стартмани

05.07.2015    22349    78    katkov_a    29       

Степень сходства двух наименований справочника 13

Статья Программист Внешний отчет (ert,erf) v7.7 v8 Windows Абонемент ($m) Математика и алгоритмы

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

1 стартмани

25.02.2015    17487    etmarket    34       

Написание простой обработки через тестирование 66

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы Практика программирования

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

1 стартмани

24.02.2015    23428    16    Alien_job    40       

Парсинг сайта без использования встроенного браузера для начинающих 115

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Математика и алгоритмы WEB

Данная статья показывает пример парсинга одного конкретного сайта со своей структурой, на основе которого можно понять суть, методы и без особых проблем парсить другие сайты. Здесь описано: подключение к серверу, сохранение html-страницы на диск, загрузка и цикличный обход ее структуры, рекурсивный парсинг, загрузка картинок по ссылке на диск.

1 стартмани

20.11.2014    34445    176    angernaughts    34       

Куайн (Программа, выводящая свой исходный код на экран) 1

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Математика и алгоритмы

Обработка позволяет насладится реализацией этой интересной, и совершенно бесполезной с практической точки зрения задачей.

1 стартмани

25.08.2014    7932    atridis    7       

Определение кратчайших путей, критических путей одним запросом 104

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы

Еще два примера применения алгоритма каскадного матричного умножения, впервые описанного в статье «Транзитивное замыкание запросом» http://infostart.ru/public/158512/

1 стартмани

07.04.2014    33819    58    ildarovich    31       

Пророк в своем отечестве или Читаем XML с помощью XDTO 188

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы

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

1 стартмани

29.01.2014    39753    86    majmyl    53       

Полная методичка к курсу "Программирование 8.2" 203

Инструменты и обработки Программист Сборник задач v8 1cv8.cf Абонемент ($m) Математика и алгоритмы

580 страниц знаний! Публикую методичку, а точнее стенограмму курса по подготовке программистов 8.2.

10 стартмани

09.01.2014    47844    1366    GROOVY    100       

Включаем звук в 1С. Доступно и всерьез. 53

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Математика и алгоритмы Универсальные функции

Как сделать воспроизведение звука в 1С без внешних компонентов? Решаем средствами интернета. Для тонкого, толстого и web-клиента.

1 стартмани

30.12.2013    73034    258    sikuda    27       

Методический материал. Работа с запросами 42

Инструменты и обработки Программист Курс v8 Windows Абонемент ($m) Практика программирования Математика и алгоритмы

Краткое методическое пособие для изучения запросов в 1С

1 стартмани

23.12.2013    16036    283    rayastar    27       

Определитель матрицы 12

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Практика программирования Математика и алгоритмы

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

1 стартмани

28.11.2013    10790    6    zaxarovsky    8       

Квадратный корень в запросе 1С 51

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Практика программирования Математика и алгоритмы

Язык запросов 1С не позволяет вычислить квадратный корень 1С. Квадратный корень может пригодиться при вычислении среднеквадратического отклонения или геометрических вычислениях.

1 стартмани

24.10.2013    24050    10    Elisy    53       

Агрегатное суммирование строк в запросе – сложно, но не невозможно 106

Статья Программист Нет файла v8 Абонемент ($m) Математика и алгоритмы

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

1 стартмани

09.09.2013    67906    59    ildarovich    53       

Задачи о 5 и 9 ферзях 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Математика и алгоритмы

Задача о ферзях-часовых. На шахматной доске надо расставить 5 ферзей, чтобы они держали под боем все клетки доски. Задача В. Франгена, расставить на шахматной доске 10 “белых” и 9 “чёрных” ферзей так, чтобы ни один из них не находился под ударом противника

1 стартмани

31.08.2013    17354    1    scientes    5       

АЦРК: Многовариантный автоматический запрет редактирования (для конфигурации УТ 10.3) 9

Статья Системный администратор Программист Бухгалтер Пользователь Нет файла v8 УТ10 Закрытие периода Абонемент ($m) Математика и алгоритмы Администрирование данных 1С

В этой статье описывается усовершенствованная технология автоматической установки даты запрета редактирования Во-первых, можно определить несколько стратегий запрета редактирования с разными параметрами. Например, запрет в днях, запрет доступа в предыдущие месяцы кварталы и т.п., с указанием отступа от текущей даты. То есть для некоторых пользователей (рядовых менеджеров) при входе в базе будет устанавливаться запрет по вчерашний день, для других (старших менеджеров) на 5 дней назад, для третьих (администраторов базы или руководителей отдела) - запрет предыдущего месяца с отступом в 10 дней.. Во-вторых, запрет будет устанавливаться для ВСЕХ без исключения пользователей базы данных. Для самых привилегированных это будет максимальная глубина, но запрет будет установлен. Управление этой системой осуществляется через механизм дополнительных прав пользователей. При необходимости пользователь с полными правами может открыть для себя закрытый период, но только на текущий сеанс работы.

1 стартмани

22.07.2013    18979    26    acrk    9       

Демо связи веб сервисов 1С и php 26

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

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

1 стартмани

19.07.2013    29569    153    Трактор    20       

Разработка многоязычной системы 31

Статья Программист Нет файла v8 Абонемент ($m) Математика и алгоритмы

В статье затронуты некоторые аспекты многоязычности системы с точки зрения их технической реализации

1 стартмани

20.06.2013    18855    55    YOr!k    54       

Передача аргумента, полученного по ComConnector, на сервер 4

Статья Программист Нет файла v8 Абонемент ($m) Математика и алгоритмы

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

1 стартмани

20.03.2013    5108    7    asved.ru    3       

Расчет SHA-1 хеша средствами 1С. Битовые операции в 1С или урок двоичной математики 61

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы

Расчет хеша SHA-1 без использования каких-либо внешних компонет - возможно ли это в 1Cv8? Оказывается вполне возможно!

1 стартмани

13.03.2013    27196    138    Антон Ширяев    40       

Автоформатирование кода 54

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Обработки Чистка базы Справки Производительность и оптимизация (HighLoad) Инструментарий разработчика Практика программирования Универсальные обработки Решение задач на 1С:Специалист Математика и алгоритмы Администрирование данных 1С Разработка Тестирование и исправление Стартеры 1С

Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени? И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок. Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя. Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

1 стартмани

19.12.2012    35434    179    Sibars    57       

Анализ цикломатической сложности кода 95

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Разработка внешних компонент Математика и алгоритмы

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

1 стартмани

13.12.2012    21454    199    Spitfire    30       

Подсистема допроведения документов 0

Инструменты и обработки Программист Конфигурация (md, cf) v8 БП2.0 УТ10 УПП1 Россия Windows Абонемент ($m) Практика программирования Математика и алгоритмы

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

1 стартмани

01.10.2012    12453    30    SergAn    40       

Основы тестирования доработок 79

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Математика и алгоритмы

Попытался 1С консультантам-новичкам объяснить принципы тестирования доработок, принимаемых у программистов 1С. И описать частые ошибки в самих доработках, и какие действия нужны для обнаружения этих ошибок (без погружения в код).

1 стартмани

20.08.2012    23721    107    1СERP    17       

Конспект лекций по курсу «Автоматизированные информационные системы» 31

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Математика и алгоритмы

Конспект лекций по курсу «Автоматизированные информационные системы» составлен на основании требования Государственного образовательного стандарта среднего профессионального образовании к содержанию и уровню подготовки выпускника по специальности 230103 «Автоматизированные системы обработки информации и управления». В конспекте есть общие сведения о методике 1С:Профкейс. Конспект лекций разработал: канд. техн. наук, доцент Космачев С.Н.

1 стартмани

07.06.2012    21431    183    ksnik    19