Имя: Пароль:
1C
1С v8
Идентификатор строки табличной части
,
0 triviumfan
 
11.04.18
15:28
Доброго дня.

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

PackageWork {
DataType (string): тип данных ("Работы заказ-наряда"),
Id (string): Код,
Type (PackageWorkType),
StandardTime (integer): время выполнения,
Price (integer): Цена,
Quantity (integer): Количество,
DiscountPercent (integer): Процент скидки,
Sum (integer): Сумма
}

где PackageWorkType:

PackageWorkType {
DataType (string): тип данных ("Автоработы"),
Id (string): Код,
Name (string): Наименование,
StandardTime (integer): норма времени выполнения,
Code (string): код по каталогу
}


Так вот 100 раз спросил у разработчиков, что мне передавать в качестве id в PackageWork, так они 100 раз ответили "идентификатор строки табличной части". Я уточняю, может номер строки/индекс? Нет, им нужен идентификатор!
Подскажите, что они от меня хотят? У сего объекта (строкатабличнойчасти) нет никаких идентификаторов!

PS: У меня лишь одна мысль - добавить реквизит ТЧ с типом "УникальныйИдентификатор".
1 Cyberhawk
 
11.04.18
15:30
Правильно, в 1С у строк ТЧ никаких идентификаторов нет - их можно перемещать туда-сюда, номер строки благополучно будет меняться
2 Cyberhawk
 
11.04.18
15:31
Но идентификатором может являться прикладной столбик этой ТЧ, если обеспечивается его уникальность и неизменность
3 Cool_Profi
 
11.04.18
15:31
Мне такая ситуация тоже попалась - добавил в документ гуид.
4 triviumfan
 
11.04.18
15:34
(2) (3) Блин.. так не хотелось добавлять ещё один реквизит ТЧ, у меня итак их целый вагон... ясно, спасибо :(
Заполнять программно при добавление строки?
5 H A D G E H O G s
 
11.04.18
15:38
(4) Посмотреть как в типовых заполняется у заказаклиента.
6 Cool_Profi
 
11.04.18
15:40
(4) Я заполняю приЗаписи, мне этого достаточно
7 H A D G E H O G s
 
11.04.18
15:43
(6) недостаточно
8 H A D G E H O G s
 
11.04.18
15:44
если это инкрементные идентификаторы. Если uid - норм
9 mikilula
 
11.04.18
15:45
Спасибо за нужную информацию!
10 Cool_Profi
 
11.04.18
15:45
(7) Ещё раз - _мне_ достаточно. Призаписи разумеется, в модуле объекта, а не формы.
11 Cyberhawk
 
11.04.18
15:46
(8) Чего-то инкрементным недостаточно "ПриЗаписи"?
12 H A D G E H O G s
 
11.04.18
15:47
(11) Пользователь удалил строку с максимальным идентификатором
13 Cool_Profi
 
11.04.18
15:49
(12) У меня, к сожалению, гуид.
А даже, если удалид в случае целой - будет дырка, никто не умрёт
14 Cyberhawk
 
11.04.18
15:49
(12) А как в типовых разруливают, где-то хранят максимальное значение / счетчик или отлавливают удаление строки из ТЧ (включая программное)?
15 H A D G E H O G s
 
11.04.18
15:51
(14)  хранят максимальное значение

в шапке дока
16 Сияющий в темноте
 
11.04.18
15:53
Если вместо строки табличной части использовать элемент справочника,то проблема решается очень просто,элемент заказ и подчиненные ему элементы с данными
17 Cyberhawk
 
11.04.18
15:54
И правда, глянул в метаданные УТ 11.3: у заказа клиента есть реквизит "МаксимальныйКодСтроки" с пояснением "Служебный реквизит для хранения максимального кода строки". Однако...
А чо он не индексируется?
18 Cyberhawk
 
11.04.18
15:54
(16) Элемент справочника пользователь берет и меняет на другой элемент справочника. Строка та же или новая?
19 H A D G E H O G s
 
11.04.18
16:00
(17) А чо он не индексируется?

зачем?
20 Cyberhawk
 
11.04.18
16:07
(19) Я хз, может там это макс. значение запросами насилуют во всей конфе )
21 triviumfan
 
11.04.18
17:10
А вообще странно, чем им номер строки не катит, ведь он тоже уникален в пределах ТЧ. В типовых он используется как вспомогательный служебный реквизит в связи с особенностями управляемого приложения.
А у меня то выгрузка на сайт! Беру ссылку на документ - сериализую в JSON - выгружаю! Id PackageWork уникален! Что им надо?!
22 triviumfan
 
11.04.18
17:11
(21) "в типовых...", - я про "код строки"
23 triviumfan
 
11.04.18
17:12

Package {
DataType (string): Тип документа ("Заказ-наряд"),
Id (string): Номер документа,
Date (string): Дата документа в формате dd.MM.yyyyy,
...
Works (Array[PackageWork]),
...
}

где PackageWork из шапки
24 Buster007
 
11.04.18
17:15
(22) удалил и добавил новую строку. Номер строки одинаковые, а строки уже разные
25 triviumfan
 
11.04.18
17:28
(24) И? Сайт посчитает, что это та же строка и перезаполнит объект.
26 mr_K
 
11.04.18
17:28
Я так понимаю, если не нужна обратная синхронизация (выгрузка только туда и один документ выгружается 1 раз), то передай туда произвольный гуид, не сохраняя его в базе.
27 triviumfan
 
11.04.18
17:41
(26) Да я думаю этого тоже будет достаточно, правда чем все-таки номер строки не фонтан?)
28 Buster007
 
11.04.18
17:41
(25) если у тебя все строки сразу синхронизируются, нафига тогда нужен УИД?
Если нет, то поменяй местами строки, и у тебя будет полная ерунда
29 lodger
 
11.04.18
17:43
(27) отсортируют, перетасуют - номер изменится. они хотят ключ уникальности.
30 triviumfan
 
11.04.18
17:43
(28) Я хз как они парсят всю мою фигню, что я передал. Общий язык найти не можем. Накой им УИД - не понятно =\
31 Cyberhawk
 
11.04.18
17:44
(30) Ну передавай им номер строки. Все равно вся ТЧ каждый раз полностью передается
32 Serg_1960
 
11.04.18
20:46
Номер строки можно считать валидным в период между изменениями объекта. Ваш кэп.

В старых конфигурациях использовались реквизиты строки КлючСтроки и КлючСвязи. Смысл, надеюсь, понятен? А если нет - гуглите на форуме.
33 Serg_1960
 
11.04.18
20:54
(30) "100 раз спросил у разработчиков..." - лучше один раз спроси "Уникальность идентификатора строки нужна в пределах документа или в базе в целом?". Если по базе, то добавляй реквизит и заполняй его через Новый УникальныйИдентификатор()при создании строки.
34 Serg_1960
 
11.04.18
20:57
(31) Не исключено, что в базе-приёмнике нет документов как таковых, а только записи, например, как в бухгалтерских проводках. Тогда становиться понятным чего они автора мучают :)
35 Лефмихалыч
 
11.04.18
21:45
(0) номер строки передавать пробовал? Что происходит?

Там с той стороны могут сидеть какие-нить с писюнами вместо пальцев, которые не знают, что такое объектные и необъектные данные. Договориться с такими не получится. ТОлько генерить им фэйковый какой-нить ИД
36 Cyberhawk
 
11.04.18
21:54
(33) "Если по базе, то добавляй реквизит и заполняй его через Новый УникальныйИдентификатор" // Склеить УИД ссылки + номер строки ТЧ кажется что вполне подойдет :) Ну, мы ж не знаем, нахера им он, что они будут с ним делать, будет ли обратная передача и все такое.
(34) Скорее всего так и есть. Но требование получать эти ИД из источника кажутся странными, если обратная передача не предполагается, а прямая передача всегда всей ТЧ целиком.
37 Лефмихалыч
 
11.04.18
22:13
(36) там может быть на стороне той БД констрэйинт, который требует уникальности записей в каких-нибудь пределах.
Это надо у приимающей стороны просто взять и спросить, что будет, если в разных пакетах ИД строк будут одинаковые. Если ответ "ничего", то и передавать что угодно. Если "второй пакет мы не примем", тогда надо выдумывать ИДшники
38 triviumfan
 
11.04.18
23:05
Спасибо за комментарии, продолжу мучать разрабов сайта
39 Cyberhawk
 
11.04.18
23:06
(37) А "с писюнами вместо пальцев" это как? ))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший