Суть проблемы:
Нумерация кассовой книги дала сбой.
Описание ситуации:
Печатаю Кассовую книгу за период 13.03 - 17.03.
Нумерация 13,14,15-го - нормальная, 16-го , 17-го бред.
Смотрю отличие между этими числами и данными, а оно в том, что 15-го числа количество документов не влезло на один печатный лист.
Лезу в конфигурацию и вижу супер-функцию
Смотрю соответствие до:
13.03 - 1
14.03 - 2
15.03 - 3
16.03 - 4
17.03 - 5
и вижу весь этот ужас после:
13.03 - 1
14.03 - 2
15.03 - 4
16.03 - 5
17.03 - 5
По коду всё вроде логично и правильно, отрабатывает он, как и ожидалось. Вопрос, у меня у одного не вмещается на лист ПКО и РКО за день? Как побороть?
Пробовал перенумеровать оставшиеся элементы в соответствии так:
Для Каждого Элемент Из СоответствиеНомеровГод Цикл
Если Элемент.Ключ > НачалоДня(ТекДата) Тогда
СоответствиеНомеровГод.Вставить(Элемент.Ключ, Элемент.Значение + 1);
КонецЕсли;
КонецЦикла;
! | http://pro1c.org.ua/index.php?act=announce&id=2: 3 |
Володька @ 04.05.18, 13:42
,
Хоть и прошло больше года, ситуация не разрешена до сих пор. У меня почти каждый день касса не помещается на 1 лист и вследствие - разрыв нумерации.
На УПП перешли в апреле этого года (см. дату поста).
Релиз 1.3.61.3
Проблему решаем "сдвигом" начального номера листов кассовой книги.
Я нашел в конфигурации регистр сведений НомераЛистовКассовойКниги, внес туда начальный номер следующего дня.
Судя по его полной пустоте и глобальному поиску по конфигурации - либо я чего-то не знаю, либо он не используется нигде.
Теперь буду в Кассовую Книгу при формировании брать начальный номер по ПолучитьПоследнее и после формирования записывать, какой номер будет начальным завтра.
Типовой код не менял, в пределах дня нумерует нормально, с учетом сдвига начального номера.
Володька @ 04.05.18, 13:42
,
Вот прямо по ходу работы комментирую свои размышления:
Можно "слегка" подправить" типовой код функции ПолучитьНачальныйНомерЛиста() на регистр НомераЛистовКассовойКниги, НО!
Он не "заточен" под обособленное Подразделение, следовательно, нужно привести его к виду регистра сведений НачальныеНомераЛистовКассовойКниги.
(Если честно - я вообще не вижу смысла в регистре сведений НачальныеНомераЛистовКассовойКниги, его периодичность - Год и пользы ноль)
Периодичность регистра НомераЛистовКассовойКниги - День, что меня очень устраивает.
Также подправить функцию ЗаписатьНачальныйНомерЛиста() на тот же регистр.
Итого:
1. Переделываем регистр НомераЛистовКассовойКниги точно как НачальныеНомераЛистовКассовойКниги. Периодичность не трогаем.
2. Переделываем 2 функции под новый регистр.
Должно работать, даже в динамике, т.е. в процессе работы можно формировать КК сколько угодно ).
Володька @ 04.05.18, 13:42
,
И последнее - решить вопрос перехода в Новый Год )))
Изменения в коде:
Процедура ПолучитьНачальныйНомерЛиста()
Если НЕ ВидОтчета = "Кассовая книга" Тогда
Возврат;
КонецЕсли;
ЗапросНачальныйНомер = Новый Запрос;
ЗапросНачальныйНомер.УстановитьПараметр("Дата",[highlight]ДатаНач[/highlight]);
Если ОбособленноеПодразделениеОрганизации.Пустая() Тогда
ЗапросНачальныйНомер.УстановитьПараметр("СтруктурнаяЕдиница", Организация);
Иначе
ЗапросНачальныйНомер.УстановитьПараметр("СтруктурнаяЕдиница", ОбособленноеПодразделениеОрганизации);
КонецЕсли;
ЗапросНачальныйНомер.УстановитьПараметр("Валюта", Валюта);
ЗапросНачальныйНомер.Текст="ВЫБРАТЬ
| НачальныеНомераЛистовКассовойКнигиСрезПоследних.НомерЛиста,
| НачальныеНомераЛистовКассовойКнигиСрезПоследних.Период
|ИЗ
| РегистрСведений.[highlight]НомераЛистовКассовойКниги[/highlight].СрезПоследних(
| &Дата,
| СтруктурнаяЕдиница = &СтруктурнаяЕдиница
| И Валюта = &Валюта) КАК НачальныеНомераЛистовКассовойКнигиСрезПоследних";
ВыборкаНачальныйНомер = ЗапросНачальныйНомер.Выполнить().Выбрать();
НачальныйНомерЛиста = 1;
Если ВыборкаНачальныйНомер.Следующий() Тогда
// может быть только один номер.
Если ВыборкаНачальныйНомер.Период = [highlight]ДатаНач[/highlight] Тогда
НачальныйНомерЛиста = ВыборкаНачальныйНомер.НомерЛиста;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаписатьНачальныйНомерЛиста()
Если НЕ ВидОтчета = "Кассовая книга" Тогда
Возврат;
КонецЕсли;
МенеджерЗаписи = РегистрыСведений.[highlight]НомераЛистовКассовойКниги[/highlight].СоздатьМенеджерЗаписи();
МенеджерЗаписи.Период = [highlight]ДатаНач[/highlight];
Если ОбособленноеПодразделениеОрганизации.Пустая() Тогда
МенеджерЗаписи.СтруктурнаяЕдиница = Организация;
Иначе
МенеджерЗаписи.СтруктурнаяЕдиница = ОбособленноеПодразделениеОрганизации;
КонецЕсли;
МенеджерЗаписи.Валюта = Валюта;
МенеджерЗаписи.НомерЛиста = НачальныйНомерЛиста;
МенеджерЗаписи.Записать(Истина);
КонецПроцедуры
Процедура ДействияФормыСформировать(Кнопка)
ЗаписатьНачальныйНомерЛиста();
СформироватьОтчет(ЭлементыФормы.ДокументРезультат, ВидОтчета);
КонецПроцедуры
alex_shkut @ Сегодня, 20:03
,
И тут все портит Функция СформироватьСтруктуруНомеровЛистов
Она выбирает все периоды движений по Датам, и последовательно присваивает номера листов, не учитывая их количество за день.
Просто тупо количество дней работы кассы. Один лист за день - будем бороться...
Почти все получилось ))), работает на любой зафиксеынй в регистре период. Если записи на дату нет - книга не формируется. Поправим )
Вернемся к регистру НачальныеНомера, и посчитаем.... бред.
Надо поформировать КК и позаписывать номера листов, само устаканится...
А вот и вылезли нюансы. Если сформировать КК за год - нумерация "ползет". Надо контролировать переход через сутки, и записывать в регистр новые номера листов.
В итоге многих размышлений пришло решение - поработать над данным вопросом, он не так-то уж и прост. Много вариаций тут есть. Будет готовое решение - продолжим тему.
Но решить это надо по-любому.
И очень даже интересно, почему в такой конфе как УПП это до сих пор не разрешено?
Вот один из моментов в коде )))
МенеджерЗаписи.Период = ДатаКон+1; //Попытка записать Завтра ), а юзер сфрмировал концом года
//Жопа в том, что данный документ намного раньше ДатаКон - его надо фиксить
Действительно, последний документ в кассе не концом года )
Вот как-то так мыслим...
В итоге, задача решилась копированием кассовой книги из конфигурации Бухгалтерия с небольшим допиливанием под УПП.
И в Бухгалтерии таки используется дополнительный регистр, но он называется - ПоследниеНомераКассовойКниги
Логика та же, что я писал раньше.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua