Процес підписання перерваний за ініціативою користувача. Хто запустив аналіз журналу реєстрації? Система видає помилку при вході на електронну площадку

Відбір на керованих формах в 1С 8.3

У статті будуть розглянуті варіанти установки відбору в керованих формах 1С 8.3. Відбір для динамічного списку може бути встановлений статично або динамічно, в інтерфейсіабо конфигураторе. Всі варіанти відборів ми розглянемо нижче.

  • Установка відбору в конфігураторі

Установка відбору в призначеному для користувача режимі

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

Для установки відбору в режимі підприємства необхідно викликати команду «Налаштувати список».

Відкриється вікно.


На вкладці «відбір» представлено список полів, який є в поточному списку. Вибираємо поля списку, за якими будемо фільтрувати. Зробити це можна подвійним клікомабо використовуючи drag and drop.


Задаємо вид порівняння і значення, тиснемо «Завершити редагування», відбір встановлений.


При установці відбору в режимі підприємства на формі списку автоматично створюються поля так званих швидких відборів.


Щоб платформа 1С автоматично створювала поля швидких відборів, при розробці форми в конфігураторі необхідно вказати групу налаштувань.


Даний відбір буде збережений тільки для поточного користувача, що дозволяє гнучко проводити кастомізовані настройки динамічного списку. Однак якщо стоїть завдання зробити фіксований відбір для певного списку для всіх користувачів системи, її ми зможемо вирішити тільки через конфігуратор.

Установка відбору в конфігураторі

Працюючи в конфігураторі, ми можемо встановлювати відбір динамічного списку двох видів - фіксований і динамічний. Фіксований відбір налаштовується один раз, динамічний або програмний - можна встановлювати в залежності від будь-яких даних в системі.

Принцип установки фіксованого відбору в конфігураторі не відрізняється від установки в призначеному для користувача режимі описаному вище. Щоб встановити відбір, ми повинні відкрити настройки динамічного списку.


Відкриється вікно.


Відбір задається так само, як в призначеному для користувача режимі.

Опція «Включати в призначені для користувача настройки» визначає, чи буде встановлений в конфігураторі відбір доступний в призначеному для користувача режимі через пункт меню «Налаштувати список».


Динамічний (програмний) відбір

Найчастіше виникає необхідність встановлювати відбір програмно, наприклад, при відкритті форми вибору, коли нам необхідно відкрити керовану формуз відбором. У форму передається параметр і за цим параметром встановлюється відбір. Частий приклад цього - відбір елементів довідника по власнику.

методи

Якщо в розробляється конфігурації присутній підсистема БСП «БазоваяФункціональность», програмний відбір в динамічному списку можна встановити використовуючи типовий метод:

ОбщегоНазначеніяКліентСервер.УстановітьЕлементОтбораДінаміческогоСпіска ()

сигнатура даного методу:

ДінаміческійСпісок Тип: ДінаміческійСпісок - Список, в якому потрібно встановити відбір.

ІмяПоля Тип: Рядок - Поле, по якому необхідно встановити відбір.

ПравоеЗначеніе Тип: Довільний - Значення відбору (Необов'язковий. Значення за замовчуванням: Не визначено. Увага! Якщо передати Не визначено, то значення не буде змінена).

ВідСравненія Тип: ВідСравненіяКомпоновкіДанних - Условие отбора.

подання Тип: Рядок - Подання елемента компонування даних (Необов'язковий. Значення за замовчуванням: Не визначено. Якщо вказано, то виводиться тільки прапорець використання із зазначеним поданням (значення не виводиться). Для очищення, щоб значення знову виводилося, слід передати порожній рядок).

Використання Тип: Булево - Прапорець використання цього відбору (Необов'язковий. Значення за замовчуванням: Не визначено).

РежімОтображенія Тип: РежімОтображеніяЕлементаНастройкіКомпоновкіДанних - Режим перегляду цього відбору користувачеві. Можливі значення:

  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.БистрийДоступ - В групі швидких налаштуваньнад списком.
  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.Обичний - У настройка списку (в підміню Ще).
  • РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.Недоступний - Заборонити користувачеві змінювати цей відбір.

ІдентіфікаторПользовательскойНастройкі Тип: Рядок - Унікальний ідентифікатор цього відбору (Використовується для зв'язку з призначеними для користувача настройками).

Для видалення якогось значення відбору необхідно скористатися типовим методом:

ОбщегоНазначеніяКліентСервер. УдалітьЕлементиГруппиОтбораДінаміческогоСпіска ()

Сигнатура даного методу:

ДінаміческійСпісок Тип: ДінаміческійСпісок - реквізит форми, для якого потрібно встановити відбір.

ІмяПоля Тип: Рядок - ім'я поля компонування (не використовується для груп).

подання Тип: Рядок - уявлення поля компонування.

У разі відсутності в системі БСП відбір можна встановити самостійно, використовуючи об'єкт ПолеКомпоновкіДанних.

ЕлементОтбора = Спісок.Отбор.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе = Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія = ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.РежімОтображенія = РежімОтображеніяЕлементаНастройкіКомпоновкіДанних.БистрийДоступ; // Опціонально ЕлементОтбора.ПравоеЗначеніе = "Іванов";

Даний відбір відбере рядки, в яких значення «ПІБ» = «Іванов».

Для використання логічних «І», «АБО», «НЕ» призначений тип даних ГруппаЕлементовОтбораКомпоновкіДанних

ГруппаОтбора = Спісок.Отбор.Елементи.Добавіть (Тип ( "ГруппаЕлементовОтбораКомпоновкіДанних")); ГруппаОтбора.ТіпГруппи = ТіпГруппиЕлементовОтбораКомпоновкіДанних.ГруппаІЛІ; ЕлементОтбора = ГруппаОтбора.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе = Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія = ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.ПравоеЗначеніе = "Іванов"; ЕлементОтбора = ГруппаОтбора.Елементи.Добавіть (Тип ( "ЕлементОтбораКомпоновкіДанних")); ЕлементОтбора.ЛевоеЗначеніе = Новий ПолеКомпоновкіДанних ( "ПІБ"); ЕлементОтбора.ВідСравненія = ВідСравненіяКомпоновкіДанних.Равно; ЕлементОтбора.ПравоеЗначеніе = "Петров";

Даний відбір відбере рядки, в яких значення «ПІБ» = «Іванов» або «Петров».

Відбір в динамічному списку також можна виробляти через зміну тексту запиту динамічного списку. Цей варіант працює, коли динамічний список зроблений через «довільний запит».


Для цього до тексту запиту додаємо умова «ДЕ Істина» ...


Як видно, такий підхід більш компактний з точки зору написання коду. Чим складніше умови відбору в табличній частині ми хочемо встановити, тим більш громіздким буде варіант з використанням відбору через ЕлементОтбораКомпоновкіДанних. Однак у приклад зі зміною тексту запиту є свої недоліки - ця реалізація не стійка до змін коду. Наприклад, ви зробили таку реалізацію і забули, але якщо в майбутньому ви захочете модифікувати текст запиту, додавши в нього будь-якої оператор після ДЕ (УПОРЯДОЧИТЬ, згрупованих), вам потрібно не забути про те, що в програмному кодіє:

Спісок.ТекстЗапроса = Спісок.ТекстЗапроса + "І СправочнікПользователі.ФІО В (" "Іванов" "," "Петров" ")";

Якщо цього не врахувати буде помилка, але щоб цього уникнути, можна переробити на іншу реалізацію. У текс запиту додаємо таку умову:

ДЕ (НЕ & ОтборУстановлен АБО СправочнікПользователі.ФІО В (& РазрешенниеФІО))

Спісок.Параметри.УстановітьЗначеніеПараметра ( "ОтборУстановлен", ФІО.Колічество ()> 0); Спісок.Параметри.УстановітьЗначеніеПараметра ( "РазрешенниеФІО", ПІБ);

Тут ПІБ - масив.

Ка видно, 2 рядки коду проти 10. Який із способів вибрати, залежить від конкретної прикладної задачі.

Багато учасників закупівель, в незалежності від досвіду, стикаються з проблемою коректності роботи на електронному торговельному майданчику. Дані помилки можуть виявитися в будь-який момент, в тому числі і в процесі електронних торгів.

Наслідки можуть бути самі різні, а саме:

  • Чи не подана в терміни заявка на участь в конкурсі
  • Програний електронний аукціон
  • Чи не підписаний в термін державний контракт

Три найбільш поширені проблеми в роботі з електронним підписом

  1. Сертифікат учасника закупівлі не відображається на електронному майданчику
  2. Електронний підпис не підписує документи

Насправді помилок може бути куди більше, але ми розберемо основні і їх причини, а також позначимо можливі шляхи усунення проблем.

Найголовніше - запам'ятати, що для коректної роботиелектронного підпису необхідно використовувати браузер Internet Explorerне нижче 8 версії і, бажано, не вище 11 (з 11 версією немає гарантій стабільної роботи підпису).

Сертифікат ключа підпису не з'являється на майданчику при спробі входу в систему

В даному випадку помилка викликана відразу декількома причинами, а саме:

  • Некоректна настройка сертифіката ключа підпису
  • Неправильно налаштований інтернет браузер
  • Відсутня кореневий сертифікат засвідчується Центру

Як вирішити проблему?

В першу чергу, необхідно переконатися в тому, що Ви коректно встановили відкриту частину сертифіката в особисті через ЗКЗІ (Кріпто Про). При цьому версія встановленої програмипідходить для типу вашої операційної системи.

Потім, в настройках браузера Internet Explorer необхідно додати адреси майданчиків в надійні вузли і включити всі елементи ActiveX.

Електронний підпис видає помилку при підписанні документів

Як правило, ця помилка виникає в ряді випадків:

  • Закінчився термін дії ліцензії програми КріптоПро
  • Вставлений носій з іншим сертифікатом

Як це виправити?

Для цього Вам необхідно отримати нову ліцензію, звернувшись в Удостоверяющий Центр. Після того, як ліцензія благополучно отримана, необхідно запустити КріптоПро і ввести серійний номерліцензії.

У другому випадку Вам необхідно перевірити всі закриті контейнери (носії), вставлені в USB-роз'єм комп'ютера і перевірити правильність вибору потрібного сертифіката.

Система видає помилку при вході на електронну площадку

Дана помилка може бути викликана сукупністю причин, зазначених вище. Як показує практика, така помилка в першу чергу з'являється через неправильно встановленої бібліотеки Capicom. Рекомендуємо перевірити наявність встановленої бібліотеки на Вашому комп'ютері і звернути увагу на необхідність копіювання 2 системних файлівз расшіреніем.dll в одну з папок Windows, При користуванні 64-розрядної системою.

Для того, щоб Ви могли уникнути подібних помилок, перед установкою електронного підпису, прочитайте по встановленню та налагодженню електронного підпису або замовити по випуску та налаштування електронного підпису в нашій компанії.

COMET-технології дозволяють організувати оновлення даних на сторінці без участі користувача.

Чати, інтернет-пошта і розраховані на багато користувачів адмінки - далеко не повний список, Де вони можуть бути застосовані.

У цьому циклі статей - докладно описані численні тонкі моменти і рішення частих проблем.

Що таке COMET?

COMET (або "server push") - спосіб передачі даних з сервера на клієнт, з ініціативи сервера.

Наприклад, у вас є електронний магазин, і менеджер може відстежувати переходи клієнта.
COMET дозволяє менеджеру відразу, онлайн, запитати клієнта про щось, запропонувати цікавий варіант.

"З ініціативи сервера" означає, що клієнт сам не запитує сервер, він просто знаходиться на сторінці.

Найстаріший приклад COMET - чат. Людина просто знаходиться на сторінці і отримує нові повідомлення.

Також COMET використовується в адмінки для оповіщення про зміни з боку інших відвідувачів, для спільного редагування документів і т.п.

способи реалізації

Способів реалізації COMET досить багато. У них - найрізноманітніші характеристики, переваги і недоліки.
Є два основні класи.

За повідомленням на запит

Кожна подія на сервері браузер отримує окремим запитом. Тут є два основні методи.

  1. Частий опитування (polling)
  2. Довгий опитування (long-poll)

Щоб зменшити кількість необхідних з'єднань і затримки, повідомлення про події пакують в спеціальні пакети, "датаграми".
Наприклад, одне XML-повідомлення може виглядати як:

Vasya Привіт! processing Обробка завершена

Під час наступного з'єднання браузер отримує відразу весь пакет подій на цей момент.

Браузер тримає постійне з'єднання з сервером, так званий "канал", і отримує через нього події.

Канал зв'язку розривається час від часу:

  • щоб проксі не подумав, що настав таймаут з'єднання і не порвав його за нас
  • для очищення пам'яті від сміття старих повідомлень

Крім того, для вимірювання мережевих затримок і контролю з'єднання, сервер може періодично посилати по цьому каналу ping-пакети.

Основні способи підтримки постійного з'єднання:

  1. нескінченний IFrame
  2. XMLHTTPRequest, interactive
  3. Multipart XMLHTTPRequest
  4. Event-source

Ви знайдете їх в інших статтях цього розділу.

Загальні для постійних з'єднань проблеми

Протокол HTTP спочатку створювався так, щоб один запит повертав одну одиницю інформації. А ми хочемо - багато, звідси і деякі складності ...

буферизація проксі

Таке зустрічається рідко, але проксі може буферизувати певну кількість даних до передачі клієнтові. Наприклад, приймати і віддавати відповідь блоками по 2К. У цьому випадку повідомлення залишатимуться на проксі, і чекати, поки їх не набереться 2К (або який там розмір буфера) байт, і тільки тоді - передаватися клієнту.

Рішення - додавати до кожного повідомлення 2K прогалин.

Невідомо, чи торкнеться Вас ця проблема. Сподіваюся, що ні, але мати на увазі буферизацию проксі як можливу причинускарг користувачів - треба обов'язково.

Не можна GZIP

IFrame, який служить для передачі повідомлень, НЕ повинен стискатися gzip / deflate. Інакше кажучи, для службового URL повідомленьстиснення має бути відключено.

Включене стиснення має на увазі, що браузер чекає кінця завантаження, а потім - розпаковує і показує користувачеві. У нашому ж випадку це категорично протипоказано, а стискати шматочки сторінки (повідомлення) окремо не можна.

Це - неприємний наслідок хакерської натури iframe. Наприклад, в long poll стиснення проходить на ура, т.к події не є частиною однієї сторінки.

Буферизація сторінки сервером

Не забудьте відключити буферизацію сервером. У зв'язці Apache / PHP - вимкніть output buffering і включіть ob_implicit_flush:

While (@ob_end_flush ()) () ob_implicit_flush (1); // ну і звичайно прибрати ліміт на час виконання скрипта set_time_limit (0);

COMET: частий опитування VS постійне з'єднання

Як завжди, при написанні веб-додатки постає питання про вибір архітектури. З одного боку, рішення на довгих з'єднаннях (все, крім частих опитувань) забезпечують швидке повідомлення. З іншого ... Чи завжди довге з'єднання краще частих опитувань?
Рішення з довгими з'єднаннями на вигляд оптимальніше, але набагато складніше і має ряд особливостей.

  1. Реалізація довгого конекту, як правило, ускладнює архітектуру. Можливо, можна обійтися рішенням простіше?
  2. Ряд веб-серверів погано оптимізовані під велику кількість довгих з'єднань. Наприклад, використовуються потоки або процеси, які відбирають фіксовану кількість ресурсів і не звільняють їх до кінця соедіненія.На рівні OS проблема вирішується використанням kqueue (FreeBSD) або epoll (Linux) .На рівні веб-сервера можна використовувати
    1. Apache MPM event для apache 2.2 (експериментальний і обмежений MPM, спеціальний потік обробляє Listening і Keep-Alive сокети)
      не працює як слід з mod_perl / mod_php
    2. Jetty (Java) / Twisted (Python), nginx і інші спеціалізовані сервери c одним потоком / процесом на багато клієнтів.

    Чи потягне поточна серверна архітектура довгі з'єднання? Відповідь неочевидний для сотень / тисяч одночасних з'єднань, але, скажімо, до 100 з'єднань в будь-якій архітектурі все добре.

  3. Наскільки довго користувачі перебувають на одній і тій же сторінці? При переходах коннект, швидше за все, доведеться відкривати заново в будь-якому випадку.
  4. Якщо допустимі затримки доставки подій, то, може бути, вистачить частого опитування?

Класична (transport-independant) модель COMET

Подивимося на взаємодію клієнт-сервер "з висоти пташиного польоту", вище деталей передачі даних, транспортів і т.п. Наприклад, так це зроблено в спеціалізованому server-push движку lightstreamer.

З'єднання з сервером діляться на два типи

  1. Control connection - контрольні з'єднання, через які клієнт відправляє запити на сервер. Це - звичайні AJAX-запити через XMLHTTPRequest.
  2. Push connection (channel) - потік подій, з'єднання, через які клієнт отримує події з сервера

У всіх подій на сервері є тип. Клієнт може підписуватися і відписуватися на питання, що цікавлять його події через контрольні з'єднання. Для зручності типи організовані за схемами. Наприклад, в схемі chat може бути тип message.

Наприклад, наступна діаграма описує типову послідовність дій:

  1. Клієнт відкриває потокове з'єднання до сервера
  2. Клієнт підписується на події типу Item1 в схемі Schema1
  3. Сервер шле події
  4. Клієнт відписується від подій через нове контрольне з'єднання
  5. Клієнт закриває з'єднання

Або - ось більш складна діаграма, в якій клієнт підписується вже на різні типиподій:

В якості транспорту в lightstreamer використовується iframe. Час від часу його необхідно закривати для очищення від прийнятих об'єктів. При закритті сесії (це ж відбувається при refresh сторінки в браузері) сервер буферизует нові події до деякого часу очікування і віддає їх, як тільки відкривається нова сесія Stream Connection 2 того ж користувача.

Взагалі, буферизація подій - загальний прийом, який дозволяє м'яко переживати закриття з'єднання, і потрібен при будь-якому транспорті.

У новому форматі зберігання файл журналу реєстрації може досягати сотень гігабайт. Час виконання вибірки по ньому буде дуже великим, при цьому виникає проблема: зупиняється робота всіх користувачів.

Ознаками даної проблеми є:

    Неможливо зайти в інформаційну базу.

    Майже 100% активність диска, на якому розташований журнал реєстрації і активне читання файлу журналу реєстрації процесом rmngr.
    Даний пункт можна перевірити за допомогою монітора ресурсів (Диспетчер завдань - Продуктивність - Відкрити монітор ресурсів) на вкладці "Диск".
    У групі "Сховище" потрібно звертати увагу на колонку "Активне час (%)".
    У групі "Робота диска" потрібно звертати увагу на колонки "Читання" і "Файл". Можна впорядкувати за колонці "Читання". Серед перших рядків з максимальною швидкістючитання буде процес rmngr. Далі потрібно дивитися ім'я читаного файлу, Воно буде відповідати журналу реєстрації певної інформаційної бази.

    В консолі адміністрування кластера серверів 1С: Підприємство в списку сеансів майже у всіх користувачів буде велике і приблизно однакове значення в колонці "Захоплено СУБД" або в колонці "Час виклику (поточний)".

При виявленні проблеми потрібно:

    Запам'ятати УИД ІБ, з якою Ви читання процесом rmngr.

    Запустити збір технологічного журналу на події EXCP, якщо ще не запущений.

    Зробити експорт усіх сеансів на проблемному сервері АБО на проблемної ІБ за допомогою консолі адміністрування кластера серверів 1С: Підприємство, на випадок, якщо знадобляться додаткові дані для аналізу.

    Перезапустити службу 1С: Підприємство.

    Зібрати технологічний журнал на час перезапуску сервера 1С: Підприємство.

    Проаналізувати технологічний журнал: виконати пошук слів "ВигрузітьЖурналРегістраціі" або "UnloadEventLog".

приклад:

29: 40.069000-0, EXCP, 4, process = rphost, p: processName = ib_accounting , T: clientID = 114396, t: applicationName = 1CV8C, t: computerName = COMP , T: connectID = 109127, SessionID = 1, Usr = Іванова , AppID = 1CV8C, ClientID = 114389, Exception = NetDataExchangeException, Descr = Передача даних перервана з ініціативи приймаючої сторони., Context = "Форма.Визов: ВнешнійОтчет.АналізЖурналаРегістраціі.Форма.Модуль.ФоновоеЗаданіеЗапустіть

ОбщаяФорма.ФормаОтчета.Форма: тисячу двісті сорок два: ВаріантиОтчетов.СформіроватьОтчетВФоне (ПараметриФормірованіяОтчета, РезультатФоновогоЗаданія.АдресРезультата);

ОбщійМодуль.ВаріантиОтчетов.Модуль 2544: Формування = СформіроватьОтчет (Параметри, Брехня, Брехня);

ОбщійМодуль.ВаріантиОтчетов.Модуль: 2060 Отримати: ОтчетОб'ект.СкомпоноватьРезультат (Результат.ТаблічнийДокумент, Результат.Расшіфровка);

ВнешнійОтчет.АналізЖурналаРегістраціі.МодульОб'екта: 64:ВигрузітьЖурналРегістраціі(ТЗ, Відбір, Колонки); "

З цієї рядку можна сказати хто:Іванова, де (на якому комп'ютері): COMP , в якій інформаційній базі: ib_accounting запустив аналіз журналу реєстрації.

Поділитися