|
Дополнительная нумерация в документе | ☑ | ||
---|---|---|---|---|
0
reginah2015
19.01.15
✎
22:20
|
Добрый день! Помогите пожалуйста, я начинающий программист.
Задача: Просим рассмотреть возможность нумерации документа Приходный кассовый ордер в разрезе подразделения. Моё решение: 1)создала в справочнике Подразделения дополнительный реквизит Префикс - строка 2) Создала в документе ПКО дополнительный префикс 3) Создала дополнительный регистр сведений Нумерация по подразделению Измерения : Регистрационный номер , Подразделение, Организация Ресурс : Префикс В форме документа пишу : в процедуре Перед записью НомерПрефиксПодразделения = 0; НомерПрефиксПодразделенияКод = 0; НомерПрефиксПодразделенияНомер = 0; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(НумерацияПоПодразделениямСрезПоследних.РегистрационныйНомер, 0) КАК РегистрационныйНомер |ИЗ | РегистрСведений.НумерацияПоПодразделениям.СрезПоследних( | , | Организация = &Организация | И Подразделение = &Подразделение) КАК НумерацияПоПодразделениямСрезПоследних"; Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Подразделение",ПодразделениеОрганизации); РезультатЗапроса = Запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл НомерПрефиксПодразделения = РезультатЗапроса.РегистрационныйНомер ; КонецЦикла; НомерПрефиксПодразделенияНомер = НомерПрефиксПодразделения +1; НомерПрефиксПодразделенияКод = ПодразделениеОрганизации.ПрефиксПодразделения + " - "+ НомерПрефиксПодразделенияНомер; Если ПодразделениеОрганизации.ПрефиксПодразделения <>"" Тогда Движения.НумерацияПоПодразделениям.Записывать = Истина; Движение = Движения.НумерацияПоПодразделениям.Добавить(); Движение.Период = Дата; Движение.РегистрационныйНомер = НомерПрефиксПодразделенияНомер; Движение.Подразделение = ПодразделениеОрганизации; Движение.Организация = Организация; Движение.Префикс = ПодразделениеОрганизации.ПрефиксПодразделения; КонецЕсли; |
|||
1
reginah2015
19.01.15
✎
22:22
|
Создаю новый документ
При нажатие на кнопку Записать , в регистре сведений появляется запись При нажатие на ОК - запись исчезает |
|||
2
reginah2015
19.01.15
✎
22:23
|
как правильно написать код ??? Подскажите пожалуйста
|
|||
3
Hans
19.01.15
✎
22:25
|
(0) зачем регистр сведений? В задаче ведь этого небыло? Почему нельзя писать в тот же номер?
|
|||
4
reginah2015
19.01.15
✎
22:26
|
регистр сведение Периодичность По позиции регистратора
Режим записи Подчинение регистратору |
|||
5
reginah2015
19.01.15
✎
22:27
|
документ могут удалить
|
|||
6
reginah2015
19.01.15
✎
22:27
|
надо где-то хранить данные
|
|||
7
Hans
19.01.15
✎
22:30
|
(5) Зачем тебе номер документа без самого документа? не мудри, пиши свой номер с префиксом подразделения в тот же реквизит.
Либо ты задачу полностью не договариваешь. |
|||
8
Hans
19.01.15
✎
22:32
|
Твоя структура регистра непонятно какую информацию несет.
|
|||
9
reginah2015
19.01.15
✎
22:33
|
эта нумерация должна ещё в кассовую книгу попадать
|
|||
10
reginah2015
19.01.15
✎
22:35
|
Организация состоит из нескольких маленьких организаций, и это только для одной
|
|||
11
reginah2015
19.01.15
✎
22:36
|
если документ пометили на удаление, потом удалили, откуда взять нумерацию для следующего документа
|
|||
12
Фокусник
19.01.15
✎
22:36
|
(6) платформа сама делает уникальные номера по каждому префиксу, Ваше дело только префикс правильный назначить.
|
|||
13
reginah2015
19.01.15
✎
22:37
|
по подразделению
|
|||
14
grate
19.01.15
✎
22:38
|
(0) о, ручная нумерация! "но зачем!?" (с)
п.1 правильно, дальше в документе в ПриУстановкеНовогоНомера пропиши установку префикса из реквизита документа (подразделение) ну или в ту же подписку ПриУстановкеНовогоНомераДокумента добавь, если это всё на типовой какой-то делается |
|||
15
reginah2015
19.01.15
✎
22:38
|
по мелких организациям уже есть префиксы
|
|||
16
Hans
19.01.15
✎
22:39
|
(11) Можно просто доп реквизит добавть "ДопНомер" и туда писать. И перенумеровывать его перед кассовой книгой.
я обычно работал со связками УТ > БП в твоем случае просто применяли перенумератор номеров перед сдачей кассовой книги в бухии, фсе. То что ты делаешь с регистром сведений это муть. В голову нормальному человеку не придет =) |
|||
17
reginah2015
19.01.15
✎
22:43
|
извините, вопрос: В какую процедуру писать???
|
|||
18
reginah2015
19.01.15
✎
22:43
|
Перед записью???
|
|||
19
reginah2015
19.01.15
✎
22:45
|
при проведение?
При записи? |
|||
20
Hans
19.01.15
✎
22:45
|
(15) будет у тебя два префикса ПрефиксОрг + ПрефиксПодр.
в подписке на событие ПриУстановкеНовогоНомераДокумента пропишешь что нужно. не забывай про обработчики "ПриСменеПодразделения" в формах. |
|||
21
Hans
19.01.15
✎
22:46
|
(19) пишешь там ПриУстановкеНовогоНомераДокумента
|
|||
22
reginah2015
19.01.15
✎
22:53
|
Процедура ДобавитьПрефиксПодразделенияОрганизации(ДокументОбъект, Префикс) Экспорт
МетаданныеДокумента = ДокументОбъект.Метаданные(); Если ЕстьРеквизитДокумента("ПодразделениеОрганизации", МетаданныеДокумента) И ЗначениеЗаполнено(ДокументОбъект.ПодразделениеОрганизации.Префикс) Тогда Если Префикс = "0" Тогда Префикс = ДокументОбъект.ПодразделениеОрганизации.Префикс + Префикс; Иначе Префикс = Префикс + ДокументОбъект.ПодразделениеОрганизации.Префикс; КонецЕсли; ИначеЕсли ЕстьРеквизитДокумента("ПодразделениеОтправитель", МетаданныеДокумента) И ЗначениеЗаполнено(ДокументОбъект.ПодразделениеОтправитель.Префикс) Тогда Если Префикс = "0" Тогда Префикс = ДокументОбъект.ПодразделениеОтправитель.Префикс + Префикс; Иначе Префикс = Префикс + ДокументОбъект.ПодразделениеОтправитель.Префикс; КонецЕсли; Иначе Префикс = Префикс + "0"; КонецЕсли; Конецпроцедуры // ДобавитьПрефиксПодразделенияОрганизации() |
|||
23
reginah2015
19.01.15
✎
22:56
|
нумерация должна быть
Бухгалтерия 00001 Администрация 00001 Бухгалтерия 00002 Производ. 00001 |
|||
24
Фокусник
19.01.15
✎
22:56
|
(17) включаешь замер производительности, записываешь новый документ, отключаешь замер, анализируешь выполнившийся код (можно в замере сделать поиск по "Префикс")
|
|||
25
reginah2015
19.01.15
✎
22:56
|
основную нумерацию не трогать
|
|||
26
reginah2015
19.01.15
✎
22:57
|
а с регистром сведений никак???(((
|
|||
27
Фокусник
19.01.15
✎
22:59
|
(25) зачем документу два номера? В задании нет ничего про две параллельные нумерации ;)
|
|||
28
reginah2015
19.01.15
✎
23:04
|
решила не трогать основную нумерацию
|
|||
29
Фокусник
19.01.15
✎
23:09
|
(28) хозяин - барин ;)
|
|||
30
reginah2015
19.01.15
✎
23:12
|
Как сделать, чтобы один раз записать в регистр сведений и при пере проведение документа , запись не исчезала???
|
|||
31
reginah2015
20.01.15
✎
04:39
|
помогите пожалуйста, как написать???
|
|||
32
Peltzer
20.01.15
✎
06:20
|
Ну дык, при перепроведении система очищает все записи регистров, созданные этим документом, потом выполняет Процедура ОбработкаПроведения(Отказ, Режим)
и двигает только те регистры, которые там прописаны двигать. Сделайте реквизит в документ и расслабьтесь. |
|||
33
reginah2015
20.01.15
✎
18:15
|
Задача:
1) В кассовой книги в печатной форме вместо номер документа , выводить нумерацию из реквизита ПрефиксПодразделения, созданная в первом задание |
|||
34
reginah2015
20.01.15
✎
18:16
|
По первому заданию : кто-то нибудь писал в регистр сведений , при проведение документа???
|
|||
35
ale-sarin
20.01.15
✎
18:20
|
посмотрите, как в типовых конфах последних релизов реализовано ведение кассовых книг по подразделениям.
|
|||
36
reginah2015
20.01.15
✎
18:21
|
Перем ДатаЛиста;
Если НЕ ПроверкаПериода() Тогда Возврат; КонецЕсли; Если Организация.Пустая() Тогда Сообщить("Не выбрана организация."); Возврат; КонецЕсли; // {ОбособленныеПодразделения Если ФормироватьПоПодразделению И НЕ ЗначениеЗаполнено(ПодразделениеОрганизации) Тогда Сообщить("Не выбрано подразделение."); Возврат; ИначеЕсли НЕ ФормироватьПоПодразделению И ЗначениеЗаполнено(ПодразделениеОрганизации) Тогда Сообщить("При снятом флажке ""Подразделение"" подразделение должно быть очищено."); Возврат; КонецЕсли; // }ОбособленныеПодразделения ДокументРезультат.Очистить(); ДокументРезультат.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КассоваяКнига"; НачалоГода = НачалоГода(ДатаНач); // расчет номера начального листа // осуществляется по проводкам так как не все операции по // кассе оформляются приходными/расходными ордерами ЛистовЗаГод = 0; ЛистовЗаМесяц = 0; Попытка //для случая, когда к организации нет доступа Если ПересчитатьНомера Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ПлатежныйАгент", ПлатежныйАгент); Запрос.УстановитьПараметр("НачалоГода", НачалоГода); // {ОбособленныеПодразделения Запрос.УстановитьПараметр("Подразделение", ПодразделениеОрганизации); // }ОбособленныеПодразделения ТекстЗапроса = "ВЫБРАТЬ | НомераЛистовКассовойКниги.Период, | НомераЛистовКассовойКниги.Организация, // {ОбособленныеПодразделения | НомераЛистовКассовойКниги.ПодразделениеОрганизации, // }ОбособленныеПодразделения | НомераЛистовКассовойКниги.ПлатежныйАгент, | НомераЛистовКассовойКниги.НомерЛиста |ИЗ | РегистрСведений.НомераЛистовКассовойКниги КАК НомераЛистовКассовойКниги |ГДЕ | НомераЛистовКассовойКниги.Период >= &НачалоГода | И НомераЛистовКассовойКниги.Организация = &Организация // {ОбособленныеПодразделения | И НомераЛистовКассовойКниги.ПодразделениеОрганизации = &Подразделение // }ОбособленныеПодразделения | И НомераЛистовКассовойКниги.ПлатежныйАгент = &ПлатежныйАгент"; Запрос.Текст = ТекстЗапроса; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Менеджер = РегистрыСведений.НомераЛистовКассовойКниги.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(Менеджер, Выборка); Менеджер.Удалить(); КонецЦикла; Иначе Если ДатаНач <> НачалоГода Тогда Отбор = Новый Структура(); Отбор.Вставить("Организация", Организация); Отбор.Вставить("ПлатежныйАгент", ПлатежныйАгент); // {ОбособленныеПодразделения Отбор.Вставить("ПодразделениеОрганизации", ПодразделениеОрганизации); // }ОбособленныеПодразделения Номера = РегистрыСведений.НомераЛистовКассовойКниги.СрезПоследних(ДатаНач - 86400, Отбор); Если (Номера.Количество() > 0) И (Номера[0].Период >= НачалоГода) Тогда ЛистовЗаГод = Номера[0].НомерЛиста; ЛистовЗаПредыдущиеМесяцы = 0; НомераПредМесяцев = РегистрыСведений.НомераЛистовКассовойКниги.СрезПоследних(НачалоМесяца(ДатаНач) - 86400, Отбор); Если (НомераПредМесяцев.Количество() > 0) И (НомераПредМесяцев[0].Период >= НачалоГода) Тогда ЛистовЗаПредыдущиеМесяцы = НомераПредМесяцев[0].НомерЛиста; КонецЕсли; ЛистовЗаМесяц = ЛистовЗаГод - ЛистовЗаПредыдущиеМесяцы; КонецЕсли; КонецЕсли; КонецЕсли; Исключение //Эта ветка сработает при выборе организации на которю нет прав Предупреждение(НСтр("ru = 'Нарушение прав доступа!'")); Возврат; КонецПопытки; // Инициируем области отчета Макет = ПолучитьМакет("КассоваяКнига"); ////////////////////////////////////////////////////////////////////////////////////////// ОбластьВалОстатокОтчет = Макет.ПолучитьОбласть("ВалОстаток|Отчет"); ОбластьПодвалОтчет = Макет.ПолучитьОбласть("Подвал|Отчет"); ОбластьВТомЧислеОтчет = Макет.ПолучитьОбласть("ВТомЧисле|Отчет"); ОбластьОстатокОтчет = Макет.ПолучитьОбласть("Остаток|Отчет"); ОбластьЛистовЗаМесяцОтчет = Макет.ПолучитьОбласть("ЛистовЗаМесяц|Отчет"); ОбластьЛистовЗаГодОтчет = Макет.ПолучитьОбласть("ЛистовЗаГод|Отчет"); ОбластьВкладнойЛистОтчет = Макет.ПолучитьОбласть("ВкладнойЛист|Отчет"); ОбластьВкладнойЛист373ПОтчет = Макет.ПолучитьОбласть("ВкладнойЛист373П|Отчет"); ОбластьОтчетКассираОтчет = Макет.ПолучитьОбласть("ОтчетКассира|Отчет"); ОбластьОтчетКассира373ПОтчет = Макет.ПолучитьОбласть("ОтчетКассира373П|Отчет"); ОбластьШапкаОтчет = Макет.ПолучитьОбласть("Шапка|Отчет"); ОбластьОстатокНаНДОтчет = Макет.ПолучитьОбласть("ОстатокНаНД|Отчет"); ОбластьКурсовыеРазницыОтчет = Макет.ПолучитьОбласть("КурсовыеРазницы|Отчет"); ОбластьКурсовыеРазницыПоВалютеОтчет = Макет.ПолучитьОбласть("КурсовыеРазницыПоВалюте|Отчет"); ОбластьПереносОтчет = Макет.ПолучитьОбласть("Перенос|Отчет"); ОбластьСтрокаВалШирокаяОтчет = Макет.ПолучитьОбласть("СтрокаВалШирокая|Отчет"); ОбластьСтрокаВалОтчет = Макет.ПолучитьОбласть("СтрокаВал|Отчет"); ОбластьСтрокаШирокаяОтчет = Макет.ПолучитьОбласть("СтрокаШирокая|Отчет"); ОбластьСтрокаОтчет = Макет.ПолучитьОбласть("Строка|Отчет"); ОбластьОборотОтчет = Макет.ПолучитьОбласть("Оборот|Отчет"); ОбластьОборотРубОтчет = Макет.ПолучитьОбласть("ОборотРуб|Отчет"); ОбластьОборотВалОтчет = Макет.ПолучитьОбласть("ОборотВал|Отчет"); ОбластьКурсоваяРазницаОтчет = Макет.ПолучитьОбласть("КурсоваяРазница|Отчет"); ОбластьКурсоваяРазницаПоВалютеОтчет = Макет.ПолучитьОбласть("КурсоваяРазницаПоВалюте|Отчет"); ОбластьКонечныйОстатокОтчет = Макет.ПолучитьОбласть("КонечныйОстаток|Отчет"); //////////////////////////////////////////////////////////////////////////////////////////////// НачИтоги = ?(ПересчитатьНомера,НачалоГода,ДатаНач); МассивСчетов = Новый Массив; Если ПлатежныйАгент Тогда МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.КассаПлатежногоАгента); Иначе МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.КассаОрганизации); МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.КассаОрганизацииВал); КонецЕсли; ЗапросПоИтогам = Новый Запрос; ЗапросПоИтогам.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОстаткиИОбороты.Период КАК Период, | ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокДт КАК ВалютнаяСуммаНачальныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокДт КАК ВалютнаяСуммаКонечныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &НачИтоги, | &ДатаКон, | ДЕНЬ, | ДвиженияИГраницыПериода, | Счет В ИЕРАРХИИ (&МассивСчетов), | , | Организация = &Организация // {ОбособленныеПодразделения | И ((НЕ &ФормироватьПоПодразделению) ИЛИ Подразделение = &ПодразделениеОрганизации) // }ОбособленныеПодразделения | ) КАК ХозрасчетныйОстаткиИОбороты | |УПОРЯДОЧИТЬ ПО | Период |ИТОГИ | СУММА(СуммаНачальныйОстатокДт), | СУММА(ВалютнаяСуммаНачальныйОстатокДт), | СУММА(СуммаКонечныйОстатокДт), | СУММА(ВалютнаяСуммаКонечныйОстатокДт), | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | Период ПЕРИОДАМИ(ДЕНЬ, , ), | Валюта |АВТОУПОРЯДОЧИВАНИЕ"; ЗапросПоИтогам.УстановитьПараметр("НачИтоги", НачалоДня(НачИтоги)); ЗапросПоИтогам.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); ЗапросПоИтогам.УстановитьПараметр("Организация", Организация); ЗапросПоИтогам.УстановитьПараметр("МассивСчетов", МассивСчетов); // {ОбособленныеПодразделения ЗапросПоИтогам.УстановитьПараметр("ПодразделениеОрганизации", ПодразделениеОрганизации); ЗапросПоИтогам.УстановитьПараметр("ФормироватьПоПодразделению", ФормироватьПоПодразделению); // }ОбособленныеПодразделения РезультатЗапросаПоИтогам = ЗапросПоИтогам.Выполнить(); ЗапросПоДокументам = Новый Запрос; ЗапросПоДокументам.Текст= "ВЫБРАТЬ РАЗРЕШЕННЫЕ | КассовыеДокументы.Документ КАК Документ, | НАЧАЛОПЕРИОДА(КассовыеДокументы.Документ.Дата, ДЕНЬ) КАК День, | КассовыеДокументы.Документ.Дата КАК ДатаДок, | КассовыеДокументы.Документ.Номер КАК НомерДок, | КассовыеДокументы.Документ.ВалютаДокумента КАК Валюта, | ПОДСТРОКА(КассовыеДокументы.Документ.Основание, 1, 200) КАК Основание, | ВЫБОР | КОГДА КассовыеДокументы.Документ ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА КассовыеДокументы.Документ.ПринятоОт | ИНАЧЕ КассовыеДокументы.Документ.Выдать | КОНЕЦ КАК ТекстДок, | ВЫБОР | КОГДА КассовыеДокументы.Документ ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА КассовыеДокументы.Документ.СуммаДокумента | ИНАЧЕ 0 | КОНЕЦ КАК Приход, | ВЫБОР | КОГДА КассовыеДокументы.Документ ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА КассовыеДокументы.Документ.СуммаДокумента | ИНАЧЕ 0 | КОНЕЦ КАК Расход, | ВЫБОР | КОГДА КассовыеДокументы.Документ ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА Проводки.СчетДт | ИНАЧЕ ВЫБОР | КОГДА КассовыеДокументы.Документ.ВидОперации = &ОперацияПриемРозничнойВыручки | ТОГДА КассовыеДокументы.Документ.СчетУчетаРасчетовСКонтрагентом | ИНАЧЕ Проводки.СчетКт | КОНЕЦ | КОНЕЦ КАК Счет |ИЗ | (ВЫБРАТЬ | ПриходныйКассовыйОрдер.Ссылка КАК Документ | ИЗ | Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер | ГДЕ | ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ | И ПриходныйКассовыйОрдер.Дата МЕЖДУ &НачИтоги И &ДатаКон | И ПриходныйКассовыйОрдер.Организация = &Организация // {ОбособленныеПодразделения | И ((НЕ &ФормироватьПоПодразделению) | ИЛИ ПриходныйКассовыйОрдер.ПодразделениеОрганизации = &ПодразделениеОрганизации) // }ОбособленныеПодразделения | И ПриходныйКассовыйОрдер.СчетКасса В ИЕРАРХИИ(&Счет) | И ПриходныйКассовыйОрдер.Проведен | И ПриходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | РасходныйКассовыйОрдер.Ссылка | ИЗ | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер | ГДЕ | РасходныйКассовыйОрдер.Дата МЕЖДУ &НачИтоги И &ДатаКон | И РасходныйКассовыйОрдер.Организация = &Организация // {ОбособленныеПодразделения | И ((НЕ &ФормироватьПоПодразделению) | ИЛИ РасходныйКассовыйОрдер.ПодразделениеОрганизации = &ПодразделениеОрганизации) // }ОбособленныеПодразделения | И РасходныйКассовыйОрдер.СчетКасса В ИЕРАРХИИ(&Счет) | И РасходныйКассовыйОрдер.Проведен | И РасходныйКассовыйОрдер.ПометкаУдаления = ЛОЖЬ) КАК КассовыеДокументы | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Хозрасчетный.СчетДт КАК СчетДт, | Хозрасчетный.СчетКт КАК СчетКт, | Хозрасчетный.Регистратор КАК Регистратор | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ГДЕ | (Хозрасчетный.СчетДт В ИЕРАРХИИ (&Счет) | И ((НЕ Хозрасчетный.СчетДт.Валютный) | ИЛИ Хозрасчетный.ВалютнаяСуммаДт <> 0) // {ОбособленныеПодразделения | И ((НЕ &ФормироватьПоПодразделению) | ИЛИ Хозрасчетный.ПодразделениеДт = &ПодразделениеОрганизации) // }ОбособленныеПодразделения | ИЛИ Хозрасчетный.СчетКт В ИЕРАРХИИ (&Счет) | И ((НЕ Хозрасчетный.СчетКт.Валютный) | ИЛИ Хозрасчетный.ВалютнаяСуммаКт <> 0) // {ОбособленныеПодразделения | И ((НЕ &ФормироватьПоПодразделению) | ИЛИ Хозрасчетный.ПодразделениеКт = &ПодразделениеОрганизации) // }ОбособленныеПодразделения | И (Хозрасчетный.Период МЕЖДУ &НачИтоги И &ДатаКон) | И Хозрасчетный.Организация = &Организация | И Хозрасчетный.Активность = ИСТИНА)) КАК Проводки | ПО КассовыеДокументы.Документ = Проводки.Регистратор | |УПОРЯДОЧИТЬ ПО | День, | ДатаДок, | Документ |ИТОГИ ПО | День, | Документ, | Счет |АВТОУПОРЯДОЧИВАНИЕ"; ЗапросПоДокументам.УстановитьПараметр("НачИтоги", НачалоДня(НачИтоги)); ЗапросПоДокументам.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); ЗапросПоДокументам.УстановитьПараметр("Организация", Организация); ЗапросПоДокументам.УстановитьПараметр("Счет", МассивСчетов); // {ОбособленныеПодразделения ЗапросПоДокументам.УстановитьПараметр("ПодразделениеОрганизации", ПодразделениеОрганизации); ЗапросПоДокументам.УстановитьПараметр("ФормироватьПоПодразделению", ФормироватьПоПодразделению); // }ОбособленныеПодразделения ЗапросПоДокументам.УстановитьПараметр("ОперацияПриемРозничнойВыручки", Перечисления.ВидыОперацийПКО.РозничнаяВыручка); РезультатЗапросаПоДокументам = ЗапросПоДокументам.Выполнить(); ТаблицаДокументы = РезультатЗапросаПоДокументам.Выгрузить(); ТаблицаДокументы.Очистить(); ТаблицаДокументы.Колонки.Добавить("СтрокаСчет"); ТаблицаДокументы.Колонки.Добавить("Валютный"); ТаблицаДокументы.Колонки.Добавить("ВидДокумента"); ТипЧисло=ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2); РабочаяТаблица = Новый ТаблицаЗначений; РабочаяТаблица.Колонки.Добавить("Валюта",Новый ОписаниеТипов("СправочникСсылка.Валюты")); РабочаяТаблица.Колонки.Добавить("ВалютаПредставление", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(100)); РабочаяТаблица.Колонки.Добавить("ВалОстаток",ТипЧисло); РабочаяТаблица.Колонки.Добавить("Остаток",ТипЧисло); РабочаяТаблица.Колонки.Добавить("ВалПриход",ТипЧисло); РабочаяТаблица.Колонки.Добавить("Приход",ТипЧисло); РабочаяТаблица.Колонки.Добавить("ВалРасход",ТипЧисло); РабочаяТаблица.Колонки.Добавить("Расход",ТипЧисло); РабочаяТаблица.Индексы.Добавить("Валюта"); ВыборкаПоВалюте = РезультатЗапросаПоИтогам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Валюта"); Пока ВыборкаПоВалюте.Следующий() Цикл Если НЕ ВыборкаПоВалюте.Валюта = Справочники.Валюты.ПустаяСсылка() Тогда Строка = РабочаяТаблица.Добавить(); Строка.Валюта = ВыборкаПоВалюте.Валюта; Строка.ВалютаПредставление = Строка(ВыборкаПоВалюте.Валюта); Строка.Остаток = ВыборкаПоВалюте.СуммаНачальныйОстатокДт; Строка.ВалОстаток = ВыборкаПоВалюте.ВалютнаяСуммаНачальныйОстатокДт; КонецЕсли; КонецЦикла; ВыборкаОбщихИтогов = РезультатЗапросаПоИтогам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие"); Строка = РабочаяТаблица.Добавить(); Строка.Валюта = Справочники.Валюты.ПустаяСсылка(); Если ВыборкаОбщихИтогов.Следующий() Тогда Строка.Остаток = ВыборкаОбщихИтогов["СуммаНачальныйОстатокДт"]-РабочаяТаблица.Итог("Остаток"); Строка.ВалОстаток = ВыборкаОбщихИтогов["ВалютнаяСуммаНачальныйОстатокДт"]-РабочаяТаблица.Итог("ВалОстаток"); Иначе Строка.Остаток = 0; Строка.ВалОстаток = 0; КонецЕсли; РабочаяТаблица.Сортировать("ВалютаПредставление"); // Определяем последние дни месяцев за которые формируется кассовая книга СписокДней = Новый СписокЗначений; ВыборкаИтоговПоДням = РезультатЗапросаПоИтогам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период"); Пока ВыборкаИтоговПоДням.Следующий() Цикл СписокДней.Добавить(ВыборкаИтоговПоДням.Период); КонецЦикла; ВыборкаДокументовПоДням = РезультатЗапросаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"День"); Пока ВыборкаДокументовПоДням.Следующий() Цикл СписокДней.Добавить(ВыборкаДокументовПоДням.День); КонецЦикла; СписокДней.СортироватьПоЗначению(); МассивПоследнихДней = Новый Массив; Для й = 2 По СписокДней.Количество() Цикл Если НачалоМесяца(СписокДней[й - 2].Значение) <> НачалоМесяца(СписокДней[й - 1].Значение) Тогда МассивПоследнихДней.Добавить(СписокДней[й - 2].Значение); КонецЕсли; КонецЦикла; // Формирование листов кассовой книги ВыборкаИтоговПоДням = РезультатЗапросаПоИтогам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период"); ВыборкаДокументовПоДням = РезультатЗапросаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"День"); ПоПроводкам = ВыборкаИтоговПоДням.Следующий(); ПоДокументам = ВыборкаДокументовПоДням.Следующий(); БылиОшибки = Ложь; ВывестиПодвал = Ложь; СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, КонецДня(ДатаКон)); ДатаДействияПриказа373П = '20120101'; ТипПКО = Тип("ДокументСсылка.ПриходныйКассовыйОрдер"); ТипРКО = Тип("ДокументСсылка.РасходныйКассовыйОрдер"); Пока ПоПроводкам Или ПоДокументам Цикл Если НЕ ПоПроводкам Тогда ДатаЛиста = ВыборкаДокументовПоДням.День; ИначеЕсли НЕ ПоДокументам Тогда ДатаЛиста = ВыборкаИтоговПоДням.Период; Иначе ДатаЛиста = Мин(ВыборкаДокументовПоДням.День, ВыборкаИтоговПоДням.Период); КонецЕсли; Если ВыборкаИтоговПоДням.СуммаОборотДт = 0 И ВыборкаИтоговПоДням.СуммаОборотКт = 0 Тогда Если НЕ ПоДокументам ИЛИ ДатаЛиста <> ВыборкаДокументовПоДням.День Тогда ПоПроводкам = ВыборкаИтоговПоДням.Следующий(); Продолжить; КонецЕсли; КонецЕсли; НомерЛиста = ЛистовЗаГод + 1; ЛистовЗаГод = ЛистовЗаГод + 1; ЛистовЗаМесяц = ЛистовЗаМесяц + 1; КоличествоПриходныхДокументов = 0; КоличествоРасходныхДокументов = 0; СчетКурсовыхРазниц = ПланыСчетов.Хозрасчетный.ПрочиеДоходыИРасходы; Остаток = РабочаяТаблица.Итог("Остаток"); Если ДатаЛиста >= ДатаНач Тогда ЗаголовокЛиста = " КАССА за " + Формат(ДатаЛиста, "ДФ=dd.MM.yyyy"); НомерЛистаСтр = "Лист " + НомерЛиста; Если ДатаЛиста < ДатаДействияПриказа373П Тогда ОбластьВкладнойЛистОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста; ДокументРезультат.Вывести(ОбластьВкладнойЛистОтчет); ОбластьОтчетКассираОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста; ДокументРезультат.Присоединить(ОбластьОтчетКассираОтчет); ОбластьШапкаОтчет.Параметры.ТекстНомерЛиста = НомерЛистаСтр; Иначе ЗаголовокЛиста = " КАССА за " + Формат(ДатаЛиста, "ДЛФ=DD"); ОбластьВкладнойЛист373ПОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста; ОбластьОтчетКассира373ПОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста; ОбластьВкладнойЛист373ПОтчет.Параметры.ТекстНомерЛиста = НомерЛистаСтр; ОбластьОтчетКассира373ПОтчет.Параметры.ТекстНомерЛиста = НомерЛистаСтр; ДокументРезультат.Вывести(ОбластьВкладнойЛист373ПОтчет); ДокументРезультат.Присоединить(ОбластьОтчетКассира373ПОтчет); ОбластьШапкаОтчет.Параметры.ТекстПлатежныйАгент = ""; ОбластьШапкаОтчет.Параметры.ТекстНомерЛиста = ""; КонецЕсли; Если ПлатежныйАгент Тогда ОбластьШапкаОтчет.Параметры.ТекстПлатежныйАгент = "По деятельности платежного агента"; КонецЕсли; ДокументРезультат.Вывести(ОбластьШапкаОтчет); ДокументРезультат.Присоединить(ОбластьШапкаОтчет); ОбластьОстатокНаНДОтчет.Параметры.ОстатокНачало=Остаток; ДокументРезультат.Вывести(ОбластьОстатокНаНДОтчет); ДокументРезультат.Присоединить(ОбластьОстатокНаНДОтчет); КонецЕсли; ПоВалютам = Ложь; Для Каждого Строка Из РабочаяТаблица Цикл Если ((Строка.Остаток <> 0) Или (Строка.ВалОстаток <> 0)) И (НЕ Строка.Валюта=Справочники.Валюты.ПустаяСсылка()) Тогда ПоВалютам = Истина; Прервать; КонецЕсли; КонецЦикла; // Высота каждой строки = 13 пунктов // На стандартную страницу помещается 59 строк // Высоты секций в строках: // Шапка = 5 стр // ВкладнойЛист = 3 стр (с 2013 2 стр) // ОтчетКассира = 3 стр (с 2013 2 стр) // ОстатокНаНачало = 1 стр // ВТомЧисле = 1 стр // Остаток = 1 стр // ВалОстаток = 2 стр // КурсовыеРазницы = 2 стр // КурсовыеРазницыПоВалюте = 1 стр // Строка = 2 стр // СтрокаШирокая = 4 стр // СтрокаВал = 2 стр // СтрокаВалШирокая = 4 стр // Перенос = 1 стр // Оборот = 1 стр // ОборотРуб = 1 стр // ОборотВал = 2 стр // КурсоваяРазница = 1 стр // КурсоваяРазницаПоВалюте = 1 стр // КонечныйОстаток = 1 |
|||
37
reginah2015
20.01.15
✎
18:39
|
Может, у кого ещё мысли появились:
Задача: 1) Создать регистр сведений 2) При проведение документа писать номер в регистр сведений и на форму документа в новый реквизит 3) При пометке документа на удаление, удалять по нему записи 4) При перепродение документа, чтобы номер не увеличивался , 5) при замене подразделения в документе, уже существующего документа, чтобы номер менялся |
|||
38
mdocs
20.01.15
✎
18:47
|
тебе подсказали два нормальных решения.
1. основной номер с префиксом. 2. дополнительный номер, можно с префиксом, можно без. все замуты с регистром сведений - мазохизм. контролировать нумерацию надо глазками есно буха. |
|||
39
reginah2015
20.01.15
✎
18:50
|
сказали, как хочешь, но пиши в регистр
|
|||
40
reginah2015
20.01.15
✎
19:01
|
номер надо куда-то писать, чтобы нумерация никуда не пропадала
допустим 1,2,4 - 3 пропало так как документ пометили на удаление |
|||
41
mdocs
20.01.15
✎
19:11
|
(40) если ручками напачкали пусть ручками и приберут - либо изменят руками номер четвертого, либо следующий документ введут под номером три. такие вещи не нужно автоматизировать - автоматизируя хаос получаешь автоматизированный хаос, это надо помнить.
|
|||
42
reginah2015
20.01.15
✎
20:28
|
почему хаос??? главное как это автоматизировать
|
|||
43
reginah2015
20.01.15
✎
20:31
|
может, кто-то сталкивался с этим???
|
|||
44
reginah2015
21.01.15
✎
04:49
|
я про дополнительную нумерацию
|
|||
45
Peltzer
21.01.15
✎
06:26
|
Вот недавно же была тема от Alena_Ly про доп.нумерацию.
|
|||
46
DrZombi
гуру
21.01.15
✎
06:34
|
Сделай проще Добавь префикс в подразделение, и при создании нового ПКО подставляй его.
Все остальные момент, типо съехал номер и т.д. это частный случай, возникают как правила из-за частных случаев, обычно это сбой. |
|||
47
DrZombi
гуру
21.01.15
✎
06:35
|
(44) Зачем? Зачем лепить пятое колесо? :)
|
|||
48
reginah2015
21.01.15
✎
17:13
|
надо с регистром
|
|||
49
reginah2015
21.01.15
✎
17:32
|
сведений
|
|||
50
reginah2015
21.01.15
✎
17:33
|
потом в кассовой книге должна нумероваться не по коду, а по этому номеру
|
|||
51
reginah2015
21.01.15
✎
17:35
|
допустим Бухгалтерия - Б
Управление - У Б - 00001 Б - 00002 Б - 00003 У - 00001 У - 00002 У - 00003 |
|||
52
alexei366
21.01.15
✎
17:38
|
(48) В базах данных для таблиц у которых уникальным ключом является автоинкрементная колонка в отдельной таблице хранятся текущие использованые максимальные номера.
Можешь попробывать независимый не переодический регистр сведений с измерением "Префикс" (ну может ещё в добавок чонить по желанию смотря в скольки разрезах ты хочешь чтоб префикс жил) и ресурс "Номер". В модуле ПередЗаписью к примеру при помощи "БлокировкаДанных" блокируешь конкретную строку этого регистра, вычисляешь текущее значение и записываешь следующее и также устанавливаешь номер. Можешь вынести получения нового номера по Префиксу в отдельную Функцию в которой будет ставиться блокировка на строку и инкрементироваться значение. Если Функция будет вызываться из модуля объекта или подписки то можешь не переживать за "зря" инкрементированные значения при ошибке записи, транзакция откатит все на свои места. Ну а при смене подразделения также в модуле объекта смотришь равенство "Подрасделение = Ссылка.Подразделение" и если изменилось то получаем новый код, ну или если код пустой. как-то так наверно (P.S а чо без фотки?) |
|||
53
Biker
21.01.15
✎
17:39
|
проапгрейдить бухию до корп,которая может работать с обособками и не изобретать велосипед и ломать существующий учет.
|
|||
54
reginah2015
21.01.15
✎
19:20
|
нумерация должна присвоиться, при проведение документа
|
|||
55
reginah2015
21.01.15
✎
19:21
|
делаю: при проведение документа:
|
|||
56
reginah2015
21.01.15
✎
19:22
|
проверяю новый ли документ
|
|||
57
reginah2015
21.01.15
✎
19:23
|
тока при перепроведение документа, нумерация удваиваеться
|
|||
58
reginah2015
21.01.15
✎
19:23
|
как сделать??? не пойму
|
|||
59
alexei366
22.01.15
✎
04:58
|
Время придет и ты все поймешь))))
|
|||
60
reginah2015
22.01.15
✎
05:22
|
DrZombi
46 - 21.01.15 - 06:34 Сделай проще Добавь префикс в подразделение, и при создании нового ПКО подставляй его. .... а нумерацию будет какая : Допустим : Б 0001 Б 0002 У 0003 или Б 0001 Б 0002 У 0001 |
|||
61
Peltzer
22.01.15
✎
06:27
|
В рамках префикса система выдаст автоматически последний номер +1,
т.е. Б01 Б02 У01 |
|||
62
DrZombi
гуру
22.01.15
✎
08:11
|
(60) Да такая. А какой номер ты выведешь в Кассовую книгу - С префиксом или Без, уже тебе решать.
И Ручное редактирование номера запретить :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |