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. Пароль пользователя зависит от настроек политики безопасности сервера.