8 апр. 2013 г.

Запись во внешний источник данных 1С

Начиная с платформы 8.2.14 в 1С появилась коллекция "Внешние источники данных". Использование объектов этой коллекции позволяет работать с внешними данными через ODBC. Стандартные механизмы платформы позволяют просматривать данные и использовать их в запросах. Тем не менее, на примере взаимодействия с SQL покажу возможность работы с внешними источниками на прямое добавление/изменение данных SQL из 1С.

2 апр. 2013 г.

Особенности получения последних документов

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

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

29 мар. 2013 г.

Простой способ сохранения таблицы значений в файл

Для использования данных таблицы значений в сторонних программах необходимо выгружать их в текстовый файл, dbf, XML, Excel, либо другие. Но если данные таблицы планируется использовать только в 1С, то можно использовать такие методы, как XMLСтрока/XMLЗначение, либо ЗначениеВФайл/ЗначениеИзФайла. Мне, например, это пригодилось, когда пришлось формировать большой объем различных по виду документов с последующей правкой процедур проведения. Поэтому, чтобы можно было быстро восстановить перечень обрабатываемых документов после применения исправлений, я как раз и использовал эти способы.

21 мар. 2013 г.

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

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

20 мар. 2013 г.

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

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

1 мар. 2013 г.

Получение коллекции областей макета табличного документа

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

25 февр. 2013 г.

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


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

22 февр. 2013 г.

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

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

22 янв. 2013 г.

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

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

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

17 янв. 2013 г.

Загрузка курсов валют через web-сервисы cbr.ru

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

Нам понадобится создать:
- периодический регистр сведений КурсыВалют, периодичность - день;
- константу, в которой мы будем хранить список валют, курс которых нас интересует;
- общий модуль УправлениеВалютами, в который поместим все необходимые процедуры и функции.

Для загрузки будем использовать web-сервис DailyInfo, метод GetCursOnDate. Входным параметром для этого метода служит дата, на которую мы хотим получить данные.

10 янв. 2013 г.

Получение данных из таблицы QlikView

Продолжая изучать API QlikView, меня заинтересовала возможность получения данных из таблиц (объект TableBox) напрямую, по COM-соединению. Раз когда-то понадобилось получение данных из Excel, то и подобный вариант может кого-то заинтересовать. Покопавшись в документации, нашел два способа получения данных из этих объектов. Пример для управляемого приложения.

25 окт. 2012 г.

Оптимизация 1С

Допустим, нам необходимо посмотреть, как можно ускорить формирование отчета. Мы запускаем отладчик, включаем замер производительности, находим слабые места и оптимизируем код/запрос. Сделали, в тестовой базе результаты устраивают, а в действующей базе опять медленно. А у нас, оказывается, файловая БД и с ней 20 пользователей работают по сети, и тормоза наблюдаются не только в отчете, но и в работе с базой в целом. В этом случае ситуацию можно разрешить, перенеся базу на связку Сервер 1С + СУБД, MS SQL например. Но, чем больше подключений к базе, тем больше необходимо уделять внимание оптимизации не только кода, но и производительности серверной части и организации СУБД.

9 окт. 2012 г.

Загрузка внешних данных в СКД

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

2 окт. 2012 г.

Выгрузка в QlikView из консоли запросов

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

1 окт. 2012 г.

QlikView + 1С, сохранение в QVD

Продолжаем изучать взаимодействие QlikView и 1С. Сегодня рассмотрим выгрузку данных в файл QVD. В дальнейшем, эти файлы можно подключать к другим проектам QlikView. Файлы QVD имеют меньший размер по сравнению с другими файлами данных, что несомненно является весомым аргументом для их использования при больших объемах данных. Для сравнения, .csv - больше примерно в два раза, .xls - три, .xml - 5-7 раз.

30 сент. 2012 г.

Добавление скрипта загрузки в QlikView из 1С


Продолжаю серию публикаций "QlikView + 1С без 1С коннектора". Как оказалось, API QlikView позволяет получить доступ к скрипту загрузки документа. Данную возможность можно использовать для генерации своего скрипта на стороне 1С, например, когда точное количество колонок таблицы результата будет известно после выполнения запроса.
Нижеприведенный код считывает из параметров документа QlikView скрипт загрузки, производит добавление строк и помещает скрипт обратно в документ:

24 сент. 2012 г.

Работаем с WS-ссылками

Рассмотрим работу 1С со сторонними web-ресурсами на примере ЦБ РФ. Описание публикуемых web-сервисов можно найти здесь http://www.cbr.ru/scripts/root.asp.
Разработка будет вестись в новой конфигурации, в режиме управляемого приложения.
Мы можем подключиться к стороннему ресурсу, используя объект WSОпределения.
Новый WSПрокси(Новый WSОпределения("http://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?WSDL"), 
"http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); 

18 сент. 2012 г.

Обработка расшифровки ссылки на сайт в СКД

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

9 сент. 2012 г.

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

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