Финансы без пpоблем: Пеpеговоpный Пункт II (http://hdru.com/cgi-bin/pp2/YaBB.cgi)
>> ФБП для начинающих >> Большая строковая переменная
(Message started by: Seroga на 24.05.19 в 22:16:03)

Заголовок: Большая строковая переменная
Прислано пользователем Seroga на 24.05.19 в 22:16:03
Как, желательно в операции, ввести большую строковую переменную (например 200 или 300 символов) с сохранением в факте (желательно в факте) с дальнейшей возможностью ее редактирования, а не вводом заново?
Речь идет о вводе данных договора. В факте предположительно 9 – 10 полей.
Благодарю.

Заголовок: Re: Большая строковая переменная
Прислано пользователем Valery на 24.05.19 в 23:51:46
Видимо речь идет о регистрации с помощью одной операции нового поставщика/покупателя с одновременным вводом его реквизитов (ИНН, адрес, договор и т.д.).  
У нас это делается, как один из вариантов,  ч-з отчётную форму, Операция регистрируется с числовыми данными и передаётся на сервер, но реквизиты все же хранятся на sed ged. Всё надёжно и давно применяется.
Может в Ваших настройках  есть особенности и именно хранение строковых данных предпочтительнее в фактах.
Если такая опция появится, то добавится как вариант к уже имеющимся возможностям хранения строковых данных. Я ЗА :)

Заголовок: Re: Большая строковая переменная
Прислано пользователем Boris, Kiev. на 26.05.19 в 13:47:48

on 05/24/19 в 22:16:03, Seroga wrote:
Как, желательно в операции, ввести большую строковую переменную (например 200 или 300 символов) с сохранением в факте (желательно в факте) с дальнейшей возможностью ее редактирования, а не вводом заново?
Речь идет о вводе данных договора. В факте предположительно 9 – 10 полей.
Благодарю.

1.      Факты творятся исключительно в файлах-коэффициентах(ф-к).
2.      Нормальными переменными считаем те, которые вводятся в ветвях-вопросах, следовательно их длина ограничена 11 символами и максимум до 33 символов(при двухсимвольном имени клиента) в комментарии через функцию [co].

Делаем вывод:
Пользоваться строковой переменной более 33 символов в ф-к без «выковыривания» её из extrd.dat возможности не вижу. Хотя может кто-нибудь поспорит со мной, ведь ФБП – серьёзный аппарат.

Критика:
«Выковыривать» поле из extrd.dat в ф-к и садить в факт не вижу смысла.
При «выковыривании» и посадке в факт вы делаете системе зло два раза.
Первый – утрата быстродействия при вынимании данного из extrd.dat
Второй – память под факты «пухнет» дублями данных.

Совет:
Достаточно родить переменную(реперный индекс) в ветви-вопросе и дальше крутить всё, что ваша душа пожелает хоть в форме, которая откроется в следующей ветви или в форме, которая откроется автоматом после регистрации операции(это, правда, только на профессиональном клиенте, или при использовании первичного документа, который не прижился на «диких» базах) или любой другой формы, которую привяжете для анализа и редакции этих полей.
Также практиковал при работе с массой клиентов получение всех реквизитных полей, вплоть до ссылок на картинные файлы импортированием *.dbf или всяких по сути *.txt файлов с требуемыми полями.

Замечание:
Как правило, все реквизитные данные меняются во времени.
На заре своих систем реализовывал историю реквизитных частей на операциях, т.е. можно было в одном дне оформить два документа с одним контрагентом с разными значениями одного и того же поля. Практика показала, что такой подход оказался избыточным, т.к. реальной необходимости практически не возникало. Сейчас рЫкомендую всю историю реквизитов хранить в extrd.dat с дневным шагом, т.е. реквизит может меняться не более, чем один раз в день. Это практичное и сильное решение, т.к. операции не участвуют в построении истории.

Заголовок: Re: Большая строковая переменная
Прислано пользователем BBBB на 26.05.19 в 13:56:17
Соглашусь с boris.
Мой взгляд:
В самой операции никак не ввести такую длинну строковую переменную (если смотреть лог, то директива серверу длиной всего 240 символов). А лента фактов создается из данных в операции - есть операция - значит есть данные у сервера, удалили ее - значит, сервер тоже "забывает".
Видится такое решение - через отчетную форму вводить нужные данные и из нее сохранять их в [sed], одновременно посылать директиву серверу на регистрацию какой-то операции в которой формировать какой-то индекс в fact что-ли, который бы указывал на запомненный [sed]. Тогда когда по ленте фактов будет строится отчет или список - по закодированному индексу находить в [sed] эту длинную строковую переменную и извлекать ее.

Заголовок: Re: Большая строковая переменная
Прислано пользователем mine-R на 27.05.19 в 21:32:08
Добавлю вариант от кэпа  :)

Завести пару "мусорных" счетов, с такими же "мусорными" субсчетами. Можно и одним обойтись, но повторно разворачивать список субсчетов в операции придется через r или x

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

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

Заголовок: Re: Большая строковая переменная
Прислано пользователем Seroga на 28.05.19 в 15:58:37
Благодарю за ответы.
Немного прояснилось после 15 летнего перерыва в программировании.

В моей задаче не предполагается изпользовать ФбП, как бухгалтерскую программу, она будет изпользоваться, как записная книжка с не более чем 5 расчетами.
Вопрос касался сохранения предмета договора. Самый длинный в моем случае (из практики) 371 символ. Было бы поменьше символов, я бы стал «выковыривать».
Вопрос. Какая длина может быть в случае с sed?

Хочется «чисто» работать. Данные по сделкам хранятся какое-то время (например 10 лет), потом их удаляем.
Вопрос. Факты удалим на автомате, а sed можно удалить на автомате?

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

Благодарю.

Заголовок: Re: Большая строковая переменная
Прислано пользователем BBBB на 29.05.19 в 12:03:25
Длина [sed] - 240 символов.

Если в индекс использовать дату создания такого [sed] и знать что он хранится 10 лет, то раз в год можно же запускать отчетную форму - проверять [sed] и если по дате уже устарело - обнулять.

Заголовок: Re: Большая строковая переменная
Прислано пользователем Svetlana на 31.05.19 в 13:49:53
Предположим, есть ветка c проводками:

--Пример
--------пример
--------X  @48


Показываю очень схематично, чтоб попроще (допустим, предварительно был выбран из списка субсчет 48.2):


BI=[dir 1]+'aaeyui3'
U=[user]
a='48.2'
*
AA=U+'···O PD=0 DC=31 MC=5 500 ·Пример·пример·■'+a+'·'
*
printstr AA to file BI+'.in'

N:AUTO:#CLOSE


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

P.S. Кто захочет свой пример дать: можно обрамлять текст тэгами [pre][/pre], для italic: [i][/i].



Powered by YaBB 1 Gold - SP 1.3.2!
Forum software copyright й 2000-2004 Yet another Bulletin Board