Распределение товаров поступлений по направлениям деятельности с кастомной настройкой

09.11.24

Учетные задачи - Логистика, склад и ТМЦ

Внешняя обработка для использования сотрудниками, оформляющими документы приобретения товаров и услуг в учетной системе с распределением товаров по направлениям деятельности, при необходимости установки гибкой настройки распределения.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Распределение поступлений по направлениям деятельности
.epf 20,31Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.
Распределение товаров поступлений по направлениям деятельности с кастомной настройкой:
.cfe 28,93Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

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

Подключение внешней обработки производится стандартным образом в справочнике "Дополнительные отчеты и обработки".

Перед началом использования пользователь с административными правами выполняет настройки распределения, открывая их по кнопке "Заполнение - Настройка распределения" документа приобретение товаров и услуг.

Распределение выполняется по кнопке "Заполнение - Распределить" документа Приобретение товаров и услуг, сначала распределяется 1-ый документ, он проводится, потом 2-ой документ и т.д.

Тестирование обработки производилось на конфигурации 1С: Управление торговлей 11.5.13.109.

 

Код обработки

#Область ОбработчикиСобытийФормы

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

	КонецЕсли;	
	
	ЭтоАдминистратор = ЭтоАдминистратор();
	
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
		
	Если Параметры.ИдентификаторКоманды = ""
		Или Параметры.ИдентификаторКоманды = "Открытие настроек" Тогда
		
		Если ПустаяСтрока(ВариантНастройки) Тогда
			ВариантНастройки = "Сопоставление";
		КонецЕсли;	
		
		ИзменениеВидимостиСменаВариантаНастройки(ВариантНастройки, 
		Элементы.ТаблУпорядочивание, 
		Элементы.УсловиеСопоставления);	
		
	КонецЕсли;
	
КонецПроцедуры
	
&НаКлиенте
Процедура ПриОткрытии(Отказ)
		
	Если Параметры.ИдентификаторКоманды = "Открытие настроек" 
		и ЭтоАдминистратор = Ложь Тогда
		//Отказ = Истина;
		//ПоказатьПредупреждение(, "Изменение настроек выполняется только администраторами!");
		//Возврат;		
	КонецЕсли;	
	
	Если ПустаяСтрока(ВариантНастройки) Тогда
		
		ВариантНастройки = "Сопоставление";		
		
		ИзменениеВидимостиСменаВариантаНастройки(ВариантНастройки, 
		Элементы.ТаблУпорядочивание, 
		Элементы.УсловиеСопоставления);
		
	КонецЕсли;
		
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаСервере
Функция РазрешениеНаПривилегированныйРежим(Описание)
                  
    ЗапросыРазрешений = Новый Массив;
    Разрешения = Новый Массив;
    Разрешения.Добавить( 
        РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима(Описание));

    ЗапросРазрешений = РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения, 
	Параметры.ДополнительнаяОбработкаСсылка, Истина);
    ЗапросыРазрешений.Добавить(ЗапросРазрешений);
    
    Возврат ЗапросыРазрешений;
    
КонецФункции

&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
	
	ОчиститьСообщения();
	
    ПроизвестиРаспределениеПоступления(ПриобретениеТоваров);
		
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройки(Команда) 
	
	СохранитьНастройкиНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьНазначениеПоступления(Команда) 
	
	ОчиститьНазначениеПоступленияНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиНазваниеРеквизита(Команда)
	
	ЭлементДерево = Элементы.РевизитыПоступления;
    ИмяТаблицы = "ТоварыПоступления.";
	
	ДобавитьНазваниеРеквизитаИзДерева(ЭлементДерево, ИмяТаблицы);	
		
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиРеквизитЗаказа(Команда)
	
	ЭлементДерево = Элементы.РеквизитыЗаказа;
    ИмяТаблицы = "ТоварыЗаказа.";
	
	ДобавитьНазваниеРеквизитаИзДерева(ЭлементДерево, ИмяТаблицы);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	ОчиститьСообщения();	
 	
	ПроизвестиРаспределениеПоступления(ВладелецФормы.Объект.Ссылка);		
	
	ВладелецФормы.Прочитать();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция ИнтерактивныйЗапросРазрешений()

	Разрешения = Новый Массив();
	Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима("Возможность проведения документов"));
	
	Идентификаторы = Новый Массив();
	Идентификаторы.Добавить(
		РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(
			Параметры.ДополнительнаяОбработкаСсылка,
			Разрешения,
			Истина));
			
	Возврат Идентификаторы;		
	
КонецФункции

&НаСервереБезКонтекста
Функция ЭтоАдминистратор()
	
	Возврат Пользователи.ЭтоПолноправныйПользователь(, Истина, Ложь);
	
КонецФункции	

&НаСервере
Процедура ЗаполнитьДеревьяРеквизитов()
	
	ЗаполнитьРеквизитыЗаказаНаСервере();
    ЗаполнитьРеквизитыПоступленияНаСервере();
	
КонецПроцедуры	
	
&НаКлиенте
Процедура ОбработатьПеретаскиваниеЭлементаРеквизита(ИмяТаблицы, ПараметрыПеретаскивания)
	
	Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив")
		И ПараметрыПеретаскивания.Значение.Количество() Тогда
		
		ЗначениеПеретаскивания = ПараметрыПеретаскивания.Значение[0];		
		лкПутьКРеквизиту = ИмяТаблицы +
		ПолучитьПутьКРеквизитуПоДереву(ЗначениеПеретаскивания);
		
		Если ВариантНастройки = "Сопоставление" Тогда
			УсловиеСопоставления = УсловиеСопоставления + лкПутьКРеквизиту;
		Иначе 
			НоваяСтрока = ТаблУпорядочивание.Добавить();
			НоваяСтрока.РеквизитУпорядочивание = лкПутьКРеквизиту;
		КонецЕсли;	
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Функция ПолучитьПутьКРеквизитуПоДереву(ЗначениеПеретаскивания)
	
	МассивПути = Новый Массив;
	МассивПути.Добавить(ЗначениеПеретаскивания.ИмяРеквизита);	
	
	РодительСтроки = ЗначениеПеретаскивания.ПолучитьРодителя();
	
	Если РодительСтроки <> Неопределено Тогда
		ЗаполнитьРекурсивноПутьКРеквизиту(РодительСтроки, МассивПути);
	КонецЕсли;	
	
	ИндПоследнего = МассивПути.ВГраница();
	
	СерединаИзменения = Цел(ИндПоследнего / 2);
	
	Для Инд = 0 По СерединаИзменения Цикл 
		
		Если Инд = ИндПоследнего - Инд Тогда
			Продолжить;
		КонецЕсли;	
		
		лкИмяРеквизита = МассивПути[Инд];
		
		МассивПути[Инд] = МассивПути[ИндПоследнего - Инд];
		МассивПути[ИндПоследнего - Инд] = лкИмяРеквизита;		
		
	КонецЦикла;	
	
	ПутьКРеквизитуСтрока = СтрСоединить(МассивПути, ".");
	
	Возврат ПутьКРеквизитуСтрока;
	
