Кассовая книга по подразделениям в Бухгалтерии 3.0

Программирование - Практика программирования

В бухгалтерии 3.0 ПРОФ потребовалась вести кассу по подразделениям. Прочитав много статей, я поняла, что можно перейти на КОРП, либо переделать конфигурацию, на КОРП переход насчитали около 25000, решила переделать конфигурацию, но чтобы изменения в основных объектах были минимальны. Может, кому пригодится, а может, кто-то найдет у меня ошибки или прокомментирует)

1. Добавляю в ПКО и РКО реквизиты сПодразделениеКТ и СПодразделениеДТ

зачем в ПКО добавила сПодразделениеКТ  не знаю, на всякий случай видимо, в РКО СПодразделениеДТ добавила для перемещения между кассами сделала

 

   Выводим на форму документа ПКО реквизит сПодразделениеДТ

Выводим на форму документа РКО реквизиты сПодразделениеКт и с ПодразделениеДТ

2. Создаем регистр накоплений сКассоваяКнига

3. Для того, чтобы при проведении ПКО и РКО данные этих документов попадали в регистр, создаем Подписку на событие

и общий модуль со следующей процедурой

 

Процедура сПКОПроведениеОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	Если ТипЗнч(Источник.ссылка) = ТипЗнч(Документы.ПриходныйКассовыйОрдер.ПустаяСсылка()) тогда
		
		
		Если ЗначениеЗаполнено(Источник.сПодразделениеДт) Тогда
			
					
			Движение=Источник.Движения.сКассоваяКнига;
			Движение.Записывать=Истина;
			ДвижениеП=Движение.Добавить();
			ДвижениеП.Период = Источник.Дата;
			
			ДвижениеП.Организация = Источник.Организация;
			ДвижениеП.Валюта = Источник.ВалютаДокумента;
			ДвижениеП.ВидДвижения=ВидДвиженияНакопления.Приход;
			
			
			ДвижениеП.Подразделение = Источник.сПодразделениеДт;
			ДвижениеП.СчетУчета =  Источник.СчетКасса;
			ДвижениеП.Сумма =  Источник.СуммаДокумента;   
		КонецЕсли;
		
	КонецЕсли;
	Если ТипЗнч(Источник.ссылка) = ТипЗнч(Документы.РасходныйКассовыйОрдер.ПустаяСсылка()) тогда
		Если Источник.Ссылка.ВидОперации=Перечисления.ВидыОперацийРКО.ПрочийРасход Тогда 
			Если ЗначениеЗаполнено(Источник.сПодразделениеКт) И ЗначениеЗаполнено(Источник.сПодразделениеДт) Тогда
				Отказ=Ложь;
				//Проверим остатки на складе
				Запрос=Новый Запрос;
				Запрос.Текст="ВЫБРАТЬ
				|	сКассоваяКнигаОстатки.СуммаОстаток
				|ИЗ
				|	РегистрНакопления.сКассоваяКнига.Остатки(&ДатаОстатка, ) КАК сКассоваяКнигаОстатки
				|ГДЕ
				|	сКассоваяКнигаОстатки.Организация = &Организация
				|	И сКассоваяКнигаОстатки.Подразделение = &Подразделение
				|	И сКассоваяКнигаОстатки.Валюта = &Валюта
				
				|	И сКассоваяКнигаОстатки.СчетУчета = &СчетКасса";
				
				
				Запрос.УстановитьПараметр("ДатаОстатка",Источник.Дата);
				Запрос.УстановитьПараметр("Валюта",Источник.ВалютаДокумента);
				
				Запрос.УстановитьПараметр("Подразделение",Источник.сПодразделениеКт);
				Запрос.УстановитьПараметр("Организация",Источник.Организация);
				Запрос.УстановитьПараметр("СчетКасса",Источник.СчетКасса);
				Выборка=Запрос.Выполнить().Выбрать();
				СуммаОстаток=0;
				Пока Выборка.Следующий() Цикл 
					СуммаОстаток=СуммаОстаток+Выборка.СуммаОстаток;
				КонецЦикла;
				Если СуммаОстаток-Источник.СуммаДокумента


4. В регистр сведений НомераЛистовКассовойКниги добавляем реквизит Подразделение

5. создаем новый отчет КассоваяКнигаПоПодразделениям (прилагается в файле)

Теперь посмотрим как выглядит это в базе 

Выбираем дату отсчета и вводим с помощью ПКО и Корректировки и ручной корректировки движений начальные остатки по подразделениям

далее заполняя ПКО и РКО указываем подразделение, при проведении движение записываются в регистр КассоваяКнига

для перемещения м/у кассами выбираем вид операции Прочий расход, счет БУ 5001 и склад в который приходуются деньги

Кассовая книга выглядит так

 

Вот такое решение, впервые работаю с 1С Бухгалтерией 8.3

Скачать файлы

Наименование Файл Версия Размер
Отчет кассовая книга по подразделениям
.erf 26,59Kb
21.11.14
40
.erf 26,59Kb 40 Скачать

См. также

Комментарии
1. Дима (Димча) 132 24.11.14 19:51 Сейчас в теме
Можно установить Константу "ВестиУчетПоПодразделениям" в "Истина".
Для счета "50.01" установить "УчетПоПодразделениям".
Настроить обособленные подразделения в Справочнике "Подразделения".
Тогда будут доступен имеющийся реквизит - "ПодразделениеОрганизации" в ПКО и РКО.
Попробуйте.
xavi; WhiteOwl; +2 Ответить 1
2. ssvetusik (ssvetusik) 7 25.11.14 04:54 Сейчас в теме
Пробовала, может что не так делала, но у меня реквизит то появился в РКО и ПКО, только проводок по подразделениям не было(((
3. Алексей Папанов (El_Loco) 93 25.11.14 08:43 Сейчас в теме
п.3 подписка на событие это лишнее мне кажется. плюс в подписке в том, что один раз описали движения для обеих документов.
еще подумайте, что будет, если вы отмените проведение? из регистра запись уйдет?
правильнее и проще делать в свойствах документа. там указываете, что документ является регистратором для вашего регистра и указываете в конструкторе движения по регистру.
если свойство "удаление движений" = автоматически, то при отмене проведения записи будут удаляться.
4. ssvetusik (ssvetusik) 7 25.11.14 09:57 Сейчас в теме
при отмене и пометки на удаление документов, запись из регистра уходит)
"...и указываете в конструкторе движения по регистру" вот тут я не поняла, если я вызову конструктор движений у документа в процедуре ОбработкаПроведения все написанное сотрется же?
5. Сергей Казаков (copti) 76 25.11.14 13:57 Сейчас в теме
На самом деле, не всегда следует делать то, что можете сделать. Дело в том, что бухучет запрещает в одной организации вести несколько кассовых книг. Она должна быть одной по определению. Такими доработками вы подводите ваше предприятие под штраф за нарушение правил ведения кассовых операций по административному кодексу. Гипотетически вы можете заявить на предприятии несколько операционных касс, то только в этом случае придется в налоговой регистрировать несколько лимитов кассовых остатков. Это вряд ли устроит гл.буха. Хотя я встречал учителей русского языка, которые пишут с ошибками, наверно есть и гл.бухи, которые не знакомы с бухучетом...
6. Алексей Папанов (El_Loco) 93 25.11.14 19:10 Сейчас в теме
(4) ssvetusik, все равно делается это именно так.
обычно регистр подчиняется документу (-ам) - регистратору, который двигает этот самый регистр.
если процедура ОбработкаПроведения уже есть, просто перед вызовом конструктора скопируйте ее, потом сделайте движение через конструктор и добавьте туда то, что было удалено конструктором..
ну или создание движений вставьте в эту процедуру - неважно в каком порядке.
на ютубе куча клипов про регистры наклопления и их создание. посмотрите.

(5) copti, ну опять философия... считайте эту книгу упр. отчетом. если ставят задачу 1снику, его дело сделать. а про нюансы юридической стороны пусть думают те, кому положено.
7. ssvetusik (ssvetusik) 7 26.11.14 08:30 Сейчас в теме
(6) при создании регистра я указала каким документам он подчиняется, и в документах ПКо и РКО в движениях автоматом появляется данный регистр, обновляет базу сис админ, и ему проще будет с подпиской, чтобы каждый раз при изменении модуля объекта не вставлять дописанный кусок
з.ы. для себя я всегда пользуюсь способом о котором вы говорите, так проще дописать процедуру ОбработкуПроведения)))
спасибо за комментарии

(5)я не писала что данная кассовая книга ведется для бух. учета. кассовая книга по всей организации никуда не делась и также функционирует
это просто решение которое было необходимо предприятию, для внутренних нужд, и почему я подвожу под штраф? я исполнитель, и выполняю это не потому что мне взбрело в голову)
8. Гость 27.11.14 20:14 Сейчас в теме
Какой релиз платформы 8.3 использовали и какой релиз Бухгалтерии Предприятия 3.0 ?
9. ssvetusik (ssvetusik) 7 28.11.14 06:48 Сейчас в теме
(8) 1С:Предприятие 8.3 (8.3.5.1088)
Бухгалтерия предприятия, редакция 3.0 (3.0.34.10)
10. Римма Герасименко (WhiteOwl) 133 02.12.14 14:31 Сейчас в теме
(1) ага, и еще разбанить установку значения в менеджере константы, а то там принудительно сбрасывается в "ложь". И ведь работает, только по головному и обособленному отдельно, а это же вроде не то, что нужно автору. А нашим бухам вообще не совсем понятно, что нужно, они и сами не знают :)
11. Ирина Баранова (Ироида) 8 13.01.15 01:42 Сейчас в теме
В общем модуле процедура вся на экран не поместилась, поправьте, пожалуйста
12. Сергей Николаев (magic.rain@list.ru) 13.01.15 16:03 Сейчас в теме
Отчеты.сКассоваяКнигаПоПодразделениям.СформироватьОтчет(ПараметрыОтчета, АдресХранилища);

сам метод СформироватьОтчет от типовой книги взят и переписан? а то ругается что нету метода..т.к отчёт внешний..
13. ssvetusik (ssvetusik) 7 15.01.15 04:59 Сейчас в теме
(11), попробую отредактировать чтоб все поместилось
14. ssvetusik (ssvetusik) 7 15.01.15 05:00 Сейчас в теме
(12), да все взято из стандартной типовой книги и переписано немного для внесенных изменений
15. K M (mhs) 21 16.01.15 04:52 Сейчас в теме
Если не сложно выложите полный текст обработки общего модуля, т.к. не влез полностью на экран
16. K M (mhs) 21 16.01.15 05:37 Сейчас в теме
Если не сложно выложите текст процедуры в общем модуле ... не вошел весь
17. Maks Bell (simpleday87) 07.07.15 05:58 Сейчас в теме
Повторюсь комментарием, выложите пож-та текс процедуры Процедура сПКОПроведениеОбработкаПроведения полностью
18. Александр Вшивков (Dilovar9) 19 16.03.17 10:07 Сейчас в теме
Есть более простой способ, сохранение поддержки конфигурации http://forum.infostart.ru/forum8/topic80906/message1759131/#message1759131
19. олег (alegator) 58 20.04.17 14:51 Сейчас в теме
Большая просьба (качал обработку - большое спасибо), Пвыложите пож-та текс процедуры Процедура сПКОПроведениеОбработкаПроведения полностью или на почту mov031274@yandex.ru
20. ssvetusik (ssvetusik) 7 11.06.17 07:22 Сейчас в теме
(19) долго не была на сайте и не видела комментарии
Процедура сПКОПроведениеОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	Если ТипЗнч(Источник.ссылка) = ТипЗнч(Документы.ПриходныйКассовыйОрдер.ПустаяСсылка()) тогда
		
		
		Если ЗначениеЗаполнено(Источник.сПодразделениеДт) Тогда
			
						
			Движение=Источник.Движения.сКассоваяКнига;
			Движение.Записывать=Истина;
			ДвижениеП=Движение.Добавить();
			ДвижениеП.Период = Источник.Дата;
			
			ДвижениеП.Организация = Источник.Организация;
			ДвижениеП.Валюта = Источник.ВалютаДокумента;
			ДвижениеП.ВидДвижения=ВидДвиженияНакопления.Приход;
			
			
			ДвижениеП.Подразделение = Источник.сПодразделениеДт;
			ДвижениеП.СчетУчета =  Источник.СчетКасса;
			ДвижениеП.Сумма =  Источник.СуммаДокумента;   
		КонецЕсли;
		
	КонецЕсли;
	Если ТипЗнч(Источник.ссылка) = ТипЗнч(Документы.РасходныйКассовыйОрдер.ПустаяСсылка()) тогда
		ДатаР=Источник.Ссылка.Дата;
		Источник.Дата=ДатаР;
		//Источник.Записать();
		Если Источник.Ссылка.ВидОперации=Перечисления.ВидыОперацийРКО.ПрочийРасход Тогда 
			Если ЗначениеЗаполнено(Источник.сПодразделениеКт) И ЗначениеЗаполнено(Источник.сПодразделениеДт) Тогда
				Отказ=Ложь;
				//Проверим остатки на складе
				Запрос=Новый Запрос;
				Запрос.Текст="ВЫБРАТЬ
				|	сКассоваяКнигаОстатки.СуммаОстаток
				|ИЗ
				|	РегистрНакопления.сКассоваяКнига.Остатки(&ДатаОстатка, ) КАК сКассоваяКнигаОстатки
				|ГДЕ
				|	сКассоваяКнигаОстатки.Организация = &Организация
				|	И сКассоваяКнигаОстатки.Подразделение = &Подразделение
				|	И сКассоваяКнигаОстатки.Валюта = &Валюта
				
				|	И сКассоваяКнигаОстатки.СчетУчета = &СчетКасса";
				
				
				Запрос.УстановитьПараметр("ДатаОстатка",Источник.Дата);
				Запрос.УстановитьПараметр("Валюта",Источник.ВалютаДокумента);
				
				Запрос.УстановитьПараметр("Подразделение",Источник.сПодразделениеКт);
				Запрос.УстановитьПараметр("Организация",Источник.Организация);
				Запрос.УстановитьПараметр("СчетКасса",Источник.СчетКасса);
				Выборка=Запрос.Выполнить().Выбрать();
				СуммаОстаток=0;
				Пока Выборка.Следующий() Цикл 
					СуммаОстаток=СуммаОстаток+Выборка.СуммаОстаток;
				КонецЦикла;
				Если СуммаОстаток-Источник.СуммаДокумента<0 Тогда 
					Отказ=Истина;
					Сообщить("Не хватает в кассе денежных средств! Остаток на кассе "+Источник.сПодразделениеКт + " равен "+СуммаОстаток+" руб.");
				КонецЕсли;
				Если Отказ Тогда 
					Возврат;
				КонецЕсли;	
				
				
				Движение=Источник.Движения.сКассоваяКнига;
				Движение.Записывать=Истина;
				ДвижениеП=Движение.Добавить();
				ДвижениеП.Период = Источник.Дата;
				
				ДвижениеП.Организация = Источник.Организация;
				ДвижениеП.Валюта = Источник.ВалютаДокумента;
				ДвижениеП.ВидДвижения=ВидДвиженияНакопления.Расход;
				
				ДвижениеП.Подразделение = Источник.сПодразделениеКт;
				ДвижениеП.СчетУчета =  Источник.СчетКасса;
				ДвижениеП.Сумма =  Источник.СуммаДокумента;  
				
				
				Движение=Источник.Движения.сКассоваяКнига;
				Движение.Записывать=Истина;
				ДвижениеП=Движение.Добавить();
				ДвижениеП.Период = Источник.Дата;
				
				ДвижениеП.Организация = Источник.Организация;
				ДвижениеП.Валюта = Источник.ВалютаДокумента;
				ДвижениеП.ВидДвижения=ВидДвиженияНакопления.Приход;
				
				ДвижениеП.Подразделение = Источник.сПодразделениеДт;
				ДвижениеП.СчетУчета =  Источник.СчетКасса;
				ДвижениеП.Сумма =  Источник.СуммаДокумента; 
				
				
			КонецЕсли;
			
			
		Иначе 
			
			Если ЗначениеЗаполнено(Источник.сПодразделениеКт) Тогда
				Отказ=Ложь;
				//Проверим остатки на складе
				Запрос=Новый Запрос;
				Запрос.Текст="ВЫБРАТЬ
				|	сКассоваяКнигаОстатки.СуммаОстаток
				|ИЗ
				|	РегистрНакопления.сКассоваяКнига.Остатки(&ДатаОстатка, ) КАК сКассоваяКнигаОстатки
				|ГДЕ
				|	сКассоваяКнигаОстатки.Организация = &Организация
				|	И сКассоваяКнигаОстатки.Подразделение = &Подразделение
				|	И сКассоваяКнигаОстатки.Валюта = &Валюта
				
				|	И сКассоваяКнигаОстатки.СчетУчета = &СчетКасса";
				
				
				Запрос.УстановитьПараметр("ДатаОстатка",Источник.Дата);
				Запрос.УстановитьПараметр("Валюта",Источник.ВалютаДокумента);
				
				Запрос.УстановитьПараметр("Подразделение",Источник.сПодразделениеКт);
				Запрос.УстановитьПараметр("Организация",Источник.Организация);
				Запрос.УстановитьПараметр("СчетКасса",Источник.СчетКасса);
				Выборка=Запрос.Выполнить().Выбрать();
				СуммаОстаток=0;
				Пока Выборка.Следующий() Цикл 
					СуммаОстаток=СуммаОстаток+Выборка.СуммаОстаток;
				КонецЦикла;
				Если СуммаОстаток-Источник.СуммаДокумента<0 Тогда 
					Отказ=Истина;
					Сообщить("Не хватает в кассе денежных средств! Остаток на кассе "+Источник.сПодразделениеКт + " равен "+СуммаОстаток+" руб.");
				КонецЕсли;
				Если Отказ Тогда 
					Возврат;
				КонецЕсли;	
			
				
				Движение=Источник.Движения.сКассоваяКнига;
				Движение.Записывать=Истина;
				ДвижениеП=Движение.Добавить();
				ДвижениеП.Период = Источник.Дата;
				
				ДвижениеП.Организация = Источник.Организация;
				ДвижениеП.Валюта = Источник.ВалютаДокумента;
				ДвижениеП.ВидДвижения=ВидДвиженияНакопления.Расход;
				
				ДвижениеП.Подразделение = Источник.сПодразделениеКт;
				ДвижениеП.СчетУчета =  Источник.СчетКасса;
				ДвижениеП.Сумма =  Источник.СуммаДокумента;   
				
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	
КонецПроцедуры
...Показать Скрыть

(17)
Оставьте свое сообщение