image_pdfimage_print

Управляемое приложение. Внешняя обработка. Заполнение объекта

Источник доработок http://infostart.ru/public/84119/

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

Код в модуле обработки:

И пустой форме одна экспортная функция:

И если Вы заполняете не стандартный документ или справочник, не забудьте выбрать его в Общее — Определяемые типы — ОбъектСДополнительнымиКомандами

Работа с Excel в фоновом задании

Доброго времени суток!

http://infostart.ru/public/196323/

Прямо решение из жизни:

При работе с COM объектом экземляр Excel успешно создавался, но открыть файл не получалось

ExcelApp = Новый COMОбъект(«Excel.Application»);
ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла); // ОШИБКА!
выводилось сообщение об ошибке

Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:\xls_test\test.xls». Это может быть вызвано одной из следующих причин.

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

Поиски в просторах сети были продолжены и решение таки было найдено:

Необходимо создать папку

для Windows Server x64

C:\Windows\SysWOW64\config\systemprofile\Desktop

для Windows Server x86

C:\Windows\System32\config\systemprofile\Desktop
Данное расположение папок указано для Office 2007. Для Office 2010 не зависимо от разрядности платформы необходимо создавать папку C:\Windows\System32\config\systemprofile\Desktop (данный факт так же потратил не мало моего времени). В общем, если создали папку, а ошибки не исчезли, создайте вторую. Так же необходимо дать права на созданную папку пользователю USR1CV82. Практика показала, что достаточно прав, выдаваемых системой по умолчанию.

Формат 1C v8msg

Доброго времени суток!

Если Вы встретили в 1С формат v8msg

знайте это формат данных распределенных данных 1С.

Чтение таких данных осуществляется так:

Запись может осуществляться так:

При чем ПланамиОбмена можно пользоваться совместно и отдельно от выгрузки и загрузки.
При чтение: ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);

Раскрасить ТабличнуюЧасть в 1С

Доброго времени суток!

В простых формах мы перехватывали событие ПриПолученииДанных и изменяли оформление:

 

В Управляемых формах есть свойство формы УсловноеОформление. Можно его правильно настроить
http://infostart.ru/public/181336/

или использовать программно:

Управляемые элементы 1С. Невидимый элемент и центрирование.

Доброго времени суток!

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

Это новая концепция интерфейса — «Если суслика не видно — значит его пристрелили когда перешли на клиента!»

1. НЕВИДИМЫЙ

Как же нас сделать существующий элемент, но которого мы не видим?

Берем Группу страницы, одну страницу(«Группа») делаем нормально, другую «ГруппаТехническая» делаем Доступность Ложь. Если нужно активизировать какой-то элемент на странице «ГруппаТехническая» пишем следующий код:

2. ЦЕНТРИРОВАНИЕ

И центрировать элемент в управляемой форме тоже не все так просто.
Для вертикального центрирования надо создать вертикальную группу и расположить элемент между надо поместить элемент между декорациями(надпись). Декорациям указать растяжение — Да.

Для вертикального центрирования надо сделать вертикальную группу и тоже обложить декларациями.

Для полной централизации это надо сделать каскадом.

 

3. КНОПКА в РАЗМЕР ФОРМЫ

Рецептов нет, только использовать декорацию вместо кнопок. www.forum.mista.ru/topic.php?id=694909

 

И как пример всего вышесказанного — обработка для вывода звука в 1С на infostart.ru: http://infostart.ru/public/248770/

 

 

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

Доброго времени суток!

Просматривая возможности вывода звука в html5 http://w3schools.com/html/html5_audio.asp я задумался как с этим  обстоит дело в 1С.

Начнем по порядку.

1. Когда в 1С не было управляемых форм, вывод звука основывался на системных вызовах Windows. Можно было зарегистрировать специальный ActiveX и вызвать его специальную функцию (http://www.modber.ru/catalog/item2121.html, http://infostart.ru/public/58136/). Например в http://infostart.ru/public/85155/ используется DynamicWrapperX и следующий код:

Легко заметить, что данная библиотека может зарегистрировать функции не только работы со звуком. И возникает большая опасность, что это может использоваться не только в благих целях.
С другой стороны в тонком клиенте или web клиенте доступ к таким компонентам ограничен. И пользоваться системным вызовом Windows из браузера неполучиться.

2. Поэтому, вооружившись только средствами интернета, будем воспроизводить звуки в 1С.
Начнем работать с  тэгом audio. В интернете у всех уже современные браузеры и все работает. Но мы же будем звучать из 1С. Значит первое что нам надо — это воспроизвести звук в тонком клиенте. Так как поле HTML в 1С работает в режиме совместимости IE7, то мы воспользуемся старый тэгом для IE bgsound.

Мы можем хранить звук в виде макетов двоичных данных. И использовать их внутри HTML поля. подобным образом:

/* И добавить скрипт в страницу */

Можно использовать вместо тэга bgsound использовать embed или object, но это все-таки неявные ActiveX элементы (http://infostart.ru/public/90660)

3. А как нам работать в web клиенте? Правильно, в web клиенте 1С работает все по другому, ближе к современным стандартам. Возьмем в руки тэг audio, попробуем сделать данные во временном хранилище и получим полным облом. Так пока сделать звук не удалось.

Но мы используем другой метод, не столь распространенный. Надо превратить звук в текст. Скажете сказки? Нет читаем спецификации и доделываем.
http://jsfiddle.net/sikuda/eY8Ba/

Обработка доступна на Инфостарте  http://infostart.ru/public/248770/

Р.S.
Ну вы понимаете к чему я клоню — пора делать простые игрушки.

Пропуски в графиках 1С.

Доброго времени суток!

Никак не понимал как делаются отступы и пропуски в графиках 1С. Но все оказалось намного проще чем я думал.
У графика есть два специальных свойства
БазовоеЗначение = Значение(0, 315…)
ПропускатьБазовоеЗначение = Истина или Ложь

 

Если мы в точках где не должно быть графика ставим Значение равное Базовое значение и для всего графика ПропускатьБазовоеЗначение = Истина. Получаем то что нужно.

ПробелыВГрафиках

Источник:
http://www.forum.mista.ru/topic.php?id=682997

 

В 1С 8.3.1 появились плавные линии графиков. Это новый свойства: РежимСглаживания(Булево) и НатяжениеСглаживания(0..100). Теперь у нас графики более плавные.

И для полной картины установим максисальное и минимальное значение, которые ведут себя несколько странно:

LinesMaxMin

И под конец рецепт установки вертикалых подписей в шкале принудительно:

VertLabels

Идентификация Web сервисов 1С

Доброго времени суток!

1. Если на web сервере стоит Anonymous access

1.1 В базе нет пользователей — идеальный вариант для тестирования web-сервиса,  чтобы не заморачиваться…

 

1.2 Если хочется, чтобы вэб сервис работал под определенным пользователем 1С. Добавляем в файл default.vrd строку идентификации типа:

1.3  HTTP Basic идентификация: (http://en.wikipedia.org/wiki/Basic_access_authentication)

Если на превый запрос вы получаете окно идентификации, можете туда забить логин и пароль. У меня на Firefox c русскими пользователями это не работает. Делаем английского пользователя и все нормально коннектиться. Но все-таки интересно как это происходит — смотрим в Firefox Web-console:

Хорошо.что это стандартная идентификация. значит мы ее может использовать программно:

И добавляем в ajax запрос параметр Authorization. Преобразуем строку «sikudaws:123456» при помощи Base64:

Преобразовывать строки в Base64 b и назад можно здесь:

http://rumkin.com/tools/compression/base64.php

И получаем идентификацию сразу. УРА.

 

Это даже легче PОST идентификация тонкого клиента:
http://its.1c.ru/db/v83doc#content:16:1(Требуется доступ по ITS)

2. Идентификация средствами операционной системы в 1С к сожалению решается предыдущим способом. Требует введения имени и пароля пользователя Windows и не дает какого либо преимущества. Ее рассматривать не будем.

Изменение номера порта для сервера 1С

Доброго времени суток!

Опять столкнулся с проблемой развертывания сервера 1С двух версий на одном компьютере.
Решение простое — поменять порты при запуске. Например:

В ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices1C:Enterprise 8.2 Server Agent Параметр ImagePath меняем номера портов, добавляя смещение: «C:Program Files1cv828.2.9.356binragent.exe» -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d «C:Program Files1cv82srvinfo»

Источник: http://help1c.com/faq/view/514.html

 

Запуск 1С из командной строки. http://webhamster.ru/site/page/index/articles/comp/220

ЗАПРОС ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ

Источник: http://programmist1s.ru/razlichie-mezhdu-obedinit-i-obedinit-vse-v-yazyike-zaprosov-1s/

Зачастую, даже опытные программисты допускают методическую ошибку при использовании конструкций ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С. Рассмотрим подробнее чем различаются эти конструкции и как их правильно использовать.

Конструкция ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ объединяет два результата запроса в один. Т.е. результат выполнения двух запросов будет «слит» в один, общий.

Пример запроса для вывода всех документов поступлений и реализации:

Запрос получит данные из двух таблиц и объединит их.
В чем же разница между ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ

Конструкция ОБЪЕДИНИТЬ соединяет два результата и группирует повторяющие строки, в отличии от ОБЪЕДИНИТЬ ВСЕ которая не группирует автоматически строки результата.

Настоятельно рекомендуется использовать ОБЪЕДИНИТЬ ВСЕ в запросах, где заведомо невозможно получения одинаковых строк. Это существенно повышает производительность – система не пытается группировать строки.