ИЛИ Найти(ТипСодержимого, "+xml") ИЛИ Найти(ТипСодержимого, "/xml") 0 ИЛИ Найти(ТипСодержимого, "/json") 0 Тогда
ПолучитьКакДвоичныеДанные = Ложь;
ИначеЕсли Найти(ТипСодержимого, "image/") = 1 ИЛИ Найти(ТипСодержимого, "video/") = 1
ИЛИ Найти(ТипСодержимого, "application/") = 1 ИЛИ Найти(ТипСодержимого, "audio/") = 1 Тогда
//Если содержимое полученного ответа представляет собой изображение, видео, приложение,
//возвращаем двоичные данные, так как возвращать в виде строки не имеет смысла.
ПолучитьКакДвоичныеДанные = Истина;
КонецЕсли;
//Некоторые сервера возвращают в типе содержимого имя отданного файла, например image/png; name="Имя файла.png"
//или отдают в заголовке Content-Disposition: attachment; filename=Имя файла.png (http://www.http11.ru/post.php?post=2) Если ОтветHTTP.Заголовки["Content-Disposition"] Неопределено Тогда
По умолчанию PostgreSQL настроен таким образом, чтобы расходовать минимальное количество ресурсов для работы с небольшими базами до 4 Gb на не очень производительных серверах. То есть, если дело касается систем посерьезней, то вы столкнетесь с большими потерями производительности базы данных лишь потому, что дефолтные настройки могут в корне не соответствовать производительности вашего северного оборудования. Настройки выделения ресурсов оперативной памяти RAM для работы PostgreSQL хранятся в файле postgresql.conf.
Доступен как из папки, куда установлен PostgreSQL / Data, так и из pgAdmin:
В общем на начальном этапе при возникновении трудностей и замедления работы БД, заметной для глаз пользователей достаточно увеличить три параметра:
shared_buffers
Это размер памяти, разделяемой между процессами PostgreSQL, отвечающими за выполнения активных операций. Максимально-допустимое значение этого параметра – 25% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 64-128 Mb (8192-16384).
temp_buffers
Это размер буфера под временные объекты (временные таблицы). Среднее значение 2-4% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 32-64 Mb.
work_mem
Это размер памяти, используемый для сортировки и кэширования таблиц.
При 1-2 Gb RAM на сервере, рекомендуемое значение 32-64 Mb.
Для вступления новых значений в силу, потребуется перезапуск службы, поэтому лучше делать во вне рабочее время.
Еще два важных параметра это maintenance_work_mem (для операций VACUUM, CREATE INDEX и других) и max_stack_depth
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы - это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию - десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Кроме обмена между приложениями 1С:Предприятия этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия. Например, XDTO сериализацию в JSON можно использовать для организации собственного HTTP интерфейса прикладного решения. Сервис на платформе 1С:Предприятия будет формировать ответ в памяти в виде строки JSON. А затем передавать её при помощи объекта HTTPСервисОтвет. Реализованный нами механизм сериализации полностью соответствует стандарту JSON. Поэтому внешняя система не должна испытывать каких-либо трудностей с десериализацией.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента
Для вывода используется используется запрос:
Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка, сделаем это так:
Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL.
Перечислим неоптимальности в настройке:
1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. После установки, SQL пытается использовать для связи протокол "Named Pipes", который не обеспечивает быстрый обмен данными. Советуем изменить протокол по умолчанию на "TCP/IP". Изменить протоколы для связи с SQL сервером можно запустив утилиту SQL Server Configuration Manager. Обратите внимание - интересующие нас протоколы расположены в группе SQL Server network configuration. Протоколы из группы SQL native client configuration 1С не использует. Важно! Если программа 1С запускается на том же сервере, на котором запущен SQL-сервер,используйте для связи протокол "Shared Memory". Этот протокол обеспечит максимальную пропускную способность.
2) Включенные опции базы данных "Auto сreate statistics", "Auto update statistics". Данные опции разрешают SQL собирать статистику распределения данных в таблицах, обновляя статистику автоматическим образом. Отключите обе опции, т.к. создание и обновление статистики создает дополнительную загрузку сервера. Создайте задание на создание и обновление статистики, запускающееся в нерабочее время - например ночью.
3) Значение Checksum для опции Recovery->Page Verify. Во многих случаях достаточный контроль ошибок в страницах дисковой памяти обеспечивает значение данной опции - TornPageDetection. В этом случае контроль ошибок в страницах дисковой памяти использует иной вариант, более простой и быстрый нежели при значении опции - Checksum. Значение опции None - хоть и обеспечивает максимальное быстродействие, лучше не использовать, т.к. контроль ошибок страниц дисковой памяти средствами SQL сервера вообще производиться не будет.
4) Включенная опция полнотекстового индекса. Для ИБ 1С данная опция не требуется. Отключите её.
А вот открыть форму обработки с передачей параметров:
А в форме обработки, которую открыли, эта ссылка будет доступна через коллекцию "Параметры".
Т.е. так:
В обработчике ПриСозданииНаСервере() можно проверить наличие переданных параметров с помощью
Внимание! : Параметры формы доступны только в событии формы "ПриСозданииНаСервере". Т.е. в других процедурах ты с этой ссылкой работать не получится!
Тут два варианта:
1) Создать реквизит формы, допустим, с именем "СсылкаНаДокумент". И в событии "ПриСозданииНаСервере" заполнить этот реквизит.
И дальше уже работать с ним.
2) Создать не реквизит формы, а параметр (закладка "Параметры" - там же рядом с закладками "Реквизиты" и "Команды"). Назвать его надо будет так же, как ключ структуры, используемый в коде открытия формы (в моем примере - "ДокСсылка"). И в свойствах этого параметра установить флаг "Ключевой параметр". Тогда к этому параметру можно будет обращаться так, как я писал выше - Параметры.ДокСсылка
Но уже не только в событии "ПриСозданииНаСервере", а в любой процедуре модуля формы.
Вид расчета, используемый для начисления оплаты дополнительного ежегодного отпуска, описывается в плане видов расчета Основные начисления организаций. Новый вид расчета удобнее создать копированием предопределенного вида расчета Оплата отпуска по календарным дням (или Оплата отпуска по шестидневке).
В реквизите Наименование задается наименование вида расчета, например, Дополнительный отпуск.
1. На закладке Расчеты:
переключатель Последовательность расчета устанавливается в положение Первичное начисление; переключатель Способ расчета устанавливается в положение Регламентированный. Способ расчета выбирается в зависимости от того, предоставляется ли дополнительный отпуск в календарных или рабочих днях, указывается способ расчета По среднему заработку для отпуска по календарным дням либо По среднему заработку для отпуска при расчете из рабочих дней.
Если коллективным договором не предусмотрено иное, то переключатель выбора расчетного периода для определения среднего заработка устанавливается в положение Стандартно, согласно трудовому законодательству. "Стандартный" расчетный период для определения заработка, сохраняемого на период дополнительных отпусков, составляет 12 календарных месяцев, предшествующих началу события.
2. Особенности учета времени по начислению настраиваются на закладке Время.
Переключатель Вид времени устанавливается в положение Неотработанные полные смены, а также командировки.
Для отметки в табеле учета рабочего времени дней дополнительного отпуска в реквизите Вид времени по классификатору использования рабочего времени указывается ссылка на соответствующий предопределенный элемент справочника Классификатор использования рабочего времени: Дополнительный отпуск.
3. На закладке Использование настраивается:
указывается, что начисление Не является пособием по социальному страхованию; настраивается порядок учета периодов начисления для расчета остатка неиспользованных отпусков.
Если организация ведет учет использования дополнительного отпуска в разрезе рабочих лет, то в справочнике Виды ежегодных отпусков описывается соответствующий вид отпуска, например, Дополнительный ежегодный отпуск, в форме вида расчета для начисления дополнительного отпуска переключатель Ежегодные отпуска устанавливается в положение Является отпуском и выбирается вид отпуска из справочника Виды ежегодных отпусков. Количество дней ежегодного дополнительного отпуска, положенное по должности работника указывается в справочнике Должности организаций на закладке Ежегодные отпуска. порядок отражения периодов начисления в форме персонифицированного учета СЗВ-6: в общем случае указывается, что период нахождения в ежегодном дополнительном отпуске Включается в стаж для досрочного назначения пенсии.
3. На закладке Бухучет и ЕНВД настраиваются особенности отражения начисления в регламентированном учете.
4. На закладке Налоги производится настройка налогообложения начисления.
5. На закладке Взносы настраивается порядок обложения начисления страховыми взносами.
6. На закладке Прочее указываются виды расчета, которые будут вытеснять этот вид расчета, если период их действия будет совпадать.
Внимание!!! Этот новый вид расчета необходимо включить в список вытесняющих для видов начислений за отработанное время (Оклад по дням, Оклад по часам, Оплата по дневному тарифу и т. д.).
И не забудьте добавить его в Справочник: Виды ежегодных отпусков
При интеграции 1С с веб-сайтами всегда встает вопрос о передачи некоторых данных на веб-сервер. Будь то это передача параметров запроса для получения данных от веб-сервера в 1С или же передача данных из 1С, которые должны быть сохранены или каким-то образом обработаны на веб-сервере. Передаваться могут как простые данные в виде строк, чисел, так и целые файлы (изображения, XML-файлы и прочее). Для передачи и получения файлов и данных на веб-сервер в 1С используется объект HTTPСоединение.
Создание и инициализация HTTP соединения в 1С
Для инициализации HTTP соединения в 1С необходимо создать объект HTTPСоединение и в конструкторе указать параметры HTTP соединения.
<Сервер> (обязательный) - адрес сервера, с которым необходимо установить соединение.
<Порт> (необязательный) - порт сервера, с которым устанавливается соединение.
Значение по умолчанию зависит от защищенности соединения (80 для незащищенного и 443 для SSL-соединения).
<ИмяПользователя> (необязательный) - имя пользователя на указанном сервере.
<Пароль> (необязательный) - пароль пользователя на указанном сервере.
<Прокси> (необязательный). Тип - ИнтернетПрокси. Прокси, используемый для соединения с сервером.
<ЗащищенноеСоединение> (необязательный). Тип - Булево. Определяет используемый протокол -
http или https. По умолчанию Ложь.
Ниже приведен примеры создания HTTPСоединения с сайтом http://www.mysite.ru/.
Передача данных на веб-сервер из 1С методом GET.
Для передачи данных на веб-сервер из 1С методом GET используется процедура Получить() объекта HTTPСоединение.
<Источник> (обязательный). Тип - Строка. Адрес ресурса на сервере.
<ИмяВыходногоФайла> (обязательный). Тип - Строка. Имя файла на диске, в который
помещаются данные, полученные от сервера (ответ сервера).
<Заголовки> (необязательный). Тип - Строка. Заголовки, добавляемые к запросу на сервер.
Текстовые пары вида <Заголовок>:<Значение>, разделенные комбинацией ВК + ПС.
(подробнее о заголовках будет сказано ниже).
Рассмотрим параметры процедуры Получить() более подробно:
В качестве источника указывается строка с адресом запроса, идущая после названия домена и символа "/". Так, если необходимо отправить данные на адрес https://www.mysite.com/getusers.php, то при создании HTTP соединения в конструкторе HTTPСоединение в поле "Сервер" указывается "www.mysite.com", признак защищенного соединения устанавливается в Истина, а в процедуре Получить() в параметре Источник указывается "getUsers.php".
В поле ИмяВыходногоФайла указывает имя файла на диске, в который будут сохранены данные, полученные от сервере в результате запроса. Так, например, если сервер возвращает список пользователей в формате XML, то на диск в указанный файл будет сохранен XML файл со списком пользователей.
О заголовках более подробно будет сказано ниже.
Так же, при запросе к веб-серверу зачастую передаются дополнительные данные (параметры) для этого запроса. Параметры от адреса источника отделяются символом "?". Каждый параметр задается в формате <Имя_Параметры>=<Значение_Параметры>. Параметры от адреса источника отделяются символом "?". Сами же параметры отделяются друг от друга символом "&". В результате строка адреса источника может выглядеть следующим образом: getUsers.php?owner_id=263544&count=100.
Ниже приведен пример, поясняющий все выше сказанное.
Заголовки HTTP
Ниже приведена общая информация о HTTP заголовках из википедии.
Заголовки HTTP (англ. HTTP Headers) — это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение. Формат заголовков соответствует общему формату заголовков текстовых сетевых сообщений ARPA. Заголовки должны отделяться от тела сообщения хотя бы одной пустой строкой.
Все заголовки разделяются на четыре основных группы:
General Headers (рус. Основные заголовки) — должны включаться в любое сообщение клиента и сервера.
Request Headers (рус. Заголовки запроса) — используются только в запросах клиента.
Response Headers (рус. Заголовки ответа) — только для ответов от сервера.
Entity Headers (рус. Заголовки сущности) — сопровождают каждую сущность сообщения.
Именно в таком порядке рекомендуется посылать заголовки получателю.
Более подробно о заголовках HTTP можно прочитать здесь. Так же можно ознакомится со списком заголовков HTTP.
От себя лишь добавлю, что, если это явно не указано в требованиях к отправке данных веб-серверу заголовки HTTP для метода GET можно не указывать. Для метода POST обычно нужно указать заголовки Content-Type (тип передаваемых данных, например: "Content-Type: text/html;charset=utf-8") и Content-Length (размер передаваемых данных в байтах, например: "Content-Length: 1348").
Напомню, что HTTP заголовки в 1С указываются строкой в виде текстовых пар "<Заголовок>:<Значение>", разделенных комбинацией символов ВК+ПС.
Также заголовки можно задать типом Соответствие, где в качестве ключа указывается заголовок, а в качестве значения - значение заголовка.
Ниже приведены поясняющие примеры:
Передача данных на веб-сервер из 1С методом POST.
Общие сведения.
Для передачи данных на веб-сервер из 1С методом POST используется процедура ОтправитьДляОбработки() объекта HTTPСоединение.
<Источник> (обязательный) - Имя файла-источника, который будет отправлен
на сервер для обработки.
<АдресРесурса> (обязательный). Тип - строка. Адрес ресурса на сервере,
в который посылаются данные из источника.
<ИмяВыходногФайла> (обязательный) - Имя файла на диске, в который записываются
полученные с сервера данные.
<Заголовки> (необязательный). Тип - строка. Заголовки, добавляемые к запросу на сервер.
Текстовые пары вида <Заголовок>:<Значение>, разделенные комбинацией ВК + ПС.
(подробнее о заголовках будет сказано ниже).
Рассмотрим параметры процедуры ОтправитьДляОбработки() подробнее:
В качестве источника указывается файл, содержимое которого необходимо отправить на сервер для обработки. Подробнее о формировании содержимого файла-источника будет сказано ниже.
Поле АдресРесурса аналогично полю Источник процедуры Получить(), т.е. указывается строка с адресом запроса, идущая после имени домена и символа "/".
Поле ИмяВыходногоФайла также аналогично одноименному полю процедуры Получить(), т.е. содержит имя файла, в котором будут сохранены данные, полученные от сервера в результате обработки исходных данных.
О заголовках было упомянуто выше. Напомню лишь, что для метода POST обычно указываются заголовки Content-Type и Content-Length. В качестве параметра заголовка Content-Length указывается размер файла-источника, преобразованный с помощью функции XMLСтрока().
Ниже приведен пример, поясняющий все выше сказанное.
Передача параметров методом POST.
Для передачи параметров, аналогично методу GET, можно сформировать строку параметров, записать их в текстовый файл и отправить этот файл на сервер для обработки. Ниже приведен пример аналогичный примеру отправки методом GET, но теперь те же данные отправляются методом POST.
Передача файлов методом POST.
Зачастую данные для обработки задаются не виде строки параметров разделенных "&", как в рассматриваемых выше примерах, а виде файла определенного формата, например XML или JSON. Рассмотрим пример отправки данных на веб-сервер для обработки методом POST, которые задаются в формате XML. Например, сервер может добавить ваш комментарий к материалу. В описании процедуры добавлении сказано, что данные необходимо отправлять по адресу www.mysite.com/addComment.php. Сами данные должны быть переданы в следующем виде:
где:
<ID_Пользователя> - id пользователя на сайте, от имени которого добавляется комментарий;
<ID_Материала> - id материала на сайте, к которому добавляется комментарий;
<Текст_Комментария> - текст комментария.
Предположим, что нам уже известны id пользователя и материала и они хранятся в переменных user_id и post_id. Ниже приведен пример, решающий нашу задачу.
Загрузка файлов (изображений, документов и т.п.) на веб-сервер методом POST.
Зачастую возникает необходимость загрузки файлов на веб-сервер. Это может быть, например, изображение к статье на сайте, или фотография для альбома, или архив для файлообменника. Ранее мы рассматривали передачу методом POST параметров или просто файлов. Таким же образом можно и передавать двоичные файлы. Но как быть, если файлы необходимо отправлять вместе с параметрами? Для возможности отправки файлов в этом случае используется HTTP заголовок ContentType:multipart/form-data. Следует заметить, что обычно таким способом передаются файлы через веб-браузеры. Т.е. когда на сайте вы выбираете файл и нажимаете кнопку "Загрузить", то файл передается способом описанным ниже. При таком способе сам файл также задается как переменная, т.е., например, файл передается через параметр file или image. Однако, мы не можем просто передать file=<Двоичные_Данные>. А вот как все таки передать файл мы и рассмотрим ниже.
Для возможности вместе с параметрами передавать и двоичные данные (файлы) необходимо сформировать HTTP заголовок Content-Type следующим образом:
Content-Type: multipart/form-data, boundary=<уникальные_данные>
где <уникальные_данные> - это любой набор цифр и/или символов, который будет служить для отделения значений друг от друга. Значение boundary должно быть уникальным в пределах пересылаемой информации, т.е. таких символов не должно встречаться в пересылаемых файлах и переменных.
Bounday можно сформировать, например, таким образом
Все данные отделяются друг от друга разделителем boundary. Начинать разделитель нужно с "--":
В конце данных нужно закрыть разделитель, добавили в конце разделителя "--", т.е. вид будет "--<boundary>--".
Итак, например, нам нужно передать на веб-сервер текстовый файл через параметр "text", его описание через параметр "desc" и id пользователя через параметр "uid", для которого будет загружен наш файл.
Предположим, что файл содержит следующий текст: Мороз и солнце; день чудесный!
Еще ты дремлешь, друг прелестный -
Пора, красавица, проснись:
Открой сомкнуты негой взоры
Навстречу северной Авроры,
Звездою севера явись!
Описание должно содержать "Стих А.С. Пушкина", а id пользователя равно "0123456". Тогда файл должен быть сформирован следующим образом (для упрощения предположим, что bounday мы уже сформировали и он равен "ccf8111910")
А теперь перейдем непосредственно к 1С. Пусть у нас будет форма с реквизитами "Пользователь", "Описание" и "ИмяФайла". Реализуем отправку данных, описанным выше способом
Передача текстовых файлов таким способом проблем не вызывает. Сложнее дело обстоит с файлами, содержащими двоичные данные (изображения, архивы и т.п.). Все дело в том, что в 1С просто нет методов для чтение двоичных файлов в строку. Если мы делаем обмен со своим сайтом, которые сами и разрабатывали, то можно просто преобразовать файл в строку Base64 при помощи процедуры Base64Строка(), а на стороне сервера преобразовать строку Base64 обратно.
А как же быть если мы загружаем файл на сторонний сервер, который принимает файл как есть без преобразование его в строку Base64(). В это случае можно пойти на хитрость. В 1С есть процедура ОбъединитьФайлы(), которая объединяет несколько файлов на диске в один результирующий файл
<ИменаЧастей> (обязательный). Тип - Массив. Массив имен частей файлов, которые
требуется объединить. Объединение будет происходить в порядке, в котором заданы
имена файлов в массиве.
<ИмяРезультирующегоФайла> (обязательный). Тип - Строка. Имя файла, который будет
создан в результате объединения файлов.
Т.е. мы можем сформировать текстовый файл с запросом, объединить его с файлом(-ами), которые необходимо передать на веб-сервер и передать уже файл, получившийся в результате объединения исходных файлов. Ниже демонстрируется процесс передачи двух zip архивов на сервер с дополнительными параметрами user_id и post_id.
Ну вот, вроде бы, и все, что я хотел рассказать о способах передачи файлов и данных на веб-сервер из 1С. Если что-то не понятно, что-то хотите уточнить или нашли ошибки - пишите в комментариях.
Автор: Павел
Обработка ПечатьЭтикеток использует компоненту "1С:Печать штрихкодов"(доступную на диске ИТС) для печати штрих-кодов(далее ШК). Эта компонента поддерживает следующие типы штрих-кодов: EAN8, EAN13, EAN128, Code39, Code128.
Что делать если на предприятии используется отличный ШК, например Interleave 2 of 5, для которго есть системный шрифт @IDAutomationSHI25M, используемый для вывода ШК на экран или на принтер.
Рассмотрим как проще всего добавить поддержку этого типа ШК в обработке ПечатьЭтикеток.
Первым делом скопируем общий макет Этикетка в макет для вывода нашего штрих-кода ЭтикеткаInterleave. В этом макете надо удалить элемент управления, связанный с компонентой "1С:Печать штрихкодов". И оформить центральное поле как параметр табличного документа ШтрихКод, выводимый шрифтом @IDAutomationSHI25M.
Далее разрешаем запуск обработки даже с неустановленной компонентой т.к. для вывода нашего ШК компонента не нужна. Для этого комментируем строчку в модуле формы обработки:
В общем модуле УправлениеРозничнойТорговлей также есть место проверки на компоненту
В обработке есть место, где выполняется проверка типа ШК. Наш ШК сейчас не пройдет проверку и печать выполнена не будет. Чтоб печать выполнялась необходимо исправить функцию в общем модуле УправлениеРозничнойТорговлей.
Мы на завершающем этапе, вносим изменения непосредственно в обработку.
Последний штрих это добавить регулятор размера шрифта (в коде переменная РезмерШрифтаInterleave) на форму обработки:
Алгоритм обработки выполняет запрос к регистру сведений "курсы валют" за определенный пользователем период. Полученные данные выборки в цикле выводятся в элемент экранной формы "диаграмма" в режиме построения графика. Для элемента управления "Диаграмма" на этапе конфигурирования был задан тип - График, и имя - "График Курсов". Это наиболее наглядный и простой пример работы с графиками в 1С 8.1.
Внешний вид и органы управления показаны на рисунке:
Алгоритм процедуры рисования графика:
- Очистить старые данные графика;
- Сформировать текст запроса;
- Установить значения периода выборки;
- Выполнить запрос;
- Подготовить структуру соответствия серий и валют, которые будут изображены на графике;
- В цикле заполнить значения точек графика для всех используемых валют;
- В цикле, используя ранее установленные значения графика для валют, добавить серию графика бивалютной корзины;
- Обновить данные графика курсы валют экранной формы;
Использование элемента Диаграмма в 1С
Алгоритм обработки использует в качестве параметра элемент НастройкаПериода, значения которого используются в запросе к регистру сведений "Курсы валют".
Исходный код:
Далее в процедуре "Нарисовать", осуществляющей вывод данных запроса в диаграмму экранной форме, обозначена структура для работы с валютами и ряд подготовительных действий. Переменная курсы будет использоваться для связи с элементом управления Диаграмма, расположенным на экранной форме. Перед работой будут очищены текущие данные диаграммы и отлючена перерисовка значений в момент нового формирования и насыщения данными. Структура "серии" потребуется для связи названия валюты (ключ) и серии (значение) диаграммы, как на моменте инициализации, так и при выводе данных. Так же при создании серий диаграммы производится отключение маркеров.
Далее необходимо выполнить запрос и перейти к формированию диаграммы. Следующая часть процедуры заполняет значение точек для серий диаграммы, добавленных в цикле инициализации серий графика. Если точек диаграммы не было создано ранее, они создается. Алгоритм рассчитан для работы с курсами валют в течении года, если нужен больший период механизм создания точек следует переделать либо в запросе, либо в данном цикле. Номер серии, используемый при выводе значения точки диаграммы, находится при помощи структуры ключ и значение по названию валюты, полученному для текущей строки выборки запроса.
Получение значения точки уже построенного графика в элементе диаграмма можно при помощи функции "ПолучитьЗначение". Для использования этой функции нужно знать серию и точку диаграммы. После вычисления значения графика бивалютной корзины диаграмму нужно обновить:
Данные курсов можно загрузить штатным загрузчиком 1С с сайта РБК, для этого можно воспользоваться справочником "Валюты" нажав пункт меню "Загрузить курсы":
При построении графика предполагается наличие в справочнике данных следующих валют: EUR, GBP, USD, Руб. После открытия формы для загрузки данных курсов валют нужно указать интервал требуемых данных - например с 2000 по 2010 год и нажать на кнопку "Заполнить", затем на кнопку "Загрузить". В данном примере курсы валют будут загружены с сайта РБК:
После добавления необходимого состава валют и загрузки их курсов по отношению к рублю за нужный период можно пользоваться построителем, текст которого приведен выше. Для ускорения вывода данных дополнительные проверки не вводились, по этому, если нет требуемых данных, внешняя обработка вызовет ошибку выполнения.
Сохранение диаграммы, графиков и гистограмм в виде картинки
Построенные в диаграмме графики можно сохранить средствами 1С в один из поддерживаемых форматов: BMP
EMF
GIF
Icon
JPEG
PNG
TIFF
WMF
Пример процедуры для экспорта диаграммы в графический формат:
Регулярные выражения (Regular Expressions) являются известным и мощным средством для поиска, тестирования и замены подстрок. Эта технология доступна и в 1С - через объект VBScript.RegExp. Нужный объект уже встроен в современные версии Windows (начиная с Windows 98), и устанавливать дополнительно ничего не нужно.
Приведенные ниже примеры были протестированы в 1С:Предприятие 7.7; для 1С:Предприятие 8.x изменяется способ создания объекта:
Кроме того, там уже есть логические константы Истина и Ложь - объявлять их не нужно.
Более подробное описание самой технологии RegExp (что означают те или иные значки или скобочки, или какие шаблоны поиска или замены можно использовать в типичных ситуациях) можно найти в специальной литературе (например Бен Форта "Освой самостоятельно регулярные выражения (regexp) за 10 минут") или на сайтах в сети Internet.
Более продвинутый пример разбора HTML использует подвыражения (SubMatches) и позволяет находить как сами теги, так и текст между ними.
Часто регулярные выражения используются для тестирования строк, например пользовательского ввода.
Этот пример позволяет узнать, является ли строка целым числом.
Регулярные выражения поддерживают не только поиск, но и замену текста. При этом найденные подвыражения (в круглых скобках) могут быть представлены в строке замены как $1, $2 и т. д.
(знак доллара используется в VBScript.RegExp; в других средах программирования, например в JavaScript, используемый для этой цели символ может отличаться).
Справочник «Внешние обработки, печатные формы, обработки по заполнению табличных частей» содержит список произвольных обработок, произвольных отчетов, дополнительных печатных форм, обработок для заполнения ТЧ объектов, обработок, подключаемых к отчетам.
Общее описание: Произвольная обработка (произвольный отчет)
Для произвольных обработок необходимо указывать только внешнюю обработку, которая находится на диске, для ее загрузки в реквизит элемента справочника. Так же для произвольных обработок необходимо иметь возможность назначать права доступа для их использования.
Обработка для заполнения ТЧ объектов
Для обработок заполнения ТЧ необходимо указывать внешнюю обработку, список объектов и их ТЧ, для которых необходимо использовать данную обработку.
Внешняя печатная форма
Для подключаемых внешних печатных форм необходимо указывать:
внешнюю обработку;
при необходимости можно указать список дополнительных параметров, которые будут передаваться внешней обработке;
список объектов, для которых данная печатная форма используется;
для каждого объекта несколько отборов, при выполнении которых печатная форма становится доступной для использования с данным объектом;
для каждого объекта свою отдельную печатную форму, но в списках печатных форм в объектах будет всегда появляться одинаковый пункт подменю;
для каждого объекта встроенную печатную форму, которая будет заменена указанной внешней.
Корректно зарегистрированная печатная форма будет выводиться в общем списке печатных форм объекта, вызываемом по кнопке «Печать». Если подключаемая печатная форма заменяет стандартную, то она заменяется и показывается в списке стандартных печатных форм.
Внешняя обработка, подключаемая к отчету
К каждому отчету (на базе универсального отчета) можно подключать произвольное количество обработок. Перечень обработок которые будут фактически подключены к отчету определяется правами доступа пользователей к внешним обработкам.
Для каждой обработки, подключенной к отчету можно указать режим её запуска:
Запускать автоматически перед началом построения отчета
Обработка будет запущена после нажатия на кнопку «Сформировать» в отчете перед выполнением запроса к данным. Результат выполнения обработки может быть выведен в форму отчета, если обработка завершается с указанием прервать построение отчета. Иначе форма отчета очистится после выполнения обработки. Также в зависимости от результата работы обработки построение отчета может быть прервано. Пользователю может быть выдано сообщение о причине.
Например:
a. не готовы исходные данные,
b. формирование отчета запрещено в этот период времени, этим пользователем и т.п.
Запускать автоматически после построения отчета
Обработка будет запущена, после того как нажата кнопка «Сформировать» и результаты отчета выведены в поле табличного документа. Этот режим предназначен для дополнительной обработки результата полученного в отчете.
Запускать вручную
Обработку можно будет запускать вручную, через меню «Действия» отчета
Обработки, для которых задан режим запуска «Вручную» автоматически размещаться в меню «Действия» отчета.
Требования к подключению внешних обработок(для программиста):
Произвольная обработка
Любая внешняя обработка с определенной основной формой. Произвольный отчет
Любой внешний отчет с определенной основной формой. Обработка для заполнения ТЧ объектов
Внешняя обработка, содержащая:
Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры.
В модуле экспортную процедуру: Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта)
где: Объект - ДокументОбъект, СправочникОбъект - откуда был произведен вызов процедуры заполнения внешней обработки; ИмяТабличнойЧасти – Строка. Имя табличной части, для которой вызвана обработка; ТабличноеПолеОбъекта – Элемент формы: Табличное поле. Табличное поле формы, для которого вызвана обработка.
Также обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из 2-х колонок («полное имя метаданного» и «имя табличной части»).
Пример: Внешняя обработка «Заполнить по остаткам» предназначена для заполнения табличной части «Товары» документа «Перемещение товаров» типовой конфигурации фирмы 1С «Бухгалтерия предприятия».Скачивать файлы может только зарегистрированный пользователь! Внешняя печатная форма
Внешняя обработка, содержащая:
Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры. Подробнее об этом!
Реквизит «СсылкаНаОбъект», в который при вызове будет передана ссылка на объект, для которого необходимо выполнить печать.
Функция «Печать()» - без параметров, возвращающая табличный документ.
Также обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из 2-х колонок («полное имя метаданного» и «имя табличной части»).
Пример: Внешняя обработка «Универсальная внешняя печатная форма» - пример создания подключаемой внешней печатной формы для типовых конфигураций фирмы 1С.Скачивать файлы может только зарегистрированный пользователь! Внешняя обработка, подключаемая к отчету
Внешняя обработка, содержащая:
В модуле экспортную процедуру: Инициализировать()
Обязательный реквизит «ДополнительныеПараметры» - произвольного типа. При создании обработки инициализируется значением типа Структура, содержащим: Отчет – ОтчетОбъект, из которого осуществляется вызов внешней обработки. ТабличныйДокумент - ТабличныйДокумент, в который осуществляется вывод отчета. Отказ - флаг, определяющий необходимость дальнейшего построения отчета. Как подключить внешнюю печатную форму 1С?
Для использования Внешней печатной формы, Вам нужно запустить Вашу 1С в режиме Предприятие и в меню "Сервис" - "Внешние печатные формы" просто добавить ее в список! Более подробно об этом читайтездесь!
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает его; ЗаписьТекста и ЧтениеТекста загружают файл построчно.
ПРИМЕР 1: Запись данных справочника в текстовый файл:
С помощью типа ЗаписьТекста этот код будет таким:
Чтение данных из текстового файла в справочник:
С помощью типа ЗаписьТекста этот код будет таким:
ПРИМЕР 2:
В строке текста значения реквизитов справочника разделяются символом кавычка. Его можно получить, например, используя функцию Символ(34).
В случае если символ разделителя (в данном случае – кавычка) может встречаться в выгружаемых данных,
перед помещением в строку меняем этот символ на заранее определенную комбинацию символов.
В нашем случае это %квч%.
Идентификационный номер налогоплательщика
Идентификационный номер налогоплательщика (ИНН) - в Российской Федерации уникальный код используемый при учете в налоговом органе юридических и физических лиц. ИНН юридических лиц (организаций) состоит из 10 цифр. ИНН физических лиц, в т.ч. индивидуальных предпринимателей состоит из 12 цифр.
ИНН указывается налогоплательщиками в документах, предусмотренных законодательством, подаваемых в налоговые органы. Для идентификации отдельного подразделения организации, в связи с постановкой на учет в разных налоговых органах применяется код причины постановки (КПП).
Структура ИНН юридического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН (Справочник кодов обозначения налоговых органов для целей учёта налогоплательщиков) осуществивщей регистрацию.
5-9: номер записи в территориальном разделе ЕГРН (Единый государственный реестр налогоплательщиков).
10: контрольная цифра.
Структура ИНН физического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН осуществивщей регистрацию.
5-10: номер записи в территориальном разделе ЕГРН.
11-12: контрольные цифры.
Для проверки ИНН можно обратиться в налоговый орган за выпиской из ЕГРН или провести проверку контрольных цифр в соответствии со следующим алгоритмом:
1. Для расчета десятого контрольного разряда в 10-ти значном ИНН каждая цифра ИНН (кроме десятой) умножается на соответствующий множитель в соответствии с таб.1 , ззатем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть десятый разряд.
2. Для расчета 11-ого контрольного разряда (1-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме 11-ой и 12-ой) умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 11-ый разряд.
3. Для расчета 12-ого контрольного разряда (2-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме12-ой) ,11-ая вычисляется в соотв. с пред. пунктом, умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 12-ый разряд.
Конкретные примеры
ИНН 500100732259 — 12 цифр (первый попавшийся в Интернете ИНН).