УТ 10.3-БП 3.0 Как связать базы?

1. pentanom 30 05.02.25 16:27 Сейчас в теме
Имеется базы УТ 10.3 (сильно переписанная) и БП 3.0 (типовая, на замке). Периодически (раз в месяц) нужно перекачивать документы "Реализация ..." из УТ в БП. В базе УТ появляются новые Контрагенты и Договора контрагентов. Изначально поиск контрагентов в БП 3.0 производился по ИНН и КПП, а договоров - по номеру и дате договора. Но оказалось, что КПП контрагента и номер и дата договора могу вдруг (!) измениться. Встал вопрос идентифицировать контрагентов и договора по внутреннему идентификатору, в качестве которого использовался бы, например, их ГУИД. Возник вопрос как в базе БП 3.0 запомнить ГУИД, переданный из УТ? У меня был варианты завести дополнительные реквизиты и писать их туда, но мне сказали, что можно сделать проще, а как не говорят (партизаны). Может кто-то здесь мне что-то подскажет?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 847 06.02.25 06:31 Сейчас в теме
(1)
Изначально поиск контрагентов в БП 3.0 производился по ИНН и КПП, а договоров - по номеру и дате договора.


1.А если это физик без ИНН?
2.А если это ИП - у них нет КПП
3.Наименование организации может измениться :) Так же как и КПП
4.Контактные данные могут измениться

и так далее далее далее
И если контрагентов и договора с ним создают как кому хочется то .. тут к телепатам , а не к партизанам
7. pentanom 30 06.02.25 10:22 Сейчас в теме
(2) Такое не рассматривается. Некоторая информация бухгалтерии не нужна.
4. independ 1556 06.02.25 07:33 Сейчас в теме
(1) РегистрСведений.СоответствияОбъектовИнформационныхБаз
5. Torin 847 06.02.25 07:43 Сейчас в теме
(4) Что бы оно стало соответствием :) Его дня начала нужно определить :)

Пример :
в УТ10 Создали контрагента Иванов Иван Иванович ИНН нет КПП нет создали Договор №12 от 01.01.2025 и сделали РТУ

обмена нету

в БП3 бух приходует денежные средства и создает контрагента Иванов Иван ИНН нет КПП нет , по договору 12 от 1 января 2025 года

Формально это один и тот же контрагент

Грузим РТУ в БП :) - ну и как их сопоставит Автоматом? :) Никак :)

P/S Итога: - Хаос автоматизировать нельзя.
9. pentanom 30 06.02.25 10:34 Сейчас в теме
(5) Вы все усложняете. У сотрудников, которые ведет учет в УТ тоже обязанности есть. Они должны следить за те, чтобы вовремя передать вводимую и справленную информацию в БП. В данном случае если создали нового контрагента, то специальной обработкой данные должны передаться в БП перед загрузкой денежных документов.
8. pentanom 30 06.02.25 10:25 Сейчас в теме
(4)
(1) РегистрСведений.СоответствияОбъектовИнформационныхБаз
Мне кажется, что запомнить в дополнительном реквизите проще - даже дописывать ничего не надо. .
3. user2107191 06.02.25 07:22 Сейчас в теме
Зачем что-то запоминать, если можно сразу его присваивать?
Ну теперь уже поздно... Теперь только синхррнизирующим допреквизитом.
10. pentanom 30 06.02.25 10:36 Сейчас в теме
(3)
Зачем что-то запоминать, если можно сразу его присваивать?
Вот! Так и говорилось, но я не понял как:(
6. starjevschik 06.02.25 07:53 Сейчас в теме
я в сходном случае делал допреквизит - код из УТ. Но можно и Гуид. Вдруг у вас и коды "внезапно меняются"
11. pentanom 30 06.02.25 10:39 Сейчас в теме
(6)
я в сходном случае делал допреквизит - код из УТ. Но можно и Гуид. Вдруг у вас и коды "внезапно меняются"
В БП 3.0 есть возможность создавать допреквизиты. Я этим и пользуюсь.
А "внезапно меняются" не у меня, а в базе, которую я получил. И что еще будет "внезапно меняться" я не знаю - время покажет:)
12. pentanom 30 06.02.25 10:51 Сейчас в теме
Из в всех комментариев делаю предварительный вывод, что для того, чтобы связать элементы справочников в базах, нужно в приемнике создать место, где сохранять некий реквизит источника, по которому идентифицировать элементы.
starjevschik; +1 Ответить
25. Xershi 1534 06.02.25 21:16 Сейчас в теме
(12) в типовых так и делается только не через ж... с доп реквизитом. А как написали в (4). Т.к. доп реквизит сам по себе не нужен.А этот регистр и содержит все нужные данные. Но не умение использовать типовой функционал порождает бурную фантазию, если костыли в моде и работают зачем что-то еще делать. Так что решать вам!
lefthander; +1 Ответить
26. pentanom 30 07.02.25 10:44 Сейчас в теме
(25)
в типовых так и делается только не через ж... с доп реквизитом. А как написали в (4).
А чем в данном случае отличается использование "Дополнительных реквизитов" от "РегистрСведений.СоответствияОбъектовИнформационныхБаз". Они оба - типовой функционал. Вероятно, вы думали, что я что-то дописывал в конфигурацию? Так нет. В конфигурацию УТ я вообще не лезу, а БУ на замке и даже не используются расширения. К тому же "Дополнительные реквизиты" нагляднее.
Прикрепленные файлы:
27. Xershi 1534 07.02.25 12:00 Сейчас в теме
(26) тем что регистр сделан специально для сопоставления, то что вам нужно. А доп реквизит для хранения информации. Но как уже писал можно и так работать, только это сложнее.
lefthander; +1 Ответить
29. pentanom 30 07.02.25 12:50 Сейчас в теме
(27)
Но как уже писал можно и так работать, только это сложнее.
Ну это на вкус и на цвет.
28. user2107191 07.02.25 12:20 Сейчас в теме
(26) Когда тебе говорят про синхронизирующий допреквизит - то вряд ли кто-то имеет ввиду именно функционал БСП.
30. pentanom 30 07.02.25 13:01 Сейчас в теме
(28)
(26) Когда тебе говорят про синхронизирующий допреквизит - то вряд ли кто-то имеет ввиду именно функционал БСП.
Зачем все усложнять? Про синхронизацию я ничего не писал.
Тут кто-то написал: "Зачем что-то запоминать, если можно сразу его присваивать?", но так и не ответил что чему присваивать.
31. user2107191 07.02.25 13:58 Сейчас в теме
(30)
но так и не ответил что чему присваивать.
Для недогадливых поясню: присваивать нужный GUID из УТ при создании нового элемента в БП.
Це ж классика синхронизации при обменах.
32. pentanom 30 07.02.25 14:18 Сейчас в теме
(31)
Це ж классика синхронизации при обменах.
А, вы про синхронизацию? Но здесь задача проще.
13. pentanom 30 06.02.25 13:09 Сейчас в теме
Теперь задача в другую сторону. У контрагента в БП записался ГУИД, полученный из УТ. Теперь в другой обработке нужно сделать запрос с условием по этому ГУИД. Написал так:
		УсловиеЗапроса = "
		|	И ПРЕДСТАВЛЕНИЕ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(РеализацияТоваровУслугУслуги.Ссылка.Контрагент.Ссылка))  = &ГУИДКонтрагента ";
но это не прокатывает:(
Запрос делается из БП:
	ДанныеКонтрагента=ПолучитьДанныеКонтрагента(Контрагент);
	Если ЗначениеЗаполнено(ДанныеКонтрагента.ГУИДконтрагента) Тогда
		УсловиеЗапроса = "
		|	И ПРЕДСТАВЛЕНИЕ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(РеализацияТоваровУслугУслуги.Ссылка.Контрагент.Ссылка))  = &ГУИДКонтрагента ";
	Иначе
		УсловиеЗапроса = "
		|	И РеализацияТоваровУслугУслуги.Ссылка.Контрагент.ИНН=&ИНН	
		|	И РеализацияТоваровУслугУслуги.Ссылка.Контрагент.КПП=&КПП";	
	КонецЕсли;
	
	ЗапросБД = СоединениеБД.NewObject("Запрос");
//	ЗапросБД = Новый Запрос;
	ЗапросБД.Текст ="ВЫБРАТЬ
	|	РеализацияТоваровУслугУслуги.Ссылка КАК Ссылка,
       |	ПРЕДСТАВЛЕНИЕ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(РеализацияТоваровУслугУслуги.Ссылка.Контрагент.Ссылка)) КАК ГУИДКонтрагента,
	   |	ПРЕДСТАВЛЕНИЕ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(РеализацияТоваровУслугУслуги.Ссылка.ДоговорКонтрагента.Ссылка)) КАК ГУИДДоговора,
	|	РеализацияТоваровУслугУслуги.НомерСтроки КАК НомерСтроки,
	|	РеализацияТоваровУслугУслуги.Номенклатура КАК Номенклатура,
	|	РеализацияТоваровУслугУслуги.Количество КАК Количество,
	|	РеализацияТоваровУслугУслуги.Содержание КАК Содержание,
	|	РеализацияТоваровУслугУслуги.Цена КАК Цена,
	|	РеализацияТоваровУслугУслуги.СуммаНДС КАК СуммаНДС,
	|	РеализацияТоваровУслугУслуги.СтавкаНДС КАК СтавкаНДС,
	|	РеализацияТоваровУслугУслуги.Сумма КАК Сумма
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
	|ГДЕ
	|	РеализацияТоваровУслугУслуги.Ссылка.СуммаДокумента <> 0
	|	И РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода	
	|	И РеализацияТоваровУслугУслуги.Ссылка.ОтражатьВБухгалтерскомУчете	
	|	И РеализацияТоваровУслугУслуги.Ссылка.Проведен	
	|	И РеализацияТоваровУслугУслуги.Ссылка.Организация.ИНН = &ОрганизацияИНН	
	|	И РеализацияТоваровУслугУслуги.Ссылка.Организация.КПП = &ОрганизацияКПП ";
	ЗапросБД.Текст = ЗапросБД.Текст + УсловиеЗапроса;
	
					//|	И РеализацияТоваровУслугУслуги.Ссылка.Контрагент.ИНН=&ИНН	
					//|	И РеализацияТоваровУслугУслуги.Ссылка.Контрагент.КПП=&КПП	
	ЗапросБД.Текст = ЗапросБД.Текст +" 
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка";
	
	ЗапросБД.УстановитьПараметр("НачПериода",НачалоДня(НачДата));
	ЗапросБД.УстановитьПараметр("КонПериода",КонецДня(КонДата));
	ЗапросБД.УстановитьПараметр("ОрганизацияИНН",ОрганизацияИНН);
	ЗапросБД.УстановитьПараметр("ОрганизацияКПП",ОрганизацияКПП);
	ЗапросБД.УстановитьПараметр("ИНН",ДанныеКонтрагента.ИНН);
	ЗапросБД.УстановитьПараметр("КПП",ДанныеКонтрагента.КПП);
	ЗапросБД.УстановитьПараметр("ГУИДконтрагента",ДанныеКонтрагента.ГУИДконтрагента);

Показать
14. RustamZz 06.02.25 13:16 Сейчас в теме
(13) Надо уникальные идентификаторы сравнивать.
15. pentanom 30 06.02.25 13:26 Сейчас в теме
(14)
(13) Надо уникальные идентификаторы сравнивать.
Но запрос-то идет через COM. И параметр &ГУИДКонтрагента - это строка.
16. user2107191 06.02.25 13:44 Сейчас в теме
(15)
И параметр &ГУИДКонтрагента - это строка.
сделай не строку
17. pentanom 30 06.02.25 13:52 Сейчас в теме
(16)
сделай не строку
Как? Потом-то эта "не строка" должна быть передана в запрос.
18. user2107191 06.02.25 13:54 Сейчас в теме
19. pentanom 30 06.02.25 14:02 Сейчас в теме
(18) Вопрос не понял :(
Во что переделать ее?
20. RustamZz 06.02.25 15:10 Сейчас в теме
(17) Ваше представление и представление от 1С уникального идентификатора не совпадают.
21. pentanom 30 06.02.25 15:14 Сейчас в теме
(20)
(17) Ваше представление и представление от 1С уникального идентификатора не совпадают.
И что делать? Как сделать такое, чтобы 1С понял предлагаемый ГУИД в строкой форме?
22. RustamZz 06.02.25 15:57 Сейчас в теме
(21) С переходом клиентов на линукс стали вместо com использовать веб-сервисы. Чего и вам желаем. Там преобразовывать в строку необходимости не будет.
23. pentanom 30 06.02.25 16:04 Сейчас в теме
(22)
(21) С переходом клиентов на линукс стали вместо com использовать веб-сервисы. Чего и вам желаем. Там преобразовывать в строку необходимости не будет.
Мне нужно решение в данной ситуации, а менять сейчас все нет возможности. Постараюсь как-то выкрутится.
24. pentanom 30 06.02.25 17:45 Сейчас в теме
Сделал некрасиво, но работает.
	Если ЗначениеЗаполнено(ДанныеКонтрагента.ГУИДконтрагента) Тогда
		Запрос_БД = СоединениеБД.NewObject("Запрос");
//		Запрос_БД = Новый Запрос;
		Запрос_БД.Текст ="ВЫБРАТЬ
	                 |	ПРЕДСТАВЛЕНИЕ(УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Контрагенты.Ссылка)) КАК ГУИДКонтрагента,
	                 |	Контрагенты.ИНН КАК ИНН,
	                 |	Контрагенты.КПП КАК КПП
	                 |ИЗ
	                 |	Справочник.Контрагенты КАК Контрагенты";
		ТЗ = Запрос_БД.Выполнить().Выгрузить();
		Для Каждого Стр Из ТЗ Цикл
			Если Стр.ГуИДконтрагента = ДанныеКонтрагента.ГУИДконтрагента Тогда
				ДляПоискаИНН = Стр.ИНН;
				ДляПоискаКПП = Стр.КПП;
				Прервать;
			КонецЕсли;
		КонецЦикла;
	Иначе
		ДляПоискаИНН = ДанныеКонтрагента.ИНН;
		ДляПоискаКПП = ДанныеКонтрагента.КПП;
	КонецЕсли;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот