Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Идентификатор строки табличной части

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

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

зачем?
   Cyberhawk
 
20 - 11.04.18 - 16:07
(19) Я хз, может там это макс. значение запросами насилуют во всей конфе )
   triviumfan
 
21 - 11.04.18 - 17:10
А вообще странно, чем им номер строки не катит, ведь он тоже уникален в пределах ТЧ. В типовых он используется как вспомогательный служебный реквизит в связи с особенностями управляемого приложения.
А у меня то выгрузка на сайт! Беру ссылку на документ - сериализую в JSON - выгружаю! Id PackageWork уникален! Что им надо?!
   triviumfan
 
22 - 11.04.18 - 17:11
(21) "в типовых...", - я про "код строки"
   triviumfan
 
23 - 11.04.18 - 17:12
Package {
DataType (string): Тип документа ("Заказ-наряд"),
Id (string): Номер документа,
Date (string): Дата документа в формате dd.MM.yyyyy,
...
Works (Array[PackageWork]),
...
}

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует