bdd2


Andreev Sergey

809
Рейтинг

Sergey Andreev
starik-2005



  •   Регистрация: 20.12.2014 (2 года назад)

  •   Был(а) на сайте: сегодня в 09:29


Группы

Профессиональный разработчик

Рейтинг 809

Публикации

Как вывести результат запроса в таблицу на управляемую форму, ведь здесь нет метода "СоздатьКолонки()"? Как добавить поле ввода в табличную часть документа, если нет желания менять документ? Разбираемся...


Как установить хитрый отбор при открытии формы списка, например, отбор формы списка документов по элементу табличной части? Давайте разбираться...


Случайно наткнулся на статью с алгоритмом загрузки XML-строки в дерево значений и подумал, а не проще ли сделать это через механизм XDTO рекурсивно. На мой взгляд, решение получилось неплохое - даже атрибуты грузит..


Не знаю, все ли внешние источники, изображенные на картинке, можно использовать в 1С, но многие из них точно можно прикрутить к 1С, в том числе и установленном на сервере под управлением замечательной свободной ОС LINUX.


Как показала практика, о веб-сервисах знает почти каждый программист, но о том, как их готовить, - весьма ограниченный круг. Давайте интереса ради замутим сервис и дернем его с помощью простого подручного средства - "Бумеранг"!


Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.


Решил реализовать иерархию в пакете XDTO и выгрузить ее рекурсивно. Задача оказалась нетривиальной, хотя и весьма простой. Изысканиями решил поделиться с народом, чтобы не пропадало народное добро.


Честно - не нашел нигде описания того, как пропатчить KDE для FreeBSD, поэтому решил ликвидировать данную несправедливость. Ниже по тексту я расскажу не только про то, как собрать Postgres, но и как использовать флаги оптимизации для вашего процессора, чтобы все работало максимально быстро. Ну и немного остановлюсь на конфигурировании и администрировании.


В прошлом веке появилось много теорий управления человеческими ресурсами. Хочется рассмотреть три из них и некоторым образом переплести их с общим образовательным кризисом последних лет.


О веб-сервисах, апачах и *nix'ах. - установим на новенький убунту старенький апач с php. - дернем сервис из php-скрипта. - создадим приложение, позволяющее дергать произвольный сервис с произвольными данными. - ну и что там получится по пути в лес...


Комментарии

DevВывод последнего события (СКД)#24 20.01.17 15:21
(23) одно - это зло, особенно если их два.
DevВывод последнего события (СКД)#22 20.01.17 14:48
(21)
Цитата
В (6) все-таки не очень надежно, так как могут быть два события с одинаковой датой. Вероятность маленькая, конечно, но ненулевая)
Ну тогда будет два последних события. Что не так? )))
AdminУТ 11.1 SQL Тормозит под пользователем#19 20.01.17 13:05
(14) поделилось пополам, ибо в 50% случаев мы найдем менее чем за половину шагов, во вторых 50% случаев - больше чем за половину шагов. В среднем тут как с блондинкой и динозавром - или да, или нет, т..е. 50%.
DevВывод последнего события (СКД)#10 20.01.17 12:50
(8) засунь в СКД, нажми "Конструктор", исправь одну небольшую ошибку. Пиши "Боже" с большой буквы.
DevВывод последнего события (СКД)#6 20.01.17 12:46
(3) ну тады так: ВЫБРАТЬ максимум(Дата), участник ПОМЕСТИТЬ ВТ1 ИЗ События; ВЫБРАТЬ б.* ИЗ ВТ1 КАК а ВНУТРЕНЕЕ СОЕДИНЕНИЕ События КАК б ПО а.Участник = б.Участник и а.Дата = б.Дата.
AdminУТ 11.1 SQL Тормозит под пользователем#10 20.01.17 12:42
(8) значит, нужно переписать RLS так, чтобы они были у всех ролей одинаковые. Тогда 1С генерит одно дополнительное условие (в трассировке сервера это можно посмотреть) и, если повезет и элемент отбора является ключом индекса, то проблема уйдет.
DevВывод последнего события (СКД)#2 20.01.17 12:17
1. ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ События УПОРЯДОЧИТЬ ПО Дата Убыв
2. Выбрать как есть, установить упорядочивание по дате по убыванию, в последней закладке настроек макеты указать выбирать первые 1
AdminУТ 11.1 SQL Тормозит под пользователем#6 20.01.17 12:10
Проблема в RLS. Если нет необходимости пользователю блокировать доступ к части объектов, то просто можно из всех ролей пользователя в конфигураторе удалить RLS (а еще лучше - из всех ролей вообще). Причина в том, что при наличии разных RLS для разных ролей для одного пользователя они отрабатывают по ИЛИ, что приводит к скану таблицы вместо поиска по двоичному дереву индекса. Т.е. сервер вместо того, чтобы найти запись за O(Log2(N)/2) чтений, ищет ее в среднем за O(N/2) чтений, а это весьма длительная операция.
DevАсинхронность в управляемом интерфейсе 1С#16 20.01.17 11:27
(14)
Цитата
Так что это еще вопрос кто читал и не понял и понял не так. ;-)
Ну так я и говорю, что асинхронность - это callback'и, а не фоновые задания, которые и раньше были. Тут Вам не надо ничего понимать - достаточно поверить, ибо попытки что-то Вам объяснить сами знаете чем кончатся - потом поймете.
Цитата
В компьютерном программировании, асинхронные событиями являются те, которые возникают независимо от основного потока выполнения программы. Асинхронные действия — действия, выполненные в неблокирующем режиме, что позволяет основному потоку программы продолжить обработку[6].
Суть тут в том, что есть основной поток, который сгенерировал отображение диалога, при этом основной поток не ждет результата этого диалога, ибо результат обрабатывается в отдельной функции, указанной при открытии этого диалога. То же самое для начала чтения текстового файла, когда он читается независимо от основного потока программы, а после того, как он прочитался, вызывается callback-функция. В итоге нет блокировки ожидания в коде основной программы. Т.е. нет в асинхронном режиме "Результат = Длг.Выбрать()", а есть "Длг.Показать(CallBackFunction);" и продолжение выполнения кода после этого (или выход из процедуры - как будет угодно г-ну программисту). Вот это и есть асинхронность в том понимании, которое связано с "неблокирующим" основной поток выполнением.

В общем не стоит путать фоновые задания, которые и в 8.0 вроде как были, с той "новомодной" асинхронностью, которая методологически убирает модальность. В вебе не так просто организовать ввод данных в диалог, чтобы дождаться результата - там как раз асинхронные механизмы используются. При вводе данных используются calback'и, и даже при рендеринге каждый кадр рассчитывается через вызов callback-функции, которая в конце каждого кадра дергается. Т.е. рендерим объект, отрабатываем логику (меняем состояние объектов на основании событий и поведения), вызываем callback-функцию для отрисовки следующего кадра, пьем чай...

ЗЫ: Как пример предела асинхронности можно привести промисы. Вот это и есть тру-асинхронность, до которой 1С еще пилить и пилить (кстати, тут где-то про промисы в коментах к статье про последовательные асинхронные вызовы было, вот пруф).
DevАсинхронность в управляемом интерфейсе 1С#13 19.01.17 23:29
Не хочу придираться к автору, т.к. это, понятное дело, штука бессмысленная. Да и к статье не хочу придираться. Одно понятно - автор вообще не вкурил, что такое асинхронность в контексте "новомодных веяний и в 1С тоже" ))).

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

Но с точки зрения это самой "новомодности", асинхронность - это отсутствие прямой последовательности между командами. Т.е. есть у тебя вопрос пользователю. Синхронность - это когда ты открываешь пользователю диалог с вопросом и ждешь ответа, как соловей лета. Т.е. команды дальше не выполняются, ждется ответ, после которого уже можно посмотреть, что же это самое модальное окно нам вернуло и, соответственно, обработать результат.

А вот асинхронность - это когда ты показал диалог пользователю, засунул туда callback-функцию и не ждешь, что ответит тебе пользователь, а занимаешься в это время чем-то другим - просто висишь в ожидании событий. Т.е. при асинхронности ответ пользователя вызовет твою callback-функцию, в которую передаст результат, и который в этой самой отдельной функции и нужно обработать.

А старт длительной операции для получения какого-либо списка (и какой, интересно, идиот сделал получение списка регламентных и фоновых заданий с помощью этого? Стало еще дольше!) - это к асинхронности отношения имеет мало, ибо вместо того, чтобы дернуть calback-функцию формы при получении списка фоновых заданий, приходится висеть в обработке ожидания и мониторить, а не завершилось ли фоновое задание и не нужно ли уже получить список того, что оно нам напилило. Кароче, хрень это, а не асинхронность.

Никаких претензий к автору - как уж понял, так и слава Богу.