Имя: Пароль:
1C
1С v8
КД2: Фискальные операции
0 Mikhail Volkov
 
02.06.20
09:34
Чеки отбиваются в Альфа-Авто, в которой нет РС Фискальные операции. Затем данные перебрасываются в УПП/КА по правилам, написанными в КД2. РС Фискальные операции имеет измерения: ДокументОснование и ИдентификаторЗаписи. С последним возник вопрос: кто его формирует? По началу в правилах КД2 его прописал:
Если Не ОбъектНайден Тогда
    Объект.ИдентификаторЗаписи = Строка(Новый УникальныйИдентификатор());
КонецЕсли;
Но заметил, что при каждом обмене создается новая запись фискальной операции. Он должен определен до обмена. Как? Пока либо оставлять пустым, либо например, ДокументОснование.УникальныйИдентификатор()?
1 fisher
 
02.06.20
09:56
> возник вопрос: кто его формирует
Хороший вопрос. Почему бы не поискать на него ответ в УПП/КА?
2 Mikhail Volkov
 
02.06.20
10:01
(1) Именно в 1С, не в кассе ККМ? Что-то сортировку записей РС не могу включить (например, по дате)?
3 Галахад
 
гуру
02.06.20
10:04
Наверное, можно сделать
дата+смена+номерчека
4 Mikhail Volkov
 
02.06.20
10:18
(3) Как? Позволяет только НомерЧекаККМ, ЗаводскойНомерФН, РегистрационныйНомерККТ, нет даты.
5 Mikhail Volkov
 
02.06.20
12:28
Оказывается еще есть РС ЖурналФискальныхОпераций - те же измерения и ресурсы (почти). Для чего это дублирование, что сейчас используется? В демо базах оба РС пустые.
6 Mikhail Volkov
 
02.06.20
15:40
(0) Оставляю ИдентификаторЗаписи пустым, делаю повторную загрузку тех же записей, теперь повторных записей не делает, а ОбъектНайден все равно Ложь!? В КД2 ОбъектНайден работает только для справочников и документов - для объектов с GUIDами?
(5) В КА2 (ERP) та же хрень: в РС есть ЖурналФискальныхОпераций и ФискальныеОперации - для чего это дублирование записей?
7 Михаил Козлов
 
02.06.20
15:51
(6) Такое ощущение, что для совместимости. У нас в РС ЖурналФискальныхОпераций записи до 03.04.2019, в ФискальныеОперации - актуальные.
При этом записи в регистр ФО дублируют записи регистра ЖурналФО
8 Mikhail Volkov
 
02.06.20
16:28
(7) Нашел свою тему КД2: РС Журнал фискальных операций 3-х летней давности. В ней упоминается только РС ЖурналФискальныхОпераций, видимо РС ФискальныеОперации не дошел еще, или не было еще. А сейчас открываю, там последняя 10.03.2019, а в ЖурналФискальныхОпераций все есть. У документов до 10.03.2019 ФискальнаяОперацияСтатус: Чек не пробит. Сейчас вопрос куда загружать записи, только в ФискальныеОперации, или оба РС?
9 Ёпрст
 
02.06.20
16:33
(0) Это всё можно не переносить. Эти данные никакой погоды в иб не делают. Так, чисто справочные данные о чеке. Которые и так можно посмотреть на офд
10 Михаил Козлов
 
02.06.20
16:51
(9)+ Для переноса придется еще формировать представление и текст XML. Функцию, которая давала бы XML по объекту в чистом виде не нашел: формирование XML как-то зарыто.
11 Mikhail Volkov
 
02.06.20
17:09
(10) Мне главное чтобы ФискальнаяОперацияСтатус формировалась нормально. Вроде формируется по записи из ФискальныеОперации. Туда?
12 Mikhail Volkov
 
03.06.20
15:45
Попробую писать в РС ФискальныеОперации. Раньше фискальные реквизиты брал из документов, по которым отбиваются чеки. Например, для документа ПриходныйКассовыйОрдер создал отдельное ПКО ФискальнаяОперацияПКО, а в ПКО ПриходныйКассовыйОрдер добавил ПКС с параметром ФискальнаяОперацияПКО (передавать данные в параметр) с правилом ФискальнаяОперацияПКО. Когда выгружается документ, автоматом выгружается его ФискальнаяОперация.
В правилах обмена Альфа-Авто с КА1 сделал так же. А правилах обмена КА1 с КА2 мне уже надо ФискальнаяОперация выгружать из РС в РС. В старых правилах для конфигураций 8.2 обычно делалось в обработчиках "После выгрузки в файл". Например, выгружают Контрагента, и его КИ. В этом обработчике пишут:

Отказ = Источник.ЭтоГруппа;
Если Не Отказ Тогда
    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    КонтактнаяИнформация.Объект,
    |    КонтактнаяИнформация.Тип,
    |    КонтактнаяИнформация.Вид,
    |    КонтактнаяИнформация.Представление,
    |    КонтактнаяИнформация.ЗначениеПоУмолчанию,
    |    КонтактнаяИнформация.Поле1,
    |    КонтактнаяИнформация.Поле2,
    |    КонтактнаяИнформация.Поле3,
    |    КонтактнаяИнформация.Поле4,
    |    КонтактнаяИнформация.Поле5,
    |    КонтактнаяИнформация.Поле6,
    |    КонтактнаяИнформация.Поле7,
    |    КонтактнаяИнформация.Поле8,
    |    КонтактнаяИнформация.Поле9,
    |    КонтактнаяИнформация.Поле10,
    |    КонтактнаяИнформация.Комментарий
    |ИЗ
    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |    КонтактнаяИнформация.Объект = &Объект");

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

Сейчас вроде эти обработчики не используют. Не пойму - что вместо них? Как мне выгрузить ФискальнаяОперация для конкретного документа с его выгрузкой?
13 Ёпрст
 
03.06.20
17:13
(12) она не нужна, как поймешь это, так вопросы по кд отпадут.
14 Mikhail Volkov
 
03.06.20
17:38
(13) Почему не нужна? Сейчас (после 10.03.2019) в документах ФискальнаяОперацияСтатус: Чек не пробит.
Вопрос чисто по КД2: нужно выгрузить объект с информацией в РС по нему. Как?
Например смотрю, есть ПКО для РС: ФИОФизическихЛиц, но не вижу его в ПКО для справочника ФизическихЛиц!?
15 Mikhail Volkov
 
03.06.20
17:40
+ ...для справочника ФизическиеЛица
16 Mikhail Volkov
 
03.06.20
18:37
Для ФизическиеЛица нашел в ПВД в обработчике Перед обработкой:
Запрос = Новый Запрос;
Запрос.Текст = "
    |ВЫБРАТЬ
    |    ФизическиеЛица.Ссылка
    |ИЗ
    |    Справочник.ФизическиеЛица КАК ФизическиеЛица
    |ГДЕ
    |    НЕ ФизическиеЛица.ПометкаУдаления И Не ФизическиеЛица.ЭтоГруппа";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(Выборка.Ссылка,,,,"ФизическиеЛица");    
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = "
    |ВЫБРАТЬ
    |    ИСТИНА КАК Активность,
    |    ФИО.Имя,
    |    ФИО.Отчество,
    |    ФИО.Фамилия,
    |    ФИО.Период,
    |    ФИО.Физлицо
    |ИЗ
    |    РегистрСведений.ФИОФизлиц КАК ФИО";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(Выборка,,,,"ФИОФизическихЛиц");    
КонецЦикла;
17 Ёпрст
 
03.06.20
18:50
(14) дык посмотри в код из чего складывается "чек не пробит" и заполни только эти  реквизиты
18 Ёпрст
 
03.06.20
19:01
Там нужен только один реквизит, как правило, НомерЧекаККМ... максимум, еще какое-нить перечисление, что типа чек пробит, всё.
Никакие левые рег сведений заполнять не надо.
19 Mikhail Volkov
 
03.06.20
19:11
(17) Вроде из записей РС ФискальнаяОперация, но их не когда не загружал, только ЖурналФискальныхОпераций.
(18) Это только в КА1 в кассовых документах НомерЧекаККМ есть, а КА2 его нет.
20 Mikhail Volkov
 
03.06.20
19:50
Только не понял, почему в нем (16) не указан отбор по конкретному физлицу?
21 Mikhail Volkov
 
