Загрузка данных



&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка=ложь;
	ПутьКФайлу =  "";
	выборФ = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	выборф.Фильтр = НСтр("ru = 'dbf'; en = 'dbf'")  + "(*.dbf)|*.dbf";
	выборф.МножественныйВыбор = ложь;
	выборф.Заголовок = "Выберите файл";
	выборф.Каталог ="C:\SERVICE1\Obmen\Выгрузки"; 
	если выборф.Выбрать() тогда 
		Файл = выборф.ПолноеИмяФайла;
		Возврат;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Файл = "";
	Сгруппировать = ложь;
	проставитьСгрупп();
	
КонецПроцедуры

&НаСервере
Процедура ЗагрузкаНаСервере(АдресХран)
	локф = КаталогВременныхФайлов()+"\obmen.dbf";
	дд = ПолучитьИзВременногоХранилища(АдресХран);
	дд.Записать(локф);
	dBase = новый XBase(локф);
	Таблица=Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("ДатаДокумента");
	Таблица.Колонки.Добавить("ТипДокумента");
	Таблица.Колонки.Добавить("ФинНомер");	
	Таблица.Колонки.Добавить("Номенклатура");
	Таблица.Колонки.Добавить("Количество");
	Таблица.Колонки.Добавить("Сумма");
	Таблица.Колонки.Добавить("КатНомер");	
	Таблица.Колонки.Добавить("ГТД");	
	Таблица.Колонки.Добавить("Страна");	
	
	Таблица.Колонки.Добавить("Контрагент");
	Таблица.Колонки.Добавить("КонтрагентПолное");
	Таблица.Колонки.Добавить("КонтрагентАдрес");	
	Таблица.Колонки.Добавить("КонтрагентИНН");	
	Таблица.Колонки.Добавить("КонтрагентКПП");
	
	Таблица.Колонки.Добавить("Организация");
	Таблица.Колонки.Добавить("ОрганизацияИНН");
	Таблица.Колонки.Добавить("Склад");
	
	Таблица.Колонки.Добавить("СтавкаНДС");
	Таблица.Колонки.Добавить("СуммаНДС");
	
	//заполнение таблицы
	dBase.Первая();
	Пока Не dBase.ВКонце() Цикл
		Если СокрЛП(Организация.ИНН) <> СокрЛП(dBase.FirmINN) Тогда
			dBase.Следующая();
			Продолжить;
		КонецЕсли;
		
		СтрТаб = Таблица.Добавить();
		СтрТаб.ДатаДокумента = dBase.Data;
		СтрТаб.ТипДокумента = СокрЛП(dBase.DokTip);
		СтрТаб.ФинНомер = СокрЛП(dBase.FinNom);
		СтрТаб.Номенклатура = СокрЛП(dBase.Nomen);
		СтрТаб.Количество = dBase.Kol;
		СтрТаб.Сумма = dBase.Summa;
		попытка 
			СтрТаб.СтавкаНДС = СокрЛП(dBase.StavNDS);
			СтрТаб.СуммаНДС = dBase.SumNDS;
		Исключение КонецПопытки;
		СтрТаб.КатНомер = СокрЛП(dBase.KatNomer);
		СтрТаб.ГТД = СокрЛП(dBase.GTD);
		СтрТаб.Страна = СокрЛП(dBase.Strana);
		
		СтрТаб.Контрагент = СокрЛП(dBase.Kontr);
		СтрТаб.КонтрагентАдрес = СокрЛП(dBase.Adres);
		СтрТаб.КонтрагентИНН = СокрЛП(dBase.KontrINN); 
		СтрТаб.КонтрагентКПП = СокрЛП(dBase.KontrKPP);
		СтрТаб.КонтрагентПолное = СокрЛП(dBase.UrNaim);
		
		СтрТаб.Организация = СокрЛП(dBase.Firm);
		СтрТаб.ОрганизацияИНН = СокрЛП(dBase.FirmINN);
		СтрТаб.Склад = СокрЛП(dBase.Sklad);
		
		dBase.Следующая();
	КонецЦикла;  
	
	Таблица.Сортировать("ФинНомер");
	ФинНомер = "";
	Поступление = Неопределено;
	Для каждого Стр из Таблица цикл
		Если Стр.ФинНомер = "FINNOM" Тогда
			Продолжить;
		КонецЕсли;
		
		Если ФинНомер <> Стр.ФинНомер Тогда
			Если Поступление <> Неопределено Тогда
				Поступление.Записать();	
			КонецЕсли;	
			Контрагент = ПроверитьКонтрагента(Организация,Стр.Контрагент,Стр.КонтрагентИНН,Стр.КонтрагентКПП,Стр.КонтрагентАдрес,Стр.КонтрагентПолное, Истина);
			ЕстьПоступление = ПроверкаНаличияПоступленияВБазе(Документы.ПоступлениеТоваровУслуг.ПустаяСсылка(), Стр.ФинНомер, Стр.ДатаДокумента, Контрагент);
			Если ЕстьПоступление = "Документа нет" Тогда 
				Поступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
				Поступление.НомерВходящегоДокумента = Стр.ФинНомер;
				Поступление.ДатаВходящегоДокумента = Стр.ДатаДокумента;
				Поступление.Дата = Стр.ДатаДокумента;
				Поступление.УстановитьНовыйНомер(Организация.Префикс);
				Сообщить("Создаем документ Поступления " + Поступление.Номер);
				Поступление.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
				Поступление.Контрагент = Контрагент;
				Поступление.ДоговорКонтрагента = ПолучитьОсновнойДоговор(Поступление.Контрагент,Организация,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком);
				Поступление.Организация = Организация;
				Поступление.Склад = СопоставитьСклад(Стр.Склад);
				Если ЗначениеЗаполнено(Поступление.Склад) И ЗначениеЗаполнено(Поступление.Склад.ПодразделениеОрганизации)Тогда 
					Поступление.ПодразделениеОрганизации = Поступление.Склад.ПодразделениеОрганизации;
				КонецЕсли;
				
				Поступление.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
				Поступление.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить();
				Поступление.Ответственный = ПараметрыСеанса.ТекущийПользователь;
				Поступление.НДСВключенВСтоимость = Истина; 
				Поступление.НДСНеВыделять = Истина; 
				Поступление.СуммаВключаетНДС = Истина;
				Поступление.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
				Поступление.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным;
				
			Иначе
				ФинНомер = Стр.ФинНомер;
				Продолжить;
			КонецЕсли;
		КонецЕсли;
		
		Если Поступление <> Неопределено Тогда

			//если Сгруппировать тогда
			//	для каждого стр из ТЗНом цикл 
			//		стр.Номенклатура = "Автозапчасти";
			//		стр.КатНомер = "000000";
			//		стр.ГТД="";
			//		стр.Страна="";
			//	КонецЦикла;
			//	ТЗНом.Свернуть("ДатаДокумента,ТипДокумента,ФинНомер,Контрагент,ЮрНаименование,"+
			//		"Адрес,ИНН,КПП,НомерСчета,ДатаСчета,ДатаСчетаФактуры,НомерСчетаФактуры,Склад,КатНомер,Номенклатура,ГТД,Страна",
			//		"Количество,Сумма,СуммаНДС");
			//КонецЕсли;		
			//
			//если СокрЛП(стр.ГТД)="" или СокрЛП(стр.ГТД)="<>" тогда
			//	НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка();
			//иначе 	
			//	НайденнаяГТД = Справочники.НомераГТД.НайтиПоКоду(стр.ГТД);
			//	Если стр.ГТД<>"" и (НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка() ИЛИ НайденнаяГТД = Неопределено) Тогда 
			//		НоваяГТД = Справочники.НомераГТД.СоздатьЭлемент();
			//		//Сообщить("Создали новый ГТД "+стр.ГТД);
			//		НоваяГТД.Код = стр.ГТД;
			//		НоваяГТД.Записать();
			//	КонецЕсли;
			//КонецЕсли;
			
			Номенклатура = ПроверитьНоменклатуру(стр.Номенклатура, стр.КатНомер, стр.ГТД, стр.Страна,"приход");
			ТЧПоступление = Поступление.Товары.Добавить();
			ТЧПоступление.Номенклатура = Номенклатура;
			ТЧПоступление.Количество = стр.Количество;
			ТЧПоступление.Сумма = стр.Сумма;
			ТЧПоступление.Цена = стр.Сумма / ?(стр.Количество =0 , 1, стр.Количество);
			// + 07.07.2025 Задача №61436  
			ТЧПоступление.СтавкаНДС = СопоставитьСтавкуНДС(стр.СтавкаНДС);
			ТЧПоступление.СуммаНДС = стр.СуммаНДС;
			Если ТЧПоступление.СуммаНДС <> 0 Тогда 
				Поступление.НДСВключенВСтоимость = Истина;
				Поступление.СуммаВключаетНДС = Истина;
				Поступление.НДСНеВыделять = Ложь;
			КонецЕсли; 	
			ТЧПоступление.ОтражениеВУСН = ПоступлениеТоваровУслугФормыКлиентСервер.ОтражениеВУСН(Поступление.ВидОперации, Ложь);
			
			//ТЧПоступление.ОтражениеВУСН = Перечисления.ОтражениеВУСН.НеПринимаются;
			//ТЧПоступление.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;     
			// - 07.07.2025 Задача №61436
			ТЧПоступление.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
		КонецЕсли;
		ФинНомер = Стр.ФинНомер;
	КонецЦикла;
	Если Поступление <> Неопределено Тогда
		Поступление.Записать();
	КонецЕсли;
	
КонецПроцедуры 

&НаСервереБезКонтекста
Функция ПроверитьКонтрагента(Организация, Контрагент, ИНН, КПП, Адрес, ЮрНаим, Поступление) 
	
	НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
	
	Если СокрЛП(ИНН) <> "" Тогда 
		НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", СокрЛП(ИНН));
	КонецЕсли;
	
	Если НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка() или НайденныйКонтрагент.ПометкаУдаления Тогда 
		НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Контрагент),Истина);
	КонецЕсли;
	
	Если НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка() или НайденныйКонтрагент.ПометкаУдаления Тогда 
		запрос = новый Запрос;
		запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
		|	Контрагенты.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|ГДЕ
		|	(Контрагенты.НаименованиеПолное ПОДОБНО ""%"" + &НаименованиеПолное + ""%""
		|			ИЛИ Контрагенты.Наименование = &Наименование
		|			ИЛИ Контрагенты.Наименование = &НаименованиеПолное
		|			ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО ""%"" + &Наименование + ""%"")
		|	И НЕ Контрагенты.ЭтоГруппа
		|	И НЕ Контрагенты.ПометкаУдаления
		|
		|УПОРЯДОЧИТЬ ПО
		|	Ссылка УБЫВ";
		запрос.УстановитьПараметр("Наименование",ПреобразоватьИмя(СокрЛП(Контрагент)));
		запрос.УстановитьПараметр("НаименованиеПолное",ЮрНаим);
		рез = запрос.Выполнить().Выбрать();
		если рез.Следующий() тогда 
			НайденныйКонтрагент = рез.ссылка;
		КонецЕсли;	
	КонецЕсли;
	
	если ЗначениеЗаполнено(НайденныйКонтрагент) тогда 
		//проверим договор на основной
		запрос = новый запрос;
		запрос.Текст=
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ДоговорыКонтрагентов.Владелец,
		|	ДоговорыКонтрагентов.Ссылка,
		|	ДоговорыКонтрагентов.Наименование
		|ИЗ
		|	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		|ГДЕ
		|	ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
		|	И ДоговорыКонтрагентов.Владелец = &Владелец
		|	И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
		|	И ДоговорыКонтрагентов.Организация = &Организация
		|	И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора";
		
		
		запрос.УстановитьПараметр("ВидДоговора",?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем));
		запрос.УстановитьПараметр("Организация",Организация);
		запрос.УстановитьПараметр("Владелец",НайденныйКонтрагент.Ссылка);
		рез=запрос.Выполнить().Выгрузить();
		//если рез.Количество()=1 или (не ЗначениеЗаполнено(ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем))) и рез.Количество()>0) тогда 
		если рез.Количество()=0 или не ЗначениеЗаполнено(ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем))) тогда	
			
			новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
			новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
			новДог.Организация = Организация;
			новДог.Владелец = НайденныйКонтрагент.Ссылка;
			новДог.Наименование = ?(Поступление,"Счет","Основной");
			новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
			новДог.Записать();
			Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
			рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
			рс.ВидДоговора = новДог.ВидДоговора;
			рс.Договор = новДог.Ссылка;
			рс.Контрагент = НайденныйКонтрагент.Ссылка;
			рс.Организация = Организация;
			рс.Записать(Истина);
			
		//ИначеЕсли рез.Количество()>0 тогда
		//	
		//	
		//	рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
		//		рс.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
		//		рс.Договор = рез[0].Ссылка;
		//		рс.Контрагент = НайденныйКонтрагент.Ссылка;
		//		рс.Организация = Организация;
		//		рс.Записать(Истина);
		//		
		//		
		//		
		//	если Поступление тогда 
		//		НаимДог = "Счет";
		//	КонецЕсли;
		//	
		//	если Поступление тогда 
		//		
		//		новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
		//		новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
		//		новДог.Организация = Организация;
		//		новДог.Владелец = НайденныйКонтрагент.Ссылка;
		//		новДог.Наименование = НаимДог;
		//		новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
		//		новДог.Записать();
		//		Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
		//		
		//	иначе
		//		
		//		найд = рез.найти("Договор оферты","Наименование");
		//		если найд<>Неопределено тогда 
		//			новДог = найд.ссылка;
		//		иначе 
		//			новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
		//			новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
		//			новДог.Организация = Организация;
		//			новДог.Владелец = НайденныйКонтрагент.Ссылка;
		//			новДог.Наименование = НаимДог;
		//			новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
		//			новДог.Записать();
		//			Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
		//		КонецЕсли;  			
		//		
		//	КонецЕсли;
		//	
		//	если ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем)) <>новДог.Ссылка  тогда
		//		рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
		//		рс.ВидДоговора = новДог.ВидДоговора;
		//		рс.Договор = новДог.Ссылка;
		//		рс.Контрагент = НайденныйКонтрагент.Ссылка;
		//		рс.Организация = Организация;
		//		рс.Записать(Истина);
		//	КонецЕсли;
		//	
		//ИначеЕсли рез.Количество()=0 тогда 
		//	
		//	если Поступление тогда 
		//		НаимДог = "Счет";
		//	КонецЕсли;
		//	
		//	новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
		//	новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
		//	новДог.Организация = Организация;
		//	новДог.Владелец = НайденныйКонтрагент.Ссылка;
		//	новДог.Наименование = НаимДог;
		//	новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
		//	новДог.Записать();
		//	Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
		//	рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
		//	рс.ВидДоговора = новДог.ВидДоговора;
		//	рс.Договор = новДог.Ссылка;
		//	рс.Контрагент = НайденныйКонтрагент.Ссылка;
		//	рс.Организация = Организация;
		//	рс.Записать(Истина);
		КонецЕсли;
		
	конецесли;
	
	если не ЗначениеЗаполнено(НайденныйКонтрагент) тогда 
		
		КраткоеИмя = ПреобразоватьИмя(СокрЛП(Контрагент));
		
		НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
		НовыйКонтрагент.Наименование = КраткоеИмя;
		НовыйКонтрагент.УстановитьНовыйКод();
		НовыйКонтрагент.НаименованиеПолное = ЮрНаим;
		НовыйКонтрагент.ИНН = ИНН;
		
		если СтрДлина(НовыйКонтрагент.ИНН)<>12 тогда 
			НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
		иначе 
			НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
		КонецЕсли;	
		НовыйКонтрагент.КПП = КПП;
		НовыйКонтрагент.Записать();
		Сообщить("Создали нового контрагента "+НовыйКонтрагент.Наименование+" ИНН "+ИНН);
		если Поступление тогда 
			НаимДог = "Счет";
		КонецЕсли;
		
		новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
		новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
		новДог.Организация = Организация;
		новДог.Владелец = НовыйКонтрагент.Ссылка;
		новДог.Наименование = НаимДог;
		новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
		новДог.Записать();
		Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НовыйКонтрагент.Ссылка);
		
		рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
		рс.ВидДоговора = новДог.ВидДоговора;
		рс.Договор = новДог.Ссылка;
		рс.Контрагент = новДог.Владелец;
		рс.Организация = Организация;
		рс.Записать(Истина);
		
		Возврат НовыйКонтрагент.Ссылка;
		
	Иначе 
		Возврат НайденныйКонтрагент;
	КонецЕсли;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПреобразоватьИмя(Имя)
	
	Новимя = имя;
	
	если Врег(лев(Новимя,3)) = "ИП " тогда 
		новИмя = СокрЛП(Прав(Новимя,СтрДлина(Новимя)-3));
	КонецЕсли;	
	
	если Найти(Новимя,"""")>0 тогда 
		перваякавычка =  Найти(Новимя,"""");
		Новимя = Прав(Новимя,СтрДлина(Новимя)-перваякавычка);
		втораякавычка =  Найти(Новимя,"""");
		если втораякавычка>0 тогда 
			Новимя = Лев(Новимя,втораякавычка-1);
		КонецЕсли;
	КонецЕсли;	
	Новимя = СокрЛП(Новимя);
	
	Возврат Новимя;
	
КонецФункции	

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

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

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

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

&НаСервереБезКонтекста
Процедура СозданиеСчетФактуры(Ссылка,Номер,ДатаДокумента)
	найд = Документы.СчетФактураВыданный.НайтиПоРеквизиту("ДокументОснование",Ссылка);
	если ЗначениеЗаполнено(найд) тогда 
		СчетФактура = найд.ПолучитьОбъект();
	иначе 			
		СчетФактура =  Документы.СчетФактураВыданный.СоздатьДокумент();
		Сообщить("Создаем новую С/Ф для "+ссылка);
	КонецЕсли;
	ЗаполнитьЗначенияСвойств(СчетФактура,Ссылка);
	СчетФактура.Дата = ДатаДокумента;
	СчетФактура.Номер = Номер;
	СчетФактура.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
	СчетФактура.ДокументОснование = Ссылка;
	СчетФактура.Контрагент = Ссылка.КОнтрагент;
	СчетФактура.ДоговорКонтрагента = Ссылка.ДоговорКонтрагента;
	СчетФактура.СуммаДокумента = Ссылка.СуммаДокумента;
	СчетФактура.ВалютаДокумента = Ссылка.ВалютаДокумента;
	СчетФактура.Организация = Ссылка.Организация;
	ТЧСчетФактура = СчетФактура.ДокументыОснования.Добавить();
	ТЧСчетФактура.ДокументОснование = Ссылка;
	СчетФактура.Записать();			
КонецПроцедуры

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

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

&НаКлиенте
Процедура Загрузка(Команда)
	
	АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл),ЭтаФорма.УникальныйИдентификатор); 	
	ЗагрузкаНаСервере(АдресХранилища);	
	
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	проставитьСгрупп();
КонецПроцедуры

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

&НаСервере
процедура проставитьСгрупп() 
	если ЗначениеЗаполнено(Организация) и Организация = Справочники.Организации.НайтиПоКоду("МБ-000004") тогда 
		Сгруппировать=Истина;
	иначе 
		Сгруппировать = ложь;
	КонецЕсли;	
	
КонецПроцедуры	

&НаСервере
Процедура ЗагрузитьЧекиНаСервере(АдресХран)
	
	локф = КаталогВременныхФайлов()+"\obmen.dbf";
	дд = ПолучитьИзВременногоХранилища(АдресХран);
	дд.Записать(локф);
	dBase = новый XBase(локф);
	Таблица=Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("ДатаДокумента");
	Таблица.Колонки.Добавить("ТипДокумента");
	Таблица.Колонки.Добавить("Номенклатура");
	Таблица.Колонки.Добавить("Количество");
	Таблица.Колонки.Добавить("Сумма");
	Таблица.Колонки.Добавить("КатНомер");	

	Таблица.Колонки.Добавить("СтавкаНДС");
	Таблица.Колонки.Добавить("СуммаНДС");
	
	Таблица.Колонки.Добавить("Организация");
	Таблица.Колонки.Добавить("ОрганизацияИНН");
	Таблица.Колонки.Добавить("Склад");
	
	//заполнение таблицы
	dBase.Первая();
	Пока Не dBase.ВКонце() Цикл
		Если СокрЛП(Организация.ИНН) <> СокрЛП(dBase.FirmINN) Тогда
			dBase.Следующая();
			Продолжить;
		КонецЕсли;
		
		СтрТаб=Таблица.Добавить();
		СтрТаб.ДатаДокумента=dBase.Data;
		СтрТаб.Номенклатура=СокрЛП(dBase.Nomen);
		СтрТаб.Количество=dBase.Kol;
		СтрТаб.Сумма=dBase.Summa;
		СтрТаб.КатНомер=СокрЛП(dBase.KatNomer);
		СтрТаб.Склад=СокрЛП(dBase.Sklad);
		попытка 
			СтрТаб.СтавкаНДС = СокрЛП(dBase.StavNDS);
			СтрТаб.СуммаНДС = dBase.SumNDS;
		Исключение КонецПопытки;
		dBase.Следующая();
	КонецЦикла;  
	
	ПеремСклад = "";
	НовыйДокумент = Неопределено;
	
	Если Таблица.Количество() > 0 Тогда
		Таблица.Сортировать("Склад Возр, ДатаДокумента Возр");

		Для каждого Стр из Таблица Цикл
			
			Если ПеремСклад <> Стр.Склад Тогда
				Если НовыйДокумент <> Неопределено Тогда
					НовыйДокумент.Записать();
				КонецЕсли;
				
				НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
				НовыйДокумент.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить();
				НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетККМОПродажах;
				НовыйДокумент.Организация = Организация;
				НовыйДокумент.Ответственный = ПараметрыСеанса.ТекущийПользователь;
				НовыйДокумент.СчетКасса = ПланыСчетов.Хозрасчетный.КассаОрганизации;
				НовыйДокумент.Дата = КонецДня(Стр.ДатаДокумента);
				НовыйДокумент.Склад = СопоставитьСклад(Стр.Склад);
				Если ЗначениеЗаполнено(НовыйДокумент.Склад) И ЗначениеЗаполнено(НовыйДокумент.Склад.ПодразделениеОрганизации)Тогда 
					НовыйДокумент.ПодразделениеОрганизации = НовыйДокумент.Склад.ПодразделениеОрганизации;
				КонецЕсли;
			КонецЕсли;
			
			Номенклатура = НайтиНоменклатуру(стр.Номенклатура, стр.КатНомер);
			НовСтрока = НовыйДокумент.Товары.Добавить();
			НовСтрока.Номенклатура = Номенклатура;
			НовСтрока.Количество = стр.Количество;
			НовСтрока.Сумма = стр.Сумма;
			НовСтрока.Цена = стр.Сумма / ?(стр.Количество =0 , 1, стр.Количество);
			//НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
			НовСтрока.СтавкаНДС = СопоставитьСтавкуНДС(стр.СтавкаНДС);
			НовСтрока.СуммаНДС = стр.СуммаНДС;
			Если НовСтрока.СуммаНДС <> 0 Тогда 
				НовыйДокумент.СуммаВключаетНДС = Истина;
			КонецЕсли;
			
			НовСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
			НовСтрока.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
			НовСтрока.СчетДоходов  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
			
			ПеремСклад = Стр.Склад;
		КонецЦикла;
		
		НовыйДокумент.Записать();
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ЗагрузитьЧеки(Команда)
	
	АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл),ЭтаФорма.УникальныйИдентификатор); 	
	ЗагрузитьЧекиНаСервере(АдресХранилища);
	
КонецПроцедуры

&НаСервере
Функция СопоставитьСтавкуНДС(СтавкаНДС)
	
	Если СтавкаНДС = "Ставка20" или СтавкаНДС = "20%" Тогда 
		Возврат Перечисления.СтавкиНДС.НДС20;
	ИначеЕсли СтавкаНДС = "Ставка18" или СтавкаНДС = "18%" Тогда 
		Возврат Перечисления.СтавкиНДС.НДС18;
	ИначеЕсли СтавкаНДС = "Ставка10" или СтавкаНДС = "10%" Тогда 
		Возврат Перечисления.СтавкиНДС.НДС10;
	ИначеЕсли СтавкаНДС = "Ставка7" или СтавкаНДС = "7%" Тогда 
		Возврат Перечисления.СтавкиНДС.НДС7;
	ИначеЕсли СтавкаНДС = "Ставка5" или СтавкаНДС = "5%" Тогда 
		Возврат Перечисления.СтавкиНДС.НДС5;
	ИначеЕсли СтавкаНДС = "БезНДС" Тогда 
		Возврат Перечисления.СтавкиНДС.БезНДС;
	Иначе
		Возврат Перечисления.СтавкиНДС.ПустаяСсылка();
	КонецЕсли;
	
КонецФункции

&НаСервере
Функция СопоставитьСклад(СкладКодЗПЧ)

	Если Найти(НРег(СтрокаСоединенияИнформационнойБазы()),"автоточка")>0 Тогда 
		Если СокрЛП(СкладКодЗПЧ) = "H-0000014" Тогда 
			Возврат Справочники.Склады.НайтиПоКоду("H-0000014");
		Иначе
			Возврат Справочники.Склады.НайтиПоКоду("H-0000014");
		КонецЕсли;
	ИначеЕсли Найти(НРег(СтрокаСоединенияИнформационнойБазы()),"автомастер")>0 Тогда 
		Если СокрЛП(СкладКодЗПЧ) = "OFC000057" Тогда 
			Возврат Справочники.Склады.НайтиПоКоду("A00000017");
		ИначеЕсли СокрЛП(СкладКодЗПЧ) = "OFC000041" Тогда 
			Возврат Справочники.Склады.НайтиПоКоду("OFC000041");
		Иначе
			Возврат Справочники.Склады.НайтиПоНаименованию("Основной склад");
		КонецЕсли;
	Иначе
		Возврат Справочники.Склады.НайтиПоНаименованию("Основной склад");
	КонецЕсли;	
	
КонецФункции