Публикации

БСП
Разработки

Найдено результатов: 5


Добавить договор

&НаСервере
Функция СоздатьОсновнойДоговор(Организация, Контрагент, ВидДоговора, СделатьОсновным=Ложь)
	
	НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
	НовыйДоговор.Организация = Организация;
	НовыйДоговор.Владелец = Контрагент;
	НовыйДоговор.ВидДоговора = ВидДоговора;
	НовыйДоговор.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
	НовыйДоговор.Наименование = ВидДоговора;
	
	Попытка
		НовыйДоговор.Записать();
	Исключение
		ТекстОшибки = СтрШаблон("Не удалось сохранить новый договор для контрагента %1 по виду договора %2 для организации %3", Контрагент, ВидДоговора, Организация);
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
		Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
	КонецПопытки;
	
	Если СделатьОсновным Тогда
		СтруктураПараметров = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(НовыйДоговор.Ссылка, "Организация, ВидДоговора, Владелец");
		НоваяЗапись = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
		НоваяЗапись.Организация = СтруктураПараметров.Организация;
		НоваяЗапись.Контрагент  = СтруктураПараметров.Владелец;
		НоваяЗапись.ВидДоговора = СтруктураПараметров.ВидДоговора;
		НоваяЗапись.Договор     = НовыйДоговор;
		
		Попытка
			НоваяЗапись.Записать(Истина);
		Исключение
			ТекстОшибки = СтрШаблон("Не удалось указать договор %1 основным для контрагента %2", НовыйДоговор, Контрагент);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
		КонецПопытки;
	КонецЕсли;
	
	Возврат НовыйДоговор.Ссылка;
КонецФункции

Найти основной договор

&НаСервере
Функция ПолучитьОсновнойДоговор(Организация, Контрагент, ВидДоговора)
	
	Рез = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ОсновныеДоговорыКонтрагента.Договор КАК Договор
		|ИЗ
		|	РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговорыКонтрагента
		|ГДЕ
		|	ОсновныеДоговорыКонтрагента.Организация = &Организация
		|	И ОсновныеДоговорыКонтрагента.Контрагент = &Контрагент
		|	И ОсновныеДоговорыКонтрагента.ВидДоговора = &ВидДоговора";
	
	Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
	Запрос.УстановитьПараметр("Контрагент", Контрагент);
	Запрос.УстановитьПараметр("Организация", Организация);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		Рез = ВыборкаДетальныеЗаписи.Договор;
	КонецЕсли;
	
	//если основной договор не отмечен, то поищем среди всех договоров и если по данному виду он один и непомеченный на удаление, то возьмем его
	
	Если Рез.Пустая() Тогда
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК Договор,
			|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДоговорыКонтрагентов.Ссылка) КАК КоличествоДоговоров
			|ИЗ
			|	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
			|ГДЕ
			|	ДоговорыКонтрагентов.Владелец = &Контрагент
			|	И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
			|	И ДоговорыКонтрагентов.Организация = &Организация
			|	И НЕ ДоговорыКонтрагентов.ПометкаУдаления";
		
		Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
		Запрос.УстановитьПараметр("Контрагент", Контрагент);
		Запрос.УстановитьПараметр("Организация", Организация);
		
		РезультатЗапроса = Запрос.Выполнить();
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Если ВыборкаДетальныеЗаписи.Следующий() Тогда
			Если ВыборкаДетальныеЗаписи.КоличествоДоговоров=1 Тогда
				Рез = ВыборкаДетальныеЗаписи.Договор;
			ИначеЕсли ВыборкаДетальныеЗаписи.КоличествоДоговоров=0 Тогда
				Рез = СоздатьОсновнойДоговор(Организация, Контрагент, ВидДоговора);
			ИначеЕсли ВыборкаДетальныеЗаписи.КоличествоДоговоров>1 Тогда
				Рез = ВыборкаДетальныеЗаписи.Договор;
				ТекстОшибки = СтрШаблон("Для контрагента %1 подставлен первый договор из нескольких по виду %2 для организации %3", Контрагент, ВидДоговора, Организация);
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Возврат Рез;

КонецФункции

Найти с/ф выданный

Ищет счет-фактура выданный
Функция НайтиСФВыданный(ДокументОснование) Экспорт
	
	Рез = Неопределено;
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
	                  |	СчетФактураВыданныйДокументыОснования.Ссылка КАК Ссылка
	                  |ИЗ
	                  |	Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
	                  |ГДЕ
	                  |	СчетФактураВыданныйДокументыОснования.Ссылка.Проведен
	                  |	И СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументОснование";
	
	Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
	ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
	Если ВыборкаЗапроса.Следующий() Тогда
		Рез = ВыборкаЗапроса.Ссылка;
	КонецЕсли;
	
	Возврат Рез;
	
КонецФункции

Найти с/ф полученный

Ищет счет-фактура полученный
Функция НайтиСФПолученный(ДокументОснование) Экспорт
	
	Рез = Неопределено;
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
	                  |	СчетФактураПолученныйДокументыОснования.Ссылка КАК Ссылка
	                  |ИЗ
	                  |	Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
	                  |ГДЕ
	                  |	СчетФактураПолученныйДокументыОснования.ДокументОснование = &ДокументОснование";
	
	Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
	ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
	Если ВыборкаЗапроса.Следующий() Тогда
		Рез = ВыборкаЗапроса.Ссылка;
	КонецЕсли;
	
	Возврат Рез;
	
КонецФункции

Заполнить счета учета

Заполнение счетов учета в табличных частях и шапке документа "Поступление товаров и услуг", но подойдет и для других видов документа
Дамир 3
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(ДокОб, "Товары");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(ДокОб, "Услуги");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаРасчетов(ДокОб);