Данные формы и оптимизация обмена с сервером

Публикация № 304895

Разработка - Практика программирования

Клиент-сервер сериализация ДанныеФормыКоллекция ДанныеФормыДерево

Почему может сильно тормозить форма, где есть "ДанныеФормыКоллекция", "ДанныеФормыДерево" и им подобные, и как этого избежать.

"ДанныеФормы..." Синтакс-помощник не балует нас избыточной информацией, сообщая лишь, что объект этого рода, в общем случае, "предназначен для моделирования коллекций в данных управляемой формы" и "может использоваться в реквизитах управляемой формы". Для "ДанныеФормыКоллекция", по идее, моделируется таблица значений, для "ДанныеФормыДерево" - дерево значений, и так далее. Общеизвестно, на ИТС и в статьях разжёвано, что эти объекты живут на клиенте с целью адекватно отобразить, в т.ч. в связке с элементами УФ, те или иные данные; а также, что они доступны и на сервере как минимум при передаче всего контекста формы. Моделировать можно коллекции прикладных объектов из БД, а можно и свои, временные, созданные прямо в форме для служебных и рабочих надобностей. Вот о них и пойдёт речь - о моделях коллекций, являющихся реквизитами управляемой формы и отражающих некие не единичные объёмы данных.

Поскольку поведение этих моделей отличается в разных версиях платформы, возьмём 8.2.19.106 и 8.3.5.1119; для чистоты эксперимента создадим для каждой версии совсем пустую конфигурацию и будем гонять в режиме тонкого клиента, безо всяких совместимостей, замеряя производительность с помощью штатных средств платформы.

Сделаем внешнюю обработку, в ней форму, и для этой формы создадим два реквизита - с типом "Таблица значений" и с типом "Дерево значений" (разумеется, они покажутся в скобках как несуществующие на клиенте). Создадим по 4 реквизита-колонки к каждому из этих, дадим им типы - строковый (250), число (15.2), дата (дата-и-время), булево. Желающие могут поэкспериментировать со ставшими возможными в 8.3 "произвольными", а также с вложением всяких других моделей коллекций типа "матрёшка", но мы будем работать с этими простыми данными, чья возможность сериализации штатным образом очевидна. На интерфейсе, в элементах формы, ничего делать не станем.

Заполним таблицу значений - сначала по 1000 строк, потом будем пробовать больше. Дерево значений, а точнее, моделирующая его коллекция, понадобится как "гиря", сразу дающая разницу в объёмах данных на порядки. Строковую колонку везде забьём мусором под все 250 символов.

Итак, что нам интересно? Допустим, мы делаем внешнюю универсальную обработку, в чьих реквизитах формы никак не задействованы сущности БД, но по ряду причин очень нужно использовать большие модели коллекций. Например, это обзор файлов на клиентском ПК - дерево каталогов и некая таблица значений нужных юзверю файлов. Главное, что нам совершенно незачем обрабатывать все данные на сервере, мы добровольно отказались от индексации таблицы значений и вообще хотим в первую очередь оптимизировать передачу данных между клиентом и сервером. Подчеркну - дерево большое, таблица значений сравнительно маленькая.

Исходная задача - всего лишь по каким-то нашим нуждам поработать с таблицей значений, "вынимаемой" из её модели. Да, можно возразить, что мол "чего тебе не хватает" - и сортировка есть, и поиск, и обход колонок можно смоделировать - но вот допустим, для эксперимента. Я, может, хочу СКД-образную выборку запилить по таблице, с ветками "И"-"ИЛИ", по заданной юзверем логике.

Вроде бы это просто - вызвать контекстную серверную процедуру и там выполнить "ДанныеФормыВЗначение", вуаля. Но здесь и начинаются подводные камни, потому как вместе с безусловно нужной нам моделью таблицы значений на сервер в рамках контекста тащится и огроменная "ДанныеФормыДерево", которая вообще там не нужна.

К сожалению, разработчики платформы не дали нам возможности избирательно управлять передачей контекста формы между клиентом и сервером. Флаг "Использовать всегда" для реквизитов этих моделей вообще не играет роли, а другого и нет, и в результате вызов сервера превращается в тормоза и недопустимо высокий объём отправляемых данных.

Очевидно, что вызов должен быть внеконтекстным. Но тогда коллекции недоступны, и их надо как-то в целевую серверную процедуру передать. Тут начинается разница - в 8.2 можно передать "ДанныеФормы" как аргумент на сервер, их передача происходит без ошибок и без потерь, но на ИТС читаем, что это очень некомильфо, что в принципе логично, т.к. кто его знает, как оно там размещается, где в памяти болтается, куда на сервере приложений девается и как себя поведёт при изменении без указания "Знач".

Всякие "ХранилищеОбщихНастроек.Сохранить" или "ЗначениеВСтрокуВнутр" неприменимы на клиенте и отпадают.

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

Но в 8.3 нас ждёт неприятный сюрприз: 8.3.4 просто заявляет, что подобные объекты "не могут быть помещены в хранилище", а 8.3.5 громко падает с ошибкой. Скромно осмелюсь полагать, что это просто временная недоработка писателей платформы, ибо если данные можно было передавать в 8.2, то что мешает повторить достигнутое? Поэтому надеюсь, что примерно к 8.3.10 это аккуратно доделают, а не оставят как сейчас и не объявят "фичей", подогнав заумное обоснование.

Что делать? А делать сериализацию своими силами. Это даже лучше, всё под нашим контролем. Приведу кусок кода с контекстным и внеконтекстным вызовами, которые дали мне статистику.

&НаСервереБезКонтекста
Процедура Сгонять_СерверБезКонтекста(стро)
   
рЧтениеХМЛ=Новый ЧтениеXML;
   
рЧтениеХМЛ.УстановитьСтроку(стро);
   
рТаблицаЗначенийС=СериализаторXDTO.ПрочитатьXML(рЧтениеХМЛ);
   
Сообщить("К-во табзнач: "+рТаблицаЗначенийС.Количество());
КонецПроцедуры

&НаКлиенте
Процедура СгонятьБезКонтекста(Команда)
   
рЗаписьХМЛ=Новый ЗаписьXML;
   
рЗаписьХМЛ.УстановитьСтроку();
   
СериализаторXDTO.ЗаписатьXML(рЗаписьХМЛ,рТаблицаЗначений);
   
Сгонять_СерверБезКонтекста(рЗаписьХМЛ.Закрыть());
КонецПроцедуры


&НаСервере
Процедура Сгонять_Сервер()
   
Сообщить("К-во табзнач: "+рТаблицаЗначений.Количество());
КонецПроцедуры

&НаКлиенте
Процедура Сгонять(Команда)
   
Сгонять_Сервер();
КонецПроцедуры


В результате получаем адекватную передачу "ДанныеФормыКоллекция" на сервер, и опять же, избирательно, что экономит нам объёмы и время. Причём это именно полноценный объект, с которым вполне можно работать, хотя мы даже не указали сериализатору тип значения, читаемого из xml, он сам догадался.

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

Зелёным цветом показаны успешные варианты, когда мы сэкономили, а красным - когда наоборот)

Заметим, что объём передаваемых данных в нашем случае порождён обычной строкой, куда свернулся xml, а значит, её тоже можно чем-нибудь "ужать", и вопрос, как всегда, во времязатратах относительно выигрыша по размеру.

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

Однозначного рецепта нет, решать приходится по ситуации, но способ максимально облегчить обмен, поработать на сервере только с нужными моделями коллекций, и взятыми из них реальными коллекциями, у нас есть. Успеха!


Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 3742 29.09.14 22:43 Сейчас в теме
Да, и понятное дело, что мы на сервер кидаем копию, "слепок" с данных формы, а они сами тихо лежат на клиенте, и если их надо изменить-обработать, то с сервера потом придётся тащщить обратно той же сериализацией и на клиенте обновлять, например, через КопироватьДанныеФормы(Десериализованное,СвоёМестное).

Если я написал баян, просьба кинуть тапком, т.е. ссылкой. Самому слабо верится, что эти моменты ранее не разбирали.
2. BabySG 01.10.14 19:22 Сейчас в теме
(0)
Но в 8.3 нас ждёт неприятный сюрприз: 8.3.4 просто заявляет, что подобные объекты "не могут быть помещены в хранилище", а 8.3.5 громко падает с ошибкой. Скромно осмелюсь полагать, что это просто временная недоработка писателей платформы, ибо если данные можно было передавать в 8.2, то что мешает повторить достигнутое? Поэтому надеюсь, что примерно к 8.3.10 это аккуратно доделают, а не оставят как сейчас и не объявят "фичей", подогнав заумное обоснование.

Смысл в том, что в 8.2 ОШИБОЧНО разрешалось запихивать подобные данные в хранилище. В 8.2 (ранних версиях) туда можно было еще и COM объект запихнуть.
А дальше удивлялись - а куда он делся и почему COM не работает :)
Еще есть вариация, когда возвращалось НЕОПРЕДЕЛЕНО (Кстати, разработчики типовых тоже наступили на эти грабли)
А еще есть ответ от разработчиков, который датируется 2011 годом. Но, как я помню. Вы не участвуете тут https://partners.v8.1c.ru/forum/message/886492#m_886492, поэтому цитата:
Во временном хранилище могут хранится значения помеченные в синтакс помощнике как "Сериализуется".

Что, кстати, также описаное в СП для метода ПоместитьВоВременноеХранилище
Описание:
Сохраняет сериализуемое значение во временное хранилище.
3. Yashazz 3742 01.10.14 19:58 Сейчас в теме
(2) ОК, была мысль и что "ошибочно разрешили", недопилив концепт, согласен; но почему штатный сериализатор легко справляется без потерь и проблем? Почему нельзя было это же сделать для временного хранилища?

И кстати, какой криминал в сериализации некоей модели данных, коей являются ДанныеФормы, если там в её реквизитах не болтается ничего предосудительного, а всё сплошь простые типы или ссылки? Неужели это так преступно и жутко?
4. BabySG 02.10.14 08:24 Сейчас в теме
(3) Смысл в том, что данные не "сериализируются" в этом случае, а именно модифицируются.
Отдаленно можно сравнить с тем, что СправочникОбъект нельзя передать на сервер с клиента (и наоборот), хотя платформа сама-то как-то "понимает", что делать при записи из формы.
PS. Тут еще такой момент: данные сеанса (а именно в них хранится временное хранилище) могут мигрировать между сервера кластера, и совершенно не факт, что поднятые данные формы будут иметь отношения к какой-либо форме - ее может не быть на другом сервере (например, форма пересоздалась после падения процесса на сервере). Эта же прчина мешает запихать в ВХ COM объект - что делать, если на сервере нет контекста подключения или вообще попали на сервер с Linux?

PPS. А сама задача предварительной обработки большого массива данных через данные формы - крайне не рекомендуется разработчиками платформы. Крайне негативно влияет на оптимизацию передачи данных (что и видно из статьи). Рекомендуют делать небольшую подготовку и отправлять на сервер для полной обработки. Конечно, не всегда есть возможность отпраить туду все, поэтому приходится в каждом случае придумывать свое решение. Универсального нет (вот у нас есть алгоритм, кторый работает по трем веткам, все зависит от объема данных)
5. Yashazz 3742 02.10.14 10:28 Сейчас в теме
(4) По идее - целиком согласен. Я ведь и в комментарии приписал, что хочу манипулировать со слепком, с мёртвой копией, которая вообще уже оторвана от формы, контекста, исходника, и никакой логической связи ни с чем не держит. Просто некая коллекция. Если мне понадобится "обратная связь", буду сам прыгать, по каким-то идентификаторам совмещать.
И хранилище тут можно лепить привязанное куда угодно, согласен.
Насчёт COM - тоже абсолютно согласен, очевидные вещи.

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

Кстати, до кучи: почему у обычного "ДеревоЗначений" нету метода "Скопировать", не знаете случайно? Только передача по ссылке и фиг сделаешь независимую копию, кроме как построчно...
6. BabySG 02.10.14 11:33 Сейчас в теме
(5) В том случае, если нужно что-то передать с клиента на сервер (например, тот же файл) - то, как раз, его и передаем через хранилище.
Как вариант, мы можем его обработать на клиенте и создать из оригинального новый уменьшеный и его уже передать на сервер. В этом случае данные формы мы не трогаем, гоняем только то, что сами выбрали.
Но нужно понимать - в каждом конкретном случае, для каждой задачи: свое решение. Тут не получится сделать универсально (данные формы, по сути, и есть универсально, но не будет работать на больших объемах)
7. Yashazz 3742 02.10.14 13:02 Сейчас в теме
(6) Именно. И задача иногда бывает именно требующая решения тех проблем, о которых я пишу. Например, не можем сразу забросить файл - юзверь хочет сначала посмотреть его содержимое в виде красиво оформленного интерфейса, отметить флажками нужное к обработке, и уж тогда айда на сервер. И бывает, что некоторые операции с клиентскими ипостасями этих интерфейсных объектов требуют втихую некоторым объёмом поработать на сервере.
8. dj_serega 377 02.10.14 15:15 Сейчас в теме
А если протестить две ТЗ и два ДЗ где будет выигрыш?
9. Yashazz 3742 02.10.14 15:18 Сейчас в теме
(8) Смотря какого они размера. Тут фишка не столько в типе объекта, сколько в его наполнении. Но по моим ощущениям древовидные объекты сериализуются медленнее. В моём примере дерево просто служило эталонной тяжестью, могло ведь быть и строго наоборот - крохотное деревцо и огромная таблица значений.
10. dj_serega 377 02.10.14 15:39 Сейчас в теме
(9) если я правильно понял то:
есть 2 ТЗ + 2 ДЗ (по 1000) то один из объектов лучше контекстом обрабатывать?
11. Yashazz 3742 02.10.14 16:48 Сейчас в теме
(10) Если надо обработать 1 из 4 - лучше внеконтекстно. Если 3 из 4 или все - лучше контекстно. Нет однозначного рецепта, всё зависит от наполнения - может, там в ячейках нескольких строк прячутся свои монстры - всякие подтаблицы да массивы, да структуры, да ещё картинки...
12. bonv 02.10.14 18:08 Сейчас в теме
&НаКлиенте
Процедура СгонятьБезКонтекста(Команда)
    рЗаписьХМЛ=Новый ЗаписьXML;


В веб-клиенте это не будет работать.
13. Yashazz 3742 02.10.14 18:29 Сейчас в теме
(12) Да. Есть такая печаль. Там останется только моделировать это всякими костылями вроде массивов структур и прочая.
14. PiccaHut001 07.10.14 18:39 Сейчас в теме
(0) "Поэтому надеюсь, что примерно к 8.3.10 это аккуратно доделают, а не оставят как сейчас и не объявят "фичей", подогнав заумное обоснование." - зря надеетесь, 1с так делают ВСЕГДА
Оставьте свое сообщение

См. также

Звуковое управление в 1С 8.3 Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    2780    velemir    30    

Полезные примеры СКД, ч.2

Практика программирования v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    3227    Neti    7    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.03.2021    12252    rayastar    45    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    12655    quazare    34    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5172    comol    31    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    42512    user5300    17    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    43667    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    32734    John_d    22    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    38888    unichkin    74    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    25216    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    19688    YPermitin    60    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    10258    Sibars    19    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    32669    tormozit    105    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    34331    HostHost    41    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    42845    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    15541    budidich    28    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    79775    tormozit    131    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    73209    rpgshnik    70    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    61478    ids79    55    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    34993    YPermitin    25    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    50700    tormozit    49    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    27601    YPermitin    81    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    38003    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    115381    ids79    69    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    47561    tormozit    74    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    47062    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    31531    json    15    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    81795    ids79    14    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

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

25.04.2019    16622    m-rv    2    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    41446    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    29364    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20653    SeiOkami    50    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    21238    m-rv    17    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    64003    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    63169    ids79    26    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    27790    dmurk    146    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    33042    m-rv    22    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    34239    YPermitin    7    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    52052    YPermitin    30    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    38851    ellavs    127    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    29032    itriot11    34    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    29044    ellavs    90    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    35701    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    52046    Смешной 1С    31    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    79124    Serginio    113    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    25000    Vladimir Litvinenko    28    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    38702    ids79    40