08.02.2016 18:33
Заходите ещё
10.02.2016 01:14
То, что закомментировано - было, то, что без комментариев - стало.
Код:
// НайдКонтр.ОсновнойДоговорКонтрагента = ОснДоговор.Ссылка; //Потом надо переделать через GUID
// НайдКонтр.Записать();
РаботаСДоговорамиКонтрагентовБП.УстановитьОсновнойДоговорКонтрагента(ОснДоговор.Ссылка);
Как видите, все элементарно, даже на одну строку меньше
Когда мы передаем ссылку на договор, то автоматически определяется его владелец(Контрагент), и ему присваевается этот договор как основной... При этом, основных может быть несколько - по каждому виду, который определяется в самом договоре...
10.02.2016 09:46
Это - установка основного договора, а перед этим говорили о получении уже установленного :)
Но всё равно - спасибо (я как-то в эту сторону и не смотрел).
10.02.2016 11:24
А... Понятно... Я не внимательно читал смысл проблемы... У себя в обработке, когда столкнулся с этим - некогда было сильно разбираться, я сделал так:
Код:
&НаСервере
Функция ПолучитьОсновнойДоговорКонтрагента(ТекКонтрагент)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ОсновныеДоговорыКонтрагента.Контрагент,
		|	ОсновныеДоговорыКонтрагента.Договор КАК ОсновнойДоговор
		|ИЗ
		|	РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговорыКонтрагента
		|ГДЕ
		|	ОсновныеДоговорыКонтрагента.Контрагент = &Контрагент";
	
	Запрос.УстановитьПараметр("Контрагент", ТекКонтрагент);

	РезультатЗапроса = Запрос.Выполнить();

	Выб = РезультатЗапроса.Выбрать();

	Пока Выб.Следующий() Цикл
		ТекДоговорКонтрагента = Выб.ОсновнойДоговор;
	КонецЦикла;
	Возврат ТекДоговорКонтрагента;
КонецФункции
Это, с точки зрения использования функций типовой конфигурации не совсем правильно(точнее - совсем не правильно), но работает, в тот момент, мне быстрее было так сделать, думал потом переделаю, когда разберусь, что там в типовой наворотили, но, так и потом не стал переписывать - работает и фиг с ним, договоры с контрагентами на тот момент были одного вида
Надо будет переделать, но, пока не жаловались... А просто так некогда, сейчас все время ЕГАИСом занято...
10.02.2016 11:42
Вся функция поиска/создания контрагента при загрузке проводок, может кому пригодится:
Код:
//Находит контрагента по ИНН, если не находит - создает нового, вместе с ОсновнымДоговором
&НаСервере
Функция НайтиИлиСоздатьКонтрагента(ИНН,Наим,КПП)
	Если ИНН = "БОНУС" Тогда
		НайдКонтр = Бонус;
		Возврат НайдКонтр;
	ИначеЕсли ИНН = "РОЗНИЦА" Тогда
		НайдКонтр = РознПродажа;
		Возврат НайдКонтр;
	ИначеЕсли СокрЛП(ИНН) = "" Тогда
		НайдКонтр = КонтрБезИНН;
		Возврат НайдКонтр;
	Иначе	
		НайдКонтр = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ИНН);
		Если НЕ НайдКонтр = Справочники.Контрагенты.ПустаяСсылка() Тогда
			Возврат НайдКонтр;
		Иначе
			НайдКонтр = Справочники.Контрагенты.СоздатьЭлемент();	
			НайдКонтр.Наименование = СокрЛП(Наим);
		                     НайдКонтр.НаименованиеПолное = СокрЛП(Наим);
			НайдКонтр.ИНН = ИНН;
			НайдКонтр.КПП = КПП;
			НайдКонтр.Родитель = ГруппаПоставщиков;
			Если СтрДлина(ИНН) = 10 Тогда
				НайдКонтр.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
			Иначе
			    НайдКонтр.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
			КонецЕсли;
			НайдКонтр.Записать();
			ОснДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
			ОснДоговор.Наименование = "ОсновнойДоговор";
			ОснДоговор.Организация = Организация;
			ОснДоговор.Владелец = НайдКонтр.Ссылка;
			ОснДоговор.Номер = "1";
			Осндоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
			ОснДоговор.Валютный = Ложь;
			ОснДоговор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643");
			ОснДоговор.Записать();
	//		НайдКонтр.ОсновнойДоговорКонтрагента = ОснДоговор.Ссылка; //Потом надо переделать через GUID
	//		НайдКонтр.Записать();
			РаботаСДоговорамиКонтрагентовБП.УстановитьОсновнойДоговорКонтрагента(ОснДоговор.Ссылка);
			Возврат НайдКонтр.Ссылка;
		КонецЕсли;
	КонецЕсли;	
КонецФункции
Но, тут надо понимать, что писалось это "под себя", никакой универсальности не предусматривалось, поэтому, учитывая, что это просто загрузка проводок из торговой конфигурации 7.7, которая чисто розница с продажами через ККМ, никакие другие договора, кроме договоров с поставщиком оттуда не переносятся - они просто там только такие, а "Покупатель" и его договор, это розничный покупатель, он как-бы предопределен заранее и просто выбран в диалоге обработки... Синхронизация контрагентов выполняется по ИНН...
Часовой пояс GMT +3, время: 16:50.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.