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


перем Путь;

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

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

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

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

Процедура Кнопка1Нажатие(Элемент)
	Если ВыгрузкаВОООНовый Тогда
		НовыйАлгоритмВыгрузкиООО(); 
	Иначе
		
		ФайлОбмена=Новый XBase;	
		ФайлОбмена.поля.Добавить("DokTip","S",6);
		ФайлОбмена.поля.Добавить("FinNom","S",12);
		ФайлОбмена.поля.Добавить("Data","D");
		ФайлОбмена.поля.Добавить("Nomen","S",250);
		ФайлОбмена.поля.Добавить("Kol","N",15,3);
		ФайлОбмена.поля.Добавить("Summa","N",15,3);
		ФайлОбмена.поля.Добавить("SummaNDS","N",15,3);
		ФайлОбмена.поля.Добавить("NDSV","N",15,3);
		ФайлОбмена.поля.Добавить("Kontr","S",250);
		ФайлОбмена.поля.Добавить("KatNomer","S",50);
		ФайлОбмена.поля.Добавить("GTD","S",100);	
		ФайлОбмена.поля.Добавить("Strana","S",250);
		ФайлОбмена.поля.Добавить("UrNaim","S",250);
		ФайлОбмена.поля.Добавить("Adres","S",250);
		ФайлОбмена.поля.Добавить("INN","S",150);
		ФайлОбмена.поля.Добавить("KPP","S",150);
		ФайлОбмена.поля.Добавить("Zakaz","N",1,0);
		ФайлОбмена.поля.Добавить("Firm","S",250);
		ФайлОбмена.поля.Добавить("CheckVid","S",50);
		ФайлОбмена.поля.Добавить("CheckBase","S",50);
		ФайлОбмена.поля.Добавить("Sklad","S",150);
		ФайлОбмена.поля.Добавить("SkladName","S",150);
		ФайлОбмена.поля.Добавить("NChPost","S",100);
		ФайлОбмена.поля.Добавить("DChPost","D");
		ФайлОбмена.поля.Добавить("DCHFAC","D");
		ФайлОбмена.поля.Добавить("NCHFAC","S",100);
		ФайлОбмена.поля.Добавить("StavNDS","S",50);
		ФайлОбмена.поля.Добавить("SumNDS","N",15,3);
		ФайлОбмена.поля.Добавить("NumPost","S",100);
		ФайлОбмена.поля.Добавить("Carrier","S",100);
		ФайлОбмена.поля.Добавить("SumPost","N",15,3);
		ФайлОбмена.поля.Добавить("NumPoz","N",15,0);
		
		ФайлОбмена.поля.Добавить("DNPR","D");
		ФайлОбмена.поля.Добавить("NNPR","S",100);
		ФайлОбмена.поля.Добавить("DCHFPR","D");
		ФайлОбмена.поля.Добавить("NCHFPR","S",100);
		
		ФайлОбмена.СоздатьФайл(ПутьФ);
		
		Запрос=Новый Запрос;
		Запрос.Текст=
		"ВЫБРАТЬ
		|	РасходнаяНакладнаяНоменклатура.Ссылка КАК Ссылка,
		|	ОстаткиТоваров.Номенклатура,
		|	ОстаткиТоваров.Характеристика,
		|	ОстаткиТоваров.Количество КАК Количество,
		|	ВЫБОР
		|		КОГДА СУММА(РасходнаяНакладнаяНоменклатура.Количество) = 0
		|			ТОГДА 0
		|		ИНАЧЕ МАКСИМУМ(ОстаткиТоваров.Количество) * СУММА(РасходнаяНакладнаяНоменклатура.Сумма) / СУММА(РасходнаяНакладнаяНоменклатура.Количество)
		|	КОНЕЦ КАК Сумма,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Покупатель КАК Контрагент,
		|	NULL КАК ВидДокумента,
		|	ВЫБОР
		|		КОГДА РасходнаяНакладнаяНоменклатура.Ссылка.Фирма.Оф
		|			ТОГДА ОстаткиТоваров.ГТД
		|		ИНАЧЕ ЗНАЧЕНИЕ(справочник.номерагтд.пустаяссылка)
		|	КОНЕЦ КАК ГТД,
		|	NULL КАК ВидОперации,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Фирма.Код,
		|	NULL КАК ДокументОснование,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Склад КАК Склад,
		|	NULL КАК НомерСчетаПоставщика,
		|	NULL КАК ДатаСчетаПоставщика,
		|	МАКСИМУМ(ВЫБОР
		|			КОГДА ОстаткиТоваров.НоменклатураПоставщика <> ЗНАЧЕНИЕ(Справочник.НоменклатураПоставщика.пустаяссылка)
		|				ТОГДА ОстаткиТоваров.НоменклатураПоставщика
		|			КОГДА ЕСТЬNULL(ПоступлениеТМЦНоменклатура.НоменклатураПоставщика, """") <> """"
		|				ТОГДА ПоступлениеТМЦНоменклатура.НоменклатураПоставщика
		|			ИНАЧЕ ОстаткиТоваров.Номенклатура
		|		КОНЕЦ) КАК НоменклатураПоставщика,
		|	ОстаткиТоваров.НомерСтроки КАК НомерСтроки,
		|	РасходнаяНакладнаяНоменклатура.СтавкаНДС,
		|	ВЫБОР
		|		КОГДА СУММА(РасходнаяНакладнаяНоменклатура.Количество) = 0
		|			ТОГДА 0
		|		ИНАЧЕ МАКСИМУМ(ОстаткиТоваров.Количество) * СУММА(РасходнаяНакладнаяНоменклатура.СуммаНДС) / СУММА(РасходнаяНакладнаяНоменклатура.Количество)
		|	КОНЕЦ КАК СуммаНДС
		|ИЗ
		|	(ВЫБРАТЬ
		|		ОстаткиТоваров.Регистратор КАК Регистратор,
		|		ОстаткиТоваров.НомерСтроки КАК НомерСтроки,
		|		ОстаткиТоваров.Номенклатура КАК Номенклатура,
		|		ОстаткиТоваров.Характеристика КАК Характеристика,
		|		ОстаткиТоваров.ДокументПоставки КАК ДокументПоставки,
		|		ОстаткиТоваров.ГТД КАК ГТД,
		|		ОстаткиТоваров.НоменклатураПоставщика КАК НоменклатураПоставщика,
		|		ОстаткиТоваров.Количество КАК Количество,
		|		ОстаткиТоваров.Стоимость КАК Стоимость,
		|		NULL КАК ДокументОснованиеСклад
		|	ИЗ
		|		РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
		|	ГДЕ
		|		ОстаткиТоваров.Регистратор ССЫЛКА Документ.РасходнаяНакладная
		|		И ОстаткиТоваров.Регистратор.Бух = ЛОЖЬ
		|		И ОстаткиТоваров.Регистратор.ФинДокумент = ИСТИНА
		|		И (ОстаткиТоваров.Регистратор.Дата МЕЖДУ &ПериодС И &ПериодПо
		|				ИЛИ ОстаткиТоваров.Регистратор.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|		И ОстаткиТоваров.Регистратор.Фирма = &Фирма
		|		И &ПараметрПервыйРасходнаяНакладная
		|	
		|	ОБЪЕДИНИТЬ ВСЕ
		|	
		|	ВЫБРАТЬ
		|		Бухгалтерский.Регистратор,
		|		Бухгалтерский.НомерСтроки,
		|		Бухгалтерский.Номенклатура,
		|		Бухгалтерский.Характеристика,
		|		Бухгалтерский.ДокументПоставки,
		|		Бухгалтерский.ГТД,
		|		Бухгалтерский.НоменклатураПоставщика,
		|		Бухгалтерский.Количество,
		|		Бухгалтерский.Стоимость,
		|		NULL
		|	ИЗ
		|		РегистрНакопления.Бухгалтерский КАК Бухгалтерский
		|	ГДЕ
		|		Бухгалтерский.Регистратор ССЫЛКА Документ.РасходнаяНакладная
		|		И Бухгалтерский.Регистратор.Бух
		|		И Бухгалтерский.Регистратор.ФинДокумент = ИСТИНА
		|		И (Бухгалтерский.Регистратор.Дата МЕЖДУ &ПериодС И &ПериодПо
		|				ИЛИ Бухгалтерский.Регистратор.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|		И Бухгалтерский.Регистратор.Фирма = &Фирма
		|	
		|	ОБЪЕДИНИТЬ ВСЕ
		|	
		|	ВЫБРАТЬ
		|		РасходнаяНакладнаяНоменклатура.Ссылка,
		|		РасходнаяНакладнаяНоменклатура.НомерСтроки,
		|		РасходнаяНакладнаяНоменклатура.Номенклатура,
		|		РасходнаяНакладнаяНоменклатура.Характеристика,
		|		РасходнаяНакладнаяНоменклатура.ДокументПоставки,
		|		РасходнаяНакладнаяНоменклатура.ГТД,
		|		РасходнаяНакладнаяНоменклатура.НоменклатураПоставщика,
		|		РасходнаяНакладнаяНоменклатура.Количество,
		|		РасходнаяНакладнаяНоменклатура.Сумма,
		|		РасходнаяНакладнаяНоменклатура.Ссылка.ДокументОснование.Склад
		|	ИЗ
		|		Документ.РасходнаяНакладная.Номенклатура КАК РасходнаяНакладнаяНоменклатура
		|	ГДЕ
		|		РасходнаяНакладнаяНоменклатура.Ссылка.ФинДокумент = ИСТИНА
		|		И РасходнаяНакладнаяНоменклатура.Ссылка.Проведен = ЛОЖЬ
		|		И РасходнаяНакладнаяНоменклатура.Ссылка.Фирма = &Фирма
		|		И РасходнаяНакладнаяНоменклатура.Ссылка.Бух = ЛОЖЬ
		|		И (РасходнаяНакладнаяНоменклатура.Ссылка.Дата МЕЖДУ &ПериодС И &ПериодПо
		|				ИЛИ РасходнаяНакладнаяНоменклатура.Ссылка.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|		И &ПараметрВыгрузкиНеПроведенныхРасходников
		|		И НЕ РасходнаяНакладнаяНоменклатура.Ссылка.ПометкаУдаления) КАК ОстаткиТоваров
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.Номенклатура КАК РасходнаяНакладнаяНоменклатура
		|		ПО (РасходнаяНакладнаяНоменклатура.Ссылка = ОстаткиТоваров.Регистратор)
		|			И (РасходнаяНакладнаяНоменклатура.Номенклатура = ОстаткиТоваров.Номенклатура)
		|			И (РасходнаяНакладнаяНоменклатура.Характеристика = ОстаткиТоваров.Характеристика)
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТМЦ.Номенклатура КАК ПоступлениеТМЦНоменклатура
		|		ПО ОстаткиТоваров.Номенклатура = ПоступлениеТМЦНоменклатура.Номенклатура
		|			И ОстаткиТоваров.Характеристика = ПоступлениеТМЦНоменклатура.Характеристика
		|			И ОстаткиТоваров.ДокументПоставки = ПоступлениеТМЦНоменклатура.Ссылка
		|			И ОстаткиТоваров.ГТД = ПоступлениеТМЦНоменклатура.ГТД
		|ГДЕ
		|	РасходнаяНакладнаяНоменклатура.Ссылка.ФинДокумент = ИСТИНА
		|	И (РасходнаяНакладнаяНоменклатура.Ссылка.Дата МЕЖДУ &ПериодС И &ПериодПо
		|			ИЛИ РасходнаяНакладнаяНоменклатура.Ссылка.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|	И РасходнаяНакладнаяНоменклатура.Ссылка.Фирма = &Фирма
		|	И &ПараметрРасходнаяНакладная
		|	И НЕ РасходнаяНакладнаяНоменклатура.Ссылка.ПометкаУдаления
		|
		|СГРУППИРОВАТЬ ПО
		|	РасходнаяНакладнаяНоменклатура.Ссылка,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Покупатель,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Фирма.Код,
		|	ОстаткиТоваров.Номенклатура,
		|	ОстаткиТоваров.Характеристика,
		|	ОстаткиТоваров.ГТД,
		|	ОстаткиТоваров.НомерСтроки,
		|	ОстаткиТоваров.Количество,
		|	ВЫБОР
		|		КОГДА РасходнаяНакладнаяНоменклатура.Ссылка.Фирма.Оф
		|			ТОГДА ОстаткиТоваров.ГТД
		|		ИНАЧЕ ЗНАЧЕНИЕ(справочник.номерагтд.пустаяссылка)
		|	КОНЕЦ,
		|	РасходнаяНакладнаяНоменклатура.СтавкаНДС,
		|	РасходнаяНакладнаяНоменклатура.Ссылка.Склад
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ПоступлениеТМЦ.Ссылка,
		|	ПоступлениеТМЦНоменклатура.Номенклатура,
		|	ПоступлениеТМЦНоменклатура.Характеристика,
		|	ПоступлениеТМЦНоменклатура.Количество,
		|	ПоступлениеТМЦНоменклатура.Сумма,
		|	ПоступлениеТМЦ.Поставщик,
		|	NULL,
		|	ПоступлениеТМЦНоменклатура.ГТД,
		|	NULL,
		|	ПоступлениеТМЦ.Фирма.Код,
		|	NULL,
		|	ПоступлениеТМЦ.Склад,
		|	ПоступлениеТМЦ.НомерСчетаПоставщика,
		|	ПоступлениеТМЦ.ДатаСчетаПоставщика,
		|	ВЫБОР
		|		КОГДА ПоступлениеТМЦНоменклатура.НоменклатураПоставщика ССЫЛКА Справочник.НоменклатураПоставщика
		|				И ПоступлениеТМЦНоменклатура.НоменклатураПоставщика <> ЗНАЧЕНИЕ(справочник.номенклатурапоставщика.пустаяссылка)
		|			ТОГДА ПоступлениеТМЦНоменклатура.НоменклатураПоставщика
		|		ИНАЧЕ """"
		|	КОНЕЦ,
		|	ПоступлениеТМЦНоменклатура.НомерСтроки,
		|	ПоступлениеТМЦНоменклатура.СтавкаНДС,
		|	ПоступлениеТМЦНоменклатура.СуммаНДС
		|ИЗ
		|	Документ.ПоступлениеТМЦ.Номенклатура КАК ПоступлениеТМЦНоменклатура
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТМЦ КАК ПоступлениеТМЦ
		|		ПО ПоступлениеТМЦНоменклатура.Ссылка = ПоступлениеТМЦ.Ссылка
		|ГДЕ
		|	ПоступлениеТМЦ.ФинДокумент = ИСТИНА
		|	И (ПоступлениеТМЦ.Дата МЕЖДУ &ПериодС И &ПериодПо
		|			ИЛИ ПоступлениеТМЦ.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|	И ПоступлениеТМЦ.Фирма = &Фирма
		|	И &ПараметрПоступлениеТМЦ
		|	И НЕ ПоступлениеТМЦ.ПометкаУдаления
		|	И НЕ ПоступлениеТМЦНоменклатура.Ссылка.ПометкаУдаления
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ВозвратТМЦ.Ссылка,
		|	ВозвратТМЦНоменклатура.Номенклатура,
		|	ВозвратТМЦНоменклатура.Характеристика,
		|	ВозвратТМЦНоменклатура.Количество,
		|	ВозвратТМЦНоменклатура.Сумма,
		|	ВозвратТМЦ.Контрагент,
		|	NULL,
		|	ВозвратТМЦНоменклатура.ГТД,
		|	NULL,
		|	ВозвратТМЦ.Фирма.Код,
		|	NULL,
		|	ВозвратТМЦ.Склад,
		|	NULL,
		|	NULL,
		|	ВЫБОР
		|		КОГДА ВозвратТМЦНоменклатура.НоменклатураПоставщика ССЫЛКА Справочник.НоменклатураПоставщика
		|				И ВозвратТМЦНоменклатура.НоменклатураПоставщика <> ЗНАЧЕНИЕ(справочник.номенклатурапоставщика.пустаяссылка)
		|			ТОГДА ВозвратТМЦНоменклатура.НоменклатураПоставщика
		|		ИНАЧЕ """"
		|	КОНЕЦ,
		|	ВозвратТМЦНоменклатура.НомерСтроки,
		|	NULL,
		|	NULL
		|ИЗ
		|	Документ.ВозвратТМЦ.Номенклатура КАК ВозвратТМЦНоменклатура
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТМЦ КАК ВозвратТМЦ
		|		ПО ВозвратТМЦНоменклатура.Ссылка = ВозвратТМЦ.Ссылка
		|ГДЕ
		|	ВозвратТМЦ.ФинДокумент = ИСТИНА
		|	И (ВозвратТМЦ.Дата МЕЖДУ &ПериодС И &ПериодПо
		|			ИЛИ ВозвратТМЦ.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|	И ВозвратТМЦ.Фирма = &Фирма
		|	И &ПараметрВозвратТМЦ
		|	И НЕ ВозвратТМЦНоменклатура.Ссылка.ПометкаУдаления
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ЗаказДляКлиентаНоменклатура.Ссылка,
		|	ЗаказДляКлиентаНоменклатура.Номенклатура,
		|	ЗаказДляКлиентаНоменклатура.Характеристика,
		|	ЗаказДляКлиентаНоменклатура.Количество,
		|	ЗаказДляКлиентаНоменклатура.Сумма,
		|	ЗаказДляКлиентаНоменклатура.Ссылка.Контрагент,
		|	""Заказ"",
		|	ЗаказДляКлиентаНоменклатура.Номенклатура.ГТД,
		|	NULL,
		|	ЗаказДляКлиентаНоменклатура.Ссылка.Фирма.Код,
		|	NULL,
		|	ЗаказДляКлиентаНоменклатура.Склад,
		|	NULL,
		|	NULL,
		|	"""",
		|	ЗаказДляКлиентаНоменклатура.НомерСтроки,
		|	ЗаказДляКлиентаНоменклатура.СтавкаНДС,
		|	ЗаказДляКлиентаНоменклатура.СуммаНДС
		|ИЗ
		|	Документ.ЗаказДляКлиента.Номенклатура КАК ЗаказДляКлиентаНоменклатура
		|ГДЕ
		|	ЗаказДляКлиентаНоменклатура.Ссылка.ФинДокумент = ИСТИНА
		|	И (ЗаказДляКлиентаНоменклатура.Ссылка.Дата МЕЖДУ &ПериодС И &ПериодПо
		|			ИЛИ ЗаказДляКлиентаНоменклатура.Ссылка.ФинДата МЕЖДУ &ПериодС И &ПериодПо)
		|	И ЗаказДляКлиентаНоменклатура.Ссылка.Фирма = &Фирма
		|	И &ПараметрЗаказДляКлиента
		|	И НЕ ЗаказДляКлиентаНоменклатура.Ссылка.ПометкаУдаления
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ПриходныйКассовыйОрдер.Ссылка,
		|	NULL,
		|	NULL,
		|	NULL,
		|	ПриходныйКассовыйОрдер.Сумма,
		|	ПриходныйКассовыйОрдер.Плательщик,
		|	""PKO"",
		|	NULL,
		|	NULL,
		|	ПриходныйКассовыйОрдер.Фирма.Код,
		|	NULL,
		|	ПриходныйКассовыйОрдер.Склад,
		|	NULL,
		|	NULL,
		|	"""",
		|	0,
		|	NULL,
		|	NULL
		|ИЗ
		|	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
		|ГДЕ
		|	ПриходныйКассовыйОрдер.Проведен = ИСТИНА
		|	И ПриходныйКассовыйОрдер.Дата МЕЖДУ &периодС И &ПериодПо
		|	И ПриходныйКассовыйОрдер.Фирма = &Фирма
		|	И &ПараметрПриходныйКассовыйОрдер
		|	И НЕ ПриходныйКассовыйОрдер.ПометкаУдаления
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	РасходныйКассовыйОрдер.Ссылка,
		|	NULL,
		|	NULL,
		|	NULL,
		|	РасходныйКассовыйОрдер.Сумма,
		|	РасходныйКассовыйОрдер.Получатель,
		|	""RKO"",
		|	NULL,
		|	NULL,
		|	РасходныйКассовыйОрдер.Фирма.Код,
		|	NULL,
		|	РасходныйКассовыйОрдер.Склад,
		|	NULL,
		|	NULL,
		|	"""",
		|	0,
		|	NULL,
		|	NULL
		|ИЗ
		|	Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
		|ГДЕ
		|	РасходныйКассовыйОрдер.Проведен = ИСТИНА
		|	И РасходныйКассовыйОрдер.Дата МЕЖДУ &периодС И &ПериодПо
		|	И РасходныйКассовыйОрдер.Фирма = &Фирма
		|	И &ПараметрРасходныйКассовыйОрдер
		|	И НЕ РасходныйКассовыйОрдер.ПометкаУдаления
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	БухгалтерскийОтветХранение.Регистратор,
		|	БухгалтерскийОтветХранение.Номенклатура,
		|	БухгалтерскийОтветХранение.Характеристика,
		|	БухгалтерскийОтветХранение.Количество,
		|	БухгалтерскийОтветХранение.Стоимость,
		|	ЗНАЧЕНИЕ(Справочник.Контрагенты.пустаяссылка),
		|	""Перем"",
		|	БухгалтерскийОтветХранение.ГТД,
		|	NULL,
		|	NULL,
		|	NULL,
		|	БухгалтерскийОтветХранение.Город,
		|	NULL,
		|	NULL,
		|	БухгалтерскийОтветХранение.НоменклатураПоставщика,
		|	БухгалтерскийОтветХранение.НомерСтроки,
		|	NULL,
		|	NULL
		|ИЗ
		|	РегистрНакопления.БухгалтерскийОтветХранение КАК БухгалтерскийОтветХранение
		|ГДЕ
		|	БухгалтерскийОтветХранение.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
		|	И БухгалтерскийОтветХранение.Регистратор.Бух
		|	И БухгалтерскийОтветХранение.Регистратор.Дата МЕЖДУ &периодС И &ПериодПо
		|	И &ПараметрПеремещениеТоваров
		|
		|УПОРЯДОЧИТЬ ПО
		|	Ссылка,
		|	НомерСтроки"
		;
		Запрос.УстановитьПараметр("ПериодС",НачалоДня(ЭлементыФормы.ПериодС.Значение));
		Запрос.УстановитьПараметр("ПериодПо",КонецДня(ЭлементыФормы.ПериодПо.Значение));
		Запрос.УстановитьПараметр("ПараметрПоступлениеТМЦ",истина);
		Запрос.УстановитьПараметр("ПараметрВозвратТМЦ",истина);
		Запрос.УстановитьПараметр("ПараметрЗаказДляКлиента",истина);
		Запрос.УстановитьПараметр("ПараметрПервыйРасходнаяНакладная",истина);
		Запрос.УстановитьПараметр("ПараметрРасходнаяНакладная",истина);
		Запрос.УстановитьПараметр("ПараметрПеремещениеТоваров",истина);
		
		Если ВыгружатьНеПроведенныеРасходные тогда
			Запрос.УстановитьПараметр("ПараметрВыгрузкиНеПроведенныхРасходников",истина);
		иначе
			Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрВыгрузкиНеПроведенныхРасходников","РасходнаяНакладнаяНоменклатура.Ссылка ЕСТЬ NULL");
		КонецЕсли;
		
		Для каждого ТекВидДокумента из СписокДокументов Цикл
			Если ТекВидДокумента.Пометка = Ложь Тогда
				Если ТекВидДокумента.Значение = "ПоступлениеТМЦ" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПоступлениеТМЦ","ПоступлениеТМЦНоменклатура.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "ВозвратТМЦ" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрВозвратТМЦ","ВозвратТМЦНоменклатура.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "ЗаказДляКлиента" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрЗаказДляКлиента","ЗаказДляКлиентаНоменклатура.Ссылка.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "РасходнаяНакладная" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрРасходнаяНакладная","РасходнаяНакладнаяНоменклатура.Ссылка ЕСТЬ NULL");
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПервыйРасходнаяНакладная","ОстаткиТоваров.Регистратор.Ссылка ЕСТЬ NULL");
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрВыгрузкиНеПроведенныхРасходников","РасходнаяНакладнаяНоменклатура.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "ПеремещениеТоваров" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПеремещениеТоваров","БухгалтерскийОтветХранение.Регистратор.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "ПриходныйКассовыйОрдер" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПриходныйКассовыйОрдер","ПриходныйКассовыйОрдер.Ссылка ЕСТЬ NULL");
				ИначеЕсли ТекВидДокумента.Значение = "РасходныйКассовыйОрдер" Тогда
					Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрРасходныйКассовыйОрдер","РасходныйКассовыйОрдер.Ссылка ЕСТЬ NULL");
				КонецЕсли;
			Иначе
				Если ЭлементыФормы["СписокОтбора"+ТекВидДокумента.Значение].Значение.Количество() > 0 Тогда
					Если ТекВидДокумента.Значение = "ПоступлениеТМЦ" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПоступлениеТМЦ","ПоступлениеТМЦНоменклатура.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "ВозвратТМЦ" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрВозвратТМЦ","ВозвратТМЦНоменклатура.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "ЗаказДляКлиента" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрЗаказДляКлиента","ЗаказДляКлиентаНоменклатура.Ссылка.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "РасходнаяНакладная" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрРасходнаяНакладная","РасходнаяНакладнаяНоменклатура.Ссылка В (&СписокЗначений)");
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрВыгрузкиНеПроведенныхРасходников","РасходнаяНакладнаяНоменклатура.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "ПеремещениеТоваров" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПеремещениеТоваров","БухгалтерскийОтветХранение.Регистратор.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "ПриходныйКассовыйОрдер" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрПриходныйКассовыйОрдер","ПриходныйКассовыйОрдер.Ссылка В (&СписокЗначений)");
					ИначеЕсли ТекВидДокумента.Значение = "РасходныйКассовыйОрдер" Тогда
						Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ПараметрРасходныйКассовыйОрдер","РасходныйКассовыйОрдер.Ссылка В &(&СписокЗначений)");
					КонецЕсли;
					Запрос.УстановитьПараметр("СписокЗначений",ЭлементыФормы["СписокОтбора"+ТекВидДокумента.Значение].Значение);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		
		//nb+
		СписокГородов = Новый СписокЗначений;
		ГородПитер = Справочники.Города.СанктПетербург;
		ГородМосква = Справочники.Города.Москва;
		Если ПолучитьЗначениеНастройки(ПланыВидовХарактеристик.НастройкиПользователей.Город, ПараметрыСеанса.ТекущийПользователь) = ГородМосква Тогда 
			СписокГородов.Добавить(ГородМосква);
			СписокГородов.Добавить(Справочники.Города.Общий);
		Иначе 
			СписокГородов.Добавить(ГородПитер);
			СписокГородов.Добавить(Справочники.Города.Общий);
			СписокГородов.Добавить(Справочники.Города.ПустаяСсылка());
		КонецЕсли;                                           
		
		Запрос.УстановитьПараметр("Город", СписокГородов);
		Запрос.УстановитьПараметр("Фирма", Фирма);
		//nb-
		
		рез=Запрос.Выполнить().Выгрузить();
		
		рез.Сортировать("Ссылка, НомерСтроки Возр");
		
		Группировка=Неопределено;
		Номер="";
		ТипДокумента="";
		инд = 0;
		для каждого Выборка из рез Цикл
			ОбработкаПрерыванияПользователя();
			инд = инд+1;
			Состояние("Обработка "+инд+" из "+ рез.Количество());
			
			//nb+
			Если (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ЧекККМ")) ИЛИ (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПриходныйКассовыйОрдер"))
				ИЛИ (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.РасходныйКассовыйОрдер")) ИЛИ (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПеремещениеТоваров")) Тогда 
				ДатаДокумента = Выборка.Ссылка.Дата;
			Иначе 
				//nb-
				ДатаДокумента = ?(Выборка.Ссылка.ФинДата = '00010101000000', Выборка.Ссылка.Дата, Выборка.Ссылка.ФинДата);
			КонецЕсли;
			
			//Если (ДатаДокумента < (НачалоДня(ПериодС)-(60*60*24*60))) или (ДатаДокумента > (КонецДня(ПериодПо)+(60*60*24*60))) Тогда
			Если ДатаДокумента < НачалоДня(ПериодС) или ДатаДокумента > КонецДня(ПериодПо) Тогда
				Продолжить;
			КонецЕсли;
			
			// фильтр по документам
			ПропуститьДокумент = истина;
			Для каждого ТекВидДокумента из СписокДокументов Цикл
				Если ТекВидДокумента.Пометка Тогда
					Если ТипЗнч(Выборка.Ссылка) = Тип("ДокументСсылка."+ТекВидДокумента.Значение) Тогда
						Если ЭлементыФормы["СписокОтбора"+ТекВидДокумента.Значение].Значение.Количество() > 0 Тогда
							Если ЭлементыФормы["СписокОтбора"+ТекВидДокумента.Значение].Значение.НайтиПоЗначению(Выборка.Ссылка) <> Неопределено Тогда
								ПропуститьДокумент = ложь;
							КонецЕсли;
						Иначе
							ПропуститьДокумент = ложь;
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
			Если ПропуститьДокумент Тогда
				Продолжить;
			КонецЕсли;
			
			Если Группировка<>Выборка.Ссылка Тогда
				//nb+
				ВидОперации = "";
				ДокументОснование = "";
				Склад = "";
				СкладНаименование = "";
				Если (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ЧекККМ")) Тогда 
					ТипДокумента="Check";
					НомерДок = Выборка.Ссылка.Номер;
					ВидОперации = Выборка.ВидОперации;
					ДокументОснование = Выборка.ДокументОснование;
				ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПриходныйКассовыйОрдер")) Тогда 
					ТипДокумента="PKO";
					НомерДок = Выборка.Ссылка.Номер;
					Склад = Выборка.Склад;
					
				ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПоступлениеТМЦ")) Тогда 
					Склад = Выборка.Склад.Код;
					СкладНаименование = Выборка.Склад;
					ТипДокумента="Prihod";    
					НомерДок = СтрЗаменить(Выборка.Ссылка.ФинНомер,Символы.НПП,"");
					НомерДок = СтрЗаменить(НомерДок," ","");
					Номер=Выборка.Ссылка.ФинНомер;
				ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.РасходныйКассовыйОрдер")) Тогда 
					ТипДокумента="RKO";
					НомерДок = Выборка.Ссылка.Номер;
					Склад = Выборка.Склад;
				ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПеремещениеТоваров")) Тогда 
					ТипДокумента="PEREM";
					НомерДок = сокрЛП(?(Выборка.Ссылка.ФинНомер<>"",Выборка.Ссылка.ФинНомер,Выборка.Ссылка.Номер));
					Постфикс = прав(НомерДок,2);
					если Постфикс = "-В" или Постфикс = "-П" тогда 
						НомерДок = СтрЗаменить(НомерДок,Постфикс,"");
						НомерДок = формат(число(НомерДок),"ЧЦ=9; ЧДЦ=0; ЧН=0; ЧГ=0")+Постфикс;
					КонецЕсли;				
					Склад = СокрЛП(Выборка.Ссылка.СкладПолучатель);	
				Иначе 	
					НомерДок = СтрЗаменить(Выборка.Ссылка.ФинНомер,Символы.НПП,"");
					НомерДок = СтрЗаменить(НомерДок," ","");
					
					//nb-
					
					Номер=Выборка.Ссылка.ФинНомер;
					Если (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.РасходнаяНакладная")) ИЛИ (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ЗаказДляКлиента")) Тогда 
						ТипДокумента="Rashod";
					ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПоступлениеТМЦ")) тогда// ИЛИ (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ВозвратТМЦ")) Тогда //приходная накладная
						ТипДокумента="Prihod";
					ИначеЕсли (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ВозвратТМЦ")) Тогда
						ТипДокумента="Vozvra";
					ИначеЕсли  (ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПеремещениеТоваров")) Тогда
						ТипДокумента="PEREM";	
						НомерДок = сокрЛП(?(Выборка.Ссылка.ФинНомер<>"",Выборка.Ссылка.ФинНомер,Выборка.Ссылка.Номер));
						Постфикс = прав(НомерДок,2);
						если Постфикс = "-В" или Постфикс = "-П" тогда 
							НомерДок = СтрЗаменить(НомерДок,Постфикс,"");
							НомерДок = формат(число(НомерДок),"ЧЦ=9; ЧДЦ=0; ЧН=0; ЧГ=0")+Постфикс;
						КонецЕсли;
						ДатаДокумента = Выборка.Ссылка.Дата;
						ВидОперации="PEREM";
					КонецЕсли;
					Если Выборка.ВидДокумента= "Заказ" Тогда 
						ТипДокумента="Zakazz";
					КонецЕсли;
				КонецЕсли; //nb
				
				Группировка=Выборка.Ссылка;
			КонецЕсли;
			Если Выборка.Номенклатура = NULL Тогда
				Продолжить;
			КонецЕсли;
			ФайлОбмена.Добавить();
			ФайлОбмена.SumNDS = 0;
			ФайлОбмена.StavNDS = ""; 
			
			ФайлОбмена.Data=ДатаДокумента;
			ФайлОбмена.DokTip=ТипДокумента;
			//nb+
			//НомерДок = СтрЗаменить(Выборка.Ссылка.ФинНомер,Символы.НПП,"");
			//НомерДок = СтрЗаменить(НомерДок," ","");
			ФайлОбмена.FinNom=НомерДок;
			ФайлОбмена.CheckVid = ВидОперации;
			ФайлОбмена.CheckBase = ДокументОснование;
			ФайлОбмена.Sklad = Склад;
			ФайлОбмена.SkladName = СкладНаименование;
			ФайлОбмена.Firm = Выборка.ФирмаКод;
			ФайлОбмена.NumPoz = Выборка.НомерСтроки;
			
			//nb-
			
			//Попытка
			//	ФайлОбмена.Nomen=ПолучитьКодыНоменклатуры(Выборка.Номенклатура);
			//Исключение
			//	ФайлОбмена.Nomen=ПолучитьКодыНоменклатуры(Выборка.Номенклатура);
			//КонецПопытки;
			
			Если Выборка.Количество < 0 тогда
				Выборка.Количество = Выборка.Количество * -1;
			КонецЕсли;
			Если Выборка.Сумма < 0 тогда
				Выборка.Сумма = Выборка.Сумма * -1;
			КонецЕсли;
			
			Выборка.Сумма = окр(Выборка.Сумма,2);
			
			ФайлОбмена.Kol=Выборка.Количество;
			ФайлОбмена.Summa=окр(Выборка.Сумма,2);
			//ФайлОбмена.Kontr=ПолучитьКодыКонтрагента(Выборка.Контрагент);
			ФайлОбмена.Kontr=СокрЛП(Выборка.Контрагент);
			ФайлОбмена.KatNomer=СокрЛП(Выборка.Номенклатура.КаталожныйНомер);
			
			Если ""+сокрЛП(Выборка.ГТД) = "" или Выборка.ГТД=Неопределено или Выборка.ГТД = NULL или не ЗначениеЗаполнено(Выборка.ГТД) Тогда 
				НормГТД = "";//СокрЛП(Выборка.Номенклатура.ГТД.Наименование);
			Иначе 
				НормГТД = СокрЛП(Выборка.ГТД.Наименование);
				если НормГТД ="<>" тогда
					НормГТД = "";
				КонецЕсли;
				если СокрЛП(Выборка.ГТД.Наименование) = "" тогда 
					НормГТД = "";
				КонецЕсли; 
			КонецЕсли; 		
			
			ФайлОбмена.GTD=НормГТД;
			ФайлОбмена.Strana=?(СокрЛП(НормГТД)<>"",СокрЛП(Выборка.ГТД.Страна),"");
			
			попытка 
				ФайлОбмена.Strana= СокрЛП(Выборка.ГТД.Страна);
			исключение КонецПопытки;
			
			ФайлОбмена.UrNaim=СокрЛП(Выборка.Контрагент.НаименованиеПолное);
			ФайлОбмена.Adres=ПолучитьАдрес(Выборка.Контрагент);
			ФайлОбмена.INN=СокрЛП(Выборка.Контрагент.ИНН);
			ФайлОбмена.KPP = СокрЛП(Выборка.Контрагент.КПП);
			
			ФайлОбмена.Nomen=?(СокрЛП(Выборка.НоменклатураПоставщика)<>"" и Выборка.ссылка.фирма.оф,СокрЛП(Выборка.НоменклатураПоставщика),СокрЛП(Выборка.Номенклатура));
			
			//ССВ (
			Если ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПоступлениеТМЦ") Тогда
				Если Выборка.НомерСчетаПоставщика <> NULL тогда 
					ФайлОбмена.NChPost = СокрЛП(Выборка.НомерСчетаПоставщика); 
					ФайлОбмена.DChPost = Выборка.ДатаСчетаПоставщика;
				КонецЕсли;
				ФайлОбмена.SumNDS = Окр(Выборка.СуммаНДС, 2);
				ФайлОбмена.StavNDS = Выборка.СтавкаНДС;
				
				ФайлОбмена.DCHFPR =   Выборка.Ссылка.ДатаСФПост;
				ФайлОбмена.NCHFPR =   Выборка.Ссылка.НомерСФПост;
				ФайлОбмена.DNPR =     Выборка.Ссылка.ДатаНакладнойПост;
				ФайлОбмена.NNPR =     Выборка.Ссылка.НомерНакладнойПост;
			КонецЕсли;
			
			если ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.РасходнаяНакладная")  тогда 
				
				если ЗначениеЗаполнено(Выборка.Ссылка.Заказ) тогда 
					если ЗначениеЗаполнено(Выборка.Ссылка.Заказ.ФинНомер) тогда 
						ФайлОбмена.NChPost = СокрЛП(Выборка.Ссылка.Заказ.ФинНомер); 
						ФайлОбмена.DChPost = ?(Выборка.Ссылка.Заказ.ФинДата>Дата(2000,1,1),Выборка.Ссылка.Заказ.ФинДата,Выборка.Ссылка.Заказ.Дата);
					иначе 
						ФайлОбмена.NChPost = СокрЛП(Выборка.Ссылка.Заказ.Номер); 
						ФайлОбмена.DChPost = Выборка.Ссылка.Заказ.Дата;
					КонецЕсли;
				иначе 
					ФайлОбмена.NChPost = "?????"; 
				КонецЕсли;
				
				если Выборка.Ссылка.Фирма.Оф тогда
					
					если СокрЛП(Выборка.НоменклатураПоставщика)<>"" тогда 
						ФайлОбмена.Nomen=СокрЛП(Выборка.НоменклатураПоставщика);
					иначеесли СокрЛП(Выборка.НоменклатураПоставщика)="<>" или СокрЛП(Выборка.НоменклатураПоставщика)="" тогда
						ФайлОбмена.Nomen = "<Номенклатура поставщика не найдена>";
					иначе 
						ФайлОбмена.Nomen = "<Номенклатура поставщика не найдена>";
					КонецЕсли;						
					
				иначе 
					
					если РасхПоНоменклПоставщика = Истина тогда
						если Выборка.Характеристика.Оф = истина тогда 
							ФайлОбмена.Nomen=СокрЛП(Выборка.НоменклатураПоставщика);
						иначе
							ФайлОбмена.Nomen="Автозапчать";
							ФайлОбмена.KatNomer = "";
						КонецЕсли;
					КонецЕсли;	
					
				КонецЕсли;	
				
				//проставим номера СФ из регистра
				наборРСНомер = РегистрыСведений.НомераОрганизаций.СоздатьНаборЗаписей();
				наборРСНомер.отбор.Фирма.установить(Выборка.Ссылка.фирма);
				наборРСНомер.отбор.ВидДокумента.установить("РасходнаяНакладная(Счет-фактура)");
				наборРСНомер.отбор.УИД.установить(ЗначениеВСтрокуВнутр(Выборка.Ссылка));
				наборРСНомер.Прочитать();
				
				если наборРСНомер.Количество()>0 тогда
					ФайлОбмена.NCHFAC = наборРСНомер[0].Номер;
					ФайлОбмена.DCHFAC = наборРСНомер[0].ДатаРегистрации;
				КонецЕсли;	
				
				Если Не Выборка.Ссылка.фирма.НовыйУчетНДС Тогда 
					// С 2026г ставка 22%
					Если Выборка.Ссылка.Дата < Дата(2026,1,1) Тогда
						ФайлОбмена.SumNDS = Окр(Выборка.Сумма * 20 / 120, 2);
						ФайлОбмена.StavNDS = "Ставка20";
					Иначе
						ФайлОбмена.SumNDS = Окр(Выборка.Сумма * 22 / 122, 2);
						ФайлОбмена.StavNDS = "Ставка22";
					КонецЕсли;	
				КонецЕсли;	
				
				ФайлОбмена.Carrier = СокрЛП(Выборка.Ссылка.КурьерскаяСлужба);
				ФайлОбмена.NumPost = Выборка.Ссылка.НомерОтправления;
				ФайлОбмена.SumPost = Выборка.Ссылка.СуммаНаложенногоПлатежа;	
				
			КонецЕсли;
			
			Если НЕ ЗначениеЗаполнено(ФайлОбмена.StavNDS) и ЗначениеЗаполнено(Выборка.СтавкаНДС) тогда //для расходных накладных заполняется выше по коду
				ФайлОбмена.SumNDS = Выборка.СуммаНДС;
				ФайлОбмена.StavNDS = ИмяПеречисления(Выборка.СтавкаНДС);
			КонецЕсли;	
			
			Если ТипЗнч(Выборка.Ссылка)= Тип("ДокументСсылка.ПеремещениеТоваров") ТОГДА 
				ФайлОбмена.Nomen=СокрЛП(Выборка.НоменклатураПоставщика);
			КонецЕсли;	
			
			
			зап = РегистрыСведений.ВыгруженныеДокументы.СоздатьМенеджерЗаписи();
			зап.Автор = ПараметрыСеанса.ТекущийПользователь;
			зап.ДатаВыгрузки = ТекущаяДата();
			зап.Документ = Выборка.Ссылка;
			зап.Программа = ЭтотОбъект.Метаданные().Имя;
			зап.Записать(Истина);
			//ССВ )
			
			ФайлОбмена.Записать();
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

Процедура НовыйАлгоритмВыгрузкиООО()
	ФайлОбмена=Новый XBase;	
	ФайлОбмена.поля.Добавить("DokTip","S",6);
	ФайлОбмена.поля.Добавить("FinNom","S",12);
	ФайлОбмена.поля.Добавить("Data","D");
	ФайлОбмена.поля.Добавить("Nomen","S",250);
	ФайлОбмена.поля.Добавить("Kol","N",15,3);
	ФайлОбмена.поля.Добавить("Summa","N",15,3);
	ФайлОбмена.поля.Добавить("SumNDS","N",15,3);
	ФайлОбмена.поля.Добавить("StavNDS","S",15);
	ФайлОбмена.поля.Добавить("KatNomer","S",50);
	ФайлОбмена.поля.Добавить("GTD","S",100);	
	ФайлОбмена.поля.Добавить("Strana","S",250);
	
	ФайлОбмена.поля.Добавить("Kontr","S",250);
	ФайлОбмена.поля.Добавить("UrNaim","S",250);
	ФайлОбмена.поля.Добавить("Adres","S",250);
	ФайлОбмена.поля.Добавить("KontrINN","S",150);
	ФайлОбмена.поля.Добавить("KontrKPP","S",150);
	
	ФайлОбмена.поля.Добавить("Firm","S",250);
	ФайлОбмена.поля.Добавить("FirmINN","S",50);
	ФайлОбмена.поля.Добавить("Sklad","S",150);
	
	Для каждого ТекВидДокумента из СписокДокументов Цикл
		Если ТекВидДокумента.Пометка = Истина И ТекВидДокумента.Значение = "РасходнаяНакладная" Тогда
			
			Запрос = Новый Запрос;
			Запрос.УстановитьПараметр("ПериодС",НачалоДня(ЭлементыФормы.ПериодС.Значение));
			Запрос.УстановитьПараметр("ПериодПо",КонецДня(ЭлементыФормы.ПериодПо.Значение));
			Запрос.УстановитьПараметр("Покупатель", Фирма.КонтрагентДляДокументов);
			Запрос.УстановитьПараметр("ПапкаИсключение", Справочники.Номенклатура.НайтиПоКоду("ZT0003466"));// Рекламная продукция
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Ссылка,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Склад,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Фирма,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Фирма.КонтрагентДляДокументов,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.ВалютаДокумента,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.ДокументОснование,
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Покупатель,
			|	РасходнаяНакладнаяНоменклатура.Номенклатура,
			|	РасходнаяНакладнаяНоменклатура.Характеристика,
			|	РасходнаяНакладнаяНоменклатура.Количество,
			|	РасходнаяНакладнаяНоменклатура.Цена,
			|	РасходнаяНакладнаяНоменклатура.Сумма,
			|	РасходнаяНакладнаяНоменклатура.ГТД,
			|	РасходнаяНакладнаяНоменклатура.НоменклатураПоставщика,
			|	РасходнаяНакладнаяНоменклатура.СтавкаНДС,
			|	РасходнаяНакладнаяНоменклатура.СуммаНДС
			|ИЗ
			|	Документ.РасходнаяНакладная.Номенклатура КАК РасходнаяНакладнаяНоменклатура
			|ГДЕ
			|	РасходнаяНакладнаяНоменклатура.Ссылка.Покупатель = &Покупатель
			|	И НЕ РасходнаяНакладнаяНоменклатура.Ссылка.ПометкаУдаления
			|	И РасходнаяНакладнаяНоменклатура.Ссылка.Дата МЕЖДУ &ПериодС И &ПериодПо
			|	И РасходнаяНакладнаяНоменклатура.Ссылка.ФинНомер <> """"
			|	И РасходнаяНакладнаяНоменклатура.Ссылка.ФинДата <> ДАТАВРЕМЯ(1, 1, 1)
			|	И РасходнаяНакладнаяНоменклатура.Ссылка.ФинДокумент
			|	И РасходнаяНакладнаяНоменклатура.Номенклатура.Родитель <> &ПапкаИсключение";
			
			рез = Запрос.Выполнить().Выгрузить();
			Если рез.Количество() > 0 Тогда
				ФайлОбмена.СоздатьФайл(ПутьФ);
			КонецЕсли;
			инд = 0;
			для каждого Выборка из рез Цикл
				ОбработкаПрерыванияПользователя();
				инд = инд+1;
				Состояние("Обработка "+инд+" из "+ рез.Количество());
				
				Если Выборка.Номенклатура = NULL Тогда
					Продолжить;
				КонецЕсли;
				
				ФайлОбмена.Добавить();
				ФайлОбмена.Data = Выборка.Ссылка.Дата;
				ФайлОбмена.DokTip = "Rashod";
				ФайлОбмена.FinNom = Выборка.Ссылка.ФинНомер;
				ФайлОбмена.Sklad = Выборка.Склад.Код;
				ФайлОбмена.Firm = Фирма;
				ФайлОбмена.FirmINN = Фирма.ИНН;
				ФайлОбмена.Kontr = Выборка.Фирма;
				ФайлОбмена.KontrINN = Выборка.Фирма.ИНН;
				ФайлОбмена.KontrKPP = Выборка.Фирма.КПП;
				ФайлОбмена.UrNaim = СокрЛП(Выборка.Фирма.НаименованиеПолное);
				ФайлОбмена.Adres = ПолучитьАдрес(Выборка.Фирма);
				
				Если Выборка.Количество < 0 тогда
					Выборка.Количество = Выборка.Количество * -1;
				КонецЕсли;
				Если Выборка.Сумма < 0 тогда
					Выборка.Сумма = Выборка.Сумма * -1;
				КонецЕсли;
				
				Выборка.Сумма = окр(Выборка.Сумма,2);
				
				ФайлОбмена.Kol=Выборка.Количество;
				ФайлОбмена.Summa = окр(Выборка.Сумма,2);
				ФайлОбмена.SumNDS = окр(Выборка.СуммаНДС,2);
				ФайлОбмена.StavNDS = ИмяПеречисления(Выборка.СтавкаНДС);
				Если Выборка.НоменклатураПоставщика <> Справочники.НоменклатураПоставщика.ПустаяСсылка() и Выборка.Характеристика.Оф Тогда
					ФайлОбмена.Nomen = СокрЛП(Выборка.НоменклатураПоставщика);	
				Иначе
					ФайлОбмена.Nomen = СокрЛП(Выборка.Номенклатура);
				КонецЕсли;
				ФайлОбмена.KatNomer = СокрЛП(Выборка.Номенклатура.КаталожныйНомер);
				НормГТД = Выборка.ГТД;
				ФайлОбмена.GTD = НормГТД;
				ФайлОбмена.Strana = ?(СокрЛП(НормГТД)<>"",СокрЛП(Выборка.ГТД.Страна),"");
				
				попытка 
					ФайлОбмена.Strana= СокрЛП(Выборка.ГТД.Страна);
				исключение КонецПопытки;
				зап = РегистрыСведений.ВыгруженныеДокументы.СоздатьМенеджерЗаписи();
				зап.Автор = ПараметрыСеанса.ТекущийПользователь;
				зап.ДатаВыгрузки = ТекущаяДата();
				зап.Документ = Выборка.Ссылка;
				зап.Программа = ЭтотОбъект.Метаданные().Имя;
				зап.Записать(Истина);
				
				ФайлОбмена.Записать();
			КонецЦикла;
			
		ИначеЕсли ТекВидДокумента.Значение = "ЧекККМ" и ТекВидДокумента.Пометка = Истина Тогда
			Запрос = Новый Запрос;
			Запрос.УстановитьПараметр("ПериодС",НачалоДня(ЭлементыФормы.ПериодС.Значение));
			Запрос.УстановитьПараметр("ПериодПо",КонецДня(ЭлементыФормы.ПериодПо.Значение));
			Запрос.УстановитьПараметр("Фирма", Фирма);
			Запрос.УстановитьПараметр("ПапкаИсключение", Справочники.Номенклатура.НайтиПоКоду("ZT0003466"));// Рекламная продукция
			
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	ЧекККМНоменклатура.Ссылка,
			|	ЧекККМНоменклатура.Ссылка.Склад,
			|	ЧекККМНоменклатура.Номенклатура,
			|	ЧекККМНоменклатура.Характеристика,
			|	ЧекККМНоменклатура.Артикул,
			|	ЧекККМНоменклатура.Количество,
			|	ЧекККМНоменклатура.Сумма,
			|	ЧекККМНоменклатура.Сумма / ЧекККМНоменклатура.Количество КАК Цена,
			|	ЧекККМНоменклатура.СтавкаНДС,
			|	ЧекККМНоменклатура.СуммаНДС
			|ПОМЕСТИТЬ ВТ_ДанныеЧеков
			|ИЗ
			|	Документ.ЧекККМ.Номенклатура КАК ЧекККМНоменклатура
			|ГДЕ
			|	ЧекККМНоменклатура.Ссылка.Дата МЕЖДУ &ПериодС И &ПериодПо
			|	И НЕ ЧекККМНоменклатура.Ссылка.ПометкаУдаления
			|	И ЧекККМНоменклатура.Ссылка.Проведен
			|	И ЧекККМНоменклатура.Ссылка.ЧекПробитНаККМ
			|	И ЧекККМНоменклатура.Ссылка.Фирма = &Фирма
			|	И ЧекККМНоменклатура.Номенклатура.Родитель <> &ПапкаИсключение
			|	И ЧекККМНоменклатура.Ссылка.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидОперации.Возврат)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ОстаткиТоваров.Регистратор.Ссылка,
			|	ОстаткиТоваров.Номенклатура,
			|	ОстаткиТоваров.Характеристика,
			|	ОстаткиТоваров.НоменклатураПоставщика КАК НоменклатураПоставщика,
			|	ОстаткиТоваров.Характеристика.Оф
			|ПОМЕСТИТЬ ВТ_ДанныеРегистраОстатки
			|ИЗ
			|	РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
			|ГДЕ
			|	(ОстаткиТоваров.Регистратор, ОстаткиТоваров.Номенклатура, ОстаткиТоваров.Характеристика) В
			|			(ВЫБРАТЬ
			|				ВТ_ДанныеЧеков.Ссылка,
			|				ВТ_ДанныеЧеков.Номенклатура,
			|				ВТ_ДанныеЧеков.Характеристика
			|			ИЗ
			|				ВТ_ДанныеЧеков КАК ВТ_ДанныеЧеков)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ВТ_ДанныеЧеков.Ссылка,
			|	ВТ_ДанныеЧеков.Склад,
			|	ВТ_ДанныеЧеков.Номенклатура,
			|	ВТ_ДанныеЧеков.Характеристика,
			|	ВТ_ДанныеЧеков.Артикул,
			|	ВТ_ДанныеЧеков.Количество,
			|	ВТ_ДанныеЧеков.Сумма,
			|	ВТ_ДанныеЧеков.Цена,
			|	МАКСИМУМ(ВТ_ДанныеРегистраОстатки.НоменклатураПоставщика) КАК НоменклатураПоставщика,
			|	ВТ_ДанныеРегистраОстатки.ХарактеристикаОф,
			|	ВТ_ДанныеЧеков.СтавкаНДС,
			|	ВТ_ДанныеЧеков.СуммаНДС
			|ИЗ
			|	ВТ_ДанныеЧеков КАК ВТ_ДанныеЧеков
			|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДанныеРегистраОстатки КАК ВТ_ДанныеРегистраОстатки
			|		ПО ВТ_ДанныеЧеков.Ссылка = ВТ_ДанныеРегистраОстатки.РегистраторСсылка
			|			И ВТ_ДанныеЧеков.Номенклатура = ВТ_ДанныеРегистраОстатки.Номенклатура
			|			И ВТ_ДанныеЧеков.Характеристика = ВТ_ДанныеРегистраОстатки.Характеристика
			|
			|СГРУППИРОВАТЬ ПО
			|	ВТ_ДанныеЧеков.Ссылка,
			|	ВТ_ДанныеЧеков.Склад,
			|	ВТ_ДанныеЧеков.Номенклатура,
			|	ВТ_ДанныеЧеков.Характеристика,
			|	ВТ_ДанныеЧеков.Артикул,
			|	ВТ_ДанныеЧеков.Количество,
			|	ВТ_ДанныеЧеков.Сумма,
			|	ВТ_ДанныеЧеков.Цена,
			|	ВТ_ДанныеРегистраОстатки.ХарактеристикаОф,
			|	ВТ_ДанныеЧеков.СтавкаНДС,
			|	ВТ_ДанныеЧеков.СуммаНДС";
			
			рез = Запрос.Выполнить().Выгрузить();
			Если рез.Количество() > 0 Тогда
				ФайлОбмена.СоздатьФайл(ПутьФ);
			КонецЕсли;
			инд = 0;
			для каждого Выборка из рез Цикл
				ОбработкаПрерыванияПользователя();
				инд = инд+1;
				Состояние("Обработка "+инд+" из "+ рез.Количество());
				
				Если Выборка.Номенклатура = NULL Тогда
					Продолжить;
				КонецЕсли;
				
				ФайлОбмена.Добавить();
				ФайлОбмена.Data = Выборка.Ссылка.Дата;
				ФайлОбмена.DokTip = "Check";
				ФайлОбмена.Sklad = Выборка.Склад.Код;
				ФайлОбмена.Firm = Фирма;
				ФайлОбмена.FirmINN = Фирма.ИНН;
				ФайлОбмена.Kol = Выборка.Количество;
				ФайлОбмена.Summa = окр(Выборка.Сумма,2);  
				ФайлОбмена.SumNDS = окр(Выборка.СуммаНДС,2);
				ФайлОбмена.StavNDS = ИмяПеречисления(Выборка.СтавкаНДС);
				Если Выборка.ХарактеристикаОф Тогда
					ФайлОбмена.Nomen = СокрЛП(Выборка.НоменклатураПоставщика);
				Иначе
					ФайлОбмена.Nomen = СокрЛП(Выборка.Номенклатура);
				КонецЕсли;
				ФайлОбмена.KatNomer = СокрЛП(Выборка.Номенклатура.КаталожныйНомер);
				
				зап = РегистрыСведений.ВыгруженныеДокументы.СоздатьМенеджерЗаписи();
				зап.Автор = ПараметрыСеанса.ТекущийПользователь;
				зап.ДатаВыгрузки = ТекущаяДата();
				зап.Документ = Выборка.Ссылка;
				зап.Программа = ЭтотОбъект.Метаданные().Имя;
				зап.Записать(Истина);
				
				ФайлОбмена.Записать();
			КонецЦикла;
			
		КонецЕсли;	
	КонецЦикла;
	
КонецПроцедуры

Функция ПолучитьКодыНоменклатуры(Номенклатура)
	Родитель=Номенклатура;	
	Попытка
		Код=""+СокрЛП(ОткинутьНули(Номенклатура.Код))+" "+СокрЛП(Номенклатура.Наименование)+";";
	Исключение
		Код=""+СокрЛП(ОткинутьНули(Номенклатура.Код))+" "+СокрЛП(Номенклатура.Наименование)+";";
	КонецПопытки;
	Пока Истина Цикл
		Если Родитель.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Тогда
			Родитель=Родитель.Родитель;
			Код=Код+СокрЛП(ОткинутьНули(Родитель.Код))+" "+СокрЛП(Номенклатура.Наименование)+";";
		Иначе
			Возврат ОткинутьНули(Код);
		КонецЕсли;
	КонецЦикла;
КонецФункции

Функция ПолучитьКодыКонтрагента(Контрагент)
	Родитель=Контрагент;
	Код=""+СокрЛП(ПривестиКНужнойДлине(ОткинутьНули(Контрагент.Код), 8))+" "+СокрЛП(Контрагент.Наименование)+";";
	Пока Истина Цикл
		Если Родитель.Родитель <> Справочники.Контрагенты.ПустаяСсылка() Тогда
			Родитель=Родитель.Родитель;
			Код=Код+СокрЛП(ПривестиКНужнойДлине(ОткинутьНули(Родитель.Код), 8))+" "+СокрЛП(Контрагент.Наименование)+";";
		Иначе
			Возврат ОткинутьНули(Код);
		КонецЕсли;
	КонецЦикла;	
КонецФункции

Функция ПривестиКНужнойДлине(Код, Длина)
	Префикс = "";
	Номер = СокрЛП(Код);
	Если СтрДлина(Номер) <= Длина Тогда
		Возврат Номер;
	КонецЕсли;
	Для сч = 1 По СтрДлина(Код) Цикл
		Если Лев(Номер, 1) = "0" или Лев(Номер, 1) = "1" или Лев(Номер, 1) = "2"
			или Лев(Номер, 1) = "3" или Лев(Номер, 1) = "4" или Лев(Номер, 1) = "5"
			или Лев(Номер, 1) = "6" или Лев(Номер, 1) = "7" или Лев(Номер, 1) = "8"
			или Лев(Номер, 1) = "9" Тогда
			Прервать;
		Иначе
			Префикс = Префикс + Лев(Номер, 1);
			Номер = Прав(Номер, СтрДлина(Номер)-1);
		КонецЕСли;
	КонецЦикла;
	Если СтрДлина("" + Префикс + Номер) > Длина Тогда
		Если Лев(Номер, 1) = "0" Тогда
			Номер = Прав(Номер, СтрДлина(Номер)-1);
		КонецЕсли;
	КонецЕсли;
	Возврат ("" + Префикс + Номер);
КонецФункции

Функция ОткинутьНули(Код)
	Для к=1 По СтрДлина(Код) Цикл
		Если НЕ Сред(Код,к,1)="0" Тогда
			Возврат Сред(Код,к);
		КонецЕсли;
	КонецЦикла;
КонецФункции

Функция ПолучитьАдрес(Контрагент)
	Отбор=Новый Структура;
	Отбор.Вставить("Объект",Контрагент);
	Отбор.Вставить("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
	Отбор.Вставить("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресЮрЛица);
	Срез = РегистрыСведений.КонтактнаяИнформация.СрезПоследних(ТекущаяДата(),Отбор);
	Если Срез<>Неопределено Тогда
		Для каждого Стр Из Срез Цикл
			Возврат Стр.Представление;
		КонецЦикла;
	КонецЕсли;
КонецФункции

Процедура ПутьНачалоВыбора(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = ложь;
	Диалог = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.ПолноеИмяФайла = ПутьФ;
	Диалог.Фильтр = "(*.dbf)|*.dbf";
	если Диалог.Выбрать() тогда 
		ПутьФ = Диалог.ПолноеИмяФайла;
	КонецЕсли;
	Возврат;
КонецПроцедуры

Функция ИмяПеречисления(ЗначениеПеречисления)
	Если Не ЗначениеЗаполнено(ЗначениеПеречисления) Тогда
		Возврат ""
	КонецЕсли;
	
	ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
	ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
	
	Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;
КонецФункции


Путь = "C:\SERVICE1\Obmen\Выгрузки\obmen.dbf";