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

21 июн. 2014 г.

Генерация XGML-диаграммы движений документов для yEd

Описанное ранее создание UML-диаграммы движений имеет существенный недостаток - результат на выходе статичен, а хотелось бы иметь возможность в последствии еще внести изменения в схему. Поэтому решил написать генерацию диаграммы для какого-нибудь редактора. Искать долго не пришлось, выбор пал на yEd Graph Editor, поскольку уже продолжительное время использую ее для создания разного рода диаграмм и полностью ею доволен. Программа позволяет читать данные из .xgml файлов, которые представляют собой текстовый XML. Разобравшись по быстрому со структурой файла, набросал для себя простенькую обработку.

24 мая 2014 г.

Реализация иерархии в перечислениях

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

5 февр. 2014 г.

Получение уникального идентификатора ссылки в СКД

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


Далее проведем эксперимент по быстродействию получения результата через запрос с последующей обработкой выборки и вариантов с использованием СКД.


30 янв. 2014 г.

Динамический отчет (СКД)

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


Потом возникла мысль попробовать объединить все схемы в один отчет, чтобы не плодить лишних объектов в конфигурации. При этом количество вариантов в этих схемах заранее неизвестно. Ok, challenge accepted.

29 янв. 2014 г.

Генерация UML диаграммы движений документов

При разработке более-менее сложной учетной системы разработчик обычно пытается предварительно определиться с взаимосвязями объектов этой системы. Может подойти как обычный листок бумаги с карандашом, так и специализированное ПО. Так же при проектировании диаграмм можно придерживаться определенных стандартов, например UML (Unified Modeling Language). С UML можно познакомиться с помощью курса "Моделирование на UML", почитать в онлайне книгу "Моделирование на UML" или курс лекций "Нотация и семантика языка UML" . Подборку программного обеспечения для создания UML диаграмм можно посмотреть по этим ссылкам: List of Unified Modeling Language toolsИнструменты UML-моделирования. Я в своих экспериментах использовал для генерации диаграмм онлайн-редактор CodeUML и плагин к IDE Eclipse, который можно скачать на сайте PlantUML.

14 янв. 2014 г.

Интерактивный контроль заполнения полей

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

В итоге получилось простое решение с использованием обработчика ожидания.

10 янв. 2014 г.

Программирование за 21 день - Complete!

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

29 нояб. 2013 г.

Программирование в 1С - за 21 день!

На днях Евгений Гилев и Насипов Фарит анонсировали запуск нового бесплатного курса "Программирование в 1С - за 21 день!" по платформе 1С: Предприятие 8.3. После подписки на курс в течении этого периода ежедневно будут приходить ссылки на обучающие видеоматериалы (теория, задание по теме и вариант решения). Прохождение тренинга займет 40-60 минут ежедневно. В процессе изучения рассматриваются все основные объекты конфигурации, бизнес-процессы и задачи, отчеты и фишки нового интерфейса "Такси". В результате получаем прокачку компетенций и CRM-систему.

9 авг. 2013 г.

Загрузка XML во Flash-диаграмму

Описанный в предыдущем посте метод передачи данных через flashvars имеет ограничение на объем передаваемых данных. Поскольку в данном примере будет рассматриваться формирование диаграммы, то стоит предполагать что входные данные могут значительно превышать это ограничение, а так же отличаться от текстового формата (например, картинки или аудиофайлы). Поэтому имеет смысл формировать массив данных в отдельном файле, а через flashvars передавать только путь к этому файлу. Данные из 1С будем выгружать в XML, поскольку в ActionScript3 есть встроенные методы чтения таких файлов. Так же следует учесть следующие особенности взаимодействия Flash'а с внешними данными: кэширование данных и работу с локальными файлами.

30 июл. 2013 г.

Эксперименты с отбором в подборе в список значений


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

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

21 мая 2013 г.

Программная установка типа реквизита табличной части

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

&НаКлиенте
Процедура ДобавитьВалюту(Команда)
    
    ТС = Объект.ТЧ.Добавить();
    ТС.Имя = "Валюта";
    ТС.Значение = ПредопределенноеЗначение("Справочник.Валюты.ПустаяСсылка");
    Элементы.ТЧ.ПодчиненныеЭлементы.ТЧЗначение.ВыбиратьТип = Ложь;
    
КонецПроцедуры
 
После решил добавить решению универсальности и реализовать программное формирование контекстного меню для табличной части справочника с составным реквизитом с заранее неизвестным перечнем типов.

14 мая 2013 г.

Способы программной установки отборов в управляемых формах

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

1 мая 2013 г.

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

Тестовая конфигурация будет содержать следующие объекты:
  • Справочники данных Контрагенты, КонтактныеЛица, служебный справочник ХранимыеРеквизиты;
  • Документ ОплатаПокупателя;
  • Периодический регистр сведений ИсторияРеквизитов.
Обращаться к  процедуре сохранения истории реквизитов будем через подписку на события ЗаписьИстории, чтобы не прописывать код вызова в модуль каждого объекта.

21 мар. 2013 г.

СКД: делаем свой вывод списка в форме II

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

20 мар. 2013 г.

СКД: делаем свой вывод списка в форме

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

25 февр. 2013 г.

Вывод изображений в СКД


К сожалению, на данный момент СКД не позволяет через свои стандартные настройки выводить картинки, хранящиеся в реквизитах типа "ХранилищеЗначений" в виде изображений в результирующий табличный документ. Тем не менее, с помощью небольшой доработки, это можно реализовать.
Я добавлю в свою тестовую конфигурацию справочник "ИзображенияНоменклатуры", подчиненный справочнику "Номенклатура", с реквизитом "Изображение", тип "ХранилищеЗначений".

22 февр. 2013 г.

Выгрузка картинок базы в XML

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

22 янв. 2013 г.

Кэширование изображений

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

Рассмотрим на примере простой конфигурации, которая содержит справочник "Контрагенты" и подчиненный ему справочник "Файлы контрагентов". Справочник "Файлы контрагентов" содержит реквизит ХранилищеИзображения, тип ХранилищеЗначения. Эти данные мы и будем кэшировать при обращении.

9 сент. 2012 г.

QlikView + 1С без 1С коннектора II

В предыдущем посте мы подключались из QlikView к 1С по COM-соединению. Сейчас рассмотрим обратное взаимодействие, подключимся из 1С к QlikView и загрузим данные.
Для экспериментов используем демо-базу 1С:Управление торговлей 11. Создаем новый документ QlikView, включаем возможность динамического обновления, скрипт загрузки настраиваем так же, как в прошлом примере.