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, включаем возможность динамического обновления, скрипт загрузки настраиваем так же, как в прошлом примере.

6 сент. 2012 г.

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

Популярность QlikView на российском рынке BI-систем постепенно растет, многие компании используют это ПО для консолидации финансовых данных, сокращения трудозатрат, оперативного контроля и многих других задач. И вполне закономерно, возникла необходимость связки 1С с QlikView, желательно напрямую, без всяких промежуточных выгрузок из базы. Некоторые ИТ-компании уже разработали коммерческие решения, например,  БИТ:Коннектор QlikVIew к 1С или АТК QlikView-1C Коннектор, так или иначе облегчающие этот процесс. В качестве бесплатной альтернативы предлагаю простой способ получения информации из 1С через COM-соединение.

21 авг. 2012 г.

РазностьДат в запросе, продолжение

Ранее для определения точного количества лет мне приходилось использовать следующую конструкцию в запросе.
 ГОД(&Дата2) - ГОД(&Дата1) - ВЫБОР
  КОГДА МЕСЯЦ(&Дата2) < МЕСЯЦ(&Дата1)
   ТОГДА 1
  ИНАЧЕ ВЫБОР
   КОГДА МЕСЯЦ(&Дата2) = МЕСЯЦ(&Дата1)
    ТОГДА ВЫБОР
     КОГДА ДЕНЬ(&Дата2) < ДЕНЬ(&Дата1)
      ТОГДА 1
     ИНАЧЕ 0
    КОНЕЦ
   ИНАЧЕ 0
  КОНЕЦ
 КОНЕЦ
Выглядит довольно таки громоздко, легко запутаться в больших запросах. Но если взять  
РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, -1), &Дата2, ДЕНЬ) / 365.25 
то мы как раз получим точное количество лет. День отнимаем, чтобы скорректировать погрешность на малых периодах. Если просто делить на 365, то на больших периодах возникает погрешность, вызываемая високосными годами. Деление на 365.25 учитывает эту погрешность на любых периодах.

20 авг. 2012 г.

Doodles


У многих других людей в процессе работы, разговоров по телефону или раздумий рука машинально тянется к ручке и в итоге на бумаге получаются какие-то каракули или даже подобие рисунка. Имя им doodle. Процесс рисования дудлов прост, на создание рисунка уходит 5-10 минут. Подобное занятие рекомендуют для расслабления, снятия стресса, развития креативности. Более того, это уже вылилось в отдельное направление в дизайне, в Англии даже отмечают National Doodle Day, а Google открыл в свое время вакансию на художника-дудлера.
Также существуют различные сайты, позволяющие в онлайне нарисовать простую картинку и тут же опубликовать ее. Один из них DoodleOrDie.com. Процесс завязан на игре, схожей с игрой "Ассоциации". Только здесь необходимо нарисовать свой ответ или предложить описание рисунка, язык - английский. Простой интерфейс, 16 цветов, регулирование толщины пера, возможность отмены.

Мой профайл на DoodleOrDie.com
Некоторые мои дудлы:

15 авг. 2012 г.

Произвольный макет в СКД II

Продолжаем углубляться в настройки компоновки данных. Теперь попробуем сделать полностью свой произвольный макет на СКД (ссылка на пример в конце текста). Здесь самое главное понять структуру областей макета в СКД. Разберем пример с неопределенным количеством колонок.

14 авг. 2012 г.

Произвольный макет в СКД

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

13 авг. 2012 г.

Прямые запросы к MS SQL серверу

На днях была реализована следующая задача: создание таблицы/загрузка данных в базу на MS SQL из 1С, считывание данных из MS SQL в 1С. Реализация сделана с использованием COM-соединения. Обновиться до 14й платформы и организовать все с помощью внешних источников данных по ряду причин было невозможно. А теперь обо всем по порядку.

1. Настройки для MS SQL.
Создаем новую DataBase (пусть будет testDB) через консоль SQL, дополнительные настройки настройки по желанию. Я не стал создавать из 1С через скрипт, потому что:
а) процедура разовая;
б) для этого пришлось бы хранить логин/пароль администратора SQL в 1С.
Создаем отдельного пользователя SQL с полными правами в нашей DataBase (допустим, имя пользователя com1c). Для этого в форме настроек пользователя на вкладке "Server Roles" оставляем все как есть, по умолчанию доступна роль "public" - только просмотр. На вкладке "User Mapping" находим нашу DataBase, добавляем роль db_owner. Пароль пользователя зависит от настроек политики безопасности сервера.

20 июл. 2012 г.

Время отдохнуть

Один проект закончился, второй пока в на стадии подготовки (1С, XDTO+SOAP+PHP). Самое время вспомнить о своих увлечениях, спортзал и флэшгеймдев.
Как оказалось, после года интенсивной работы силовые результаты упали от 110 до 80 кг в жиме лежа, от 165 до 120 кг в приседаниях. Так что здесь есть над чем поработать.
Так же за этот период выпал из игростроя, что очень прискорбно. В этой области кроме кодинга приходилось еще заниматься графическими работами, что в общем то хорошо расслабляло. Да и заработать на этом тоже можно.

22 июн. 2012 г.

Количество лет в запросе

Недавно возникла необходимость получить точное количество лет в запросе, результат функции РазностьДат выдавал некорректный результат в ряде случаев. Например, РазностьДат(31.12.2011, 01.01.2012, ГОД) равно 1, хотя на самом деле количество целых лет должно быть равно 0.

14 июн. 2012 г.

Начало пути

Время от времени у меня интересуются, с чего лучше начать изучать платформу. Предлагаю свое видение развития 1С программиста.

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

8 июн. 2012 г.

Параметры расшифровки


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

6 июн. 2012 г.

Почему 1С

Всем привет. В качестве первого поста черкану пару строк про 1С в общих чертах.

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