arefaste/1C_Forums huggingface dataset:
Доброго времени всем.
Есть УТ 11.4

Стоит задача - отключать и подключать право пользователям на создание, редактирование и проведение РКО. Но только один этот вид документа.

В расширение добавил роль, в настройках роли выбрал - нужный документ, галки на добавление, редактирование и пр. поставил.

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

Что сделано: в расширение добавил эту форму, "ПриОткрытии" проставил и ЭтаФорма.Доступность=Истина и все группы и подгруппы в отдельности - результата нет. Подумал что сама платформа как то блокирует и дело вообще не в роли, нет если добавить этому же пользователю роль более высокого ранга из созданных ранее - все ок, форма открывается и можно редактировать и заполнять, но в этом случае у меня открываются еще 10 документов - которые открываться не должны.
Прошу помощи.
---
В итог: отвечу сам себе - кэш сервера. База серверная SQL. После перезагрузки сервера - плановой, вернулся к вопросу а у меня все работает)
---
Но при нажатии на "Создать" открывается форма нового документа но ни один реквизит не доступен для изменения, т.е. документ невозможно заполнить.
Нужно добавить в расширение все реквизиты формы. Если какой-то реквизит при вводе требует доступности других реквизитов, их тоже нужно добавлять в расширение.
---
Нужно добавить в расширение все реквизиты формы. Если какой-то реквизит при вводе требует доступности других реквизитов, их тоже нужно добавлять в расширение.
Это первое о чем подумал - форма добавлена в расширение и все ее реквизиты
---
У роли в расширении проверь права на добааленные реквизиты.
---
Если не знали, то кроме права на сам обьект есть ещё и права на каждый реквизит, команду и тп.
Придётся много колупать...
---
ё и права на каждый реквизит, команду и тп.
Придётся много колупать...

Как можно дать право на команду? В настройках формы, в свойствах реквизита есть "Просмотр" и "Редактирование", там галка на моей роли стоит.
Тем более что например на реквизит Комментарий есть право на просмотр и редактирование - но он со всеми остальными реквизитами так же не доступен - при открытии формы, так что думаю тут где глобальное свойство какое то.. только не могу найти информацию какое и где....
---
если стоит, то нужно проверить используется ли роль и назначена ли пользователю.
---
РольДоступна(«Мояроль») = Истина
---
либо что-то упустили, либо баг расширения.
Проверяйте последние релизы, если не сработает пишите в 1с.
---
Я и хотел что бы мне показали, что я упустил. Но видимо ничего... там 2 галочки в настройках роли, и две в настройках формы. Расширение я пересоздавал. Попробую на последнем релизе. Спасибо.
(9)
---
В итог: отвечу сам себе - кэш сервера. База серверная SQL. После перезагрузки сервера - плановой, вернулся к вопросу а у меня все работает)
Друзья, прошу помощи. 1С8.3 (УТ11). Вопрос скорее общего плана. Имеется регистр накопления, необходимо при каждом движении регистра выполнять определенные действия, подскажите пожалуйста куда двигаться. Понимаю, что действовать нужно в самом регистре, но где и как ? Благодарствую за поддержку.
---
События перед записью, при записи.
---
Менеджер записи регистра.
---
Если точнее модуль набора записей
---
События перед записью, при записи.
---
Спасибо огромное!
Добрый день, есть задача: В регламентном задании провести документ и отправить его на печать на сетевой принте (их в дальнейшем будет около 3-5, нужно будет выбирать куда слать документ).

Варианты:
1. Запускать виндовым заданием 1С и обработку на сервере и обрабатывать ПФ на клиенте и проблем по идее не каких нету, так как вроде ТабДок.Напечатать() клиентская функция.

про ТабДок.Напечатать();
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент

2. Установив на сервере Excel, можно сформировать таб док, сохранить его в xlsx в temp и оттуда открыть через EXCEL.Application . И и печатать методом PrintOut(). НО! Сложность в том что он если без параметров печатает на принтер по умолчанию (логично так то), а задать имя принтера можно , но в формате "PrinterName (Ne05:)", то что в скобках мне не ясно, по началу думал порядковый номер при длобавлении, но оказалось что они меняются (переодичность не вычислил). Был 05, стал 02. Следовательно если печатаю по имени принтера то он не видит его и падает в ошибку.

Вопросы:

1. Как можн ополучить имя принтера в формате "Имя (Ne05:)" в 1С
2. Либо как поменять принтер по умолчанию на другой по названию в фоновом задании
---
ИмяПринтера - как в параметрах

Нашел решение:

```1c
    //LAS делаю принтер который нужно поумолчанию

    Попытка
    WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +ИмяКомпьютера()+ "\root\cimv2");
    Printers = WinMGMT.ExecQuery("Select * fr om Win32_Printer");

    Для Каждого Printer ИЗ Printers Цикл
    if(Printer.Name = ИмяПринтера) then
    Printer.SetDefaultPrinter();
    endif
    КонецЦикла;
    Исключение
    КонецПопытки;
    //**
```
---
ИмяПринтера - как в параметрах

Нашел решение:

```1c
    //LAS делаю принтер который нужно поумолчанию

    Попытка
    WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +ИмяКомпьютера()+ "\root\cimv2");
    Printers = WinMGMT.ExecQuery("Select * fr om Win32_Printer");

    Для Каждого Printer ИЗ Printers Цикл
    if(Printer.Name = ИмяПринтера) then
    Printer.SetDefaultPrinter();
    endif
    КонецЦикла;
    Исключение
    КонецПопытки;
    //**
```
Добрый день в РС есть 3 значения. Нужно получить их сумму, номер поставки и дату плюс добавить из второго РС наименование документа. При таком запросе

```1c
    "ВЫБРАТЬ
    | ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм,
    | Оплата.ОплатаНомерКонтракта,
    | Оплата.ОплатаНаименованиеДокумента,
    | Поставка.ПоставкаНомерКонтракта,
    | Поставка.ПоставкаНомерПоставки,
    | Поставка.ПоставкаДата,
    | СУММА(ПоставкаСумма)
    |ИЗ
    | РегистрСведений.Поставка КАК Поставка,
    | РегистрСведений.ВыбраныйНомерКонтракта КАК ВыбраныйНомерКонтракта,
    | РегистрСведений.Оплата КАК Оплата
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |РегистрСведений.ВыбраныйНомерКонтракта КАК ВыбраныйНомерКонтракта
    |ПО
    (ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм = Оплата.ОплатаНомерКонтракта)
    |ГДЕ
    | Поставка.ПоставкаНомерКонтракта = ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм
    |И
    | Оплата.ОплатаНомерКонтракта = ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм
    |СГРУППИРОВАТЬ ПО
    | ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм,
    | Оплата.ОплатаНомерКонтракта,
    | Оплата.ОплатаНаименованиеДокумента,
    | Поставка.ПоставкаНомерКонтракта,
    | Поставка.ПоставкаНомерПоставки,
    | Поставка.ПоставкаДата,
    | ПоставкаСумма";
```

у меня выдаёт двойные значения и сумма умножается на два как можно поправить ?
---
У тебя три таблицы и одно левое соединение.
В таком случае будет такая оказия.
В самом простом случае выбирают данные из одной таблички, к ней клеим одну табличку, вторую и т.д.
А тут мы одну таблицу с другой поженили, а про третью позабыли.
---
из группировки ПоставкаСуммы надо убрать.
---
Всё верно, но сумма увеличивается при других строках равных нулю. То есть в РС сумма = 70061,76 а в запросе умножается на себя и ровна 140123,52 это не правильно. Как можно исправить ?
---
Запрос надо переписать, через объединение, ну или (похуже вариант) левыми соединениями.
---
Добавил ЛЕВОЕ СОЕДИНЕНИЕ результат такой же одна строка с умноженной на себя суммой.
---
В принципе согласен с комментарием (starjevschik), нет связей между РС, попробуйте изначально получить нужную сумму из 1 регистра, потом получить дату и номер. Если не получиться, то пожалуйста напишите конфигурацию, посмотрим вместе. Ну и третий регистр, по которому вы не накладываете условий очень странно.
---
запрос надо правильно написать. Судя по коду, автор пока не успел изучить язык запросов SQL. Следовательно, ему надо отправиться на учебу - или курсы, или книжки...
---
У тебя три таблицы и одно левое соединение.
В таком случае будет такая оказия.
В самом простом случае выбирают данные из одной таблички, к ней клеим одну табличку, вторую и т.д.
А тут мы одну таблицу с другой поженили, а про третью позабыли.
---
а если сделать избыточно, пакетом запросов? Сначала получить таблицу связанную с одним регистром, и потом долнить результат из второго регистра?
И читабельнее было бы и отладка проще....
Привет)Может кто сталкивался,подскажите,перестала отображаться история быстрых отборов .История при вводе стоит -Авто,пробовала прописать
Элементы.ОтборФизЛицо.ИсторияВыбораПриВводе=ИсторияВыбораПриВводе.Авто ,тоже не дало результатов.
Что можно еще попробовать?
---
Попробовала переопределить тип ссылки отбора,вместо СправочникСсылка.ФизическиеЛица,поменяла на СправочникСсылка.Контрагенты и история появилась.Оказывается у справочника ФизЛица не стояло -история выбора при вводе.
---
Попробовала переопределить тип ссылки отбора,вместо СправочникСсылка.ФизическиеЛица,поменяла на СправочникСсылка.Контрагенты и история появилась.Оказывается у справочника ФизЛица не стояло -история выбора при вводе.
---
Правильно самое главное поговорить об этом с умным человеком))), сама спросила - сама ответила))
Здравствуйте
(Обычные формы)
Был макет для нескольких кодов платежей(фиксированное количество), решили сделать динамическое добавление колонок, т.к. кодов стало больше.
Не понимаю как правильно вывести несколько кодов платежей . КодПлатежа - это параметр шапки
---
оформление ячеек также можно сделать программно
---
Если с динамическим добавлением сложности, как альтернатива, сделать несколько макетов шапок, строк для разного количества кодов платежей. Назвать их как-нибудь универсально, например, ИмяОбласти_КоличествоКодовПлатежей, чтобы потом не заморачиваться.

Перед заполнением макета сначала определять максимальное количество кодов платежей, потом выбирать нужный макет.

Собственно, с динамическим добавлением все тоже самое - сначала максимальное количество кодов платежей определяется, потом под него формируется шапка.
Дальше уже под это количество выводятся данные строки таблицы.
---
в СП посмотрите Присоединить, там и пример есть
---
Я пытался через присоеденить, просто проблема в самой структуре шапки(на скрине)
---
какая проблема? накрыть общим заголовком "Сведения о расхо..."? Ну насколько я понимаю программно объединить ячейки тоже можно.
примерно так:

```1c
    ТабДок.Область("R1"+"C"+КолонкаНачало+":"+"R1"+"C"+КолонкаКонец).Объединить();
```

сами добавляемые колонки я бы в отдельную область выделил и добавлял бы её столько раз, сколько нужно. потом общую шапку сделать.
---
случайно не знаете, где есть какой-то пример, чтобы понять как это правильно реализовать? А то не получается
---
оформление ячеек также можно сделать программно
Добрый день! Подскажите пожалуйста, что делаю не так. Загружаю фото пользователя во временное хранилище и возникает ошибка:Слишком много фактических параметров
НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(НовыйФайлКартинки.Файл.Получить(Фото));
Я так понимаю наверное нужно реквизит формы Фото преобразовать в реквизит объекта справочника, но так как Фото не принадлежит к основному реквизиту Объект формы, то у меня не получается реквизит формы Фото преобразовать в реквизит объекта справочника, чуть ниже код. Подскажите что не так делаю.Заранее благодарю!!
---
Возможно, вот так сработает:

```1c
    НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото));
```
---
НовыйФайлКартинки это у вас элемент справочника Файлы который вы только что создали командой:
НовыйФайлКартинки=Справочники.Файлы.СоздатьЭлемент();
Все поля НовыйФайлКартинки у вас пустые так как вы его только что создали

НовыйФайлКартинки.Файл это у вас пустое поле справочника элемент которого вы только что создали.

НовыйФайлКартинки.Файл.Получить() - так бы вы считали пустое значение из хранилища значения которое у вас в пустом поле Файл

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

```1c
    НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото));
```
---
Напишите тип реквизита на форме «Фото» и тип реквизита «Фото» справочника Файлы
---
тип реквизита на Форме Строка, а в справочнике Файлы реквизита фото вообще нет, там реквизит Файл
---
НовыйФайлКартинки это у вас элемент справочника Файлы который вы только что создали командой:
НовыйФайлКартинки=Справочники.Файлы.СоздатьЭлемент();
Все поля НовыйФайлКартинки у вас пустые так как вы его только что создали

НовыйФайлКартинки.Файл это у вас пустое поле справочника элемент которого вы только что создали.

НовыйФайлКартинки.Файл.Получить() - так бы вы считали пустое значение из хранилища значения которое у вас в пустом поле Файл

НовыйФайлКартинки.Файл.Получить(Фото) так вы передаете значение Фото в функцию Получить() которая у элемента с типом ХранилищеЗначения согласно СП вообще не умеет принимать каких либо значений.
---
Так тогда в НовыйФайлКартинки.Файл надо занести данные из временного хранилища. В коде временного хранилища не видно что-то.
Т.е. оно раньше должно создаться, а не в момент создания элемента справочника.
Здравствуйте. В справочнике склады есть табличная часть с доп реквизитами. Там заполняется свойство и значение. Свойство имеет тип - ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения. Есть элементы где не заполнены доп реквизиты, мне надо их заполнить. Только не пойму как. Из формы нельзя. Это можно как то сделать не в конфигураторе?
---
Если используется БСП, то должно быть что-то типа

```1c
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
```
.
А вообще, поскольку это обычная табличная часть, то и работать с ней можно как с табличной частью (то есть программно добавлять и удалять любые строки)
---
Если используется БСП, то должно быть что-то типа

```1c
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
```
.
А вообще, поскольку это обычная табличная часть, то и работать с ней можно как с табличной частью (то есть программно добавлять и удалять любые строки)
Пишу обработку получения данных с таблицы Гугл. Данные нужно вывести в табличный документ. Я ни разу еще с ним не работал, прошу помощи.

Реализовано так. Добавил реквизит "ТабличныйДокумент" . Тип - ТабличныйДокумент. Разместил его на форме.Далее код: ТабличныйДокумент.Область("R" + R + "C"+C).Текст = Знч;

Таблица на форме остается пустой.

дополню. я беру код из аналогичной обработки для упр. форм. копипастю 1в1. там работает. у меня нет.
---
РЕШЕНО

На форму нужно было добавить элемент ПолеТабличногоДокумента
---
лучше сначала программно сформируйте и заполните табличный документ, а затем выведите его на форму
---
дополню. я беру код из аналогичной обработки для упр. форм. копипастю 1в1. там работает. у меня нет. не хотелось бы что-то еще дописывать. это реально?
---
как вывести?
---
у меня такое чувство, что я неправильно располагаю ТД на форме. поправьте, если не прав.
---
РЕШЕНО

На форму нужно было добавить элемент ПолеТабличногоДокумента
Здравствуйте! Столкнулся с ошибкой, которая описана вот здесь: forum.infostart.ru
Обработкой заполнял документы ввода остатков и они проводились, но потом обновили УТ 11.4 и при внесении новых документов они уже не проводятся, в статье решение ошибки: зайти в первичный документ и перевыбрать контрагента. Способ работает, но там 2500 этих контрагентов, можно как-то перевыбрать их программно?
---
смотришь в форме документа событие ПриИзменении нужного реквизита и оттуда все переносишь в обработку.
Только это может быть не так просто.
---
повторить процедуру при изменении
---
можно подробнее, не совсем понял
---
смотришь в форме документа событие ПриИзменении нужного реквизита и оттуда все переносишь в обработку.
Только это может быть не так просто.
---
Как вариант, во внешней обработке получить на клиенте форму исправляемого документа. Назначить владельцем формы обработки колонку формы документа, в которой нужно перевыбрать контрагента. В цикле менять значение контрагента, устанавливать текущую строку в таблице, вызывать ОповеститьОВыборе.
В теории, это должно эмулировать ручное изменение реквизита в колонке таблицы формы.
---
Все получилось, всем спасибо! Просто в обработке вызвал код который отрабатывается в форме документа при изменении поля контрагент, обработка выполняется и документ проводится
Всем привет! Есть проблема с выгрузкой XML по правилам XDTO. Пытаюсь по экспортированной XML-схема сделать выгрузку. В пакете есть "тип объекта", в нем есть "свойства", одно из свойств имеет "Определение типа", на нем все и падает. Отладчиком этот тип объекта имеет Тип "Неопределено". Общая ошибка: Значение: '1' не соответствует простому типу:
Несоответствие фасету Length = '12'
С "Определение типа" не сталкивался. Помогите разобраться.
---
, (5) вы оба не правы.
Стоит длина = 12 (Length = '12'), значит значение в поле должно быть длиной 12 символов, и никак иначе.
Любые другие значения будут выдавать ошибку.
---
ВыборкаДетальныеЗаписи.ISIN какое значение имеет?
---
В описание типа минимальная длина 12.
---
да, но значение "1", это длина не более 12
---
, (5) вы оба не правы.
Стоит длина = 12 (Length = '12'), значит значение в поле должно быть длиной 12 символов, и никак иначе.
Любые другие значения будут выдавать ошибку.
---
Спасибо добрый человек! Помогло
Добрый день!
Ситуация следующая: как мы знаем, изменение записи регистра происходит в 2 этапа: запись пустого набора и запись нового набора. Необходимо на первом этапе сохранить определенное значение, а на втором этапе это значение прочитать.
Глобальная переменная не подошла, т.к. при записи нового набора её значение будет пустым. Адрес временного хранилища также надо где-то хранить.
Существует ли какой-то способ без внесения изменений в структуру конфигурации?
---
Нашел кучу информации в этой ветке:
https://infostart.ru/1c/articles/181013/
Наверное тему можно закрыть. Думаю, подойдет метод БСП ОбщегоНазначения.ХранилищеОбщихНастроекСохранить
с указанием имени пользователя. Сомневаюсь, что один пользователь одновременно запишет более одного набора записей.
---
Если только во внешний файл записывать. А так самый простой - использовать временное хранилище, с хранением адреса.
---
или попробовать хранить в

```1c
    ХранилищеОбщихНастроек
```
---
если использовать временное хранилище, то адрес также нужно где-то сохранять, что в данной ситуации не совсем удобно. Можно использовать ХранилищеОбщихНастроек, но тогда нужно генерировать уникальные ключи настроек, если редактируется одновременно несколько записей, при этом ключ также нужно где-то хранить...
---
Как-то непонятно написано: "запись пустого набора и запись нового набора. Необходимо на первом этапе сохранить определенное значение, а на втором этапе это значение прочитать." - Что такое "определенное значение"? Откуда - если записывается пустой набор?
---
Получить значение до и после в "одной транзакции"
---
пустой набор записывает платформа, чтобы затереть старые значения. В этот момент их можно получить, например, запросом из базы.
Забыл уточнить, речь про регистр сведений. Независимый, периодический.
---
Могу ошибаться, но нет возможности. Нельзя связать два события: удаление (Замещение = Истина) и добавление (Замещение = Ложь)
---
Берите полностью управление на себя. Сначала читаете запись, потом записываете новые значения. Это если не добавляете новую запись. Или я опять не так понял?
---
Нашел кучу информации в этой ветке:
https://infostart.ru/1c/articles/181013/
Наверное тему можно закрыть. Думаю, подойдет метод БСП ОбщегоНазначения.ХранилищеОбщихНастроекСохранить
с указанием имени пользователя. Сомневаюсь, что один пользователь одновременно запишет более одного набора записей.
Подскажите пожалуйста хочу удалить программно документ у которого необходимо предварительно отменить проведение
Делаю так.

Док = Выборка.ПолучитьОбъект();
Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Дальше пытаюсь удалить документ
Док.Удалить();

Выскакивает сообщение об ошибке :
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
---
Если хочешь так, то:

```1c
    Док = Выборка.ПолучитьОбъект();
    Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Док.Прочитать();
    Док.Удалить();
```
---
Если хочешь так, то:

```1c
    Док = Выборка.ПолучитьОбъект();
    Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Док.Прочитать();
    Док.Удалить();
```
---
Diagnostiks, Спасибо огромное!!! Так получилось, А я перепробовал кучу вариантов. Док.Ссылка.ПолучитьОбъект().Удалить(); . Тот что у меня заработал. Только не понял до конца почему. Пробовал Док.ПолучитьОбъект() а потом удалять, все равно ошибка
Есть функции ПоместитьВоВременноеХранилище и ПолучитьИзВременногоХранилища если есть огромное Соответствие и поместить его в такое хранилище будет тратиться время на перевод его в последовательность битов (сериализацию) и потом обратная распаковка, или даже запись на диск?
Какой лучший способ занять память на сервере и при повторном обращении на сервер с клиента без задержки использовать?
---
будет тратиться время на перевод его в последовательность битов (сериализацию) и потом обратная распаковка, или даже запись на диск?
"При помещении во временное хранилище фактическая сериализация значения не выполняется. Помещается ссылка на значение, которое хранится в кеше в течение 20 минут. По истечении этого периода значение сериализуется, записывается на диск (в хранилище сеансовых данных) и удаляется из кеша." (с) Руководство разработчика
---
Сам никогда не пользовался, но знаю что для этих целей в 1с есть общие модули с признаком повторное использование.Попробуйте погуглить в этом направлении
---
Такие общие модули предоставляют данные считанные из базы без повторного их считывания из базы, но если я начну менять считанные данные думаю есть риск что в любой момент 1с сбросит эти данные если не будет хватать памяти и заново их прочитает из базы.
---
При записи - не сбросит, тут в другом "фишка", повторное использование работает в пределах ОДНОГО сеанса
---
Спасибо, попробую, хотя впечатление что это ситуация когда баг используется как фича :)
---
будет тратиться время на перевод его в последовательность битов (сериализацию) и потом обратная распаковка, или даже запись на диск?
"При помещении во временное хранилище фактическая сериализация значения не выполняется. Помещается ссылка на значение, которое хранится в кеше в течение 20 минут. По истечении этого периода значение сериализуется, записывается на диск (в хранилище сеансовых данных) и удаляется из кеша." (с) Руководство разработчика
---
Спасибо огромное. Особенно за то что процитировали руководство разработчика, без традиционного на форуме процесса тыканья кота носом в тапок :)))
---
Тогда бонусом :)
Особенности использования модулей с повторным использованием возвращаемых значений (оттуда же):

"Сохраненные значения будут удалены:
● на сервере, в толстом клиенте, во внешнем соединении, в тонком клиенте и в веб-клиенте с обычной скоростью соединения ‑ через 20 минут после вычисления сохраняемого значения или через 6 минут после последнего использования;
● в тонком клиенте и веб-клиенте с низкой скоростью соединения ‑ через 20 минут после вычисления сохраняемого значения;
● при нехватке оперативной памяти в рабочем процессе сервера;
● при перезапуске рабочего процесса;
● при переключении клиента на другой рабочий процесс.
После удаления значений вызов экспортируемой функции выполняется как при первом вызове."
---
В своё время, решал подобное (на 8.2 или на 8.1), остановился на ЗначениеВФайл/ЗначениеИзФайла.
Работало быстро, думаю с кэшем связано