Имя: Пароль:
1C
 
Каскадная связь таблиц. Аналог в 1С.
,
0 Kongo2019
 
06.02.25
12:44
Каскадная связь таблиц. Аналог в 1С.
Есть обычная БД. В ней три таблицы.

Таблица 1. Список изделий
ИД
И куча прочих полей

Таблица 2. Список операций
ИД
ИД  для связи с таблицей 1
И куча прочих полей

Таблица 3. Кто выполняет операцию.
ИД
ИД для связи с таблицей 2
И куча прочих полей

Для примера такая организация.
Изделие 1
-- Операция 1
---- Работник 1
---- Работник 2
-- Операция 2
---- Работник 3
---- Работник 5
-- Операция 3
---- Работник 2
---- Работник 4

На справочниках-то понятно три справочника, Основной. Подчинённый первому. Подчинённый второму.
А как это сделать для дока? В доке хранить не вариант, потому потом начинается движении по этапам, и док держать не хорошо каждый раз чтобы обновить на каком этапе сейчас это все идёт. Регистры не ссылочный тип.
Как вариант тоже напихать ИД.
Но как это все обработать и красиво показать в документе?
1 RVN
 
06.02.25
12:41
не очень понятно что нужно.
Если для ввода то, например:
Документ. в нем 3 таб. части "Список изделий", "Список операций", "Кто выполняет операцию". В каждой таблице обязательное поле ИД строки, в подчиненных еще поле ИД владельца.
А отображать можно деревом.
Примерно как сделан стандартный документ Прайс-лист в ЕРП и обрезках.
2 Garykom
 
гуру
06.02.25
12:59
(0) Банальный РС Связи
С тремя измерениями (Изделие, Операция, Работник)
Ресурсы не нужны но можно туда даты и прочее, если периодический не делать РС
3 Kongo2019
 
06.02.25
13:06
(1) Да вот такое и нужно.
Блин без ИД никак получается, то бишь переложить на 1С контроль ссылочной целости не удастся.
(2) Как бы вариант, но не нравится он мне. Усложнение схемы получается.

В общем опять все лапками. На 1С это переложить не получится походу.
4 Garykom
 
гуру
06.02.25
13:14
(3) Это не усложнение а упрощение себе жизни
Чтобы изменить не надо доки перезаписывать и перепроводить
5 Garykom
 
гуру
06.02.25
13:20
(4)+ В целом есть простое правило:
Ссылка/id на Родителя/Владельца сохраняется в Подчиненном объекте (один ко многим)
Или во внешнем объекте/таблице связей обе ссылки/id (многие ко многим)
6 arsik
 
гуру
06.02.25
13:18
А можно в одной таблице все хранить с 3мя колонками :)
7 Волшебник
 
06.02.25
13:20
(6) Нужно больше треша! Можно всё хранить в одном реквизите типа "ХранилищеЗначений". Загнать туда дерево значений.
8 Kongo2019
 
06.02.25
13:23
(4) Сам то он не заполниться. Надо будет в него писать. Обработчики надо рисовать.
Да и получится я все солью в один регистр где будет много дублирующей информации.

Изделие 1- Операция 1- Работник 1
Изделие 1- Операция 1- Работник 2
Изделие 1- Операция 2- Работник 3
Изделие 1- Операция 2- Работник 5
Изделие 1- Операция 3- Работник 2
Изделие 1- Операция 3- Работник 4

Мне места на диске не жалко конечно. Но как-то оно не то.
9 Kongo2019
 
06.02.25
13:24
(5) Но это работает 1С только в справочниках.
Регистры не ссылочный тип.
10 Garykom
 
гуру
06.02.25
13:25
(9) не тупи
реквизит Основание у документов
и в РС пишутся ссылки на твои ссылочные тыпы (справочники или документы Изделие, Операция, Работник)
11 Kongo2019
 
06.02.25
13:25
(6) А если у метя каскад из пяти, десяти таблиц?
Хотя в типовых походу так и колбасят
12 Garykom
 
гуру
06.02.25
13:26
(8) ты думаешь запись в РС занимает больше места чем еще реквизиты в объектах метаданных?
13 Kongo2019
 
06.02.25
13:27
(10) туплю, не понимаю я твоего предложения, сорри.
Можно как-то на пальцах, или пример какой?
14 Garykom
 
гуру
06.02.25
13:30
Для примера такая организация.
Изделие 1
-- Операция 1
---- Работник 1
---- Работник 2
-- Операция 2
---- Работник 3
---- Работник 5
-- Операция 3
---- Работник 2
---- Работник 4

Справочник "Изделия"
Справочник "Работники"
Справочник "Операции" или Документ "Операция"

РС "Связи", измерения:
1. "Изделие" тип СправочникСсылка.Изделия
2 ."Операция" тип СправочникСсылка.Операции или ДокументСсылка.Операция
3. "Работник" тип СправочникСсылка.Работники
15 Kongo2019
 
06.02.25
13:30
(12) Нет, но так сильна раздувается таблица.
В (0), в примере, у меня одна в первой таблице, три записи во второй и шесть в третей.
Ты мне предлагаешь свали все в одну. А как же ароматность записей? Первая нормальная форма и все такое?
16 Kongo2019
 
06.02.25
13:31
(14) И куча прочих полей из (0) я куда дену? Выкинуть?
17 dmt
 
06.02.25
13:31
(15) чето непонятно какую проблему решаешь, и пятница только завтра
18 Garykom
 
гуру
06.02.25
13:32
(15) Еще раз
Ссылка/id что в отдельной новой таблице
Что в существующей таблице еще новые реквизиты
Одинаково места!
19 Garykom
 
гуру
06.02.25
13:32
(16) Это уже платная услуга
Раскидать по справочникам или в ресурсы РС
20 Kongo2019
 
06.02.25
13:36
(19) Ну и будет РС с кучей ресурсов которые тупо дублируют друг друга.
Или моя твоя не понимает?
21 Kongo2019
 
06.02.25
13:43
(17) Ща картинку нарисую. Ну попробую по крайней мере.
22 Garykom
 
гуру
06.02.25
13:43
(20) ты реляционные базы данных (модели сущность-связь) и всякие нормальные формы с нормализацией изучал?
23 Kongo2019
 
06.02.25
13:46
(22) Вот я тебе про эту нормализацию и пытаюсь рассказать. Походу фигово.
24 Voronve
 
06.02.25
13:46
(0) 4й справочник. кода нет, наименования нет, одно поле составного типа; в типе три твоих справочника, рулить типом на уровне элемента, вложенность групп 3, подчинение элементам
25 arsik
 
гуру
06.02.25
13:48
(24) Так у него еще ресурсы есть
26 PLUT
 
06.02.25
13:52
гляньте, как справочник ключи аналитики чего-то там в типовых устроены

в справочник пихаете свои реквизиты. а в регистры - одну сцылку на этот самый элемент справочника - ключ аналитики

??

всё не читал
27 Voronve
 
06.02.25
13:53
(25) Первые три справочника живут своей жизнью; тащат там в себе что надо. этот 4й только для связи
28 arsik
 
гуру
06.02.25
13:55
Ну так в документе как указать ресурсы на каждый уровень имея только 4ю аналитику?
29 Garykom
 
гуру
06.02.25
13:56
(23) а на практике излишняя нормализация нафик не нужна
да она экономит место
но замедляет скорость
30 Voronve
 
06.02.25
14:03
(28) Это уж как реализуешь работу с этим справочником в документе
31 dmt
 
06.02.25
14:04
(21) А проблема-то в чем? Заводи справочники, документы, да что угодно - заводи реквизиты для связи.

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

Какие у тебя требования к решению, что хочешь получить? Не в структуре данных, а конечный результат какой?
32 Kongo2019
 
06.02.25
14:26
(31) Да пытаюсь изобразить рабочее место оператора для цеха. Чтобы максимально простое и информативное было.
То что мне интерфейс придется лапками рисовать, я уже смирился.
Раньше он был на Дельфи писан. Но вот решили заканчивать с лоскутной автоматизацией, собираем все единую кучу.
Ладно, в общем надо пробовать и так и этак.
Идей тут накидали чуток.
33 Bigbro
 
07.02.25
13:28
я до самого конца так и не понял в чем проблема...
ну есть 3 уровня подчиненности сущностей и что?
бывает и 4 и хоть 10.
если оно заранее известно - так вообще никаких проблем.
а если может быть разным - то лучше сделать как уже выше писали.
единый справочник с подчинением элементам и в нем одно из полей тип - который будет определять глубину вложенности.
и все, набивай туда что хочешь, хоть 20 подчиненностей хоть 50.
34 sikuda
 
07.02.25
14:20
(21) Так весь один 1С такой - на ссылочности
ERP - производство
1. Номенклатура
2. Ресурсная спецификация
   - Осн. изделие - номенклатура
3. Выпуск продукции
   - Спецификация - ресурсная спецификация...
35 Kongo2019
 
07.02.25
14:34
(33)Зачем мне справочники? Это не справочная информация же по идее.
(34)С регистром такая фишка не прокатит. Он не ссылочный тип.
36 sikuda
 
07.02.25
14:37
(35) У тебя же ссылочная информация можно на документах или справочниках (Выпуск продукции-документ)
И вoобще нарисуй это в SQL с первичными ключами и реализуй где хочешь.
37 Волшебник
 
07.02.25
14:39
(0) Можно такую структуру:

Справочник Номенклатура
   Бизнес-процесс Операция1...3 (можно завести ТЧ Продукция)
       Задача.Исполнитель (в шапке ссылка на БП-операцию)
38 Bigbro
 
07.02.25
14:43
Я думал, что справочная по описанию. Выглядит как технологическая карта. Вполне себе справочная информация.
Если нужен документ, то документ фиксирует какую-то хозяйственную операцию.
Нужно определиться, что за операцию фиксирует документ, и исходя из этого уже его проектировать.
39 PLUT
 
07.02.25
14:43
много букв, в дополнение (26)

Ключи аналитик учета в ЕРП, КА, УТ
https://clck.ru/3GEtAh
40 lEvGl
 
гуру
07.02.25
14:44
надо озвучить задачу в прикладном варианте, в чем смысловая нагрузка
41 Asmody
 
07.02.25
14:53
А давайте дружно попросим 1Ску сделать таб.части в таб.части, и будет всем щасте!
42 Asmody
 
07.02.25
14:58
(38) жизнь такова, что чаще всего необходимо все существенные данные переносить из справочника в документ, либо хранить их (данные) в периодических РС. Ибо жизнь изменчива, а документ одномоментен.
43 Kongo2019
 
07.02.25
15:05
(40) Да простая там смысловая нагрузка.
Оператор сделал док.
Рисует некий маршрут как некая фигонина будет двигаться по операциям и кто эти операции будет выполнять.
Так как док содержит кучу инфы, и их несколько вариантов(не дублировать же это все в каждом виде дока), он зарывается.
Поэтому маршруты мне надо вынести в отдельные регистры.
А там уже пик сканер ответственный что пришло на текущую операцию, то бишь записали в регистр дату и время прихода на операцию, если пикнули - а он предыдущую операцию не прошел, то злобный бип(я там сирены прикрутил, вместо спикера уже) и большая красная надпись верни назад и диспетчеру соответственно сообщение придет там чебурашки косячить пытаются.
На операции чебурашки чего там ваяют, отваяли приложили карточку к считывателю, опять записали что такая чебурашка в дату, время и параметры его ваяния. Ответственный за операцию пикнул сканером  и передал на следующую операцию, опять пишем дату, время и параметры оперции.
44 Kongo2019
 
07.02.25
15:07
(41) Дык дерево же есть. Геморройно конечно события обрабатывать, но рисует красиво.
45 Kongo2019
 
07.02.25
15:09
(38) Справочники тоже есть. Но там просто справочник операций с табличной частью рабочий. Не набивать же оператору каждый раз.
Это типа заготовки, шаблон маршрута.
46 Kongo2019
 
07.02.25
15:12
(36)Это в SQL у меня уже есть. См(21). Но блин все это писалось разными людьми в разное время. Еще и на разных языках.
Решили вот в общую базу завести.
47 DiMel_77
 
07.02.25
16:47
(45) Так если вам нужен документ - делайте в нем, в чем проблема? В ЗУП так связаны табличные части Начислений и показателей по идентификатору. Я думаю ещё в куче конфигураций. Вы сами определитесь что вам нужно...
48 Адинэснег
 
07.02.25
15:20
(0) 1C тоже хранится в обычных таблицах
вопрос, в том, насколько хочешь ты упражняться в логике управления этими связями
49 Kongo2019
 
07.02.25
15:24
(47) Да я уже сваял два регистра.
В одном операции, в другом рабочие.
Теперь вот выбираю что использовать в качестве идентификатора для связи.
Если в SQL это можно на движок базы положить всякие составные ключи, триггеры там.
То тут мне надо самому следить.

Кстати, а как захныкать регистр чтобы пользователь его не нашел?
50 Kongo2019
 
07.02.25
15:25
(48) Да вот хотел 1С заставить следить, не удалось.
51 Волшебник
 
07.02.25
15:25
(49) гляньте (37), там будет ссылочная целостность
52 Bigbro
 
07.02.25
15:27
(43) по такому описанию пожалуй я бы выбрал (37)
не только выполнение задач в рамках бизнес процесса, но и доп логику туда же можно в БП зашить чтобы разруливать разные условия.
шаблоны БП набил с основными вариантами и запускай по ним, пусть как по конвейеру едут.
53 Kongo2019
 
07.02.25
15:32
(51) Так мне на каждом этапе еще кучку параметров записать, в регистрах это идеально, там ресурсы есть.
Но попробую. вдруг чего и там интересного нарою.
54 Волшебник
 
07.02.25
15:32
(53) в БП и Задачах есть реквизиты и таб.части, они круче
55 Kongo2019
 
07.02.25
15:34
(52) Я же не смогу бизнес-процесс на уровне пользователя править.
Или можно?
Как-то я в них не силен. Щас почитаем.
56 Волшебник
 
07.02.25
15:36
Можно завести спр. Задачи, подчиненный сам себе (иерархия элементов).
Задача верхнего уровня - это изделие.
Задачи среднего уровня - этапы изготовления изделия
Задачи нижнего уровня - технологические операции, самые детализированные
57 Волшебник
 
07.02.25
15:35
(55) БП по сути документ, его можно исправлять и записывать.
58 Bigbro
 
07.02.25
15:39
(55) пользователь не должен их править. он должен исполнять свои задачи в рамках БП.
а вот аналитик должен нарисовать шаблоны БП для запуска процессов с учетом всех нюансов которые вам хочется править - вместо правок - зашивайте условия и пусть в рамках шаблона эти условия проверяются и улетают на той или иной ветке.

ну и если уже очень хочется - то всегда можно разрешить изменения документа по которому запущен БП.

более того можно настроить доступность редактирования документа на каждом из этапов для разных пользователей по определенным условиям или значениям реквизитов
59 Kongo2019
 
07.02.25
15:46
(58) У нас гибкие цепочки. Не прокатит.
Изучим, на улице все равно делать нечего, штормит, пороюсь пока по бизнес-процесам.
60 Bigbro
 
07.02.25
15:47
(59) у нас тоже гибкие цепочки. и БП позволяют эту гибкость программировать, закладывать допустимые варианты развития событий. и при этом исключать произвольные ошибочные и бредовые.
61 Волшебник
 
07.02.25
15:49
Карта маршрута БП может быть тривиальной: старт - точка операции - проверка на конец - финиш.




Весь маршрут можно задавать в таб.части БП
62 Мультук
 
гуру
07.02.25
15:53
(49)
>> Кстати, а как захныкать регистр чтобы пользователь его не нашел?

А как же ОН его найдёт ?
Доступа к "Все операции"  у пользователя нет. Или есть ?
63 Мультук
 
гуру
07.02.25
15:56
И даже если найдёт (перейти по ссылке).
У пользователя права только на чтение и Просмотр.
Пусть смотрит, хоть засмотрится.
64 Ногаминебить
 
07.02.25
15:58
Справочник Изделий,справочник Операций, документ с реквизитом Изделие и ТЧ с колонками Операция, Исполнитель и может еще чота что захочется.
65 Волшебник
 
07.02.25
16:01
(64) БП с задачами лучше. Задача может отражаться у пользователя в списке "Мои задачи". Её выполнение можно фиксировать в реквизитах задачи, независимо от других задач. Можно параллелить процесс по разным исполнителям, можно настроить адресацию по роли. Короче, БП круче
66 Kongo2019
 
07.02.25
16:04
(62) Не будет. Но можно по ссылке же.
(63) На запись же тоже будет.
Или запись вынести в общий модуль на сервере с привилегированным режимом.
67 Asmody
 
07.02.25
16:29
(44) ты не путай структуру хранения данных и их визуальное представление
68 lEvGl
 
гуру
07.02.25
17:39
(43) ок, а рабочих может больше двух? обычно начал/закончил достаточно, правда зависит от требований по детализации, у рабочего может быть помощник, например
69 lEvGl
 
гуру
07.02.25
18:11
+ (68) на одной операции, конечно
70 Конструктор1С
 
07.02.25
20:50
NoSQL отлично подходит для решения подобных задач. Можно тупо хранить данные в иерархическом виде а ля json
71 lEvGl
 
гуру
07.02.25
23:16
(70) У него обычные творческие муки в архитектуре обычной реляционной базы. Просто они лишние. Документ с двумя связанными между собой ТЧ (1) в скл варианте и будет, то что он хочет - по ключам и лапки не нужны. Только данные будут в документах, а не регистрах. Можно самому по нескольким регистрам разложить, либо в один, но будет дублирование данных (2). Просто не совсем понятно, что именно не устраивает - от этого никуда не деться.  Множиться будут либо строки либо колонки. Конечно, в идеале бы так чтобы таблиц вобще не было, просто - раз и данные на форме появились
(0) нужно искать не в технической части, а в логике процесса. Если, например, сотрудников фиксированное количество, то они могут быть реквизитами одного РС. Будет одна таблица и в ней в каждой строке будет дублироваться только изделие, тк выносить изделие в отдельную таблицу с одной колонкой смысла нет. Нууу это нормально
"Прочие данные" вынести в доп свойства или еще какие то таблицы
72 lEvGl
 
гуру
07.02.25
23:18
Но в целом желание сделать с максимальным отсутствием избыточности понятно
73 lEvGl
 
гуру
07.02.25
23:24
гм (2) не совсем правильно понял, это о другом. Связи тут кажутся лишними, хотя от задачи зависит, в частности от "Прочие данные" изделия, например. Если они статические, то не надо, если динамические то надо
74 Kongo2019
 
08.02.25
12:04
(67) Хорошо оформить на экране тоже важно. Операторы будут меньше тупить и ошибок делать.
(68) До десятка. Плюс надо записать на них время и материалы.  чтобы потом концы найти когда брак разгребать будут.
(70) Но хотелось бы в 1С реализовать.
(71) Ну во первых док не прокатывает, потому что после запуска он переводится в режим только чтение.
Во-вторых менять док не в концепции 1С.
В-третьих доки разного типа будут и бегать по их табличным частям потом не айс. Добавится доки и опять все переписывай?

Да и в каскаде может быть до 5-6 таблиц. Это я простой вариант привел, для примера.

(73)В том и прикол что они динамические, иначе бы я их тупо их в справочник загнал.
75 lEvGl
 
гуру
08.02.25
13:50
(74) попробуйте подойти с методической стороны. Десяток исполнителей на одной операции общего маршрута это что за операция такая, постройка атомного реактора что ли, а общий маршрут - его запуск и добавление в каскад других реакторов? Поэтому можно разбить маршрут детальнее, тогда исполнителей, и остального, станет меньше, этим можно варьировать. Для исполнения лучше отдать это на откуп кому то, обычно это планово диспетчерский отдел + нормативщики, а не рабочий на месте. Цех должен иметь возможность вносить корректировки для конкретной работы, но остов лучше создавать грамотному в логистике работ специалисту.

Это конечно не решает проблемы универсальности хранения данных: материалы, оборудование, технологическая информация и так далее - все это раскладывается по разным таблицам, вопрос масштабнее, чем казался в (0) :), поэтому для него и ресурсы нужны, "по-легкому" не получится
76 Bigbro
 
08.02.25
14:02
(74)  мой опыт показывает что чаще всего разговоры о супер гибкости, которую невозможно формализовать - синоним бардака.
в реальной жизни все равно любой специалист будь он хоть супер уникальным принимает решения на основе некоторых факторов. и их хорошо бы выделить и фиксировать.
а тогда у нас рождается алгоритм.
который можно и нужно зашить в бизнес процесс.
со всеми ветвлениями возвратами при условиях нарушения тех карты с хранением доп реквизитов как результатов исполнения в каждой задаче каждого исполнителя на каждом этапе. и финальным сбором отчета по прохождению изделия, которое собирает все эти данные в одну кучу.
77 lEvGl
 
гуру
08.02.25
14:10
>>которую невозможно формализовать - синоним бардака
формализовывать должен компетентный специалист, но с возможностью корректировок со стороны цеха
динамика - затратно для прога и хорошо всем, ведь и к программе вопросов нет )
78 lEvGl
 
гуру
08.02.25
14:13
формализовывать сам процесс конечно, для этого им нужен инструмент
79 Kongo2019
 
08.02.25
14:48
(75) Для этого у меня технологи есть.
И так у же раздробили как смогли. Народа много потому что у каждого свои допуски. Нельзя сделать универсального бойца, электрик-механик-сварщик например. Хотя на операции они могут быть задействованы всего на пару минут.
Так технологи с логистами и формируют эти маршруты, и следят за ними. У меня они операторы.
В цеху тока пикать сканером могут.
(76)Элемент бардака конечно присутствует, так как это заказное производства, нет четкого понимания что делаем сегодня, чего завтра. Но посты обработки уже сформированы, и поэтому надо подстроится под них. Да там зачастую оптимально, но переоборудование дело дорогое и не быстрое.

Ветвлений нет. Движение только вперед. Линейное.

(78)Вот что-то пытаемся нарисовать. Потому сейчас все посты изолированы и максимум, что на сейчас сделали это льем в одну базу периодически. Хоть аналитику собрать можем.
80 Kongo2019
 
08.02.25
14:52
В общем пока идея реализована такая.
В регистры пишется гуид. Контроль целостности прописан в самом модуле регистра.
То бишь повторил реляционную модель MS SQL.
Не нравится мне это, но работает и довольно просто получилось с реализацией. Но явно где-то есть грабли, пока не наступал.
81 Волшебник
 
08.02.25
14:58
(80) Не нравится мне это...
82 Kongo2019
 
10.02.25
09:37
(81) Согласен. Не по 1С-ки получается.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.