Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Средний Чек УТ 2.3 (Для Украины)

Средний Чек УТ 2.3 (Для Украины)
Я
   seregapplk
 
04.12.18 - 13:39
Доброго времени суток, начальству приспичило средний чек, чеки удаляются, Как отменить удаление и сделать что то типа архивации как в Розница.Вот потом в отчет не проблема, или это я иду сложным путем?
 
 
   seregapplk
 
1 - 04.12.18 - 13:39
не пойму как сделать спойлер
вот как сейчас
// Удаляем чеки. 

Если Не ОтменитьТранзакцию Тогда 
Попытка 
УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь); 
Исключение 
ОтменитьТранзакцию = Истина; 
Предупреждение("Не удалось удалить чеки ККМ!"); 
КонецПопытки; 
КонецЕсли;
   seregapplk
 
2 - 04.12.18 - 13:40
вот полная Поцедура
Если КонецДня(Дата) = КонецДня(ТекущаяДата()) Тогда 
РежимПроведения = РежимПроведенияДокумента.Оперативный; 
Иначе 
РежимПроведения = РежимПроведенияДокумента.Неоперативный; 
КонецЕсли; 

МассивДокументовКПроведению = Новый Массив; 

ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах(); 
СоответствиеТарифов = УправлениеРозничнойТорговлей.СформироватьСоответствиеТарифовЭквайринг(ОтчетОРозничныхПродажах.ДоговорЭквайринга); 

ОтчетОРозничныхПродажах.Склад = Справочники.Склады.ПустаяСсылка(); 

ЗапросПоЧекам = Новый Запрос; 
ЗапросПоЧекам.УстановитьПараметр("НачДата" , НачалоДня(Дата)); 
ЗапросПоЧекам.УстановитьПараметр("КонДата" , КонецДня(Дата)); 
ЗапросПоЧекам.УстановитьПараметр("КассаККМ", КассаККМ); 

ЗапросПоЧекам.Текст =" 
|ВЫБРАТЬ 
|    Док.Ссылка КАК Ссылка 
|ИЗ 
|    Документ.ЧекККМ КАК Док 
|ГДЕ 
|    Док.Дата МЕЖДУ &НачДата И &КонДата 
|    И Док.КассаККМ = &КассаККМ 
|    И Док.Проведен 
|ДЛЯ ИЗМЕНЕНИЯ Документ.ЧекККМ 
|"; 

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

ЗапросПоОплате = Новый Запрос(" 
|ВЫБРАТЬ 
|    Док.Ссылка.Склад КАК Склад, 
|    Док.ВидОплаты.ТипОплаты КАК ТипОплаты, 
|    Док.ВидОплаты КАК ВидОплаты, 
|    СУММА(ВЫБОР КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа ТОГДА 
|    Док.Сумма 
|    ИНАЧЕ 
|    -Док.Сумма 
|    КОНЕЦ) КАК Сумма 
|ИЗ 
|    Документ.ЧекККМ.Оплата КАК Док 
|ГДЕ 
|    Док.Ссылка.Дата МЕЖДУ &НачДата И &КонДата 
|    И Док.Ссылка.КассаККМ = &КассаККМ 
|    И Док.Ссылка.Проведен 
|    И Док.ВидОплаты.ТипОплаты <> &ТипОплатыНаличные 
|СГРУППИРОВАТЬ ПО 
|    Док.Ссылка.Склад, 
|    Док.Ссылка, 
|    Док.НомерСтроки, 
|    Док.ВидОплаты.ТипОплаты, 
|    Док.ВидОплаты 
|"); 

ЗапросПоОплате.УстановитьПараметр("НачДата" , НачалоДня(Дата)); 
ЗапросПоОплате.УстановитьПараметр("КонДата" , КонецДня(Дата)); 
ЗапросПоОплате.УстановитьПараметр("КассаККМ" , КассаККМ); 
ЗапросПоОплате.УстановитьПараметр("ВидОперацииПродажа", Перечисления.ВидыОперацийЧекККМ.Продажа); 
ЗапросПоОплате.УстановитьПараметр("ТипОплатыНаличные" , Перечисления.ТипыОплатЧекаККМ.Наличные); 

ЗапросПоДисконтнымКартам = Новый Запрос(" 
|ВЫБРАТЬ 
|    Док.Склад КАК Склад, 
|    Док.ДисконтнаяКарта КАК ДисконтнаяКарта, 
|    Док.ВладелецДисконтнойКарты КАК ВладелецДисконтнойКарты, 
|    СУММА(ВЫБОР КОГДА Док.ВидОперации = &ВидОперацииПродажа ТОГДА 
|    Док.СуммаДокумента 
|    ИНАЧЕ 
|    -Док.СуммаДокумента 
|    КОНЕЦ) КАК Сумма 
|ИЗ 
|    Документ.ЧекККМ КАК Док 
|ГДЕ 
|    Док.Дата МЕЖДУ &НачДата И &КонДата 
|    И Док.КассаККМ = &КассаККМ 
|    И Док.ДисконтнаяКарта <> &ПустаяДисконтнаяКарта 
|    И Док.Проведен 
|СГРУППИРОВАТЬ ПО 
|    Док.Склад, 
|    Док.ДисконтнаяКарта, 
|    Док.ВладелецДисконтнойКарты 
|ИМЕЮЩИЕ 
|    СУММА(ВЫБОР КОГДА Док.ВидОперации = &ВидОперацииПродажа ТОГДА 
|    Док.СуммаДокумента 
|    ИНАЧЕ 
|    -Док.СуммаДокумента 
|    КОНЕЦ) <> 0 
|"); 

ЗапросПоДисконтнымКартам.УстановитьПараметр("НачДата" , НачалоДня(Дата)); 
ЗапросПоДисконтнымКартам.УстановитьПараметр("КонДата" , КонецДня(Дата)); 
ЗапросПоДисконтнымКартам.УстановитьПараметр("КассаККМ" , КассаККМ); 
ЗапросПоДисконтнымКартам.УстановитьПараметр("ПустаяДисконтнаяКарта", Справочники.ИнформационныеКарты.ПустаяСсылка()); 
ЗапросПоДисконтнымКартам.УстановитьПараметр("ВидОперацииПродажа" , Перечисления.ВидыОперацийЧекККМ.Продажа); 
ЗапросПоДисконтнымКартам.УстановитьПараметр("ТипОплатыНаличные" , Перечисления.ТипыОплатЧекаККМ.Наличные); 

ОтменитьТранзакцию = Ложь; 
НачатьТранзакцию(); 

РезультатЗапросаПоЧекам = ЗапросПоЧекам.Выполнить(); 
РезультатыЗапросов = Запрос.ВыполнитьПакет(); 
РезультатЗапроса = РезультатыЗапросов[1]; 
//РезультатыЗапросов массив из двух элементов 

//РезультатЗапроса[0] - все серийные номера на номенклатуру 
//РезультатЗапроса[1] - Основной запрос 

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

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

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

ТаблицаСерийныеНомераКомплект = Неопределено;// Таблица в которую будут выгружены серийные номера на комплектующие набора-комплекта 

СтруктураПоискаСерийногоНомера = Новый Структура()// Набор полей для поиска серийного номера на комплектующее набора-комплекта 

СтруктураПоискаСерийногоНомераНоменклатура = Новый Структура()// Набор полей для поиска серийного номера на номенклатуру 

СтруктураПоляЗаполнения = Новый Структура()// Содержит поля которые нужно обновить в документе "Отчет о розничных продажах" 

//СтруктураПоляЗаполнения содержит поля которые нужно обновить. 
//Ключ структуры содержит имя поля 

//Значение структуры = "Истина" поле участвует в отборе по таблице с серийными номерами 
// = "Ложь" поле не участвует в отборе по таблице с серийными номерами 

СтруктураПоляЗаполнения.Вставить("Склад" , Истина); 
СтруктураПоляЗаполнения.Вставить("Номенклатура" , Истина); 
СтруктураПоляЗаполнения.Вставить("ЕдиницаИзмерения" , Истина); 
СтруктураПоляЗаполнения.Вставить("Коэффициент" , Истина); 
СтруктураПоляЗаполнения.Вставить("ХарактеристикаНоменклатуры" , Истина); 
СтруктураПоляЗаполнения.Вставить("СерияНоменклатуры" , Истина); 
СтруктураПоляЗаполнения.Вставить("Количество" , Ложь); 
СтруктураПоляЗаполнения.Вставить("Цена" , Истина); 
СтруктураПоляЗаполнения.Вставить("ПроцентСкидкиНаценки" , Истина); 
СтруктураПоляЗаполнения.Вставить("ПроцентАвтоматическихСкидок" , Истина); 
СтруктураПоляЗаполнения.Вставить("УсловиеАвтоматическойСкидки" , Истина); 
СтруктураПоляЗаполнения.Вставить("ЗначениеУсловияАвтоматическойСкидки", Истина); 
СтруктураПоляЗаполнения.Вставить("Сумма" , Ложь); 
СтруктураПоляЗаполнения.Вставить("ПодакцизныеТоварыДляКоммерческогоИспользования", Ложь); 
СтрокаПолейИндекса = ""; 
Для Каждого ИмяПоля Из СтруктураПоляЗаполнения Цикл 
Если ИмяПоля.Значение Тогда 
СтрокаПолейИндекса = СтрокаПолейИндекса + ИмяПоля.Ключ + ","; 
КонецЕсли; 
КонецЦикла; 
ТаблицаСерийныеНомераНоменклатуры.Индексы.Добавить(Сред(СтрокаПолейИндекса, 0,СтрДлина(СтрокаПолейИндекса) - 1)); 

ПараметрыСвязиСтрокТЧ = Новый Соответствие; 
ПараметрыСвязиСтрокТЧ.Вставить("Товары", Новый Структура("СвободныйКлюч, ФлагМодификации", Неопределено, Ложь)); 
ПараметрыСвязиСтрокТЧ.Вставить("СоставНабора", Новый Структура("СвободныйКлюч, ФлагМодификации", Неопределено, Ложь)); 
ДокументЧекККМ = Неопределено; 

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

Если Не ОтменитьТранзакцию Тогда 
СтруктураПоиска = Новый Структура; 
СтруктураПоиска.Вставить("Склад", ОтчетОРозничныхПродажах.Склад); 

МассивОплат = ТаблицаОплатПлатежныеКарты.НайтиСтроки(СтруктураПоиска); 
Для Каждого Оплата Из МассивОплат Цикл 
НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить(); 
НоваяСтрока.ВидОплаты = Оплата.ВидОплаты; 
НоваяСтрока.Сумма = Оплата.Сумма; 
НоваяСтрока.ПроцентТорговойУступки = СоответствиеТарифов[НоваяСтрока.ВидОплаты]; 
ОтчетОРозничныхПродажах.ПересчитатьТорговуюУступку(НоваяСтрока); 

ТаблицаОплатПлатежныеКарты.Удалить(Оплата); 
КонецЦикла; 

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

ТаблицаОплатБанковскиеКредиты.Удалить(Оплата); 
КонецЦикла; 

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

ТаблицаПоДисконтнымКартам.Удалить(ПродажаПоДисконтнойКарте); 
КонецЦикла; 

Если ЗаписатьОтчетОРозничныхПродажах(ОтчетОРозничныхПродажах) Тогда 
МассивДокументовКПроведению.Добавить(ОтчетОРозничныхПродажах); 
Иначе 
ОтменитьТранзакцию = Истина; 
Прервать; 
КонецЕсли; 
КонецЕсли; 

ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах(); 
СоответствиеТарифов = УправлениеРозничнойТорговлей.СформироватьСоответствиеТарифовЭквайринг(ОтчетОРозничныхПродажах.ДоговорЭквайринга); 

ОтчетОРозничныхПродажах.Склад = Выборка.Склад; 
КонецЕсли; 
КонецЕсли; 
КонецЕсли; 

СтрокаТабличнойЧасти = ОтчетОРозничныхПродажах.Товары.Добавить(); 

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

Если мСкладыВТабличнойЧасти Тогда 
СтрокаТабличнойЧасти.Склад = Выборка.Склад; 
КонецЕсли; 
КонецЦикла; 

// Удаляем чеки. 

Если Не ОтменитьТранзакцию Тогда 
Попытка 
УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь); 
Исключение 
ОтменитьТранзакцию = Истина; 
Предупреждение("Не удалось удалить чеки ККМ!"); 
КонецПопытки; 
КонецЕсли; 

// Записываем ОтчетОРозничныхПродажах. 

Если Не ОтменитьТранзакцию И ОтчетОРозничныхПродажах.Товары.Количество() > 0 Тогда 
Для Каждого Оплата Из ТаблицаОплатПлатежныеКарты Цикл 
НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить(); 
НоваяСтрока.ВидОплаты = Оплата.ВидОплаты; 
НоваяСтрока.Сумма = Оплата.Сумма; 
НоваяСтрока.ПроцентТорговойУступки = СоответствиеТарифов[НоваяСтрока.ВидОплаты]; 
ОтчетОРозничныхПродажах.ПересчитатьТорговуюУступку(НоваяСтрока); 
КонецЦикла; 

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

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

Если ЗаписатьОтчетОРозничныхПродажах(ОтчетОРозничныхПродажах) Тогда 
МассивДокументовКПроведению.Добавить(ОтчетОРозничныхПродажах); 
Иначе 
ОтменитьТранзакцию = Истина; 
КонецЕсли; 
КонецЕсли; 

Если ОтменитьТранзакцию Тогда 
ОтменитьТранзакцию(); 
Иначе 
ЗафиксироватьТранзакцию(); 
Для Каждого ДокументКПроведению Из МассивДокументовКПроведению Цикл 
Попытка 
ДокументКПроведению.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения); 
Исключение 
ОбщегоНазначения.СообщитьОбОшибке("Не удалось провести документ """ + ДокументКПроведению + """."); 
КонецПопытки; 

ДокументКПроведению.ПолучитьФорму().Открыть(); 
КонецЦикла; 
КонецЕсли; 
КонецЕсли; 

КонецПроцедуры// ОбработкаЧековККМ(

    
Найденный ответ помечайте кнопкой "Это решение", это позволит другим пользователям быстрее находить ответ на данный вопрос.
Ответы
  
2.  DJDUH  19 04.12.18 13:06
(1) Я бы писал данные среднего Чека в РС, перед удалением чеков + отчетик для начальства и например удалял через год.
    
3.  namazi74  2 04.12.18 13:13  Сейчас в теме
зачем их хранить? у нас после проведения пишется в отдельный РС дата, позиция, ответственный, номер документа. и дальше уже не важно, что будет с документами. типовые механизмы минимально подправлены.
    
4.  seregapplk 04.12.18 13:14  Сейчас в теме
(3)
пишется в отдельный РС дата, позиция, ответственный, номер документа
нельзя ли подробнее?
    
5.  namazi74  2 04.12.18 13:26  Сейчас в теме
(4) что именно? Я общую логику описал у нас. Всё зависит от конфигурации уже. У нас в Процедуре ДвиженияПоРегистрам в модулях ЧекаККМ, Реализации и т.д. происходит запись данных этих документов в отдельный регистр сведений. Дальше уже отчетом вытаскиваем из него данные. Типовая УТ 10.3 многое не позволяет смотреть в текущих продажах, потому свои регистры спасают положение.
    
6.  insurgut  191 04.12.18 13:33  Сейчас в теме
Как-то так:

                //+доработка, было:

                //УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь);

                //стало:

                МассивЧеков = РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка");
                Для Сч = 1 По МассивЧеков.Количество() Цикл
                    ЧекНаУдаление = МассивЧеков[Сч-1].ПолучитьОбъект();
                    ЧекНаУдаление.УстановитьПометкуУдаления(Истина);
                КонецЦикла;
                //-доработка
   seregapplk
 
3 - 04.12.18 - 13:42
вот предлагают на инфостарт, но как реализовать, буду пробовать

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует