Парсер JSON (Штатные средства 1С 8.3.6)

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

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

Парсер JSON 1С JSON штанный парсер 1с JSON 1С штанный парсер JSON в 1с

Хочу поделиться функцией чтения json, реализованной с помощью штатных средств платформы.
Совсем недавно, начиная с платформы 8.3.6.1977, фирмой "1С" были реализованы штатные средства для работы с JSON.
Но, наверно, многие уже давно привыкли работать с этим форматом обмена данных.
Впервые столкнувшись с необходимостью работы с json я наткнулся на замечательную обработку 1С:JSON от Переверзева Александра , огромное спасибо этому человеку, сэкономил кучу времени. Все бы было хорошо, пока не потребовалась обработка больших пакетов данных.

Трудности

Однажды пришлось столкнуться с обработкой больших пакетов данных, и обработка пакета 2.2 мб за ~ 60 секунд, для нас это было долго.

Решили опробовать штаного зверя, обход такого пакета данных по средствам чтения занял ~ 1-1.5 сек.

Пока ЧтениеJSON.Прочитать() Цикл

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

Результат

В итоге обработка такого пакета данных в 2.2 мб с возвратом уже привычной структуры заняла ~ 2.5 секунды.

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

Пример части  кода 1С:JSON и штаного парсера ниже.

// JSON парсер.
&НаКлиенте
Функция ПрочитатьJSONИзФайла(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт 
    
    Попытка
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.Закрыть();
        
        Возврат jsonПрочитатьПлатформой(Значение);
    Исключение
        Возврат jsonПрочитатьИнициализация(Значение, Стандарт, ПредставленияСсылок);
    КонецПопытки;
    
КонецФункции // ПрочитатьJSON()

&НаКлиенте
Функция jsonПрочитатьПлатформой(Значение)

    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Значение);
    
    Результат = Неопределено;
    СформироватьДерево(ЧтениеJSON, Результат);
    
    ЧтениеJSON.Закрыть();
    
    Возврат Результат;

КонецФункции

&НаКлиенте
Процедура СформироватьДерево(ЧтениеJSON, Дерево)
    
    ИмяСвойства = Неопределено;
    
    Пока ЧтениеJSON.Прочитать() Цикл
        TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
        
        Если TипJSON = ТипЗначенияJSON.НачалоОбъекта 
        ИЛИ TипJSON = ТипЗначенияJSON.НачалоМассива Тогда
            НовыйОбъект = ?(TипJSON = ТипЗначенияJSON.НачалоОбъекта, Новый Соответствие, Новый Массив);
            
            Если ТипЗнч(Дерево) = Тип("Массив") Тогда
                Дерево.Добавить(НовыйОбъект);
            ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") И ЗначениеЗаполнено(ИмяСвойства) Тогда
                Дерево.Вставить(ИмяСвойства, НовыйОбъект);
            КонецЕсли;
            
            СформироватьДерево(ЧтениеJSON, НовыйОбъект);
            
            Если Дерево = Неопределено Тогда
                Дерево = НовыйОбъект;
            КонецЕсли;
        ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
            ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
        ИначеЕсли TипJSON = ТипЗначенияJSON.Число 
        ИЛИ TипJSON = ТипЗначенияJSON.Строка 
        ИЛИ TипJSON = ТипЗначенияJSON.Булево 
        ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
            Если ТипЗнч(Дерево) = Тип("Массив") Тогда
                Дерево.Добавить(ЧтениеJSON.ТекущееЗначение);
            ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") Тогда
                Дерево.Вставить(ИмяСвойства, ЧтениеJSON.ТекущееЗначение);
            КонецЕсли;
        Иначе
            Возврат;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Надеюсь, пример функции будет полезен и сэкономит кому-то время.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Fragster 1019 29.09.16 18:20 Сейчас в теме
Глобальный контекст.ПрочитатьJSON (Global context.ReadJSON)
Глобальный контекст (Global context)
ПрочитатьJSON (ReadJSON)
Синтаксис:

ПрочитатьJSON(<ЧтениеJSON>, <ПрочитатьВСоответствие>, <ИменаСвойствСоЗначениямиДата>, <ОжидаемыйФорматДаты>, <ИмяФункцииВосстановления>, <МодульФункцииВосстановления>, <ДополнительныеПараметрыФункцииВосстановления>, <ИменаСвойствДляОбработкиВосстановления>, <МаксимальнаяВложенность>)
Параметры:

<ЧтениеJSON> (обязательный)

Тип: ЧтениеJSON.
Объект чтения JSON.
<ПрочитатьВСоответствие> (необязательный)

Тип: Булево.
Если установлено Истина, чтение объекта JSON будет выполнено в Соответствие.
Если установлено Ложь, объекты будут считываться в объект типа Структура.
Примечание. При десериализации объектов JSON в структуру необходимо помнить о требованиях к ключам структуры. Если при десериализации объекта будет найдено имя свойства, недопустимое для ключа структуры, то будет вызвано исключение.
Значение по умолчанию: Ложь.
<ИменаСвойствСоЗначениямиДата> (необязательный)

Тип: Массив, Строка, ФиксированныйМассив.
Массив, элементы которого содержат имена свойств JSON. Для указанных свойств будет вызвано восстановление даты из строки согласно формату, указанному в параметре ОжидаемыйФорматДаты.
Если имя свойства указано в этом параметре и в параметре ИменаСвойствДляОбработкиВосстановления, то для таких свойств восстановление осуществляется в функции восстановления.
Если восстановление даты из значения свойства невозможно, то будет сгенерировано исключение.
Значение по умолчанию: Неопределено.
<ОжидаемыйФорматДаты> (необязательный)

Тип: ФорматДатыJSON.
Ожидаемый формат даты при десериализации объекта в формате JSON.
Если десериализуемое значение не является строкой и имеет формат даты, отличный от ожидаемого, то будет вызвано исключение.
Значение по умолчанию: ISO.
<ИмяФункцииВосстановления> (необязательный)

Тип: Строка.
Данная функция вызывается при чтении каждого свойства и должна иметь следующие параметры:
<Свойство> - значение типа Строка, указывается только при чтении объектов JSON,
<Значение> - значение допустимого для сериализации типа,
<ДополнительныеПараметры>.
Возвращаемое значение - произвольного типа.
Если данный параметр задан и не задан параметр МодульФункцииВосстановления, и наоборот, будет вызвано исключение.
Если функция не установлена, то при вызове метода ПрочитатьJSON, параметр ИменаСвойствСоЗначениямиДата игнорируется.
Значение по умолчанию: Неопределено.
<МодульФункцииВосстановления> (необязательный)

Тип: УправляемаяФорма; КомандаКомандногоИнтерфейса; ОбщийМодуль.
Указывает модуль, процедура которого будет использована для восстановления значения. В зависимости от типа параметра будет вызван соответствующий метод:
УправляемаяФорма - будет вызван метод модуля указанной управляемой формы.
КомандаКомандногоИнтерфейса - будет вызван метод модуля команды командного интерфейса.
ОбщийМодуль - будет вызван метод неглобального общего модуля.

Значение по умолчанию: Неопределено.
<ДополнительныеПараметрыФункцииВосстановления> (необязательный)

Тип: Произвольный.
Дополнительные параметры, которые будут переданы в функцию восстановления значений.
Значение по умолчанию: Неопределено.
<ИменаСвойствДляОбработкиВосстановления> (необязательный)

Тип: Массив.
Массив имен свойств JSON, для которых будет вызвана функция восстановления.
Параметр игнорируется, если не установлен параметр ИмяФункцииВосстановления.
Значение по умолчанию: Неопределено.
<МаксимальнаяВложенность> (необязательный)

Тип: Число.
Максимальный уровень вложенности объекта JSON.
При превышении уровня вложенности будет сгенерировано исключение.
Значение по умолчанию: 500.
Возвращаемое значение:

Тип: Произвольный.

Описание:

Считывает значение из JSON-текста или файла. JSON-текст должен быть корректным.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Массив будет десеарилизован в массив. Объект JSON будет преобразован в соответствие или структуру (если ключ структуры окажется недопустимым, будет вызвано исключение).
Для дат действует аналогично методу ПрочитатьДатуJSON.
Во время выполнения метода может быть вызвана пользовательская функция для восстановления значения - для этого следует использовать параметр ИмяФункцииВосстановления. Функция восстановления должна быть описана с директивой &НаСервере или &НаКлиенте. Использование функции вне контекста не допускается.
--------------------------------------------------------------------------------

Методическая информация
Irwin; AskezaMax; denis_aka_wolf; YoungHero; kuzyara; echo77; dark_wolf; dour-dead; vano-ekt; +9 Ответить
2. ltfriend 546 30.09.16 06:37 Сейчас в теме
3. Fragster 1019 30.09.16 11:51 Сейчас в теме
(2) ltfriend, это цитата из синтакс-помощника про встроенный в платформу метод, который делает то же самое, что и код из статьи.
4. Inkasor 27 30.09.16 12:51 Сейчас в теме
(3) Fragster, там не всё так просто с этим методом, он существует, но не очень быстро работает :) я как раз на INFOSTART EVENT DEVELOPER 2016 хочу уделить этому некоторое время в докладе :) Впрочем, мы измеряем скорость по другому, не в потоке мб/с, а в количестве объектов обмена в секунду.
5. Fragster 1019 30.09.16 13:14 Сейчас в теме
(4) Inkasor, есть подозрение, что указанный в статье способ еще более медленный, чем платформенный. причем платформенный позволяет еще и некоторые преобразования данных провернуть. Например у меня так структуры вида XMLТип + гуид преобразуются в ссылки на объекты метаданных.
6. Inkasor 27 30.09.16 13:30 Сейчас в теме
(5) Fragster, "было принято решение сделать аналогичную структуру", legacy же :) мы у себя по другому разбираем. Там ещё очень важный момент с тем, какими объектами мы друг с другом обмениваемся. Если делать обмен 1С-1С, ПрочитатьJSON() возможно будет самым лучшим решением, но если 1С-что-то другое, тогда ЧтениеJSON.ТекущееЗначение возможно, будет быстрей, тут всё зависит от структуры объекта обмена. Про ЗаписатьJSON вообще молчу :)
7. ltfriend 546 30.09.16 23:55 Сейчас в теме
(3) т.е. статю вы не читали?
8. dour-dead 241 01.10.16 12:10 Сейчас в теме
(1) Fragster, Спасибо (будем юзать штатный метод)! Как то не внимательно значит я читал новые возможности для работы с JSON.
Сделал замеры по времени на разных видах данных, частично метод проигрывает от 2 до 5 раз) .

Прикрепленные файлы:
9. Fragster 1019 01.10.16 22:12 Сейчас в теме
(8) ну, судя по замерам - во всех случаях от 5 до 10 раз. просто надо выводить одинаковое количество знаков после запятой, чтобы в глаза бросилось.
14. echo77 1165 22.07.17 17:18 Сейчас в теме
(8) В итоге, Метод глобального контекста ПрочитатьJSON() быстрее этой публикации получается?
15. dour-dead 241 15.09.17 13:56 Сейчас в теме
(14) Да, но метод подходит для специфичного хранения данных (хотя по факту я такое не встречал)
(10)
Спасибо за функцию, она не чувствительна к именам свойств в отличии от типовой, в которой - "Если при десериализации объекта будет найдено имя свойства, недопустимое для ключа структуры, то будет вызвано исключение."
10. prog77 05.10.16 10:16 Сейчас в теме
Спасибо за функцию, она не чувствительна к именам свойств в отличии от типовой, в которой - "Если при десериализации объекта будет найдено имя свойства, недопустимое для ключа структуры, то будет вызвано исключение."
11. Fragster 1019 05.10.16 11:23 Сейчас в теме
(10) prog77, вы плохо прочитали синтакс-помощник.
13. VasilVtoroy 08.10.16 00:28 Сейчас в теме
(10) prog77, есть параметр, который позволяет читать в Соответствие и тогда проблемы нет
16. prog77 17.09.17 12:12 Сейчас в теме
(13)
Да, так и делаю теперь...
12. rus128 2 05.10.16 12:58 Сейчас в теме
Заметил опечатку:
"Пример части кода 1С:JSON и шта(Т)ного парсера ниже."
17. jo0506 11 20.03.18 06:16 Сейчас в теме
"jsonПрочитатьИнициализация" - Это что, нигде нет ссылки на эту функцию???
18. dour-dead 241 20.03.18 15:26 Сейчас в теме
(17) jsonПрочитатьИнициализация это из обработки https://infostart.ru/public/119601/
jobkostya1c8; Saer; +2 Ответить
19. jobkostya1c8 90 27.03.19 16:35 Сейчас в теме
Проверил Ваш парсер для простых случаев с глубиной заранее описанного формата с глубиной не более 2-х.
Прикрепленные файлы:
ЧтениеJSON.epf
тестовый файл json-ответа.txt
20. jobkostya1c8 90 27.03.19 16:38 Сейчас в теме
Нужно было убедиться что корректно в соответствием и массив читает для всех случаев.
21. user886140 30.07.19 09:19 Сейчас в теме
22. user1181356 18.04.20 09:59 Сейчас в теме
Спасибо автору! Ещё тут наглядно продемонстрирована работа с Чтением/Записью JSON:
https://1c-freelancer.ru/programmistu/1s8-x/metadannye/rabota-s-json-v-1s
23. pashamix 11.05.20 15:43 Сейчас в теме
Спасибо, пригодилось. В то время, как штатный вариант выдал ошибку.
24. Manticor 64 04.06.20 15:47 Сейчас в теме
Добрый день. Как переделать приведенную вами функцию, чтобы она возвращала структуру, не соответствие.
25. dour-dead 241 04.06.20 16:19 Сейчас в теме
(24) добрый, проще использовать "ПрочитатьJSON", где есть параметр "ПрочитатьВСоответствие"

ПрочитатьJSON(<ЧтениеJSON>, <ПрочитатьВСоответствие>>)
Параметры:
<ЧтениеJSON> (обязательный)
Тип: ЧтениеJSON.
Объект чтения JSON.
<ПрочитатьВСоответствие> (необязательный)
Тип: Булево.
Если установлено Истина, чтение объекта JSON будет выполнено в Соответствие.
Если установлено Ложь, объекты будут считываться в объект типа Структура.
26. Manticor 64 04.06.20 18:16 Сейчас в теме
(25)
ПрочитатьВСоответствие

я пробовал так делать, этот метод хорош, когда нет массивов, а ежели у меня сам текст json на 80 листах word и со сложными структурами и массивами в которых есть структуры - то с использваонием ПрочитатьВСоответствие выдает ошибку.
27. Yan83 18.07.20 11:13 Сейчас в теме
...обработка пакета 2.2 мб за ~ 60 секунд, для нас это было долго.


Тут явно дело не в начальном преобразовании файла в дерево/структуру, а в дальнейшей обработке, которая скорее всего в цикле. А так ПрочитатьJSON() очень шустрая штука, 68000 позиций в файле 48 Мб у меня проскакивали за 6 секунд и это на виртуальной машине, что крутится на ноутбуке 2011 года (i7 второе поколение, 6 Гб ОЗУ из 16 отдано ВМ). А вот обход и обработка после затягивается на десятки минут. Было бы интересно посмотреть именно идеи оптимизации последующей обработки полученной структуры с замерами. Буду благодарен за примеры статей.
28. VeleX 26.08.20 13:26 Сейчас в теме
Большое спасибо за публикацию! Очень помогла!
Пришлось парсить JSON файл, который ронял платформу при использовании стандартного ПрочитатьJSON(). Ваш метод просто спас!
29. PerlAmutor 107 10.09.20 19:17 Сейчас в теме
До сих пор не укладывается в голове, что JSON созданный для Веб технологий невозможно распарсить на Web клиенте 1С без вызова сервера.
Оставьте свое сообщение

См. также

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

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

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

10.12.2016    37245    unichkin    74    

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

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

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

27.01.2020    25616    ids79    26    

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

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

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

15.01.2020    23074    John_d    22    

Последовательности событий. Шпаргалка

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

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

30.12.2019    17624    kuzyara    33    

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

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

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

15.10.2018    30107    tormozit    100    

Сходство Джаро - Винклера. Нечеткое сравнение строк

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

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

25.12.2019    6923    brooho    17    

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

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

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

02.12.2019    16882    YPermitin    72    

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

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

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

22.11.2019    8274    Sibars    19    

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

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

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

20.09.2012    77875    tormozit    131    

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

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

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

01.10.2019    32586    Yashazz    50    

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

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

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

06.09.2019    48632    rpgshnik    63    

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

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

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

05.09.2019    48521    ids79    54    

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

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

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

11.07.2007    48215    tormozit    41    

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

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

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

05.09.2019    27943    YPermitin    24    

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

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

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

03.09.2019    25339    YPermitin    80    

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

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

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

17.08.2019    31197    ids79    16    

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

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

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

10.09.2017    44645    tormozit    74    

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

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

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

08.08.2019    79963    ids79    49    

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

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

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

02.08.2019    34509    avalakh    22    

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

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

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

31.07.2019    23337    json    13    

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

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

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

25.04.2019    16016    m-rv    2    

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

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

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

26.07.2019    58376    ids79    11    

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

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

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

17.07.2019    35457    ids79    27    

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

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

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

09.07.2019    25875    YPermitin    14    

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

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

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

16.04.2019    20147    m-rv    17    

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

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

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

04.07.2019    19556    SeiOkami    50    

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

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

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

02.07.2019    45614    ids79    17    

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

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

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

25.06.2019    51801    ids79    25    

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

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

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

01.06.2018    30493    m-rv    21    

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

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

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

11.06.2019    24848    dmurk    145    

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

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

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

16.05.2019    42492    YPermitin    30    

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

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

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

07.04.2019    35164    ellavs    126    

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

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

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

05.12.2017    28206    itriot11    34    

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

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

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

28.03.2019    27304    ellavs    89    

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

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

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

14.03.2019    31166    YPermitin    53    

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

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

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

01.03.2019    38707    Смешной 1С    28    

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

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

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

27.01.2016    76216    Serginio    108    

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

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

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

26.02.2019    21793    Vladimir Litvinenko    27    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    38975    ids79    9    

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

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

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

10.11.2018    34538    ids79    40    

EnterpriseData – часть 2. Процесс выгрузки данных

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

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    26629    ids79    31    

Новый подход к обмену данными EnterpriseData

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

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    41122    ids79    72    

Тестер: частые вопросы Промо

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

Ошибкам бой - тесты норма жизни!

25.07.2018    29179    grumagargler    28    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    36784    ids79    42    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

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

14.11.2018    86006    GeterX    114    

Программное заполнение пользовательских параметров и отборов СКД

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

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

13.11.2018    46935    Unk92    25    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

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

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

04.09.2017    52502    m-rv    61