Исправление регистра реализованные товары комитента.
Отчет комитенту о продажах прекрасно заполняется по кнопке "Заполнить реализованными по договору", но при проведении движений по регистру реализованные товары комитентов нет, если документы реализации были проведены с датой конец месяца и временем 23:59:59 (дата и время проведения отчета такое же)
Причина - в процедуре ПолучитьОстаткиРеализованныеТоварыКомитентов в параметре запроса «Период» используется Дата документа, и реализации с временем 23:59:59 в остатки не попадают (строка модуля менеджера документа в БП 3.0.54.13 - 1814):
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Если написать там:
Запрос.УстановитьПараметр("Период", Новый Граница(Реквизиты.Период, ВидГраницы.Включая));
и документ проводится правильно...
Заполнение ТЧ по договору выбирает ВСЕ реализации и отчеты о розничных продажах. Они попадают в ТЧ, включая последние за конец месяца с временем 23:59:59, а при проведении эти документы не попадают в движения регистра "Реализованный товары и услуги комитентов (принципалов)".
Причём, не зная причину найти, косяк проблематично, т.к. проявляется он в следующем месяце - сумма документа показана правильная, проводок документ не делает, и бухгалтер видит ошибку только при заполнении ТЧ в следующем месяце, куда попадают "не закрытые" в регистре документы прошлого месяца!
Проблемы собственно особой и нет – не проводим комиссионные товары и агентские услуги датой формирования отчета комитенту с временем 23:59:59 и всё будет в шоколаде. А вот если период закрыт, и бухгалтер каждый месяц, не мудрствуя лукаво, просто удаляет «ненужные» строки, тогда исправим ошибку закрытием регистра с помощью этой обработки, которая создаст ручную операцию расхода по регистру накопления «Реализованные товары и услуги комитентов (принципалов)»:
А чтобы не допускать этот косяк в будущем, можно исправить параметр в конфигурации, или использовать прилагаемое расширение, в котором в состав расширения включен один документ «Отчет комитенту о продажах», для которого в модуле менеджера расширения введена одна процедура «вместо» штатной
&Вместо("ПолучитьОстаткиРеализованныеТоварыКомитентов")
Функция _еаю_ПолучитьОстаткиРеализованныеТоварыКомитентов(СтруктураПараметров)
Реквизиты = СтруктураПараметров.Реквизиты[0];
РеализованныеТоварыКомитентов = СтруктураПараметров.ТоварыКомитента;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.РеализованныеТоварыКомитентов");
ЭлементБлокировки.УстановитьЗначение("Организация", Реквизиты.Организация);
ЭлементБлокировки.УстановитьЗначение("Период", Новый Диапазон(, Реквизиты.Период));
ЭлементБлокировки.УстановитьЗначение("Контрагент", Реквизиты.Контрагент);
ЭлементБлокировки.УстановитьЗначение("ДоговорКонтрагента", Реквизиты.ДоговорКонтрагента);
ЭлементБлокировки.ИсточникДанных = РеализованныеТоварыКомитентов;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Период", Новый Граница(Реквизиты.Период, ВидГраницы.Включая));//ЕАЮ--- было Реквизиты.Период);
Замечу сразу, что не нравится мне директива «Вместо» в расширениях, но это только один из возможных вариантов исправления не снимая конфигурацию с поддержки, для примера, так сказать. В тех же расширениях можно сделать установку времени реализации меньше 23:59:59, или нарисовать внешнюю обработку изменения времени уже существующих документов…да мало ли что ещё можно придумать?
Ошибке уже не один год, писал сюда https://partners.v8.1c.ru/forum/topic/1498197 ещё в июне 16 года, но ничё не изменилось…