powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Уникальность строки документа
22 сообщений из 22, страница 1 из 1
Уникальность строки документа
    #39833967
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Ребятки помогите 1С побороть.
Нужно выгрузить строки с платежами из табличной части документа ОплатыПоЛС.Оплаты в таблицу Oracle.
Базу проектировали рукожопы и не грузили уникальный код платежа в принципе. Теперь когда я выгружаю, мне в оракловую таблицу в первичный ключ платежа нечего засовывать. Почитал про GUID в 1С. Прикрутил его в запросе, а он не уникальный ни разу. Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle? И лучше что бы это значение не могло меняться в БД на протяжении всей жизни записи.
Как вариант, могу завести новый реквизит у табличной части и пронумеровать его сквозной нумерацией, но опять не нашел никакого механизма позволяющего это сделать сейчас и делать в последующем(эта выгрузка будет делаться периодически), типа секвенций в Oracle.

Гуру 1С, подскажите пожалуйста как разрулить эту ситуёвину полайтовее.
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39833976
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadow432,

GUID уникальный в таблице документов;
в табличной части документа уникальным является номер строки,
в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39833992
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хитроглазыйshadow432,

GUID уникальный в таблице документов;
в табличной части документа уникальным является номер строки,
в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки

Пытался в запросе обратиться к этому полю, но у меня ошибку выдало. Может не в этом дело было. Как правильно в запросе к этому полю обратиться? Как и ко всем остальным? Я так понимаю оно скрыто типа поля Ссылка?
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39833995
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadow432Ребятки помогите 1С побороть.

это уже проигрышная позиция


shadow432Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle?

для табличной части нету такого. начинают выходить из этого изобретая доп. реквизит куда пишут Новый УникальныйИдентификатор())

Хитроглазыйв табличной части документа уникальным является номер строки,
в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки

пересортировал юзер строки ничего не меняя по сути, записал - и привет прощай
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39833999
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МодальноеОкноshadow432Ребятки помогите 1С побороть.

это уже проигрышная позиция


shadow432Есть ли в этом 1С какой нибудь механизм получить уникальное значение строки БД, типа ROWID в Oracle?

для табличной части нету такого. начинают выходить из этого изобретая доп. реквизит куда пишут Новый УникальныйИдентификатор())

Хитроглазыйв табличной части документа уникальным является номер строки,
в таблице "Документы.ОплатыПоЛС.Оплаты" уникальным будет пара Ссылка(GUID)+НомерСтроки

пересортировал юзер строки ничего не меняя по сути, записал - и привет прощай

Только хотел спросить по поводу "Уникальности" этих номеров, как вы ответили. Значит реквизит типа УникальныйИдентификатор это самый реальный вариант решения? А как мне все платежи в цикле перелопатить теперь чтобы заполнить этот реквизит? Готового решения нет под рукой?
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834004
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал я значит реквизит ПэйИд типа УникальныйИдентификатор. Он автоматом заполняться будет при записи или обработку писАть надо в рукопашную?
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834013
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для существующих позиций надо обработку накорябать чтобы пройти и заполнить

для новых - кастомизовать документ...

ибо придется отслеживать два отдельных события - добавление строки интерактивно в гуе и при программном добавлении.

или для простоты забить и просто проходить по таб. части при записи "объекта" документа - пустой реквизит - значит считаем что строка новая, заполняем его
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834017
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно подписку на событие сделать, чтобы в документ не лезть

лучше, когда "кастомизации" внутрь объектов не встраиваются (если возможно), а лежат "снаружи" в отдельных объектах - будет обновляться проще
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834057
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МодальноеОкно, большое спасибо. 1с ник из меня тот еще, но буду гуглить.
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834154
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МодальноеОкноможно подписку на событие сделать, чтобы в документ не лезть

лучше, когда "кастомизации" внутрь объектов не встраиваются (если возможно), а лежат "снаружи" в отдельных объектах - будет обновляться проще


Подписка на событие, это по сути дела trigger? Вот только в моей 1С базе в дереве объектов нет такого объекта. Подскажи пожалуйста как его туда добавить? Есть объект "Обработки", это не оно?

1с:Предприятие 8.3
Конфигурация УНФ 1.6
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834219
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в конфигураторе ищите. "общие" - "подписки на событие"
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39834360
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МодальноеОкнов конфигураторе ищите. "общие" - "подписки на событие"

Слона то я и не заметил. Спасибо тебе огромное!
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39835078
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МодальноеОкнопересортировал юзер строки ничего не меняя по сути, записал - и привет прощай

и в чем проблема?
чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым?
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39835118
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>и в чем проблема?

выше уже вроде все написано - тем что Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ

>чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым?

тем что строки как "уникальные сущности" остаются по сути "на месте"
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39835158
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МодальноеОкно>Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ

>чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым?

тем что строки как "уникальные сущности" остаются по сути "на месте"

странные у вас понятия об уникальности;
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39835165
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХитроглазыйМодальноеОкно>Ссылка(GUID)+НомерСтроки не является Primary Key (в полном смысле слова) для строки ТЧ

>чем это отличается от очистки пользователем ТЧ и заполнением заново тем же самым?

тем что строки как "уникальные сущности" остаются по сути "на месте"

странные у вас понятия об уникальности;

странные у вас предложения - совать в качестве FK для интегрирования Ссылка(GUID)+НомерСтроки
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39835461
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько помню в стандартной конфигурации - просто гуид записывается в каждой строке для каждой строчке (если там не заполнен гуид).

Да строчка которую удалили и ввели заново идентичную, будет считаться разной. Зато простой способ не нагружающий систему.
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39836019
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сНасколько помню в стандартной конфигурации - просто гуид записывается в каждой строке для каждой строчке (если там не заполнен гуид).

Да строчка которую удалили и ввели заново идентичную, будет считаться разной. Зато простой способ не нагружающий систему.

Так и сделал. Если строчку удалили и ввели заново, то это совсем другая строчка и PK, разумеется у нее должен быть другой. Именно так это работает и в ORACLE.
Всех благодарю за помощь!
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39838898
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видно сам не допилю как надо. Помогите еще ребята.
Сделал я процедуру обработки. Поместил ее в общий модуль.
Создал Подписку на событие и ПередЗаписью Документа запускаю Обработчик(свою процедуру).
Но чую что я столько "костылей" навалял... Передаю я в процедуру Источник, т.е. у меня есть ссылка на изменяемый документ, но лопачу я весь Объект пока не найду нужный мне документ и только после этого начинаю работать с Табличной частью. Оно работает, но долго. Думаю что эти сопли можно нормально переписать.
Как сделать чтобы поиск шёл сразу в табличной части нужного мне документа? Можно ли сделать что бы я ПолучалОбъект только с нужным мне документом.
Извините за нелепые вопросы, но я как котенок слепой. Не пойму как проапдейтить это поле чтобы красиво было. Наверняка работы на 5 минут.



#Область ПрограммныйИнтерфейс
&НаСервере


Процедура insUNIQpayНаСервере(Источник, Отказ) Экспорт

//Если НЕ Источник.ЭтоНовый() Тогда
// Возврат;
//КонецЕсли;
ФлагЗ = 0;
Запрос = Новый Запрос;
Запрос.Текст =
"SELECT *
|FROM
| Документ.ргОплатаПоЛицевымСчетам.Оплаты AS ОЛС
|WHERE
| ОЛС.Ссылка = &СсылкаДокумента";

Запрос.УстановитьПараметр("СсылкаДокумента", Источник.Ссылка);
Результат = Запрос.Выполнить();
ВыгрузкаРезультат = Результат.Выгрузить();

Для каждого Запись из ВыгрузкаРезультат Цикл
Если Не ЗначениеЗаполнено(Запись.УникальныйНомер) Тогда
ФлагЗ = 1;
КонецЕсли;
КонецЦикла;

Если ФлагЗ = 1 Тогда

ВыборкаДокОплата = Документы.ргОплатаПоЛицевымСчетам.Выбрать();
Пока ВыборкаДокОплата.Следующий() Цикл
ДокОбъект = ВыборкаДокОплата.ПолучитьОбъект();
Если СтрНайти(ДокОбъект.Ссылка, Запись.Ссылка) > 0 Тогда
Для каждого Стр Из ДокОбъект.Оплаты Цикл
Если Не ЗначениеЗаполнено(Стр.УникальныйНомер)
Тогда
УИД = Новый УникальныйИдентификатор();
Стр.УникальныйНомер = УИД;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;

ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;

КонецПроцедуры


#КонецОбласти
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39838930
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для каждого Стр Из Источник.Оплаты Цикл
Если Не ЗначениеЗаполнено(Стр.УникальныйНомер)
Тогда
УИД = Новый УникальныйИдентификатор();
Стр.УникальныйНомер = УИД;
КонецЕсли;
КонецЦикла;


И больше ничего.
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39838953
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сДля каждого Стр Из Источник.Оплаты Цикл
Если Не ЗначениеЗаполнено(Стр.УникальныйНомер)
Тогда
УИД = Новый УникальныйИдентификатор();
Стр.УникальныйНомер = УИД;
КонецЕсли;
КонецЦикла;


И больше ничего.


Я так понимаю что запись сделанного изменения произойдет дальше в коде автоматически? Завтра попробую. Спасибо за помощь.
...
Рейтинг: 0 / 0
Уникальность строки документа
    #39839032
shadow432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сДля каждого Стр Из Источник.Оплаты Цикл
Если Не ЗначениеЗаполнено(Стр.УникальныйНомер)
Тогда
УИД = Новый УникальныйИдентификатор();
Стр.УникальныйНомер = УИД;
КонецЕсли;
КонецЦикла;


И больше ничего.

Программист 1с, как обычно самый простой код, является самым красивым и отказоустойчивым, в отличии от кастылей. Ваш код работает как часы. Большое спасибо за помощь!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Уникальность строки документа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]