Имя: Пароль:
1C
1С v8
Есть ли у строки в ТЧ документа уникальныйИдентификатор?
0 iamnub
 
16.10.11
13:45
Что-то никак не пойму.
1 Мимохожий Однако
 
16.10.11
13:48
В свойствах строки ТЧ только НомерСтроки и реквизиты
2 PR
 
16.10.11
13:51
Нет
3 iamnub
 
16.10.11
13:55
А как тогда сама платформа идентифицирует строки, очень интересно??
4 DrShad
 
16.10.11
13:57
(3) например для чего ей индентифицировать строки?
5 Мимохожий Однако
 
16.10.11
13:58
с какой целью интересуешься? Открой для себя книгу "Профессиональная разработка..."
6 byxtello
 
16.10.11
14:01
а номер строки чем не нравиться ?
7 iamnub
 
16.10.11
14:04
(4),(6)
Исходя из ваших постов, я понимаю, что при каждой записи документа платформа просто перезаписывает... Табличную часть документа?
8 ОбычныйЧеловек
 
16.10.11
14:04
(6) видимо тем, что сортировку\перемещение строк никто не отменял.
9 iamnub
 
16.10.11
14:05
(5)
Мне рано еще читать книги для взрослых.
10 DrShad
 
16.10.11
14:06
(9) так может и 1С не твое еще, рано
11 iamnub
 
16.10.11
14:09
(10)
Может быть. Но вопрос задан. Есть соображения - отвечай.
12 DrShad
 
16.10.11
14:12
(11) так ответили уже нет идентификаторов для строк и нафиг платформе не нужны
13 DrShad
 
16.10.11
14:14
+(12) но если с какой-то умной целью нужны, то можно организовать самому
14 iamnub
 
16.10.11
14:16
(12)
Ага. С одной стороны, строка - полноценный объект и самостоятельная сущность. Причем, чуть ли не из самого сердца БД.

С другой стороны, по мнению drShad - "нафиг платформе не нужны".

Тогда как можно предположить, даже не залезая в саму БД - что GUID-ы строк там есть, просто платформа не даёт к ним доступ.

Что очень жаль.
15 shuhard
 
16.10.11
14:17
(14)[строка - полноценный объект и самостоятельная сущность.]
не верю
16 DrShad
 
16.10.11
14:17
(14) да нет там никаких GUIDов
17 ОбычныйЧеловек
 
16.10.11
14:18
(12) платформе вообще никакие объекты не нужны - они нужны разработчику.
18 iamnub
 
16.10.11
14:20
(15)
Твое дело. Нормальный ORM тебе модель не построит без primary key в  таблице. Если только read only.
19 DrShad
 
16.10.11
14:21
(18) ты можешь сказать нафига они тебе впились?
20 DGorgoN
 
16.10.11
14:21
(18) Да ну
21 shuhard
 
16.10.11
14:22
(18) бла бла бла
первичный ключ у документа
22 iamnub
 
16.10.11
14:23
(19)
Делаю синхронизацию с внешней системой.

Да ладно, парни, я всё понял.
23 iamnub
 
16.10.11
14:24
(21)
Что это было?
Мастер-класс от shuhard-а?
24 DrShad
 
16.10.11
14:25
(23) ага, многтим помогает :)
25 shuhard
 
16.10.11
14:26
(24) но не всем
26 H A D G E H O G s
 
16.10.11
14:27
При записи объекта:
1) 1С не переписывает ТЧ, если ТЧ не менялась
2) 1С переписывает те строки ТЧ, которые менялись
3) 1С переписывает все строки ТЧ, если изменился порядок строк.
27 H A D G E H O G s
 
16.10.11
14:28
У строки нет идентификатора (и нафиг не нужен)
28 iamnub
 
16.10.11
14:31
(26)
"2) 1С переписывает те строки ТЧ, которые менялись
3) 1С переписывает все строки ТЧ, если изменился порядок строк."

Теперь понятно.

Если удаляем одну строку из 500-ста, значит - изменился порядок строк, значит перезаписываем всю ТЧ.

И конечно же из этого следует, что UID строке не нужен.

Совсем 1С мозги проела?
29 DrShad
 
16.10.11
14:33
(28) а разве когда-то у 1С было по-другому?
30 H A D G E H O G s
 
16.10.11
14:36
(28) Че ты там список захотел штоли? Это еще +32 байта на строку.
31 H A D G E H O G s
 
16.10.11
14:36
Если односвязный список.
32 iamnub
 
16.10.11
14:38
(29)
Да меня как бы не совсем взолновывает, как это было у 1С.
И внешний UID завести совсем не проблема.

Меня удивляют, высказывания "некоторых", которые считают, что UID строке - нафиг не нужен.

Полторы тыщи строк на вашем любимом тонком клиенте - строку удаляем - и понеслась ненужная перезапись всего объема? В ином случае - достаточно было бы одной строчки.

Так системы не проектируют, как бы...
33 iamnub
 
16.10.11
14:40
(15)
Ты, красава, код посмотри, как сторки добавляются. Потом взгляни на структуру таблиц БД. Ну а потом книжку какую-нибудь умную почитай, причем, избегай желтых цветов. Глядишь - и поймешь.
34 H A D G E H O G s
 
16.10.11
14:40
<< В ином случае - достаточно было бы одной строчки.>>
2-х, или даже 3-х (но необязательно).
35 Мимохожий Однако
 
16.10.11
14:40
(28),(32) Пожалуйся разработчикам...По теме ответили. А если тебя не устраивает, то твоя проблема.
36 H A D G E H O G s
 
16.10.11
14:42
Я больше смирюсь с необходимостью закатать на сервере полторы тыщи строк , чем раздуть каждую еще на 32 байта.

Записать в базу полторы тыщи строк - это пустяк.
37 iamnub
 
16.10.11
14:45
(36)
Э-э-э-э...
Ну как бы, если речь идет о работе в локалке - тогда да.

А вот если гонять 1500 тыщи строк между сервером и каким-нибудь мобильным терминалом, да еще и в XML - то поневоле захочется "добавить 32-байта".
38 H A D G E H O G s
 
16.10.11
14:46
Че там?
1) Ввел документ - и лежит он себе, ну поменял пару раз строки, подождал.
Лежит дальше.
2) Ввел документ - и лежит он себе с лишними 32 байтами на строку, и не факт, что порядок строк когда изменится.
39 Мимохожий Однако
 
16.10.11
14:46
Идентификатор документа + табличная часть + номер строки не пробовал использовать?
40 H A D G E H O G s
 
16.10.11
14:47
(37) "Хочется" и "нужно" - разные вещи.
41 iamnub
 
16.10.11
14:49
(40)
Как будет угодно.
42 vde69
 
16.10.11
15:00
для SQL у строки ДОЛЖЕН быть идентификатор, только не в виде гуида а в виде индекса строки в таблице (не путать с номером в табличной части), без этого кластеризованый индекс не построить...

только этот идентификатор в 1с недоступен :) это уровень базы данных

а по сколько 1с работает не только под SQL то и реализация этого ключа может быть разная, или он может вообще отсутствовать.

По этому не нужно связывать 1с и SQL это "красный" и "теплый"
43 iamnub
 
16.10.11
15:05
(42)
Ну, тутошнему люду UID у строки "и нафиг не нужен".
Звучит весомо.

А как насчет редактирования одного документа несколькими людьми?

А разрешение коллизий в разных узлах ИБ на уровне строк?

Один оператор в одном городе меняет одну строку, другой оператор - другую.

Все изменения будут приняты?
44 vde69
 
16.10.11
15:11
(43) вполне нормальным будет решение документ+РегистрСведений, при этом ты все свои вопросы решаешь, да и устроки РС есть идентификатор доступный внутри 1с.

просто идеология 1с - "объект не делим" это относится к документу в целом, если тебя это не устраивает - вместо ТЧ используй РС.

зы
только зачем изобретать велосипед? и наступать на грабли? уверяю что если у тебя возникают траблы типа (43) - значит ты не правильно спроектировал документы (сделал вместо 10 документОв один мега докУмент)
45 Мимохожий Однако
 
16.10.11
15:12
Приоритет у центральной базе, если не оговорено (настроено) особо. Работа с SQL базой от 1С напрямую не предусмотрено (не приветствуется)
46 iamnub
 
16.10.11
15:13
(44)
" значит ты не правильно спроектировал документы "

Увы, есть варианты, когда бизнес-процессы утверждаются сверху.

Могу привести примеры.
47 Мимохожий Однако
 
16.10.11
15:14
(46)Давай
48 vde69
 
16.10.11
15:15
(46) бизнес может утверждать только видимою часть (формы), но как ты это реализовал - бизнес даже знать не должен
49 iamnub
 
16.10.11
15:19
(48)
Бизнес-процесс может выкидывать какие угодно фортеля и из-за каждого чиха перекраивать значительную часть системы?
50 iamnub
 
16.10.11
15:22
Торговые представители работают с контрагентами. С одним контрагентом могут работать неограниченное количество торговых.

У каждого свой тип товара, каждый работает только в своей зоне.

Все это решалось договорами и различными привязками к этим договорам.

Но иной клиент хочет всё в ОДНОЙ накладной + вести взаиморасчеты по этой накладной.

То есть - все типы товара физически находятся в одном документе.

Но торговый всё также должен иметь/влиять только на свою зону отвественности.

Ну вот и всё. Документ по сути могут реадктировать несколько людей, причем значительно разнесенных в пространстве.
51 Мимохожий Однако
 
16.10.11
15:35
В любом случае, документы и строки обрабатываются не одновременно, а последовательно. В 1С есть механизмы версионности объектов. Как это реализовано в твоей системе, можно только догадываться.
52 DrShad
 
16.10.11
16:24
(50) зачем на редактирование несколькими ТП открывать объект? у меня еще шесть лет назад на клюшках была подобная задача, так вот объект записывался отдельно от формы где изменялись строки и все работало
53 DrShad
 
16.10.11
16:30
(48) +100500
54 acsent
 
16.10.11
16:32
Сводные документы совсем не так делаются
55 СноваЗдорова
 
16.10.11
16:33
UID строке не нужен (С)
Просто отметился
56 iamnub
 
16.10.11
16:43
отлично. Давайте теперь каждый обновляльщик типовых выдумает "похожую" задачу и что-нибудь здесь пропищит. Сводные документы уже вход пошли.

В каждой нормальной системе у сущности есть PK. не нужен он только 1С-никам и уппыристам, у них и без того забот полон рот.
57 vde69
 
16.10.11
16:52
(56) пойми, что в 1с документ это и есть неделимая сущность! и у документа есть свой UID.

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

твоя задача - это бизнесс-процесс, а документ - это отражение одной хоз операции...
58 iamnub
 
16.10.11
16:58
Да все я понимаю. Не понимает только торговый, который добавляет на своем терминале +50 строк, а оператор в офисе - удаляет одну; и все +50 строк улетают в бездну, так сервер видите ли WINS.

разумеется, будет в итоге синхронизация на уровне строк.

Меня упертость отдельных лиц восхищает, которые согласны на сервер посылать ВСЕ строки в принципе, ради одной удаленной или добавленной.
59 kod263
 
16.10.11
17:10
(50) а что мешает делать одну реализацию по нескольким заказам контрагента ?
60 Phace
 
16.10.11
19:57
UID строке не нужен (с) не мое, но это правда :)
61 s410
 
16.10.11
22:47
а в дереве значений есть
62 hhhh
 
16.10.11
23:14
(58) ну, эта ситуация встречается в одном случае из 50 миллионов. Нафига 1С- отдельно обрабатывать такую странную ситуацию, если в 99,9% случаев никто никаких строчек не удаляет и порядок строк не меняет? Да еще и офигенные идентификаторы строк, которые в несколько раз затормозят систему? Ты думаешь на самом деле в 1С полные придурки сидят, чтобы такую фигню делать?
63 NcSteel
 
16.10.11
23:34
(0) Если говорить про форму 8.2 то ответ - есть , иначе нет .
64 iamnub
 
17.10.11
00:09
(62)
"ну, эта ситуация встречается в одном случае из 50 миллионов"

Дедушка, какая ситуация? Ты уверен, что правильно буквы понял?

"если в 99,9% случаев никто никаких строчек не удаляет и порядок строк не меняет?"

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

Подумать только, редактирование документа - странная ситуация.

"Ты думаешь на самом деле в 1С полные придурки сидят"
На заданный вопрос отвечаю - думаю, что придурки сидят в другом месте.
65 sanja26
 
17.10.11
00:37
Говорят "нет". получил ответ?
66 H A D G E H O G s
 
17.10.11
00:48
(64) Стена, ядъ.
67 H A D G E H O G s
 
17.10.11
00:54
(64)
<<Дедушка>> hhhh все правильно написал. Очень редко возникает ситуация, когда юзеры меняют состав строк в ТЧ. Поэтому заводить под ТЧ односвязный список (простейшая структура) - неоптимально.
68 iamnub
 
17.10.11
00:57
(67)
Удаление строки - это смена состава строк?
69 H A D G E H O G s
 
17.10.11
00:59
(68) Да.
70 H A D G E H O G s
 
17.10.11
01:00
(68) Рекомендую тебе как - нибудь побывать на большом оптовом складе, где торгуют ну хоть бы водкой и посмотреть процесс выписки документов :-)
71 iamnub
 
17.10.11
01:01
Очень редко возникает ситуация, когда юзеры меняют состав строк в ТЧ.

Удаление строки - это смена состава строк?

Да.

Очень редко возникает ситуация, когда юзеры удаляют строку.

Мда... Чоткие у вас юзеры, чо.
77 Мимохожий Однако
 
17.10.11
06:53
(71)Что ты хотел доказать \ показать \ узнать своей веткой?
78 Andy13
 
17.10.11
08:28
(71) Решение задачи в лоб. Не лучшее в данном случае решение...
А если так:
1. Торговые представители оформляют заявки от покупателя.
2. На складе, в логистике, выписавают на основаниии заявок один документ отгрузки. который отправляетс заказчику.

Это типовой метод, как ни странно.
79 vde69
 
17.10.11
08:43
вообще самое логичное решение конкретной задачи:

1. менеджеры создают N предворителельных документов
2. ответсвенный за выдачу генерит на основании одну накладную
3. при необходимости изменения данных менеджерами они создают сторнирующие документы

при таком подходе и накладная будет одна и данные при обмене не потеряются и будет история об каждой сторнировке.
80 orefkov
 
17.10.11
08:56
(56)
Ты почему-то путаешь совершенно разные понятия - PK и uid.
81 iamnub
 
17.10.11
09:16
(80)
В данном случае - не вижу смысла их разделять.
82 iamnub
 
17.10.11
09:24
(79)
1. и 2. Звучат здраво. Так и было когда-то - решили уйти.
3. же - редактирование путем сторнировок в оперативном режиме - чревато геммороем.

Ты городишь костыли вокруг очевидного факта. Если ЕСТЬ документ ( как его не назови) то его рано или поздно кто то захочет изменить. Рано или поздно его захотят изменить двое людей.   И разрешать коллизии на уровне строк - абсолютно нормальный подход для любой вменяемой системы. Не нравится - откажись. Но присутствовать то это должно.
83 iamnub
 
17.10.11
09:26
У 1С ноги растут из "одна база на одно рабочее место". Кто то будет с этим спорить?

Если подавляющему большинству нормальная распределенка вообще не впилась (они себе вообще её слабо представляют), то это не значит, что её вообще не должно быть.
84 orefkov
 
17.10.11
09:27
(81)
Ну, когда что-то путаешь, действительно часто не видишь смысла разделять.
85 orefkov
 
17.10.11
09:33
(82)
Это ты пытаешься приделать кривошипошатунный механизм к очевидному факту - в рамках 1С сущность "документ" - это единая, неделимая сущность с наборами строк, которые не нуждаются в одновременном редактировании несколькими пользователями. Если такая необходимость возникла - значит, это не документ. Откажись от его использования в данном случае.
86 ptiz
 
17.10.11
09:36
Кстати, для объекта - строки таб.части 1С хранит идентификатор строки.
Например, такой код даст ошибку:
   СтрокаТЧ1 = ТабличнаяЧасть1.Добавить();
   СтрокаТЧ2 = ТабличнаяЧасть1.Добавить();
   
   ТабличнаяЧасть1.Удалить(0);
   
   СтрокаТЧ1.Реквизит1 = 1;
   
Выполнение операции невозможно, так как строка была удалена.

Хотя строка с номером 1 существует.
87 Phace
 
17.10.11
09:40
(83) // Если подавляющему большинству нормальная распределенка вообще не впилась (они себе вообще её слабо представляют)

ГУРУ снизашел с небес и решил нам всем показать как должна работать НАСТОЯЩАЯ распределенка :) Не уходи только из ветки - пише еще! Есть хоть над чем поржать в понедельник.
88 iamnub
 
17.10.11
10:05
(87)
Конкретно до тебя снисходить - дохлая затея.
89 Санта
 
17.10.11
10:07
Есть! Новый УникальныйИдентификатор
90 Alex375
 
17.10.11
11:13
(86) ту путаешь - уид строки тут совершенно ни при чем. Просто переменная СтрокаТЧ1 которая ссылалась на конкретную область памяти все так же и ссылается туда. Но в той области после выполнения Удалить(0) уже совсем не то что было раньше. Короче - это основны программирования.