Имя: Пароль:
1C
1С v8
Средний Чек УТ 2.3 (Для Украины)
0 seregapplk
 
04.12.18
13:39
Доброго времени суток, начальству приспичило средний чек, чеки удаляются, Как отменить удаление и сделать что то типа архивации как в Розница.Вот потом в отчет не проблема, или это я иду сложным путем?
1 seregapplk
 
04.12.18
13:39
не пойму как сделать спойлер
вот как сейчас
// Удаляем чеки.
Если Не ОтменитьТранзакцию Тогда
Попытка
УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь);
Исключение
ОтменитьТранзакцию = Истина;
Предупреждение("Не удалось удалить чеки ККМ!");
КонецПопытки;
КонецЕсли;
2 seregapplk
 
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].ПолучитьОбъект();
                    ЧекНаУдаление.УстановитьПометкуУдаления(Истина);
                КонецЦикла;
                //-доработка
3 seregapplk
 
04.12.18
13:42
вот предлагают на инфостарт, но как реализовать, буду пробовать
4 seregapplk
 
13.12.18
10:01
Чеки помечаются на удаление, в отчет я вывел, но это не совсем "в отдельный регистр сведений" но все равно спасибо
Ошибка? Это не ошибка, это системная функция.