|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Привет всем! Ребятки помогите 1С побороть. Нужно выгрузить строки с платежами из табличной части документа ОплатыПоЛС.Оплаты в таблицу Oracle. Базу проектировали рукожопы и не грузили уникальный код платежа в принципе. Теперь когда я выгружаю, мне в оракловую таблицу в первичный ключ платежа нечего засовывать. Почитал про GUID в 1С. Прикрутил его в запросе, а он не уникальный ни разу. Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle? И лучше что бы это значение не могло меняться в БД на протяжении всей жизни записи. Как вариант, могу завести новый реквизит у табличной части и пронумеровать его сквозной нумерацией, но опять не нашел никакого механизма позволяющего это сделать сейчас и делать в последующем(эта выгрузка будет делаться периодически), типа секвенций в Oracle. Гуру 1С, подскажите пожалуйста как разрулить эту ситуёвину полайтовее. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 17:08 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
shadow432, GUID уникальный в таблице документов; в табличной части документа уникальным является номер строки, в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 17:24 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Хитроглазыйshadow432, GUID уникальный в таблице документов; в табличной части документа уникальным является номер строки, в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки Пытался в запросе обратиться к этому полю, но у меня ошибку выдало. Может не в этом дело было. Как правильно в запросе к этому полю обратиться? Как и ко всем остальным? Я так понимаю оно скрыто типа поля Ссылка? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:02 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
shadow432Ребятки помогите 1С побороть. это уже проигрышная позиция shadow432Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle? для табличной части нету такого. начинают выходить из этого изобретая доп. реквизит куда пишут Новый УникальныйИдентификатор()) Хитроглазыйв табличной части документа уникальным является номер строки, в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки пересортировал юзер строки ничего не меняя по сути, записал - и привет прощай ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:10 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкноshadow432Ребятки помогите 1С побороть. это уже проигрышная позиция shadow432Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle? для табличной части нету такого. начинают выходить из этого изобретая доп. реквизит куда пишут Новый УникальныйИдентификатор()) Хитроглазыйв табличной части документа уникальным является номер строки, в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки пересортировал юзер строки ничего не меняя по сути, записал - и привет прощай Только хотел спросить по поводу "Уникальности" этих номеров, как вы ответили. Значит реквизит типа УникальныйИдентификатор это самый реальный вариант решения? А как мне все платежи в цикле перелопатить теперь чтобы заполнить этот реквизит? Готового решения нет под рукой? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:16 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Создал я значит реквизит ПэйИд типа УникальныйИдентификатор. Он автоматом заполняться будет при записи или обработку писАть надо в рукопашную? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:25 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
для существующих позиций надо обработку накорябать чтобы пройти и заполнить для новых - кастомизовать документ... ибо придется отслеживать два отдельных события - добавление строки интерактивно в гуе и при программном добавлении. или для простоты забить и просто проходить по таб. части при записи "объекта" документа - пустой реквизит - значит считаем что строка новая, заполняем его ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:38 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
можно подписку на событие сделать, чтобы в документ не лезть лучше, когда "кастомизации" внутрь объектов не встраиваются (если возможно), а лежат "снаружи" в отдельных объектах - будет обновляться проще ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 18:40 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкно, большое спасибо. 1с ник из меня тот еще, но буду гуглить. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 20:14 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкноможно подписку на событие сделать, чтобы в документ не лезть лучше, когда "кастомизации" внутрь объектов не встраиваются (если возможно), а лежат "снаружи" в отдельных объектах - будет обновляться проще Подписка на событие, это по сути дела trigger? Вот только в моей 1С базе в дереве объектов нет такого объекта. Подскажи пожалуйста как его туда добавить? Есть объект "Обработки", это не оно? 1с:Предприятие 8.3 Конфигурация УНФ 1.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 08:37 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
в конфигураторе ищите. "общие" - "подписки на событие" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 10:23 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкнов конфигураторе ищите. "общие" - "подписки на событие" Слона то я и не заметил. Спасибо тебе огромное! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 13:38 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкнопересортировал юзер строки ничего не меняя по сути, записал - и привет прощай и в чем проблема? чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2019, 16:12 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
>и в чем проблема? выше уже вроде все написано - тем что Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ >чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым? тем что строки как "уникальные сущности" остаются по сути "на месте" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2019, 17:43 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
МодальноеОкно>Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ >чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым? тем что строки как "уникальные сущности" остаются по сути "на месте" странные у вас понятия об уникальности; ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2019, 18:20 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
ХитроглазыйМодальноеОкно>Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ >чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым? тем что строки как "уникальные сущности" остаются по сути "на месте" странные у вас понятия об уникальности; странные у вас предложения - совать в качестве FK для интегрирования Ссылка(GUID)+НомерСтроки ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2019, 18:38 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Насколько помню в стандартной конфигурации - просто гуид записывается в каждой строке для каждой строчке (если там не заполнен гуид). Да строчка которую удалили и ввели заново идентичную, будет считаться разной. Зато простой способ не нагружающий систему. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2019, 13:50 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Программист 1сНасколько помню в стандартной конфигурации - просто гуид записывается в каждой строке для каждой строчке (если там не заполнен гуид). Да строчка которую удалили и ввели заново идентичную, будет считаться разной. Зато простой способ не нагружающий систему. Так и сделал. Если строчку удалили и ввели заново, то это совсем другая строчка и PK, разумеется у нее должен быть другой. Именно так это работает и в ORACLE. Всех благодарю за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 16:21 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Видно сам не допилю как надо. Помогите еще ребята. Сделал я процедуру обработки. Поместил ее в общий модуль. Создал Подписку на событие и ПередЗаписью Документа запускаю Обработчик(свою процедуру). Но чую что я столько "костылей" навалял... Передаю я в процедуру Источник, т.е. у меня есть ссылка на изменяемый документ, но лопачу я весь Объект пока не найду нужный мне документ и только после этого начинаю работать с Табличной частью. Оно работает, но долго. Думаю что эти сопли можно нормально переписать. Как сделать чтобы поиск шёл сразу в табличной части нужного мне документа? Можно ли сделать что бы я ПолучалОбъект только с нужным мне документом. Извините за нелепые вопросы, но я как котенок слепой. Не пойму как проапдейтить это поле чтобы красиво было. Наверняка работы на 5 минут. #Область ПрограммныйИнтерфейс &НаСервере Процедура insUNIQpayНаСервере(Источник, Отказ) Экспорт //Если НЕ Источник.ЭтоНовый() Тогда // Возврат; //КонецЕсли; ФлагЗ = 0; Запрос = Новый Запрос; Запрос.Текст = "SELECT * |FROM | Документ.ргОплатаПоЛицевымСчетам.Оплаты AS ОЛС |WHERE | ОЛС.Ссылка = &СсылкаДокумента"; Запрос.УстановитьПараметр("СсылкаДокумента", Источник.Ссылка); Результат = Запрос.Выполнить(); ВыгрузкаРезультат = Результат.Выгрузить(); Для каждого Запись из ВыгрузкаРезультат Цикл Если Не ЗначениеЗаполнено(Запись.УникальныйНомер) Тогда ФлагЗ = 1; КонецЕсли; КонецЦикла; Если ФлагЗ = 1 Тогда ВыборкаДокОплата = Документы.ргОплатаПоЛицевымСчетам.Выбрать(); Пока ВыборкаДокОплата.Следующий() Цикл ДокОбъект = ВыборкаДокОплата.ПолучитьОбъект(); Если СтрНайти(ДокОбъект.Ссылка, Запись.Ссылка) > 0 Тогда Для каждого Стр Из ДокОбъект.Оплаты Цикл Если Не ЗначениеЗаполнено(Стр.УникальныйНомер) Тогда УИД = Новый УникальныйИдентификатор(); Стр.УникальныйНомер = УИД; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ДокОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецПроцедуры #КонецОбласти ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 18:05 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Для каждого Стр Из Источник.Оплаты Цикл Если Не ЗначениеЗаполнено(Стр.УникальныйНомер) Тогда УИД = Новый УникальныйИдентификатор(); Стр.УникальныйНомер = УИД; КонецЕсли; КонецЦикла; И больше ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 19:34 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Программист 1сДля каждого Стр Из Источник.Оплаты Цикл Если Не ЗначениеЗаполнено(Стр.УникальныйНомер) Тогда УИД = Новый УникальныйИдентификатор(); Стр.УникальныйНомер = УИД; КонецЕсли; КонецЦикла; И больше ничего. Я так понимаю что запись сделанного изменения произойдет дальше в коде автоматически? Завтра попробую. Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 21:37 |
|
Уникальность строки документа
|
|||
---|---|---|---|
#18+
Программист 1сДля каждого Стр Из Источник.Оплаты Цикл Если Не ЗначениеЗаполнено(Стр.УникальныйНомер) Тогда УИД = Новый УникальныйИдентификатор(); Стр.УникальныйНомер = УИД; КонецЕсли; КонецЦикла; И больше ничего. Программист 1с, как обычно самый простой код, является самым красивым и отказоустойчивым, в отличии от кастылей. Ваш код работает как часы. Большое спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2019, 08:19 |
|
|
start [/forum/topic.php?fid=28&msg=39834004&tid=1518253]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 508ms |
0 / 0 |