КонецФункции	
	
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменениеВидимостиСменаВариантаНастройки(ВариантНастройки, 
	элТаблУпорядочивание, 
	элУсловиеСопоставления)

	Если ВариантНастройки = "Сопоставление" Тогда
		элТаблУпорядочивание.Видимость = Ложь;
		элУсловиеСопоставления.Видимость = Истина;
	Иначе 	
		элТаблУпорядочивание.Видимость = Истина;
		элУсловиеСопоставления.Видимость = Ложь;		
	КонецЕсли;		
	
КонецПроцедуры

&НаСервере
Процедура ОчиститьНазначениеПоступленияНаСервере()
	
	ПоступлениеОбъект = ПриобретениеТоваров.ПолучитьОбъект();	
	
	Для Каждого Стр_Товары Из ПоступлениеОбъект.Товары Цикл 
		Стр_Товары.Назначение = Справочники.Назначения.ПустаяСсылка();		
	КонецЦикла;
		
	Если ПоступлениеОбъект.Проведен Тогда
		ПоступлениеОбъект.Записать(РежимЗаписиДокумента.Проведение);
	Иначе 
		ПоступлениеОбъект.Записать(РежимЗаписиДокумента.Запись);
	КонецЕсли;		
	
КонецПроцедуры

 &НаСервереБезКонтекста
Функция ПолучитьРезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, 
	СкладПоступления = Неопределено,
	МассивЗаказов = Неопределено)
	
	Запрос = Новый Запрос;
	
	Запрос.УстановитьПараметр("МассивЗаказов",             МассивЗаказов);
	Запрос.УстановитьПараметр("Партнер",                   ДанныеОтбора.Партнер);
	Запрос.УстановитьПараметр("Контрагент",                ДанныеОтбора.Контрагент);
	Запрос.УстановитьПараметр("Договор",                   ДанныеОтбора.Договор);
	Запрос.УстановитьПараметр("ВариантПриемкиТоваров",     ДанныеОтбора.ВариантПриемкиТоваров);
	Запрос.УстановитьПараметр("Организация",               ДанныеОтбора.Организация);
	Запрос.УстановитьПараметр("Соглашение",                ДанныеОтбора.Соглашение);
	
	Если ДанныеОтбора.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Или
		ДанныеОтбора.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
		Запрос.УстановитьПараметр("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
	Иначе
		Запрос.УстановитьПараметр("ХозяйственнаяОперация", ДанныеОтбора.ХозяйственнаяОперация);
	КонецЕсли;
	
	Запрос.УстановитьПараметр("ВалютаВзаиморасчетов",      ДанныеОтбора.ВалютаВзаиморасчетов);
	Запрос.УстановитьПараметр("НалогообложениеНДС",        ДанныеОтбора.НалогообложениеНДС);
	Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ДанныеОтбора.ВернутьМногооборотнуюТару);
	Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару",      ДанныеОтбора.ТребуетсяЗалогЗаТару);
	Запрос.УстановитьПараметр("ЦенаВключаетНДС",           ДанныеОтбора.ЦенаВключаетНДС);
	Запрос.УстановитьПараметр("Регистратор",               ДанныеОтбора.Ссылка);
	Запрос.УстановитьПараметр("СкладПоступления",          СкладПоступления);
	Запрос.УстановитьПараметр("ОтобратьПоЗаказу",          МассивЗаказов <> Неопределено);
	Запрос.УстановитьПараметр("ТекущаяДата",               НачалоДня(ТекущаяДатаСеанса()));
	Запрос.УстановитьПараметр("ГруппаФинансовогоУчета",    ДанныеОтбора.ГруппаФинансовогоУчета);
	Запрос.УстановитьПараметр("Подразделение",             ДанныеОтбора.Подразделение);
	Запрос.УстановитьПараметр("ПроверятьГФУПодразделение", ДанныеОтбора.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
		И ПолучитьФункциональнуюОпцию("ИспользоватьРеглУчет"));
	
	Если ДанныеОтбора.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам 
		И ДанныеОтбора.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка() Тогда
		Запрос.УстановитьПараметр("БезОтбораПоНаправлениямДеятельности", Истина);
	Иначе
		Запрос.УстановитьПараметр("БезОтбораПоНаправлениямДеятельности", Ложь);
	КонецЕсли;
	
	Запрос.УстановитьПараметр("НаправлениеДеятельности", ДанныеОтбора.НаправлениеДеятельности);
	
	МассивХозОперацийФактуровка = Новый Массив;
	МассивХозОперацийФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
	МассивХозОперацийФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
	
	ВариантОформленияЗакупокДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеОтбора.Договор, "ВариантОформленияЗакупок");
	
	ЗаполнятьКолонкиАналитикиРасходов = НЕ (МассивХозОперацийФактуровка.Найти(ДанныеОтбора.ХозяйственнаяОперация) <> Неопределено
				И ВариантОформленияЗакупокДоговора = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг);
	Запрос.УстановитьПараметр("ЗаполнятьКолонкиАналитикиРасходов", ЗаполнятьКолонкиАналитикиРасходов);
	
	Если ТипЗнч(ДанныеОтбора) = Тип("Структура")
		И ДанныеОтбора.Свойство("ТоварыНакладной") Тогда
		
		Запрос.УстановитьПараметр("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
		
	Иначе
		ТоварыНакладной = Новый ТаблицаЗначений;
		ТоварыНакладной.Колонки.Добавить("ЗаказПоставщику", Новый ОписаниеТипов("ДокументСсылка.ЗаказПоставщику"));
		ТоварыНакладной.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
		ТоварыНакладной.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
		ТоварыНакладной.Колонки.Добавить("КодСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
		ТоварыНакладной.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
		ТоварыНакладной.Колонки.Добавить("СуммаВзаиморасчетов", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
		ТоварыНакладной.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
		ТоварыНакладной.Колонки.Добавить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
		ТоварыНакладной.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
		ТоварыНакладной.Колонки.Добавить("КоличествоВЗаказе", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
		ТоварыНакладной.Колонки.Добавить("Цена", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС"));
		ТоварыНакладной.Колонки.Добавить("Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("СуммаНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("СуммаСНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("ПроцентРучнойСкидки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2)));
		ТоварыНакладной.Колонки.Добавить("СуммаРучнойСкидки", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
		ТоварыНакладной.Колонки.Добавить("Сделка", Новый ОписаниеТипов("СправочникСсылка.СделкиСКлиентами"));
		ТоварыНакладной.Колонки.Добавить("СтатьяРасходов", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СтатьиРасходов"));
		ТоварыНакладной.Колонки.Добавить("АналитикаРасходов", Новый ОписаниеТипов("СправочникСсылка.ПрочиеРасходы"));
		ТоварыНакладной.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
		ТоварыНакладной.Колонки.Добавить("СписатьНаРасходы", Новый ОписаниеТипов("Булево"));
		ТоварыНакладной.Колонки.Добавить("ВидЦеныПоставщика", Новый ОписаниеТипов("СправочникСсылка.ВидыЦенПоставщиков"));
		ТоварыНакладной.Колонки.Добавить("НоменклатураПартнера", Новый ОписаниеТипов("СправочникСсылка.НоменклатураКонтрагентов"));
		ТоварыНакладной.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
		
		Запрос.УстановитьПараметр("ТоварыНакладной", ТоварыНакладной);
	КонецЕсли;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ТаблицаЗаказы.ЗаказПоставщику        КАК ЗаказПоставщику,
	|	ТаблицаЗаказы.Номенклатура           КАК Номенклатура,
	|	ТаблицаЗаказы.Характеристика         КАК Характеристика,
	|	ТаблицаЗаказы.КодСтроки              КАК КодСтроки,
	|	ТаблицаЗаказы.Склад                  КАК Склад,
	|	СУММА(ТаблицаЗаказы.КОформлению)     КАК Количество
	|
	|ПОМЕСТИТЬ ТаблицаОстатки
	|
	|ИЗ
	|	(ВЫБРАТЬ
	|		ЗаказыОстатки.ЗаказПоставщику        КАК ЗаказПоставщику,
	|		ЗаказыОстатки.Номенклатура           КАК Номенклатура,
	|		ЗаказыОстатки.Характеристика         КАК Характеристика,
	|		ЗаказыОстатки.КодСтроки              КАК КодСтроки,
	|		ЗаказыОстатки.Склад                  КАК Склад,
	|		ЗаказыОстатки.КОформлениюОстаток     КАК КОформлению
	|	ИЗ
	|		РегистрНакопления.ЗаказыПоставщикам.Остатки(,
	|				ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
	|					ЗаказПоставщику В (&МассивЗаказов)
	|				ИНАЧЕ
	|					ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Партнер = &Партнер
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Контрагент = &Контрагент
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Договор = &Договор
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ВариантПриемкиТоваров = &ВариантПриемкиТоваров
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Организация = &Организация
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ХозяйственнаяОперация = &ХозяйственнаяОперация
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Соглашение = &Соглашение
	|					И (ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Валюта = &ВалютаВзаиморасчетов
	|						ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию))
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).НалогообложениеНДС = &НалогообложениеНДС
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ЦенаВключаетНДС = &ЦенаВключаетНДС
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
	|					И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
	|					И (&БезОтбораПоНаправлениямДеятельности 
	|						ИЛИ ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).НаправлениеДеятельности = &НаправлениеДеятельности 
	|						ИЛИ ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
	|					И (НЕ &ПроверятьГФУПодразделение
	|						ИЛИ (ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).ГруппаФинансовогоУчета В (&ГруппаФинансовогоУчета, ЗНАЧЕНИЕ(Справочник.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка))
	|						И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Подразделение В (&Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))))
	|					
	|				КОНЕЦ
	|				И
	|				ВЫБОР
	|					КОГДА
	|						ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ЭтоГруппа
	|					ТОГДА
	|						Склад В ИЕРАРХИИ (&СкладПоступления) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
	|					ИНАЧЕ
	|						Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &СкладПоступления)
	|				КОНЕЦ
	|			) КАК ЗаказыОстатки
	|
	|	ОБЪЕДИНИТЬ ВСЕ
	|
	|	ВЫБРАТЬ
	|		ЗаказыДвижения.ЗаказПоставщику,
	|		ЗаказыДвижения.Номенклатура,
	|		ЗаказыДвижения.Характеристика,
	|		ЗаказыДвижения.КодСтроки,
	|		ЗаказыДвижения.Склад,
	|		ВЫБОР КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|				-ЗаказыДвижения.КОформлению
	|			ИНАЧЕ
	|				ЗаказыДвижения.КОформлению
	|		КОНЕЦ
	|	ИЗ
	|		РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыДвижения
	|	ГДЕ
	|		ЗаказыДвижения.Регистратор = &Регистратор
	|		И ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
	|			ЗаказыДвижения.ЗаказПоставщику В (&МассивЗаказов)
	|		ИНАЧЕ
	|			ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Партнер = &Партнер
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Контрагент = &Контрагент
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Договор = &Договор
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Организация = &Организация
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ХозяйственнаяОперация = &ХозяйственнаяОперация
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Соглашение = &Соглашение
	|					И (ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Валюта = &ВалютаВзаиморасчетов
	|						ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию))
	|					И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).НалогообложениеНДС = &НалогообложениеНДС
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ЦенаВключаетНДС = &ЦенаВключаетНДС
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
	|			И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
	|			И (&БезОтбораПоНаправлениямДеятельности 
	|				ИЛИ (ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).НаправлениеДеятельности = &НаправлениеДеятельности 
	|						ИЛИ ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)))
	|			И (НЕ &ПроверятьГФУПодразделение
	|				ИЛИ (ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ГруппаФинансовогоУчета В (&ГруппаФинансовогоУчета, ЗНАЧЕНИЕ(Справочник.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка))
	|				И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Подразделение В (&Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))))
	|			
	|		КОНЕЦ
	|		И ЗаказыДвижения.Активность
	|				И ВЫБОР
	|					КОГДА
	|						ВЫРАЗИТЬ(&СкладПоступления КАК Справочник.Склады).ЭтоГруппа
	|					ТОГДА
	|						ЗаказыДвижения.Склад В ИЕРАРХИИ (&СкладПоступления) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
	|					ИНАЧЕ
	|						ЗаказыДвижения.Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &СкладПоступления)
	|				КОНЕЦ
	|	) КАК ТаблицаЗаказы
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ТаблицаЗаказы.ЗаказПоставщику,
	|		ТаблицаЗаказы.Номенклатура,
	|		ТаблицаЗаказы.Характеристика,
	|		ТаблицаЗаказы.КодСтроки,
	|		ТаблицаЗаказы.Склад
	|	
	|	ИМЕЮЩИЕ
	|		СУММА(ТаблицаЗаказы.КОформлению) > 0
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыНакладной.ЗаказПоставщику КАК ЗаказПоставщику,
	|	ВЫРАЗИТЬ(ТоварыНакладной.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
	|	ТоварыНакладной.Характеристика КАК Характеристика,
	|	ТоварыНакладной.КодСтроки КАК КодСтроки,
	|	ТоварыНакладной.Количество КАК Количество,
	|	ТоварыНакладной.Сумма КАК СуммаВзаиморасчетов,
	|	ВЫРАЗИТЬ(ТоварыНакладной.Склад КАК Справочник.Склады) КАК Склад,
	|	ТоварыНакладной.НомерСтроки КАК НомерСтроки,
	|	ВЫРАЗИТЬ(ТоварыНакладной.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
	|	ТоварыНакладной.Серия КАК Серия,
	|	ТоварыНакладной.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
	|	ТоварыНакладной.Количество КАК КоличествоВЗаказе,
	|	ТоварыНакладной.Цена КАК Цена,
	|	ТоварыНакладной.СтавкаНДС КАК СтавкаНДС,
	|	ТоварыНакладной.Сумма КАК Сумма,
	|	ТоварыНакладной.СуммаНДС КАК СуммаНДС,
	|	ТоварыНакладной.СуммаСНДС КАК СуммаСНДС,
	|	ТоварыНакладной.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
	|	ТоварыНакладной.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
	|	ТоварыНакладной.Сделка                   КАК Сделка,
	|	ТоварыНакладной.СтатьяРасходов           КАК СтатьяРасходов,
	|	ТоварыНакладной.АналитикаРасходов        КАК АналитикаРасходов,
	|	ТоварыНакладной.Подразделение            КАК Подразделение,
	|	ТоварыНакладной.СписатьНаРасходы         КАК СписатьНаРасходы,
	|	ТоварыНакладной.НоменклатураПартнера   КАК НоменклатураПартнера,
	|	ТоварыНакладной.Назначение               КАК Назначение
	|ПОМЕСТИТЬ
	|	ВтТоварыНакладной
	|ИЗ
	|	&ТоварыНакладной КАК ТоварыНакладной;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТаблицаОстатки.ЗаказПоставщику           КАК ЗаказПоставщику,
	|	ЗаказТовары.Ссылка.ПорядокРасчетов       КАК ПорядокРасчетов,
	|	ТаблицаОстатки.Номенклатура              КАК Номенклатура,
	|	ТаблицаОстатки.Характеристика            КАК Характеристика,
	|	ТаблицаОстатки.КодСтроки                 КАК КодСтроки,
	|	ТаблицаОстатки.Количество                КАК Количество, 
	|	ТаблицаОстатки.Количество                КАК КоличествоСписание,
	|	ТаблицаОстатки.Склад                     КАК Склад,
	|	ЕСТЬNULL(НакладнаяТовары.Количество,0)   КАК КоличествоВНакладной,
	|	ЗаказТовары.Количество                   КАК КоличествоВЗаказе,
	|	ЗаказТовары.НомерСтроки                  КАК НомерСтроки,
	|	ЗаказТовары.Ссылка.Сделка                КАК Сделка,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ЗаказТовары.СтатьяРасходов
	|	ИНАЧЕ
	|		НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК СтатьяРасходов,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ЗаказТовары.АналитикаРасходов
	|	ИНАЧЕ
	|		НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК АналитикаРасходов,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ЗаказТовары.Подразделение
	|	ИНАЧЕ
	|		ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
	|	КОНЕЦ КАК Подразделение,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ЗаказТовары.СписатьНаРасходы
	|	ИНАЧЕ
	|		ЛОЖЬ
	|	КОНЕЦ КАК СписатьНаРасходы,
	|	ЗаказТовары.ДатаПоступления              КАК ДатаПоступления,
	|	ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) КАК Упаковка,
	|	ЗаказТовары.ВидЦеныПоставщика            КАК ВидЦеныПоставщика,
	|	ЗаказТовары.Количество                   КАК КоличествоПоЗаказу,
	|	ЗаказТовары.Цена                         КАК Цена,
	|	ЗаказТовары.СтавкаНДС                    КАК СтавкаНДС,
	|	ЗаказТовары.Сумма                        КАК Сумма,
	|	ЗаказТовары.СуммаНДС                     КАК СуммаНДС,
	|	ЗаказТовары.СуммаСНДС                    КАК СуммаСНДС,
	|	ЗаказТовары.ПроцентРучнойСкидки          КАК ПроцентРучнойСкидки,
	|	ЗаказТовары.СуммаРучнойСкидки            КАК СуммаРучнойСкидки,
	|	ЗаказТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	|	ЗаказТовары.НоменклатураПартнера       КАК НоменклатураПартнера,
	|	ЗаказТовары.Назначение                   КАК Назначение,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
	|			ТОГДА 1
	|		ИНАЧЕ ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2)
	|	КОНЕЦ КАК Коэффициент,
	|	ТаблицаОстатки.Количество / ЕСТЬNULL(ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2), 1) КАК КоличествоУпаковок,
	|	ВЫБОР 
	|		КОГДА ТаблицаОстатки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении = ИСТИНА
	|			И ТаблицаОстатки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= &ТекущаяДата
	|			И НЕ ТаблицаОстатки.Номенклатура.ТипНоменклатуры В(
	|				ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
	|				ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
	|		ТОГДА
	|			ИСТИНА
	|		ИНАЧЕ
	|			ЛОЖЬ
	|	КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
	|ИЗ
	|	ТаблицаОстатки КАК ТаблицаОстатки
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказТовары
	|		ПО  ТаблицаОстатки.Номенклатура     = ЗаказТовары.Номенклатура
	|			И ТаблицаОстатки.Характеристика = ЗаказТовары.Характеристика
	|			И ТаблицаОстатки.КодСтроки      = ЗаказТовары.КодСтроки
	|			И ТаблицаОстатки.ЗаказПоставщику = ЗаказТовары.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтТоварыНакладной КАК НакладнаяТовары
	|		ПО ТаблицаОстатки.Номенклатура = НакладнаяТовары.Номенклатура
	|			И ТаблицаОстатки.Характеристика = НакладнаяТовары.Характеристика
	|			И ТаблицаОстатки.КодСтроки = НакладнаяТовары.КодСтроки
	|			И ТаблицаОстатки.ЗаказПоставщику = НакладнаяТовары.ЗаказПоставщику
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТоварыНакладной.ЗаказПоставщику          КАК ЗаказПоставщику,
	|	ВЫРАЗИТЬ(ТоварыНакладной.ЗаказПоставщику КАК Документ.ЗаказПоставщику).ПорядокРасчетов КАК ПорядокРасчетов,
	|	ТоварыНакладной.Номенклатура             КАК Номенклатура,
	|	ТоварыНакладной.Характеристика           КАК Характеристика,
	|	ТоварыНакладной.КодСтроки                КАК КодСтроки,
	|	ТоварыНакладной.Количество               КАК Количество,
	|	ТоварыНакладной.Количество               КАК КоличествоСписание,	
	|	ТоварыНакладной.Склад                    КАК Склад,
	|	ЕСТЬNULL(ТоварыНакладной.Количество,0)   КАК КоличествоВНакладной,
	|	0                                        КАК КоличествоВЗаказе,
	|	ТоварыНакладной.НомерСтроки              КАК НомерСтроки,
	|	ТоварыНакладной.Сделка                   КАК Сделка,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ТоварыНакладной.СтатьяРасходов
	|	ИНАЧЕ
	|		НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК СтатьяРасходов,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ТоварыНакладной.АналитикаРасходов
	|	ИНАЧЕ
	|		НЕОПРЕДЕЛЕНО
	|	КОНЕЦ КАК АналитикаРасходов,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ТоварыНакладной.Подразделение
	|	ИНАЧЕ
	|		ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
	|	КОНЕЦ КАК Подразделение,
	|	ВЫБОР КОГДА &ЗаполнятьКолонкиАналитикиРасходов ТОГДА
	|		ТоварыНакладной.СписатьНаРасходы
	|	ИНАЧЕ
	|		ЛОЖЬ
	|	КОНЕЦ КАК СписатьНаРасходы,
	|	НЕОПРЕДЕЛЕНО                             КАК ДатаПоступления,
	|	ТоварыНакладной.Упаковка                 КАК Упаковка,
	|	ТоварыНакладной.ВидЦеныПоставщика        КАК ВидЦеныПоставщика,
	|	0                                        КАК КоличествоПоЗаказу,
	|	ТоварыНакладной.Цена                     КАК Цена,
	|	ТоварыНакладной.СтавкаНДС                КАК СтавкаНДС,
	|	ТоварыНакладной.Сумма                    КАК Сумма,
	|	ТоварыНакладной.СуммаНДС                 КАК СуммаНДС,
	|	ТоварыНакладной.СуммаСНДС                КАК СуммаСНДС,
	|	ТоварыНакладной.ПроцентРучнойСкидки          КАК ПроцентРучнойСкидки,
	|	ТоварыНакладной.СуммаРучнойСкидки            КАК СуммаРучнойСкидки,
	|	ТоварыНакладной.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	|	ТоварыНакладной.НоменклатураПартнера       КАК НоменклатураПартнера,
	|	ТоварыНакладной.Назначение                   КАК Назначение,
	|	ВЫБОР
	|		КОГДА ТоварыНакладной.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
	|			ТОГДА 1
	|		ИНАЧЕ ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1)
	|	КОНЕЦ КАК Коэффициент,
	|	ТоварыНакладной.Количество / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1) КАК КоличествоУпаковок,
	|	ВЫБОР 
	|		КОГДА ТоварыНакладной.Склад.ИспользоватьОрдернуюСхемуПриПоступлении = ИСТИНА
	|			И ТоварыНакладной.Склад.ДатаНачалаОрдернойСхемыПриПоступлении <= &ТекущаяДата
	|			И НЕ ТоварыНакладной.Номенклатура.ТипНоменклатуры В(
	|				ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
	|				ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
	|		ТОГДА
	|			ИСТИНА
	|		ИНАЧЕ
	|			ЛОЖЬ
	|	КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
	|ИЗ
	|	ВтТоварыНакладной КАК ТоварыНакладной
	|ГДЕ
	|	ТоварыНакладной.КодСтроки = 0
	|УПОРЯДОЧИТЬ ПО
	|	ТаблицаОстатки.ЗаказПоставщику,
	|	ЗаказТовары.НомерСтроки";
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"НакладнаяТовары.Упаковка",
			"НакладнаяТовары.Номенклатура"));
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"ЗаказТовары.Упаковка",
			"ЗаказТовары.Номенклатура"));
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки3",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"ТоварыНакладной.Упаковка",
			"ТоварыНакладной.Номенклатура"));
		
	Возврат Запрос.Выполнить();
КонецФункции

&НаСервереБезКонтекста
Функция ОписаниеТипаВсеСсылки() Экспорт
	
	Возврат Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(
		Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(
			Справочники.ТипВсеСсылки(),
			Документы.ТипВсеСсылки().Типы()),
			ПланыОбмена.ТипВсеСсылки().Типы())),
			ПланыВидовХарактеристик.ТипВсеСсылки().Типы()),
			ПланыСчетов.ТипВсеСсылки().Типы()),
			ПланыВидовРасчета.ТипВсеСсылки().Типы()),
			БизнесПроцессы.ТипВсеСсылки().Типы()),),
			Задачи.ТипВсеСсылки().Типы());
	
КонецФункции

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

&НаСервере
Процедура СохранитьНастройкиНаСервере()
	
	СтруктураНастроек = Новый Структура;
	
	СтруктураНастроек.Вставить("УсловиеСопоставления", УсловиеСопоставления);
	
	лкТаблУпорядочивание = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблУпорядочивание.Выгрузить());
	СтруктураНастроек.Вставить("ТаблУпорядочивание", лкТаблУпорядочивание);	
	
	ДополнительнаяОбработкаОбъект = Параметры.ДополнительнаяОбработкаСсылка.ПолучитьОбъект(); 
	ДополнительнаяОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СтруктураНастроек); 
	ДополнительнаяОбработкаОбъект.Записать(); 
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура ВариантНастройкиПриИзменении(Элемент)
	
	ИзменениеВидимостиСменаВариантаНастройки(ВариантНастройки, 
	Элементы.ТаблУпорядочивание, 
	Элементы.УсловиеСопоставления);
	
КонецПроцедуры

&НаКлиенте
Процедура РевизитыПоступленияОкончаниеПеретаскивания(Элемент, 
	ПараметрыПеретаскивания, 
	СтандартнаяОбработка)
	
	ИмяТаблицы = "ТоварыПоступления.";	
	ОбработатьПеретаскиваниеЭлементаРеквизита(ИмяТаблицы, ПараметрыПеретаскивания);
	
КонецПроцедуры

&НаКлиенте
Процедура РеквизитыЗаказаОкончаниеПеретаскивания(Элемент, 
	ПараметрыПеретаскивания, 
	СтандартнаяОбработка)
	
	ИмяТаблицы = "ТоварыЗаказа.";	
	ОбработатьПеретаскиваниеЭлементаРеквизита(ИмяТаблицы, ПараметрыПеретаскивания);
	
КонецПроцедуры

#КонецОбласти

#Область ПроцедурыФункцииРаспределения

&НаСервере
Процедура ПроизвестиРаспределениеПоступления(ПоступлениеСсылка)
	
	ПараметрыРаспределения = ПолучитьПараметрыРаспределения(ПоступлениеСсылка);
	
	РезультатыРаспределения = РаспределитьТовары(ПараметрыРаспределения);	
			
	ЗаполнитьРезультатыРаспределения(РезультатыРаспределения, ПоступлениеСсылка);	
		
КонецПроцедуры

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

	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
	Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
	"ПриобретениеТоваровУслугТовары.Упаковка",
	"ПриобретениеТоваровУслугТовары.Номенклатура"));	
	
	Запрос.УстановитьПараметр("ПриобретениеТоваровУслуг", ПоступлениеСсылка);
	
	РезультатПакет = Запрос.ВыполнитьПакет();	
	
	РезультатТоварыПоступление = РезультатПакет[0];	
	ТоварыПоступление = РезультатТоварыПоступление.Выгрузить();
	РезультатРеквизитыПоступления = РезультатПакет[1];
	РеквизитыПоступления = РезультатРеквизитыПоступления.Выгрузить()[0];
	
	МассивЗаказов = Новый Массив();
	МассивЗаказов.Добавить(РеквизитыПоступления.ЗаказПоставщику);

	РезультатЗапросаПоОстаткамЗаказов = ПолучитьРезультатЗапросаПоОстаткамЗаказов(РеквизитыПоступления, 
	РеквизитыПоступления.Склад, 
	МассивЗаказов);
	
	ТоварыЗаказ = РезультатЗапросаПоОстаткамЗаказов.Выгрузить();
	
	СтруктураРезультат = Новый Структура("ТоварыПоступление, ТоварыЗаказ",
	ТоварыПоступление,
	ТоварыЗаказ);

	Возврат СтруктураРезультат;
	
КонецФункции	
	
&НаСервере
Функция РаспределитьТовары(ПараметрыРаспреления) 
	
	Перем КолвоСписываем;

	ТоварыПоступление = ПараметрыРаспреления.ТоварыПоступление;
	ТоварыЗаказ       = ПараметрыРаспреления.ТоварыЗаказ;			
	
	ТоварыЗаказ.Колонки.Добавить("ИД_Строки", ОбщегоНазначения.ОписаниеТипаЧисло(5));
	Инд = 1;
	Для Каждого Стр Из ТоварыЗаказ Цикл 
		Стр.ИД_Строки = Инд;
		Инд = Инд + 1;
	КонецЦикла;	
	
	Отб = Новый Структура("Номенклатура, Характеристика, Цена");	
	
	Товары_Распределенные = ТоварыПоступление.Скопировать();
	Товары_Распределенные.Очистить();
	Отказ = Ложь;
	
	лкТоварыПоступление = Товары_Распределенные.Скопировать();
	
	Если ЗначениеЗаполнено(УсловиеСопоставления) Тогда
		ЗапросПоискаСтроки = ПолучитьЗапросПоискаСтроки();
	Иначе 
		ЗапросПоискаСтроки = Неопределено;			
	КонецЕсли;	
	
	МассивСтрокиУдалить = Новый Массив;

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

			Если СтрокаЗаказа.КоличествоСписание = КолвоСписываем Тогда
				
				МассивСтрокиУдалить.Добавить(СтрокаЗаказа);
				
			Иначе 
							
				СтрокаЗаказа.КоличествоСписание = СтрокаЗаказа.КоличествоСписание - КолвоСписываем;
				
			КонецЕсли;	
				
		КонецЦикла;		
		
		Для Каждого ЭлУдалить Из МассивСтрокиУдалить Цикл 
			ТоварыЗаказ.Удалить(ЭлУдалить);	
		КонецЦикла;	
		
		МассивСтрокиУдалить.Очистить();
		
		Если КолвоСписать <> 0 Тогда
			
			НовСтр_Распределения = Товары_Распределенные.Добавить();
			ЗаполнитьЗначенияСвойств(НовСтр_Распределения, Стр_Поступления);
			НовСтр_Распределения.Назначение = Справочники.Назначения.ПустаяСсылка();
			НовСтр_Распределения.Количество = КолвоСписать;			
			НовСтр_Распределения.КоличествоУпаковок = ?(НовСтр_Распределения.Количество = 0,
			0,
			НовСтр_Распределения.Количество / Стр_Поступления.Коэффициент);
			
			МассивСтрСообщения = Новый Массив;
			МассивСтрСообщения.Добавить("В строке №");
			МассивСтрСообщения.Добавить(Строка(Товары_Распределенные.Количество()));			
			МассивСтрСообщения.Добавить(" по позиции ");
			МассивСтрСообщения.Добавить(Строка(Стр_Поступления.Номенклатура));
			МассивСтрСообщения.Добавить(" ");
			МассивСтрСообщения.Добавить(Строка(Стр_Поступления.Характеристика));
			МассивСтрСообщения.Добавить(" недостаточно для распределения в количестве: ");
			МассивСтрСообщения.Добавить(Строка(КолвоСписать));
			МассивСтрСообщения.Добавить();
						
			ТекстСообщения = СтрСоединить(МассивСтрСообщения);	
			
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, 
			ПриобретениеТоваров,
			"Объект.Товары[" + Формат(Товары_Распределенные.Количество() - 1, "ЧГ=") + "].Номенклатура");
			
		КонецЕсли;	
		
	КонецЦикла;
	
	РезультатРаспределения = Новый Структура("Товары_Распределенные",
	Товары_Распределенные);
		
	Возврат РезультатРаспределения;	
	
КонецФункции	

&НаСервере
Процедура ЗаполнитьРезультатыРаспределения(РезультатыРаспределения, ПоступлениеСсылка)
	
	ПоступлениеОбъект = ПоступлениеСсылка.ПолучитьОбъект();	
	ПоступлениеОбъект.Товары.Очистить();
	
	ЗаполнитьТЧТовары(ПоступлениеОбъект, РезультатыРаспределения.Товары_Распределенные);
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если ПоступлениеОбъект.Проведен Тогда
		ПоступлениеОбъект.Записать(РежимЗаписиДокумента.Проведение);
	Иначе 
		ПоступлениеОбъект.Записать(РежимЗаписиДокумента.Запись);
	КонецЕсли;	
	
КонецПроцедуры	

#КонецОбласти

#Область ВспомогательныеПроцедурыФункцииРаспределения

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

&НаСервереБезКонтекста
Функция НайтиСтрокиЗаказаПоСопоставлению(Стр_Поступления,
	ТоварыЗаказ, 
	Отб,
	лкТоварыПоступление,
	ЗапросПоискаСтроки = Неопределено) 
	
	Если ЗапросПоискаСтроки = Неопределено Тогда		
		
		ЗаполнитьЗначенияСвойств(Отб, Стр_Поступления);		
		НайдСтрокиЗаказа = ТоварыЗаказ.НайтиСтроки(Отб);	
		
	Иначе 	
		
		ЗапросПоискаСтроки.УстановитьПараметр("Табл_ТоварыЗаказа", ТоварыЗаказ);		
		лкТоварыПоступление.Очистить();
		ЗаполнитьЗначенияСвойств(лкТоварыПоступление.Добавить(), Стр_Поступления);		
		
		ЗапросПоискаСтроки.УстановитьПараметр("Табл_ТоварыПоступления", лкТоварыПоступление);		
		
		Массив_ИД_Строки = ЗапросПоискаСтроки.Выполнить().Выгрузить().ВыгрузитьКолонку("ИД_Строки");
		
		НайдСтрокиЗаказа = Новый Массив;
		
		Для Каждого ИД_Строки Из Массив_ИД_Строки Цикл 
			
			НайдСтрока = ТоварыЗаказ.Найти(ИД_Строки, "ИД_Строки");
			НайдСтрокиЗаказа.Добавить(НайдСтрока);
			
		КонецЦикла;
				
	КонецЕсли;		
	
 	Возврат НайдСтрокиЗаказа;
	
КонецФункции	

#КонецОбласти 

#Область ЗаполнениеРеквизитовМетаданных

&НаСервере
Процедура ЗаполнитьРеквизитыПоступленияНаСервере()
	
	РеквизитыТипы = Метаданные.Документы.ПриобретениеТоваровУслуг.ТабличныеЧасти.Товары.Реквизиты;

	ЗаполнитьРеквизитыДерева(РевизитыПоступления, РеквизитыТипы);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьРеквизитыЗаказаНаСервере()
	
	РеквизитыТипы = Новый Массив;	
	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"ЗаказПоставщику", Новый ОписаниеТипов("ДокументСсылка.ЗаказПоставщику")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"КодСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0))));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3))));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СуммаВзаиморасчетов", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Склад", Новый ОписаниеТипов("СправочникСсылка.Склады")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"НомерСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0))));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"КоличествоВЗаказе", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3))));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Цена", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип",
	"Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СуммаНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СуммаСНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"ПроцентРучнойСкидки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2))));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СуммаРучнойСкидки", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля()));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Сделка", Новый ОписаниеТипов("СправочникСсылка.СделкиСКлиентами")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СтатьяРасходов", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СтатьиРасходов")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"АналитикаРасходов", Новый ОписаниеТипов("СправочникСсылка.ПрочиеРасходы")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"СписатьНаРасходы", Новый ОписаниеТипов("Булево")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"ВидЦеныПоставщика", Новый ОписаниеТипов("СправочникСсылка.ВидыЦенПоставщиков")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"НоменклатураПартнера", Новый ОписаниеТипов("СправочникСсылка.НоменклатураКонтрагентов")));	
	РеквизитыТипы.Добавить(Новый Структура("Имя, Тип", 
	"Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения")));	
	
	ЗаполнитьРеквизитыДерева(РеквизитыЗаказа, РеквизитыТипы);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьРекурсивноПутьКРеквизиту(ЭлементДерева, МассивПути)
	
	МассивПути.Добавить(ЭлементДерева.ИмяРеквизита);
	
	РодительСтроки = ЭлементДерева.ПолучитьРодителя();
	
	Если РодительСтроки <> Неопределено Тогда
		ЗаполнитьРекурсивноПутьКРеквизиту(РодительСтроки, МассивПути);
	КонецЕсли;
	
КонецПроцедуры	

&НаКлиенте
Процедура ДобавитьНазваниеРеквизитаИзДерева(ЭлементДерево, ИмяТаблицы)
	
	ТекЭлемент = ЭлементДерево.ТекущиеДанные;
	
	Если ТекЭлемент = Неопределено Тогда
		Возврат;
	КонецЕсли;		
	
	лкПутьКРеквизиту = ИмяТаблицы + ПолучитьПутьКРеквизитуПоДереву(ТекЭлемент);
	
	Если ВариантНастройки = "Сопоставление" Тогда
		УсловиеСопоставления = УсловиеСопоставления + лкПутьКРеквизиту;
	Иначе 
		НоваяСтрока = ТаблУпорядочивание.Добавить();
		НоваяСтрока.РеквизитУпорядочивание = лкПутьКРеквизиту;
	КонецЕсли;
	
КонецПроцедуры	

&НаСервереБезКонтекста
Процедура ЗаполнитьРеквизитыДерева(ДеревоЭлементов, РеквизитыТипы)

	ЭлементыДерева = ДеревоЭлементов.ПолучитьЭлементы();
	ЭлементыДерева.Очистить();
	
	ОписаниеТипаВсеСсылки = ОписаниеТипаВсеСсылки();	
	ПовторениеТипов = Новый Соответствие;
	
	Для Каждого РеквизитТип Из РеквизитыТипы Цикл 
		
		НоваяСтрока = ЭлементыДерева.Добавить();
		НоваяСтрока.ИмяРеквизита = РеквизитТип.Имя;
				
		Для Каждого ТипРеквизита Из РеквизитТип.Тип.Типы() Цикл 
			
			Если ОписаниеТипаВсеСсылки.СодержитТип(ТипРеквизита) Тогда
				
				ЗаполнитьДеревоПоРеквизитам(НоваяСтрока.ПолучитьЭлементы(), 
				ТипРеквизита, 
				ОписаниеТипаВсеСсылки, 
				ПовторениеТипов,
				1);
				
			КонецЕсли;	
			
		КонецЦикла;
		
	КонецЦикла;	
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗаполнитьДеревоПоРеквизитам(ЭлементыСтроки, 
	ТипРеквизитаРод, 
	ОписаниеТипаВсеСсылки, 
	Знач ПовторениеТипов,
	Знач ДлинаВложенности)	
	
	Если ДлинаВложенности > 2 Тогда
		Возврат;
	КонецЕсли;	
	
	ДлинаВложенности = ДлинаВложенности + 1;
	
	КоличествоПовторений = ПовторениеТипов.Получить(ТипРеквизитаРод);
	
	Если КоличествоПовторений = Неопределено Тогда 
		КоличествоПовторений = 1;	
	ИначеЕсли КоличествоПовторений > 2 Тогда
		Возврат;
	КонецЕсли;	
	
	ПовторениеТиповНов = Новый Соответствие;
	
	Для Каждого Эл Из ПовторениеТипов Цикл 
		ПовторениеТиповНов.Вставить(Эл.Ключ, Эл.Значение); 
	КонецЦикла;
	
	КоличествоПовторений = КоличествоПовторений + 1;
	ПовторениеТиповНов.Вставить(ТипРеквизитаРод, КоличествоПовторений);	
	
	ОбъектИзРевизитаРодСсылка = Новый(ТипРеквизитаРод);
    РеквизитыОбъектаИзРеквизита = ОбъектИзРевизитаРодСсылка.Метаданные().Реквизиты; 	
	
	Для Каждого МетаданноеРеквизит Из РеквизитыОбъектаИзРеквизита Цикл 
		
		НоваяСтрока = ЭлементыСтроки.Добавить();
		НоваяСтрока.ИмяРеквизита = МетаданноеРеквизит.Имя;
		
		Для Каждого ТипРеквизита Из МетаданноеРеквизит.Тип.Типы() Цикл 
			
			Если ОписаниеТипаВсеСсылки.СодержитТип(ТипРеквизита) Тогда
				
				ЗаполнитьДеревоПоРеквизитам(НоваяСтрока.ПолучитьЭлементы(), 
				ТипРеквизита, 
				ОписаниеТипаВсеСсылки, 
				ПовторениеТиповНов,
				ДлинаВложенности);
				
			КонецЕсли;	
			
		КонецЦикла;	
		
	КонецЦикла;			
	
КонецПроцедуры	

#КонецОбласти

Так же для скачивания добавлено расширение для 1С:ERP Управление предприятием 2 (2.5.18.46), данный вариант можно использовать как альтернативу подключения внешней обработки, для работы расширения пользователям нужно назначить роль "Распределение товаров (РТП)"

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.13.109
  • 1С:ERP Управление предприятием 2, релизы 2.5.18.46

Обработка распределения по направлениям

См. также

Логистика, склад и ТМЦ Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

89900 руб.

09.06.2020    38702    28    59    

64

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    194980    150    243    

280

Логистика, склад и ТМЦ Платформа 1С v8.3 Россия Платные (руб)

Подсистема автоматизированного управления складом AS WMS для конфигураций на платформе 1С 8. AS WMS – готовое решение для эффективного управления, хранения и учета на адресном складе. Внедрение системы AS WMS способствует быстрому отбору товара, ускорению инвентаризации, снижению зависимости от персонала, исключению пересорта. AS WMS встраивается в любую конфигурацию на платформе 1С 8 и работает как единая система без обменов. В учетной системе нет необходимости менять процессы под AS WMS (например, вводить ордерную схему), AS WMS использует стандартные документы по товародвижению вашей учетной системы.

40000 руб.

26.07.2023    6089    21    0    

12

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 10.10.2024, версия 9.8 - 9.13)

15600 руб.

20.11.2015    156102    376    378    

513

Логистика, склад и ТМЦ Бухгалтер Пользователь Платформа 1С v8.3 Сельское хозяйство и рыболовство Строительство Горнодобывающая промышленность Розничная и сетевая торговля (FMCG) Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Лесное и деревообрабатывающее хозяйство Управленческий учет Платные (руб)

Позволяет автоматизировать процесс взвешивания ТМЦ в организациях, осуществляющих приемку и отгрузку различным транспортом, для ведения складского учета и контроля остатков на складах. Конфигурация позволяет фиксировать вес вручную, напрямую с весов, а также управлять дополнительным оборудованием и контролировать движение транспорта.

35000 руб.

24.03.2015    125686    300    114    

136

SALE! 15%

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 9435 руб.

29.10.2014    216763    657    527    

456

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 руб.

21.04.2017    96398    125    40    

214
Оставьте свое сообщение