• XSS.stack #1 – первый литературный журнал от юзеров форума

CRONOS ➤ Cronos: формулы, конвертирование, софт

Раньше была возможность лицензирования физиков через дилера. Сейчас без понятия.
Да, для полноценного реверса (кроме вариантов снятия ограничений демо) нужна лицензия, ее нужно покупать через левое юрлицо. Действующую чужую под реверс вам никто не выделит, это утопия.
Стоимость реверса 300-500 долларов, зависит от ТЗ, дело вообщем не в заявленной сумме, хороший реверс дешевле 300 долларов никто или не потянет, или это будет долго, возможно и без гарантий успеха. Сугубо практически, а не на словах, намерениях мне такие исполнители не известны. Оперативно, с учетом многих нюансов (а там много чего можно учитывать) - 500 долларов это хорошая цена.
Ну а что там вам кажется дорогим, или не очень, очень субъективно. Халява она естественно выгодней. Однако же, никто не спешит со всеми этим делится. И не мудренно, т.к. организационно все значительно сложнее, чем на словах и пальцах.
Кстати, а нет какого то варианта приобрести 7 физиком ? Неужели кто то возьмётся разреверсить за меньшие деньги, или есть ньюансы?
10к за лицензию на 10 лет не кажутся большими деньгами,но на оффе предложения только организациям по безналу
 
слить таблицы связаны между собой

Я был разделил вопрос на две части:

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

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

Как перенести все поле из базы в базу:
Иногда случайно удаляются поля в базе. Откатиться в бэкап значит потерять все результаты работы. Также иногда надо перенести какие-то поля из одного банка в другой.

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

Лучше всего - если в базах совпадают системные номера. Тогда создаем в исходном банке числовое поле (допустим, АА17) и формулой АА17:=@SYSNOMER записываем туда системные номера.

Точно так же делаем в конечном банке, там также должно быть числовое поле с системными номерами.

Далее создаем в конечном банке вторую базу. В эту базу копируем структуру базы исходного банка. Далее создаем для этой базы конечного банка таблицы обмена. Проектирование — Таблиц обмена — Таблицы обмена — Новая — ткнуть в базу, ввести имя таблицы и нажать «Создать». Проверить, что все поля есть (кнопка «Свойства»). Ткуть в «Выполнить».

То же самое делаем с исходным банком - у него должна быть своя таблица обмена.

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

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

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

Нам надо перенести поле АА12 из базы2 в базу1, где записать его в АВ12. Формула:

Код:
@a:=АА12 //АА12 - исходное поле в базе2

LOOP(АА17_АВ,АВ12:=@a) //АВ12 - конечное поле в базе1, АА17_АВ - это пункт "связь", где записаны: АА17 (это код поля "связи по полю", созданного в базе2 - см. выше где, затем нижнее подчеркивание и мнемокод базы1 - в нашейм случае это АВ. Все вместе АА17_АВ

После этой формулы поле АА12 скопируется в АВ12.
 
Последнее редактирование:
- как слить базы одного банка, если структура баз идентична. То есть список полей у всех одинаковый, но базы в одном банке, номера полей и мнемокоды не могут быть поэтому одинаковыми. Кто как делает?
Во-первых, нужно уметь проектировать банки данных. Если вы не понимаете принцип связанных записей, "один ко многим", "многие к одному" и "многие ко многим" (прямая ссылка, обратная ссылка, прямая-обратная ссылка, связь по полю), то следует это изучить, возможно кому-то проще будет начинать осваивать без теории, непосредственно на практике. В противном случае, даже хороший совет, какая-то формула в одном случае вам поможет, но без понимания что к чему в будущем только навредит и отнимет еще больше времени, когда изначально можно было полчасика почитать и освоить что к чему.
В-вторых, вовсе не обязательно строить какие-то связи. Все зависит от набора. В массовой коррекции по связям данные из одной таблицы в другую прекрасно копируются. Тут только вопрос что и откуда вы собираетесь копировать? Если в таблице А одна запись, а в таблице Б их сотня, и вы собираетесь это поместить в А, то наверное же это идиотизм и нужно подходить к решению задачи в принципе по другому, не так ли?
В-третьих, вопрос был вообще о другом. Как связанные объекты выгрузить в текст. В одной плоской таблице. И тут панацеи нет, все зависит от набора. Что там выше писали, там непонятно о чем конкретно речь. Эту задачу можно решить различными способами.
В-четвертых, при обмене между банками есть подменю "вид обмена" выбор соответствующей набору опции которого позволит перенести в том числе и связи в банке:

2020-07-14_215844.jpg
 
Последнее редактирование:
при обмене между банками есть подменю "вид обмена" выбор соответствующей набору опции которого позволит перенести в том числе и связи в банке:
Посмотреть вложение 12176

Я, возможно, туплю. Таблица обмена (на скрине) ведь требует одинаковых мнемокодов и одинаковых номеров полей? По крайней мере, в пятерке так. Но внутри одного банка у его баз не может быть совпадающих мнемокодов. Вот у нас две базы в одном банке, структура одна:

АА1 "Имя"
АА2 "Фамилия"

ББ1 "Имя"
ББ2 "Фамилия"

Как их слить внутри банка в единую базу ВВ, например?
 
Последнее редактирование:
Таблицы обмена предназначены для обмена между банком->баз-ой/ами отправителем и банком->баз-ой/ами получателем. Они не предназначены для обмена внутри банка.
Если вы действуете через таблицы обмена, то копируете структуру банка (не базы, а банка) в новом банке получателя и обмениваетесь.
Ну а по части "как слить" это вопрос примерно как приготовить блюдо? Очень по разному, смотря какое блюдо, ключевое слово здесь - приготовить.
 
Подскажите, как удалить строки формулой, последовательно с ХХХХ по YYYY?

Для этого формула не нужна, проще удалить вручную (инструкция)
 
Не совсем проще, 12тыс строк надо удалить.
Банк, порядка 15м строк. При удержании SHIFTa скрол не работает, только прокруткой.
 
Последнее редактирование:
Не совсем проще, 12тыс строк надо удалить.
Банк, порядка 15м строк. При удержании SHIFTa скрол не работает, только прокруткой.

Функция DELETERECORDSARRAY

Удаляет записи с указанными системными номерами. Функция может выполняться в одном из следующих режимов:

стандартном. В этом режиме перед удалением записи производится удаление отсылок на нее из связанных записей. Кроме того, если удаляемая запись содержит прямые отсылки на связанные записи, эти записи также удаляются (при условии, что они не имеют связей с другими записями). На время выполнения операции удаляемая запись и связанные с ней записи блокируются;

с удалением по корневой связи. Данный режим аналогичен стандартному, но реализует дополнительный способ удаления связанных записей: при наличии у удаляемой корневой записи поля со статусом «Корневая связь» удаляются все записи, отсылки на которые содержатся в этом поле. Удаление связанных записей выполняется независимо от типа отсылок («прямые» или «прямые-обратные») и наличия у связанных записей связей с другими записями. Если удаляемая корневая запись не имеет поля со статусом «Корневая связь», работа функции в данном режиме не отличается от работы в стандартном режиме;

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

Режим работы функции задается ее вторым параметром.

Синтаксис

DELETERECORDSARRAY ( НаборЗаписей, Режим )

Аргументы

НаборЗаписей – параметр, указывающий мнемокод базы и системные номера удаляемых записей в формате МнемокодБазы{НаборСистемныхНомеров}, где НаборСистемныхНомеров – FA-набор, содержащий системные номера удаляемых записей.

Режим – числовой параметр, устанавливающий режим работы функции: 0 – стандартный, 1 – режим быстрого удаления, 2 – режим с удалением по корневой связи. По умолчанию принимается значение 0 (стандартный режим).

Возвращаемое значение

Отсутствует.

Пример использования

Код:
@records := FINDARRAY("ОТ ЛЦ01 2 РВ ИВАНОВ"); // отбираем записи, подлежащие удалению
DELETERECORDSARRAY (ЛЦ{@records}, 1) // удаляем отобранные записи в режиме «быстрого» удаления
 
Как добавить фотографии в базу, если есть в одном из полей есть идентификатор.

Пример. В одном из полей цифровой код. И есть внешняя папка, где лежат фото с названиями, идентичными значениям в поле. То есть в поле будет запись 12345, в папке файл 12345.jpg. Применяем формулу:

Код:
@a:="C:\Base\\img\" // каталог с фотографиями
@b:=АА1<<".jpg" // АА1 -поле с цифрами, которые совпадают с названиям файлов фото. Например, в поле 123, а в каталоге есть фотка 123.jpg
ADDFILE(АА16(-1),@a<<@b) // фото записываются в поле АА16
 
Последнее редактирование:
Как добавить фотографии в базу, если есть в одном из полей есть идентификатор.

Пример. В одном из полей цифровой код. И есть внешняя папка, где лежат фото с названиями, идентичными значениям в поле. То есть в поле будет запись 12345, в папке файл 12345.jpg. Применяем формулу:

Код:
@a:="C:\Base\\img\" // каталог с фотографиями
@b:=АА1<<".jpg" // АА1 -поле с цифрами, которые совпадают с названиям файлов фото. Например, в поле 123, а в каталоге есть фотка 123.jpg
ADDFILE(АА16(-1),@a<<@b) // фото записываются в поле АА16

А как правильно ДОиндексировать базу, после добавления новых строк, чтоб не проводить индексацию с самого начала?
 
Последнее редактирование:
Что бы не не заполнять поле типа "Файл" пустыми значениями названий, рационально проверять наличие файлов в директории.
Код:
IF READFILE ( @file ) >0 Then (ADDFILE(AA2(-1),@file))
Где АА2 поле типа "Файл"
Что до DELETERECORDSARRAY это всё прекрасно, но слишком сложно. По опыту знаю, что пока не возникнет острая необходимость никто из пользователей вникать в формулы не будет. Максимум будут собирать шпаргалки формул, как что делать. Ну а читать мануал тем более. Люди его открывают и тупо там не находят знакомых слов. Не понимают ни синтаксис формул, ни переменные. Для них это эльфийская грамота. Все ищут простые решения, как это быстро сделать. Потому, массовая коррекция, выборка некая и массовая коррекция это самое рациональное для людей, которые попросту не знают как что удалять. Начинать нужно с элементарной арифметики, а вы тут преподаете какую-то высшую математику, понимаешь :)
Как добавить фотографии в базу, если есть в одном из полей есть идентификатор.

Пример. В одном из полей цифровой код. И есть внешняя папка, где лежат фото с названиями, идентичными значениям в поле. То есть в поле будет запись 12345, в папке файл 12345.jpg. Применяем формулу:

Код:
@a:="C:\Base\\img\" // каталог с фотографиями
@b:=АА1<<".jpg" // АА1 -поле с цифрами, которые совпадают с названиям файлов фото. Например, в поле 123, а в каталоге есть фотка 123.jpg
ADDFILE(АА16(-1),@a<<@b) // фото записываются в поле АА16

Если вы доливаете в существующий банк из файла некие данные, то в старых версиях Кронос "ДОиндексация" происходить не будет. Рационально через таблицы обмена доливать данные, тогда новая порция будет "доиндексирована", без перестройки индексов с нуля. Для больших банков это важно.
Таким образом, создаете новый банк, вливаете туда новую порцию и через таблицы обмена передаете банку приемнику эти порции. Попробуйте, вам понравится
А как правильно ДОиндексировать базу, после добавления новых строк, чтоб не проводить индексацию с самого начала?
 
Последнее редактирование:
Буду благодарен за совет, есть ли способ конвертировать банки кроноса шифрованные в другой формат для вывода в sql например? До сих пор рабочих способов не нашел.
 
LoneStar
вы для начала научитесь формулировать предложения, сам вопрос, после чего можно поговорить и о "способах".
банки с шифрованием? вывод в sql? в чем суть вопроса? есть тулза которая на лету преображает в sql, иногда это поможет, иногда не поможет.
если вам нужен sql то и преобразовывайте таблицы, реляции в sql, а не ищите волшебных кнопок.
что до шифрования банков, я могу снять это шифрование, снять пароли к структуре, коммерческие серийники, версии под cronos light если шифрование до версии 6.4. если шифрование использовалось в 6.4., то нет. если версия банков кроноса до 6.4 без шифрования в этой версии, то да, включая 6.4.
 
Последнее редактирование:
Есть два банка с разными полями - в обоих есть поле ИНН.
Как их связть, чтобы при клике на ИНН из первой переходило во вторую базу, и наоборот из второй в первую.
Заранее благодарен, если кто объяснит последовательно.
 
В таблицах А и Б создать поле типа Связь по полю и связать их.
Проектирование --> Свойства базы --> Список полей --> Новое. Тип поля - скроллинг, выбор Связь по полю.
В Проектировании свойств поля базы создать связь по полю "ИНН" в Проектировании сложного поля. В Связанное поле таблицы А указываете на поле "ИНН" в таблице Б, и таблице Б указываете на поле "ИНН" таблицы А.
Поля по которым будет построена связь (ИНН там или что) должны быть проиндексированы (иконка с знаком молнии для самых маленьких).
Всё очень просто, но для тех, кто впервые залезет под этот капот часто есть где растеряться. Причина этому проста. Никто не читает мануал, хотя в нем на 500+ страниц описано практически всё что можно и как нужно делать в ИСУБД "Кронос".

2020-08-22_091818.jpg

Есть два банка с разными полями - в обоих есть поле ИНН.
Как их связть, чтобы при клике на ИНН из первой переходило во вторую базу, и наоборот из второй в первую.
Заранее благодарен, если кто объяснит последовательно.
 
Последнее редактирование:

Спасибо, мануал из поста помог. Очень подробно и доступно. :t

Можете подсказать, как из 3.04.72 сконвертировать в 5.0?
Думал, что если выгрузить в cpy и восстановить затем, то восстановится в 5.0. Не, Cronos так просто не дался.
:confused:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх