Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 апр 2026, 03:02

поле не найдено

Автор sali, 04 мар 2026, 11:44

0 Пользователей и 1 гость просматривают эту тему.

Максим75

sali, ну не может такого быть, что только инфа с шапки.
каким-то образом документ ОРП заполняется. Там заполняется вагон табличных частей: Номенклатура, Оплаты, подарочные сертификаты и прочее. И вот это все берется пакетом запросов по чекам.

sali

Цитата: Максим75 от 05 мар 2026, 12:32вагон табличных частей: Номенклатура, Оплаты, подарочные се
такое находил , правда в модуле документа чека ккм, но это шло для заполнения налогообложения
чтоб прям цикл был : для каждого чека из чековзасмену разборочный цикл, такого я не видел. где могло быть такое - поставил точку останова , не попадает. а так отладкой прохожу с начала действий команды ЗакрытьСмену

Максим75

sali, еще раз:
при закрытии кассовой смены открывается обработка ЗакрытиеКассовойСмены?

sali

Максим75, да с выемкой наличных

Максим75

sali, замечательно. вот в этой обработке и ищите. где-то в ней создается документ ОРП (или как он у Вас называется)?
вот просто найдите есть ли где-то Документы.ОтчетОРозничныхПродажах.СоздатьДокумент или как-то так?

sali

есть
&НаКлиенте
Процедура ЗакрытьСменуЗавершение(Результат, ДополнительныеПараметры) Экспорт

Если Результат = КодВозвратаДиалога.Да Тогда

ПредлагатьОткрытьСмену = Истина;
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") И ДополнительныеПараметры.Свойство("ПредлагатьОткрытьСмену") Тогда
ПредлагатьОткрытьСмену = ДополнительныеПараметры.ПредлагатьОткрытьСмену;
КонецЕсли;

ЗакрытиеСменыПереопределено = Ложь;
ОбщегоНазначенияРМККлиентПереопределяемый.ЗакрытьСмену(ЭтотОбъект, ЗакрытиеСменыПереопределено);

Если ЗакрытиеСменыПереопределено Тогда

Если ТаблицаКассККМОрганизаций.Количество() = 1 Тогда

Если Не ФизЛицоПользователяЗаполнено Тогда
ОбщегоНазначенияРМККлиентСервер.УстановитьТекущуюСтраницу(Элементы.СтраницаВводКассира);
УстановитьВидимостьЭлементаФормы(Элементы.ГруппаОперации, Ложь);
КонецЕсли;

КонецЕсли;

Возврат;

КонецЕсли;

ВыполнитьСверкуИтогов(Объект.Организация);

СтруктураДляПроверкиКассовойСмены = СформироватьСтруктуруДляПроверкиКассовойСмены();
ЗаархивироватьЧекиККМ(СтруктураДляПроверкиКассовойСмены);

Если СтруктураДляПроверкиКассовойСмены.Отказ Тогда

ПоказатьПредупреждение(, СтруктураДляПроверкиКассовойСмены.ТекстОшибки);
Возврат;

КонецЕсли;

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

Оповещение = Новый ОписаниеОповещения("ПродолжитьЗакрытиеСменыОкончаниеФискальныйОтчетПечатьЗавершение",
ЭтотОбъект,
ПредлагатьОткрытьСмену);

ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьЗакрытиеСменыНаФискальномУстройстве(Оповещение,
УникальныйИдентификатор, ПодключаемоеОборудование, ПараметрыОперации, ДополнительныеПараметры);

КонецЕсли;

КонецПроцедуры

// потом идем  сюда
Процедура ЗакрытьСмену(Форма, ЗакрытиеСменыПереопределено) Экспорт

ЗакрытиеСменыПереопределено = Истина;

КассаККМ = Форма.Объект.КассаККМ;
УникальныйИдентификатор = Форма.УникальныйИдентификатор;

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

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

КонецПроцедуры


// дальше идем сюда


Процедура ЗакрытьКассовуюСменуПродолжение(Результат, ДополнительныеПараметры) Экспорт

КассаККМ = ДополнительныеПараметры.КассаККМ;
УникальныйИдентификатор = ДополнительныеПараметры.УникальныйИдентификатор;
ИспользоватьПодключаемоеОборудование = ДополнительныеПараметры.ИспользоватьПодключаемоеОборудование;
ТаблицаТерминалы = ДополнительныеПараметры.ТаблицаТерминалы;

ПараметрыКассыККМ = УправлениеНебольшойФирмойПовтИсп.ПолучитьПараметрыКассыККМ(КассаККМ);
ИдентификаторУстройства = ПараметрыКассыККМ.ИдентификаторУстройства;
ИспользоватьБезПодключенияОборудования = ПараметрыКассыККМ.ИспользоватьБезПодключенияОборудования;

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

Если ИспользоватьБезПодключенияОборудования Тогда
СформироватьОтчетОРозничныхПродажах(ИспользоватьБезПодключенияОборудования,
УникальныйИдентификатор,
КассаККМ,
ТаблицаТерминалы);
ИначеЕсли ИспользоватьПодключаемоеОборудование И ЗначениеЗаполнено(ИдентификаторУстройства) Тогда

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

Оповещение = Новый ОписаниеОповещения("ПечатьФискальногоОтчетаЗавершение",
ОбщегоНазначенияРМКУНФКлиент,
ДополнительныеПараметры);

ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьЗакрытиеСменыНаФискальномУстройстве(
Оповещение,
УникальныйИдентификатор,
ИдентификаторУстройства,
ПараметрыОперации);

КонецЕсли;

КонецПроцедуры


// в предварительном просмотре чеков , здесь ничего особого тоже нету

// единственно строка, ОтчетОРозничныхПродажахОбъект = РозничныеПродажиСервер.СоздатьОтчетОРозничныхПродажах(СтруктураСостояниеКассовойСмены.КассоваяСмена, ОписаниеОшибки);
// создает новый документ
Функция ПредварительнаяПроверкаЧеков(КассаККМ) Экспорт

ОписаниеОшибки = "";
Результат = Новый Структура;
Результат.Вставить("Ошибки", Ложь);
Результат.Вставить("НеПробитыеЧеки", Новый Массив);
Результат.Вставить("ЧекиБезФискальногоНомера", Новый Массив);
Результат.Вставить("ОтчетОРозничныхПродажах", Неопределено);

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



Максим75

что здесь СформироватьОтчетОРозничныхПродажах(ИспользоватьБезПодключенияОборудования,
            УникальныйИдентификатор,
            КассаККМ,
            ТаблицаТерминалы);

sali

по моей тестовой базе, код туда не заходит, но
Процедура СформироватьОтчетОРозничныхПродажах(ИспользоватьБезПодключенияОборудования, УникальныйИдентификатор,
КассаККМ, ТаблицаТерминалы)

// 1. Заполнение отчета о розничных продажах.
ДлительнаяОперация = НачатьФормированиеОтчетаОРозничныхПродажах(КассаККМ, УникальныйИдентификатор);

глОперацияЗакрытияКассовойСмены = ДлительнаяОперация;

ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Неопределено);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется закрытие смены'");
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;

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

Оповещение = Новый ОписаниеОповещения("ПриЗавершенииФормированияОтчетаОРозничныхПродажах",
ОбщегоНазначенияРМКУНФКлиент,
ДополнительныеПараметры);

ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);

//Оповестить("ИзменениеСостоянияКассовойСмены", КассаККМ);

КонецПроцедуры

// далее в длительную операцию
// Запускает длительную операцию для формирования ОРП.
//
// Параметры:
//  КассаККМ - ОпределяемыйТип.КассаККМРМК - касса ККМ для формирования ОРП.
//  УникальныйИдентификатор - Строка - уникальный идентификатор формы.
//
// Возвращаемое значение:
//  см. ДлительныеОперации.ВыполнитьФункцию.
//
Функция НачатьФормированиеОтчетаОРозничныхПродажах(КассаККМ, УникальныйИдентификатор) Экспорт

ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);

Возврат ДлительныеОперации.ВыполнитьФункцию(
ПараметрыВыполнения,
"Документы.ОтчетОРозничныхПродажах.СформироватьОтчетОРозничныхПродажахИВыполнитьАрхивацию",
КассаККМ);

КонецФункции


Максим75

sali, у Вас оно туда зайдет из другого места.

вот здесь смотрите
Документы.ОтчетОРозничныхПродажах.СформироватьОтчетОРозничныхПродажахИВыполнитьАрхивацию

sali

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск