Сообщения

Сообщения за 2016

Работа с base64 при разработке веб-сервиса

Изображение
Допустим, у вас имеется веб-портал, который генерирует печатную форму в формате doc/docx. Генерация печатной формы происходит на стороне сервера - вызывается веб-сервис, который возвращает строку base64. Для отладки такого веб-сервиса потребуется: Google Chrome Notepad++ Откройте страницу веб-портала с данным функционалом в браузере Google Chrome и вызовите панель отладки, нажав на F12. Выполните команду формирования печатной формы (т.е. команду, которая отвечает за вызов веб-сервиса), после этого действия в окне отладки отразится пункт с информацией по выполнению команды (информация о выполнении POST-запроса) (см. рисунок 1). Рисунок 1. Панель отладки Google Chrome

Валидация сертификата при проверке подписи XMLDSIG

В статье Проверка подписи XMLDSIG на примере СМЭВ рассказывается про проверку электронной подписи (ЭП) формата XMLDSIG. Как показала практика, метод Verify() объекта SignedXML не выполняет валидацию (действительность) сертификата ЭП. Проверить действительность сертификата каждой электронной подписи, которой подписан XML документ, можно с помощью свойства Signers того же объекта SignedXML. Коллекция Signers заполняется в порядке следования элементов, найденных XPath-запросом. По умолчанию используется следующий запрос: "//*[local-name()='Signature' and namespace-uri()='http://www.w3.org/2000/09/xmldsig\#']" . Важно, свойство Signers доступно только после проверки подписи. Данное свойство содержит коллекцию подписей, для которых доступен ограниченный набор свойств: можно узнать статус подписи при помощи свойства Signer.SignatureStatus; получить информацию о сертификате ключа подписи при помощи свойства Signer.Certificate. Свойство Signer.Certifica

Ошибка получения объекта com: отказано в доступе.

Изображение
Данная ошибка возникла при использовании библиотеки, например HASP, которая была зарегистрирована с помощью COM+. Такая регистрация помогает использовать 32 разрядные библиотеки на 64 разрядных серверах. Подробное описание действий по регистрации библиотек легко найти на просторах интернета . После регистрации не всегда проходит все гладко по созданию COM объекта. Может возникнуть ошибка доступа к COM объекту, которая звучит примерно так: Ошибка получения объекта COM: отказано в доступе. Что бы избавиться от ошибки, откройте оснастку "Службы компонентов". Раскройте дерево служб и в ветке COM+ найди нужную службу, откройте её свойства (см. рисунок 1). Рисунок 1. Свойства приложения COM+

СКД. Оформление ресурса для итогов

Изображение
Задача Отчет выводит информацию о оборотах номенклатуры . Требуется в отчете выводить итоговое поле оборота в формате: представление 0 как ноль, разделитель групп - пробел, группировка по три знака, в конце числа добавить приставку "шт.". Реализация Задачку можно решить несколькими способами. первый способ, который приходит в голову - это добавление предопределенного макета в отчет. На вкладке Макеты окна конструктора схемы компоновки данных добавляется макет группировки и для поля оборотов задается форматирование (см. рисунок 1). Рисунок 1. Пример форматирования поля Остаток

СКД. Программное чтение/запись СКД в/из XML.

Сериализация объектов в XML Объект типа СхемаКомпоновкиДанных не имеет в своем арсенале метода записи/чтения себя в/из XML. Но все исправимо благодаря возможности сериализации схемы компоновки данных в объект XDTO. // Запись СКД в XML-файл. ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайлаСКД); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СхемаКомпоновкиДанных); ЗаписьXML.Закрыть(); Сериализация объектов 1С выполняется с помощью объекта глобального контекста СериализацияXDTO - это сериализатор XDTO, соответствующий глобальной фабрики XDTO.

Сериализация объектов в XML

СКД. Программное чтение/запись СКД в/из XML. Наверняка, каждый начинающий программист сталкивался с заданием выгрузки объектов в XML, но из-за плохого знания механизмов платформы 1С, выполнял задание в лоб. Алгоритм выгрузки заключался в написании кода по записи значения каждого реквизита в XML-файл. Наиболее простой способ выгрузки объектов в XML - воспользоваться глобальным методом ЗаписатьXML() , который предназначен для сериализации объектов/значений в формат XML. Функция ПолучитьXML(Значение) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписатьXML(ЗаписьXML, Значение); Возврат ЗаписьXML.Закрыть(); КонецФункции Важно! Значения не всех типов могут быть записаны в формате XML данным методом. В XML могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менед

Особенность работы конструкции дополнения дат в запросе

В случае если поле, по которому рассчитываем итоги, является полем типа Дата, то возможно дополнение результатов датами в заданном периоде. Делается это при помощи ключевого слова ПЕРИОДАМИ, после которого в скобках указывается вид периода (одно из СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ), начальная и конечные даты интересуемого периода. В случае если начальные и конечные даты не указаны, будут использованы первая и последняя даты, участвующие в результате. Допустим, мы написали запрос с дополнением дат: ВЫБРАТЬ НАЧАЛОПЕРИОДА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Период, МЕСЯЦ) КАК Период, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход, СУММА(_ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоОб

Примеры применения функции СКД - ВычислитьВыражение

Изображение
ВычислитьВыражение - довольно сложная функция СКД для понимания, а примеры применения в справочной информации довольно скудны. В данной статье рассмотрены примеры, которые наверняка пригодятся каждому разработчику: нарастающий итог в группировке; нарастающий итог в кросс-таблице; получение предыдущего значения; вывод ТЧ в одной строке. 1. Получение показателя нарастающим итогом Получим количество товара нарастающим итогом на уровне группировки. Для этого создаем вычисляемое поле (см. рисунок 1). Рисунок 1. Вычисляемое поле "Количество нарастающим итогом" На вкладке "Ресурсы" задаем функцию для вычисляемого поля: ВычислитьВыражение("Сумма(КоличествоОборот)", , , "Первая", "Текущая") которая будет суммировать количество товаров от первой записи до текущей (см. рисунок 2). Рисунок 2. Выражение для ресурса "Количество нарастающим итогом"

Программное открытие внешней обработки. Безопасный режим.

Изображение
Программное открытие внешней обработки осуществляется с помощью объекта глобального контекста ВнешниеОбработки, который имеет тип ВнешниеОбработкиМенеджер . Для каждого режима работы платформы 1С (режим обычного приложения и режим управляемого приложения) используются различные методы объекта для работы с внешними обработками. Запуск внешней обработки в режиме обычного приложения В обычном приложении необходимо использовать метод Создать() объекта ВнешниеОбработки, в который передается полное имя файла внешней обработки. Метод возвращает объект типа ВнешняяОбработка , этот объект и есть открываемая внешняя обработка. Если требуется открыть форму внешней обработки, то у полученного объекта вызываем метод ПолучитьФорму(), который вернет основную форму, а затем вызываем метод Открыть() для её открытия.

Создание ЭП-ОВ для взаимодействия со СМЭВ

Изображение
Проверка подписи XMLDSIG (WS-Security) с помощью сервиса СПЭП СМЭВ Проверка подписи XMLDSIG на примере СМЭВ Для взаимодействия со СМЭВ, все исходящие сообщения информационной системы, подключенной к СМЭВ, должны быть подписаны с целью удостоверения данных. Требования к алгоритмам создания электронной подписи информационной системы следующие: алгоритмы для расчета хеш-сумм -  ГОСТ Р 34.11-94 ; формирования подписи -  ГОСТ Р 34.10-2001 . Сообщение СМЭВ представляет собой XML документ, который подписывается ЭП по формату XMLDSIG (спецификация WS-Security). Подробное описание алгоритма создания ЭП находится в методических рекомендациях СМЭВ. Алгоритм можно реализовать самостоятельно, но в данной статье создание ЭП будем выполнять с помощью программных продуктов компании КриптоПро. Первым делом выполняем установку продуктов КриптоПро CSP и КриптоПро CADESCOM . К сожалению они являются платными, но использовать триальную версию можно 90 дней. Если подпись будет создаваться на кли

Последовательность вызова обработчиков событий при открытии формы объекта

Изображение
При открытии формы объекта, задействованы не только обработчики событий формы, но и модуль менеджера и модуль объекта. Перед рассмотрением последовательности вызова событий, хочу заметить, что количество обработчиков событий для модуля объекта и модуля формы равно не количеству отображаемых процедур в подсказке (см. рисунок 1), а на единицу больше. Рисунок 1. Обработчики событий модуля объекта Документ У этих модулей дополнительно имеется обработчик, связанный с активацией модуля, т.е. тело модуля это и есть обработчик активации модуля, который не отображается в подсказке. Последовательность вызова обработчиков событий при открытии формы объекта, например объекта Документ, включая активацию модуля, изображена на рисунке 2.

Загрузка данных табличного документа в таблицу значений

Изображение
Возникают ситуации, когда требуется считать данные с табличного документа и обработать их. Читать табличный документ по ячейкам утомительно и медленно, но существует способ чтения области ячеек в таблицу значений. Способ основывается на использовании объекта ПостроительОтчета - это объект, позволяющий на основе заданного текста запроса или источника данных, а так же настроек, получить результат и вывести его в табличный документ или диаграмму. Описание способа 1. Получаем область ячеек табличного документа, которую требуется поместить в таблицу значений. Получение области нужно задавать таким образом, что бы в неё входила строка заголовков колонок (см. рисунок 1), особенность работы объекта ПостроительОтчета. ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка); Рисунок 1. Область ячеек табличного документа

Агрегатные функции системы компоновки данных

Важно! Если параметр функции имеет тип Строка и в нем указывается имя поля, которое содержит пробелы, то такое имя поля должно быть заключено в квадратные скобки. Например: "[Количество Оборот]". 1. Сумма (Total) - рассчитывает сумму значений выражений, переданных ей в качестве аргумента для всех детальных записей. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива. Пример : Сумма(Продажи.СуммаОборот) 2. Количество (Count) - рассчитывает количество значений отличных от значения NULL. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива. Синтаксис : Количество([Различные] Параметр) В указания получения различных значений следует перед параметром метода Количество указать Различные (Distinct). Пример : Количество(Продажи.Контрагент) Количество(Различные Продажи.Контрагент)

Проверка подписи XMLDSIG (WS-Security) с помощью сервиса СПЭП СМЭВ

Изображение
Подготовка SOAP-сообщения перед созданием подписи XMLDSIG на примере СМЭВ Проверка подписи XMLDSIG на примере СМЭВ Проверка подписи органа власти с помощью сервиса СМЭВ В методических рекомендациях по работе с единой системой межведомственного электронного взаимодействия для проверки электронной подписи информационных систем (ЭП-СМЭВ, ЭП-ОВ, ЭП-ПГУ)* и электронной подписи физических лиц (ЭП-П, ЭП-СП)* указывает специализированный сервис проверки - СПЭП (сервис проверки электронной подписи). Данный сервис обеспечивает проверку электронных подписей и сертификатов и включает методы, обеспечивающие: проверку электронной подписи в формате XML digital signature; проверку электронной подписи в формате WS-Security; проверку электронной подписи в формате PKCS#7; проверку статуса сертификата ключа подписи. проверку электронной подписи в формате CAdES проверку электронной подписи в формате XAdES проверку электронной подписи в формате PAdES проверку штампов времени проверку электрон

Миграция на новую версию сервера 1С:Предприятия

Изображение
Данный метод справедлив для клиент-серверного варианта работы! Первым шагом выполняем создание резервной копии информационной базы (ИБ). Выполнить создание резервной копии можно различными способами, как средствами конфигуратора, так и средствами СУБД. При работе в клиент-серверном варианте используется трехуровневая архитектура с использованием кластер серверов 1С:Предприятия, через который выполняется общение клиентской части 1С:Предприятия и СУБД. После создания резервной копии, удаляем информационную базу в кластере серверов 1С:Предприятия старой версии (допустим, версии 8.2), связанную с базой данных СУБД, которая хранит данные информационной базы. Перед удалением запоминаем имя базы данных в СУБД. У сервера 1С:Предприятие нет собственного пользовательского интерфейса (GUI), для управления им используется консоль администрирования кластера серверов, ее можно установить при установке платформы 1С. Что бы выполнить данную операцию, открываем консоль администрирования класте

Элементарный способ разложения строки на подстроки

Изображение
Стандартная функция разложения строки на подстроки по разделителю в платформе 1С версии 8.2 отсутствует. Если посмотреть на реализацию такой функции в БСП(Библиотека стандартных подсистем), то алгоритм весьма впечатляющий для такой операции: высчитывается позиция символа, применяется куча функций для работы со строками и т.д и т.п. Недавно открыл для себя элементарный, просто до ужаса простой способ разложения/разделения строки на подстроки по разделителю. В качестве разделителя может выступать произвольный набор символов, но чаще всего это "," либо "|". Способ заключается в том, что разделитель заменяем на символ перевода строки, тем самым из строки создаем многострочную строку (см. рисунок 1). Рисунок 1. Преобразование строки в многострочную строку Далее с помощью стандартных функций по работе со строками СтрЧислоСтрок() и СтрПолучитьСтроку() обходим построчно многострочную строку, читаем строку и записываем в массив.

Супер-пупер быстрая конкатенация(сложение) строк

Изображение
Определение пересечения периодов (числовых множеств) Разность дат, а как быстрее? И снова сложно о простом. Что бы присоединить одну строку к другой, в платформу 1С заложена операция конкатенации ("+"). При выполнении конкатенации: длина результирующей строки равна сумме длин соединяемых строк; в случае несовпадения типа данных второго или последующих операндов со строковым типом, их значение преобразуется к строковому типу в соответствии с правилами преобразования типов. Пример: ФИО = Фамилия + " " + Имя + " " + Отчество; Выполним операцию конкатенации 100000 раз по алгоритму: ИтоговаяСтрока = ""; Для Счетчик = 1 По Объект.КоличествоИтераций Цикл ИтоговаяСтрока = ИтоговаяСтрока + Объект.РеквизитСтрока; КонецЦикла; Переменные содержат следующие значения: Объект.КоличествоИтераций = 100000; Объект.РеквизитСтрока = "ПроизвольнаяСтрока". Произведем замер длительности выполнения алгоритма (см. рисунок 1).

Определение пересечения периодов (числовых множеств)

Изображение
Супер-пупер быстрая конкатенация(сложение) строк Разность дат, а как быстрее? На первый взгляд, довольно простая задачка для программиста, но как только приступаешь к её решению, начинается составление длинного логического выражения. Так как в алгебре логики имеется ряд законов, позволяющих производить равносильные преобразования логических выражений, то существует как минимум два логических выражения по определению пересечения периодов. Допустим, имеется два периода: 1) НачалоПериода1 - КонецПериода1; 2) НачалоПериода2 - КонецПериода2. Можно пойти от противного и составить логическое выражение по определению не пересекаемости периодов с отрицанием: Пересекаются = Не ((НачалоПериода2 > КонецПериода1) Или (КонецПериода2 < НачалоПериода1)) Другой тождественный вариант по определению пересекаемости периодов: Пересекаются = (НачалоПериода2 < КонецПериода1) И (КонецПериода2 > НачалоПериода1); Выглядит уже попроще, но существует еще один вариант решения данной зада

Простая реализация формирования отчета в фоновом режиме

Изображение
Отчеты, разработанные с использованием системы компоновки данных, могут формировать в фоновом режиме. Фоновый режим формирования позволяет пользователям запускать "тяжелые" отчеты и продолжать работу в программе дальше (см. рисунок 1). Очень полезная функция. Реализовать формирование отчета в фоновом режиме можно двумя способами. Рисунок 1. Формирование отчета в фоновом режиме Первый способ заключается в том, что разработчик самостоятельно реализует формирование отчета в фоновом режиме. Создается процедура формирования результата, которая выполняется в фоновом задании. После запуска фонового задания подключается обработчик ожидания, который проверяет готовность результат и сигнализирует пользователю о том, что выполняется процесс формирования отчета. Вообщем-то ничего сложного нету, но время отнимет. Плюс данного способа в том, что разработчик сам контролирует процесс формирования отчета, может вывести процент готовности формирования и всякие другие бантики.

Загрузка установщика Windows 7 на материнской плате с поддержкой Skylake

Изображение
Увеличиваем свободное место локального диска под ОС Windows Современные материнские платы, разработанные под процессоры Intel микроархитектуры Skylake, рассчитаны большей частью на операционные системы семейства Windows версии 8.0 и более. Установка Windows 7 на такие материнские платы происходит с некоторыми сложностями, например, во время загрузки установщика происходит зависание компьютера. В моем распоряжении имеется материнская плата фирмы MSI на базе чипсета B150. Приступив к установке Windows 7, первые Nцать попыток завершились зависанием системы во время загрузки установщика. Виной этому были настройки, установленные производителем по умолчанию. Прошу извинить меня за отвратительные скриншоты. Хоть материнская плата и имеет современный BIOS UEFI, который позволяет по F12 сохранять скриншот на флэш-накопитель, но к сожалению флэшка должна работать на файловой системе FAT32. Итак, загружаем BIOS, усиленно нажимаю на Del при старте компьютера и переходим в расширенный реж

Краткое описание моделей восстановления MS SQL

Изображение
В MS SQL существует три вида резервных копий: полная резервная копия (Full backup); разностная (дифференциальная) резервная копия (Differential backup); резервная копия журнала транзакций. Полная резервная копия выполняется как правило один раз в несколько дней, а разностная резервная копия выполняется один раз в день. Следовательно, при выполнении таких резервных копий период потери данных, в случае сбоя, составляет минимум один день. Для сокращения периода потери данных существует возможность создавать копию журнала транзакций, как говорят в народе, бэкап лога. Журнал транзакций  - это файл, который содержит информацию о том, какие изменения были произведены в базе данных, что было и что стало в результате выполнения каждой транзакции. Из определения следует вывод, что журнал транзакций не хранит данные, а так же не хранит информацию, которая не требуется для восстановления базы данных (например,  информацию о том, какой план выполнения был у запроса). В журнале транзакций

Правильно определяем контекст

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

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

1. Вычислить (Eval) - предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение. Синтаксис : Вычислить(Выражение, Группировка, ТипРасчета) Параметры : Выражение (Строка). Cодержит вычисляемое выражение;  Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем. Например: Сумма(Продажи.СуммаОборот) / Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог"). В данном примере в результате получится отношение с

Обновление прошивки WD My Cloud экстренным способом

Изображение
Использование старого роутера как Wi-Fi модуль для стационарного ПК на примере DIR320NRU Случилась как-то беда, файловое хранилище WD My Cloud на 2 терабайта отказывалось обновляться как онлайн, так и в ручном режиме. В онлайн режиме вываливалась ошибка про недоступность сервера с обновлениями (возможно проблемы у провайдера были), а в ручном режиме ошибка с нехваткой места (на устройстве недостаточно свободного пространства для обновления) (см. рисунок 1). Рисунок 1. Ошибка обновления WD My Cloud Погуглив как следует, решение проблемы нашлось на одном из технических форумов, описание действие было очень скудное и не сразу было понятно что делать. Руки дрожали, а обновиться хотелось. Приступим к обновлению прошивки в ручном режиме кустарным методом... ВСЕ ДЕЙСТВИЯ ВЫ ВЫПОЛНЯЕТЕ НА СВОЙ СТРАХ И РИСК

Разность дат, а как быстрее?

Изображение
Определение пересечения периодов (числовых множеств) Супер-пупер быстрая конкатенация(сложение) строк Я думаю, каждый разработчик сталкивался с вычислением разности дат в днях, минутах или секундах. На платформе 1С существует два способа вычисления разности дат: С помощью языка запросов; С помощью арифметических операций. Разберем первый способ. Для вычисления разности дат используется стандартная функция языка запросов РАЗНОСТЬДАТ, она имеет три параметра: первый параметр - вычитаемая дата; второй параметр - исходная дата; третий параметр - тип разности, одно из: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД. Но помним, что функция рассчитывает календарную разницу между двумя датами, поэтому ее нельзя использовать в местах, где необходимо рассчитать количество банковских или рабочих дней между двумя датами. Напишем функцию: Функция ПолучитьРазностьДатВДняхЗапрос(НачалоПериода, КонецПериода) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РАЗНОСТЬДАТ

Инициализация реквизитов при создании нового объекта

Один из методов упрощения работы пользователя - это заполнение реквизитов нового объекта (элемент справочник, документ) значениями по умолчанию. Реализовать заполнение реквизитов можно двумя способами: в обработчике события формы элемента - ПриСозданииНаСервере; в обработчике события объекта - ОбработкаЗаполнения. Первый способ не рекомендуется использовать, но все-равно его рассмотрим. Создадим в модуле формы обработчик события ПриСозданииНаСервере. В обработчике проверим факт создания нового объекта, если объект новый, то произведем заполнение реквизитов. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Если ссылка у объекта пустая, значит он еще не записан, // а следовательно он является новым объектом. ЭтоНовыйОбъект = Объект.Ссылка.Пустая(); // Если объект новый, то выполняем заполнение реквизитов. Если ЭтоНовыйОбъект Тогда Объект.Ответственный = Пользователи.ТекущийПользователь(); Объект.Комментарий = "Документ созда

СКД. Добавление собственного пункта расшифровки.

Изображение
Потребовалось как-то создать отчет, который выводит информацию об оплате товара: не оплачен (сумма оплаты = 0), частично оплачен (сумма оплаты < суммы товара), оплачен (сумма оплаты = сумма товара). Сумма оплаты формируется по неким условиям, и требуется предоставлять пользователю информацию о том, каким образом была сформирована сумма, выражаясь терминами СКД: расшифровать сумму оплаты товара. Для вывода такой информации требуется нестандартный вариант расшифровки. Первым делом мне потребовалось переопределить поле для расшифровки, а если быть точнее, добавить поле для расшифровки. Для этого в схеме компоновки данных отчета на вкладке Макеты создал макет поля СуммаОплаты (см. рисунок 1), обратите внимание на заполнение свойств раздела Макет. Рисунок 1. Макет поля СуммаОплаты

Настройка шапки отчета в СКД

Изображение
Создадим внешний отчет, который будет выводить отчетную информацию об остатках номенклатуры и её обороте. Требуемая информация запрашивается запросом с помощью набор данных типа "Запрос", который содержит текст запроса: ВЫБРАТЬ _ДемоНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ АктуальнаяНоменклатура ИЗ Справочник._ДемоНоменклатура КАК _ДемоНоменклатура ГДЕ НЕ _ДемоНоменклатура.ПометкаУдаления И НЕ _ДемоНоменклатура.ЭтоГруппа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АктуальнаяНоменклатура.Номенклатура, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.МестоХранения, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоНачальныйОстаток, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоКонечныйОстаток, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоПриход, _ДемоОстаткиТоваровВМестахХраненияОстаткиИОбороты.КоличествоРасход, _ДемоОстаткиТоваровВМестахХраненияОстаткиИ

Использование старого роутера как Wi-Fi модуль для стационарного ПК на примере DIR320NRU

Изображение
Обновление прошивки WD My Cloud экстренным способом Предисловие Шел 2016 год, нефть в цене падала, доллар крепчал, рубль плакал, следовательно, цены на компьютерные комплектующие выросли и стали кусаться. Продолжать работать за ноутбуком не было сил, так как старичок Acer Aspire 5930G еле справлялся с поставленными задачами, было решено покупать новый системный блок. Достав копилочку, стало понятно, что системник будет состоять из комплектующих, без которых работа не возможна: процессор, материнская плата, блок питания, винчестер и сам корпус. Покупке был очень рад, установил операционную систему, предварительно создав загрузочную флешку, и принялся устанавливать ПО, но не тут-то было, совсем забыл за интернет соединение. За раздачу интернета отвечает роутер Asus RT-N53, который находится в прихожей, но новый системный блок не имеет Wi-Fi модуля, да и кабель не особо хотелось тянуть. Почесав затылок, заглянув в копилку и ударившись три раза лбом о стол, вспомнился роутер DLink