04.06.20
14:30
(20) сделал также для ФискальнаяОперация, выгружая за день, а выгружаются все похоже фискальные операции из КА1. Видимо не удачный пример взял, эти правила написаны для разовой выгрузки при создании базы КА2.
22 hhhh
 
04.06.20
16:07
(21) зачем вообще чеки выгружать? Это ваше ноу-хау? Кроме вас наверно никто не выгружает.
23 Mikhail Volkov
 
04.06.20
16:41
(22) Выгружать нужно кассовые документы, по которым бьются чеки. В них после 10.03.2019 ФискальнаяОперацияСтатус: Чек не пробит, хотя они пробиты. 3 года назад решал эту проблему КД2: РС Журнал фискальных операций, видимо что-то изменилось. Поэтому спрашиваю как реальных базах, в которых непосредственно бьются чеки? Попутно хочу переписать правила по современному, но пока не получается.
24 Ёпрст
 
04.06.20
16:43
(23) покажи реквизиты КА2.
25 Ёпрст
 
04.06.20
16:43
там наверняка есть номерЧекаККМ
26 Mikhail Volkov
 
04.06.20
17:00
(24) Реквизиты кассовых документов? Неважно есть или нет (отвечал уже в (19)), ФискальнаяОперацияСтатус формируется по РС ФискальныеОперации.
27 Ёпрст
 
04.06.20
18:09
(26) та ну ? Не верю..
28 hhhh
 
04.06.20
18:16
(26) ну значит не нужно чеки загружать. Просто заполнить в УПП реквизит ФискальнаяОперацияСтатус
29 Mikhail Volkov
 
05.06.20
09:22
(28) В УПП/КА1 нет ФискальнаяОперацияСтатус, фискальные операции в нее выгружаю для дальнейшей выгрузки из нее в ERP/КА2.
Пока воспользовался прежнем способом (12), т.е. в ПКО кассовых добавил по ПКС с параметром ФискальнаяОперация, с правилом ФискальнаяОперация. Тут возникли трудности (не приходилось работать с РС в КД2). В обработчике ПКС Перед выгрузкой написал:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Документ", Источник);
Запрос.Текст = "
|ВЫБРАТЬ
|    ФискальнаяОперация.ДокументОснование,
|    ФискальнаяОперация.ИдентификаторЗаписи,
|    ФискальнаяОперация.Дата,
|    ФискальнаяОперация.Организация,
|    ФискальнаяОперация.ТорговыйОбъект,
|    ФискальнаяОперация.ТипДокумента,
|    ФискальнаяОперация.ТипРасчета,
|    ФискальнаяОперация.НомерЧекаККМ,
|    ФискальнаяОперация.НомерСменыККМ,
|    ФискальнаяОперация.ФискальныйПризнак,
|    ФискальнаяОперация.Сумма,
|    ФискальнаяОперация.ОплатаНаличные,
|    ФискальнаяОперация.ОплатаЭлектронно,
|    ФискальнаяОперация.ОплатаПостоплата,
|    ФискальнаяОперация.ОплатаПредоплата,
|    ФискальнаяОперация.ОплатаВстречноеПредоставление,
|    ФискальнаяОперация.АдресСайтаПроверки,
|    ФискальнаяОперация.ЗаводскойНомерФН,
|    ФискальнаяОперация.РегистрационныйНомерККТ
|ИЗ
|    РегистрСведений.ФискальныеОперации КАК ФискальнаяОперация
|ГДЕ
|    ФискальнаяОперация.ДокументОснование = &Документ";
КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
Обычно на этом кончаю в ПКГС, а тут добавил:
Если КоллекцияОбъектов.Количество() = 0 Тогда
    Отказ = Истина;
Иначе
    Значение = КоллекцияОбъектов[0];
КонецЕсли;
Правильно ли? И еще: надо ли в запросе писать все выгружаемые параметры фискальной операции, одного достаточно?
Еще вопрос по ПКО ФискальнаяОперация: в обработчике После загрузки для РС ОбъектНайден не работает (0), поэтому прописал:
Если Параметры.Комментировать Тогда
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Документ", Объект.ДокументОснование);
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ФискальнаяОперация.ДокументОснование
    |ИЗ
    |    РегистрСведений.ФискальныеОперации КАК ФискальнаяОперация
    |ГДЕ
    |    ФискальнаяОперация.ДокументОснование = &Документ";
    Результат = Запрос.Выполнить().Выгрузить();
    Сообщить("" + ?(Результат.Количество() = 0, "Загруж", "Обновл") + "ена фискальная операция для: " + СокрЛП(Объект.ДокументОснование) + " с номером чека ККМ: " + Объект.НомерЧекаККМ + "/" + Объект.НомерСменыККМ, СтатусСообщения.Информация);
КонецЕсли;
При 1-й загрузке пишет: Загружена фискальная операция для: <Объект не найден> (787:89a028924acd401011eaa238546e7598) с номером чека ККМ: 1/87 - да, сам документ еще не загружен в базу. А при следующей нормально: Обновлена фискальная операция для: Приходный кассовый ордер ЧИП-0000191 от 30.05.2020 15:13:32 с номером чека ККМ: 1/87. Конечно это мелочь, главное ФискальнаяОперацияСтатус правильно отображается. Но все же хотелось посмотреть как сейчас это делается типа (16), но с отбором по конкретной записи РС?
30 Ёпрст
 
05.06.20
10:13
Ё...

достаточно определить в нужном документе ТЧ (просто группа) куда в при выгрузке пихать коллекцию из нужных свойств для РС
Всё.
Никаких отдельных правил не надо.
Тогда всё будет лететь вместе с самим документом.
ЗЫ: смотри, как выгружаются движения документа, сделай по-аналогии, только саму коллекцию возьмешь из запроса.
31 Mikhail Volkov
 
05.06.20
11:37
(30) Нет примеров по выгрузке движений документов. Допустим в ПКО ПриходныйКассовыйОрдер добавил группу, выгружаю данные из запроса по РС. А как он поймет, что эти данные нужно загружать не в ПриходныйКассовыйОрдер приемника, а в РС ФискальнаяОперация?
32 Mikhail Volkov
 
05.06.20
13:08
Вопрос темы в принципе решен - нужно грузить записи РС ФискальныеОперации, чтобы правильно отображались ФискальнаяОперацияСтатус в документах, по которым отбиты чеки. Не ясно лишь почему они сами формировались до 10.03.2019 по записям ЖурналФискальныхОпераций, а теперь нет.
Остались некоторые вопросы (29) по техники исполнения. Вроде сейчас обработчики "После выгрузки в файл" не используют, но при выгрузке отмечают только документы, которыми нужно произвести обмен. Никто не отмечает записи РС, сами выгружаются с документами. Пробовал в ПВД кассовых документов писать (по аналогии (16) ФИОФизическихЛиц):
Запрос = Новый Запрос;
Запрос.Текст = "
    |ВЫБРАТЬ
    |    ФО.ДокументОснование,
    |    ФО.ИдентификаторЗаписи,
    |    ФО.Дата,
    |    ФО.Организация,
    |    ФО.ТорговыйОбъект,
    |    ФО.ТипДокумента,
    |    ФО.ТипРасчета,
    |    ФО.НомерЧекаККМ,
    |    ФО.НомерСменыККМ,
    |    ФО.ФискальныйПризнак,
    |    ФО.Сумма,
    |    ФО.ОплатаНаличные,
    |    ФО.ОплатаЭлектронно,
    |    ФО.ОплатаПостоплата,
    |    ФО.ОплатаПредоплата,
    |    ФО.ОплатаВстречноеПредоставление,
    |    ФО.АдресСайтаПроверки,
    |    ФО.ЗаводскойНомерФН,
    |    ФО.РегистрационныйНомерККТ
    |ИЗ
    |    РегистрСведений.ФискальныеОперации КАК ФО";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(Выборка,,,,"ФискальнаяОперация");    
КонецЦикла;
Выгрузились все фискальные операции. Как наложить отбор в ПВД, чтобы выгружались только ФискальныеОперации выгружаемых документов?
33 Mikhail Volkov
 
05.06.20
17:59
Все же, как наложить отбор в ПВД, чтобы выгружались только записи ФискальныеОперации выгружаемых документов?