Примеры заполнения шапки сертификата

Процедура ДействияПослеПроведенияВетСертификата(Объект, Движения) Экспорт
    ...
	Если Найти(Ссылка.Комментарий, "Накладная создана на основании Заказа")>0 Тогда
		ОбъектСертификата.Документы.Очистить();
		НовСтрТД = ОбъектСертификата.Документы.Добавить();
		НовСтрТД.Тип = Справочники.АСП_ТипыДокументов.DOC16;
		НовСтрТД.Связь = Справочники.АСП_ТипыСвязейДокументов.REF6;
		Поз1 = Найти(Ссылка.Комментарий, "№");
		Поз2 = Найти(Ссылка.Комментарий, " от ");
		Поз3 = Найти(Ссылка.Комментарий, " 0:00:00");
		НовСтрТД.Номер = Сред(Ссылка.Комментарий, Поз1+1, Поз2-Поз1-1);
		НовСтрТД.Дата = Дата(Сред(Ссылка.Комментарий, Поз2+4, Поз3-Поз2-4+8));
	КонецЕсли;
КонецПроцедуры

Порядок изменений:

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

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

Пример для статики.

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

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

Для УПП Спецификация берется из РегистрСведений.ОсновныеСпецификацииНоменклатуры

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

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

Для БП 2.0 Спецификация берется из ОсновнойСпецификации.Реквизит Номенклатуры

Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт
...
	Если ВидДокумента.ВидДокумента = "ОтчетПроизводстваЗаСмену" Тогда		
		Возврат "
				|ВЫБРАТЬ
				|	Ссылки.Ссылка КАК Ссылка,
				|	ИК.Номенклатура КАК Номенклатура,
				|	СУММА(ИК.Количество/ИК.Ссылка.Количество*Т.Количество) КАК Количество,						        
		        |	СУММА(0) КАК Сумма
				|ИЗ
				|	СсылкиВет КАК Ссылки
				|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК Т
				|		ПО (Т.Ссылка = Ссылки.Ссылка)
				|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК ИК
				|		ПО (Т.Номенклатура = ИК.Ссылка.Владелец)
				|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АСП_Товары КАК Р
				|		ПО 	ИК.Номенклатура = Р.Ссылка							
				|			И (НЕ Р.Категория = ЗНАЧЕНИЕ(Справочник.АСП_КатегорииНоменклатуры.ПустаяСсылка))								
				|
				|СГРУППИРОВАТЬ ПО
				|	Ссылки.Ссылка,
				|	Т.Номенклатура,
				|	ИК.Номенклатура
				|
				|УПОРЯДОЧИТЬ ПО
				|	Ссылки.Ссылка.МоментВремени";
	КонецЕсли;
...
КонецФункции
Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт
	Если ВидДокумента.ВидДокумента = "КомплектацияНоменклатуры" Тогда
		ТЗ= "
		//"ВЫБРАТЬ
		//|	РеализацияТоваровУслуг.Ссылка
		//|ПОМЕСТИТЬ СсылкиВет
		//|ИЗ
		//|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		//|;
		//|
		//|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	Ссылки.Ссылка КАК Ссылка,
		|	Т.Номенклатура КАК Номенклатура,
		|	СУММА(ВЫБОР
		|			КОГДА Р.Вес = 0
		|				ТОГДА Т.Количество
		|			ИНАЧЕ Р.Вес * Т.Количество		
		|		КОНЕЦ) КАК Количество,
		|	СУММА(ВЫБОР
		|			КОГДА Р.Вес = 0
		|				ТОГДА ВЫБОР
		|						КОГДА Р.ОбъемУпаковки = 0
		|							ТОГДА ВЫРАЗИТЬ(Т.Количество + 0.4999999 КАК ЧИСЛО(15, 0))
		|						ИНАЧЕ ВЫРАЗИТЬ(Т.Количество / Р.ОбъемУпаковки + 0.4999999 КАК ЧИСЛО(15, 0))
		|					КОНЕЦ
		|			ИНАЧЕ Т.Количество
		|		КОНЕЦ) КАК КоличествоУпаковок		
		|ИЗ
		|	СсылкиВет КАК Ссылки
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры.Комплектующие КАК Т
		|		ПО (Т.Ссылка = Ссылки.Ссылка)
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АСП_Товары КАК Р
		|		ПО (Т.Номенклатура = Р.Ссылка)
		|			И (НЕ Р.Категория = ЗНАЧЕНИЕ(Справочник.АСП_КатегорииНоменклатуры.ПустаяСсылка))
		|
		|СГРУППИРОВАТЬ ПО
		|	Ссылки.Ссылка,
		|	Т.Номенклатура		
		|
		|УПОРЯДОЧИТЬ ПО
		|	Ссылки.Ссылка.МоментВремени";			
		Возврат ТЗ
	КонецЕсли;
КонецПроцедуры