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