Закрытие остатков регистра накопления в документе "Корректировка записей регистров". УПП 1.3

31.05.19

Разработка - Механизмы типовых конфигураций

Небольшие изменения на уровне модуля формы, для автоматического закрытия остатков произвольных регистров накопления с помощью документа "Корректировка записей регистров" в УПП 1.3.

С помощью небольших изменений в модуле формы добавил удобства в документ "Корректировка записей регистров". Сама форма осталась не измененной.

Теперь на закладке (выбранный регистр = отдельная закладка), если вид регистра = Регистр накопления, в командной панели добавляется кнопка "Закрыть остатки". 

При нажатии, проводится анализ измерений и в случае если есть измерение "Организация", "Контрагент" программа предлагает отобрать по конкретному значению.

В итоге по выбранному при необходимости отбору все остатки на дату документа заполняются в табличную часть с обратным движением ("Приход" в "Расход", "Расход" в "Приход").

Ниже код (в границах комментариев "//НВ" и "//КВ"):

1. Процедура "НастроитьЗакладкиПанелиРегистровНакопления"

в которой в случае если вид выбранного регистра = ВидРегистраНакопления.Остатки в командную панель добавляется кнопка "Закрыть остатки (-)"

//НВ            
            Если Метаданные.РегистрыНакопления[СтрокаТаблицыРегистров.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
                КоманднаяПанельРегистра.Кнопки.Добавить("РазделительПередЗаполнить" + СтрокаТаблицыРегистров.Имя);
                КнопкаЗаполненияОстатками = КоманднаяПанельРегистра.Кнопки.Добавить("Заполнить"+СтрокаТаблицыРегистров.Имя, ТипКнопкиКоманднойПанели.Действие, , Новый Действие("ЗакрытьОстатки"));
                КнопкаЗаполненияОстатками.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;
                КнопкаЗаполненияОстатками.Картинка    = БиблиотекаКартинок.Лупа;
                КнопкаЗаполненияОстатками.Подсказка   = "Заполнить остатки (-)";
                КнопкаЗаполненияОстатками.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F3,Истина,Истина);
            КонецЕсли;    
//КВ            

и расположение закладок меняется с "ОтображениеЗакладок.Сверху" на "ОтображениеЗакладок.СверхуМногострочный"

// Процедура создает и настраивает табличные поля на страницах панели ПанельРегистровНакопления
//
Процедура НастроитьЗакладкиПанелиРегистровНакопления(Отказ)
	
	ПроверитьВозможностьЗаписи(ТаблицаРегистровНакопления, "РегистрНакопления");
	
	Если ТаблицаРегистровНакопления.Количество() = 0 Тогда
		
		ЭлементыФормы.ПанельРегистровНакопления.Страницы.Подсказка.Видимость = Истина;
		Сч = 0;
		Пока Сч < ЭлементыФормы.ПанельРегистровНакопления.Страницы.Количество() Цикл
			Если ЭлементыФормы.ПанельРегистровНакопления.Страницы[Сч].Имя<>"Подсказка" Тогда
				ЭлементыФормы.ПанельРегистровНакопления.Страницы.Удалить(Сч);
			Иначе
				Сч = Сч + 1;
			КонецЕсли;
		КонецЦикла;
		ЭлементыФормы.ПанельРегистровНакопления.ОтображениеЗакладок = ОтображениеЗакладок.НеИспользовать;
		
	Иначе
		// Добавим новые страницы
		Для каждого СтрокаТаблицыРегистров Из ТаблицаРегистровНакопления Цикл
			Найдена = Ложь;
			Для каждого СтраницаПанели Из ЭлементыФормы.ПанельРегистровНакопления.Страницы Цикл
				Если СтраницаПанели.Имя = СтрокаТаблицыРегистров.Имя Тогда
					Найдена = Истина;
					Прервать;
				КонецЕсли;
			КонецЦикла; 
			Если Найдена Тогда
				Продолжить;
			КонецЕсли; 
			
			СтраницаПанели = ЭлементыФормы.ПанельРегистровНакопления.Страницы.Вставить(ТаблицаРегистровНакопления.Индекс(СтрокаТаблицыРегистров), СтрокаТаблицыРегистров.Имя, СтрокаТаблицыРегистров.Представление);
			
			ЭлементыФормы.ПанельРегистровНакопления.ТекущаяСтраница = СтраницаПанели;
			
			// Расположим на странице командную панель
			КоманднаяПанельРегистра = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), ("КоманднаяПанель" + СтрокаТаблицыРегистров.Имя), Истина, ЭлементыФормы.ПанельРегистровНакопления);
			КоманднаяПанельРегистра.Верх = 6;
			КоманднаяПанельРегистра.Лево = 6;
			КоманднаяПанельРегистра.Ширина = ЭлементыФормы.ПанельРегистровНакопления.Ширина - 12 - 2;
			КоманднаяПанельРегистра.Высота = 24;
			
			КоманднаяПанельРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Верх,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Верх);
			КоманднаяПанельРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Низ,КоманднаяПанельРегистра,ГраницаЭлементаУправления.Верх);
			КоманднаяПанельРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Право);
			КоманднаяПанельРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Лево);
			
			// Расположим на странице табличное поле
			ПолеРегистра = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), СтрокаТаблицыРегистров.Имя, Истина, ЭлементыФормы.ПанельРегистровНакопления);
			ПолеРегистра.Данные = "ДокументОбъект.Движения." + СтрокаТаблицыРегистров.Имя;
			
			Если НЕ ЭтоНовый() и НЕ Модифицированность() Тогда
				Попытка
				
					ПолеРегистра.Значение.Прочитать();
				
				Исключение
					Предупреждение("Нарушение прав доступа");
					Отказ = Истина;
					Возврат; 
				КонецПопытки; 
			КонецЕсли; 
			
			ПолеРегистра.Верх = 30;
			ПолеРегистра.Лево = 6;
			ПолеРегистра.Ширина = ЭлементыФормы.ПанельРегистровНакопления.Ширина - 12 - 2;
			ПолеРегистра.Высота = ЭлементыФормы.ПанельРегистровНакопления.Высота - 24 - 12 - 20;
			ПолеРегистра.ТолькоПросмотр = Ложь;
			ПолеРегистра.ИзменятьПорядокСтрок = Истина;
			ПолеРегистра.ИзменятьСоставСтрок = Истина;
			ПолеРегистра.РежимВыделения = РежимВыделенияТабличногоПоля.Множественный;
			
			ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Верх,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Верх);
			ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Низ);
			ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Право);
			ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ЭлементыФормы.ПанельРегистровНакопления,ГраницаЭлементаУправления.Лево);
			
			ПолеРегистра.СоздатьКолонки();
			
			Если Метаданные.РегистрыНакопления[СтрокаТаблицыРегистров.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
				КолонкаВидДвижения = ПолеРегистра.Колонки.Вставить(1, "Вид движения");
				КолонкаВидДвижения.Имя = "ВидДвиженияРегистраНакопления";
				КолонкаВидДвижения.УстановитьЭлементУправления(Тип("ПолеВвода"));
				КолонкаВидДвижения.Данные = "ВидДвижения";
				КолонкаВидДвижения.ЭлементУправления.КнопкаВыбора = Истина;
				КолонкаВидДвижения.ЭлементУправления.ВыбиратьТип = Ложь;
			КонецЕсли; 
			
			ПолеРегистра.Колонки.Регистратор.Видимость = Ложь;
			ПолеРегистра.Колонки.Период.Видимость      = Ложь;
			ПолеРегистра.Колонки.НомерСтроки.Видимость = Ложь;
			
			КоманднаяПанельРегистра.ИсточникДействий = ПолеРегистра;
			КоманднаяПанельРегистра.АвтоЗаполнение = Истина;
			
			КоманднаяПанельРегистра.Кнопки.Добавить("Разделитель1" + СтрокаТаблицыРегистров.Имя);
			
			Кнопка = КоманднаяПанельРегистра.Кнопки.Добавить(СтрокаТаблицыРегистров.Имя + "СортироватьПоВозрастанию", ТипКнопкиКоманднойПанели.Действие, "Сортировать по возрастанию", Новый Действие("СортироватьНаборЗаписейПоВозрастанию"));
			Кнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка;
			Кнопка.Картинка    = БиблиотекаКартинок.СортироватьСписокПоВозрастанию;
			Кнопка.Подсказка   = "Упорядочить по возрастанию";
			
			Кнопка = КоманднаяПанельРегистра.Кнопки.Добавить(СтрокаТаблицыРегистров.Имя + "СортироватьПоУбыванию", ТипКнопкиКоманднойПанели.Действие, "Сортировать по убыванию" , Новый Действие("СортироватьНаборЗаписейПоУбыванию"));
			Кнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка;
			Кнопка.Картинка    = БиблиотекаКартинок.СортироватьСписокПоУбыванию;
			Кнопка.Подсказка   = "Упорядочить по убыванию";  
			
			КоманднаяПанельРегистра.Кнопки.Добавить("Разделитель" + СтрокаТаблицыРегистров.Имя);
			
			Кнопка = КоманднаяПанельРегистра.Кнопки.Добавить(СтрокаТаблицыРегистров.Имя, ТипКнопкиКоманднойПанели.Действие, , Новый Действие("ПереключитьАктивность"));
			Кнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка;
			Кнопка.Картинка    = БиблиотекаКартинок.ПереключитьАктивность;
			Кнопка.Подсказка   = "Переключить активность";
			
			Если СтрокаТаблицыРегистров.Имя = "СвободныеОстатки" Тогда
				ДобавитьКнопкуЗаполненияСвободныхОстатков(КоманднаяПанельРегистра);
			КонецЕсли; 
//НВ			
            Если Метаданные.РегистрыНакопления[СтрокаТаблицыРегистров.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
				КоманднаяПанельРегистра.Кнопки.Добавить("РазделительПередЗаполнить" + СтрокаТаблицыРегистров.Имя);
				КнопкаЗаполненияОстатками = КоманднаяПанельРегистра.Кнопки.Добавить("Заполнить"+СтрокаТаблицыРегистров.Имя, ТипКнопкиКоманднойПанели.Действие, , Новый Действие("ЗакрытьОстатки"));
				КнопкаЗаполненияОстатками.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;
				КнопкаЗаполненияОстатками.Картинка    = БиблиотекаКартинок.Лупа;
				КнопкаЗаполненияОстатками.Подсказка   = "Заполнить остатки (-)";
				КнопкаЗаполненияОстатками.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F3,Истина,Истина);
			КонецЕсли;	
//КВ			
		КонецЦикла; 
		
		// Удалим лишние страницы
		Индекс = 0;
		Пока Индекс <= ЭлементыФормы.ПанельРегистровНакопления.Страницы.Количество() - 2 Цикл
			
			СтраницаПанели = ЭлементыФормы.ПанельРегистровНакопления.Страницы[Индекс];
			
			Если ТаблицаРегистровНакопления.Найти(СтраницаПанели.Имя, "Имя") = Неопределено Тогда
				ЭлементыФормы.ПанельРегистровНакопления.Страницы.Удалить(Индекс);
				Продолжить;
			КонецЕсли;
			
			Индекс = Индекс + 1;
		
		КонецЦикла; 
		
		Если ЭлементыФормы.ПанельРегистровНакопления.Страницы.Количество() > 1 Тогда
			
		КонецЕсли; 
//НВ		
//		ЭлементыФормы.ПанельРегистровНакопления.ОтображениеЗакладок = ОтображениеЗакладок.Сверху;
		ЭлементыФормы.ПанельРегистровНакопления.ОтображениеЗакладок = ОтображениеЗакладок.СверхуМногострочный;
//КВ
		ЭлементыФормы.ПанельРегистровНакопления.Страницы.Подсказка.Видимость = Ложь;
		ЭлементыФормы.ПанельРегистровНакопления.ТекущаяСтраница = ЭлементыФормы.ПанельРегистровНакопления.Страницы[0];
		
	КонецЕсли; 
	
КонецПроцедуры

 

2. Процедура "ЗакрытьОстатки"

//НВ
Процедура ЗакрытьОстатки(Кнопка)
	ИмяРегистра = СокрЛП(СтрЗаменить(СокрЛП(Кнопка.Имя),"Заполнить",""));
	Если ИмяРегистра = "" Тогда
		Возврат;
	КонецЕсли;
	
	РегОстатки = РегистрыНакопления[ИмяРегистра].Остатки(КонецДня(Дата)+1,,,);
	Если ТаблицаРегистровНакопления.Найти(ИмяРегистра, "Имя") = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	НаборДвижений = Движения[ИмяРегистра];
	Если НаборДвижений.Количество() <> 0 Тогда
		Ответ = Вопрос("Существующие движения регистров будут очищены. Продолжить?",РежимДиалогаВопрос.ДаНет);
		Если Ответ = КодВозвратаДиалога.Нет Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
	//....отбираем записи по выбранной организации
	ОтборОрганизация = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Организация")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по организации?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаОрганизаций = Справочники.Организации.ПолучитьФормуВыбора();
			ФормаОрганизаций.РежимВыбора = Истина;
			ФормаОрганизаций.МножественныйВыбор = Ложь;
			ФормаОрганизаций.ЗакрыватьПриВыборе = Истина;
			ФормаОрганизаций.Заголовок = "В качестве отбора по организации можете выбрать необходимый элемент";
			ФормаОрганизаций.ОткрытьМодально();
			ОтборОрганизация = ФормаОрганизаций.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	//....отбираем записи по выбранному контрагенту
	ОтборКонтрагент = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Контрагент")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по контрагенту?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКантрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКантрагента.РежимВыбора = Истина;
			ФормаКантрагента.МножественныйВыбор = Ложь;
			ФормаКантрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКантрагента.Заголовок = "В качестве отбора по контрагенту можете выбрать необходимый элемент";
			ФормаКантрагента.ОткрытьМодально();
			ОтборКонтрагент = ФормаКантрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	ОтборПоставщик = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Поставщик")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по поставщику?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКонтрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКонтрагента.РежимВыбора = Истина;
			ФормаКонтрагента.МножественныйВыбор = Ложь;
			ФормаКонтрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКонтрагента.Заголовок = "В качестве отбора по поставщику можете выбрать необходимый элемент";
			ФормаКонтрагента.ОткрытьМодально();
			ОтборПоставщик = ФормаКонтрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	ОтборПокупатель = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Покупатель")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по покупателю?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКонтрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКонтрагента.РежимВыбора = Истина;
			ФормаКонтрагента.МножественныйВыбор = Ложь;
			ФормаКонтрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКонтрагента.Заголовок = "В качестве отбора по покупателю можете выбрать необходимый элемент";
			ФормаКонтрагента.ОткрытьМодально();
			Покупатель = ФормаКонтрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	
	НаборДвижений.Очистить();
	Для Каждого ДвижениеСторнируемое Из РегОстатки Цикл
		Если (ОтборОрганизация<>Неопределено)И(ОтборОрганизация<>ДвижениеСторнируемое.Организация) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборКонтрагент<>Неопределено)И(ОтборКонтрагент<>ДвижениеСторнируемое.Контрагент) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборПоставщик<>Неопределено)И(ОтборПоставщик<>ДвижениеСторнируемое.Поставщик) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборПокупатель<>Неопределено)И(ОтборПокупатель<>ДвижениеСторнируемое.Покупатель) Тогда
			Продолжить;
		КонецЕсли;	
		ДвижениеСторно = НаборДвижений.Добавить();
		ЗаполнитьЗначенияСвойств(ДвижениеСторно, ДвижениеСторнируемое,,);
		ДвижениеСторно.Период = Дата;
		Если ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Приход Тогда
			ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Расход;
		Иначе	
			ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Приход;
		КонецЕсли;	
	КонецЦикла;	
КонецПроцедуры	

 

Тестировалось на конфигурации: Управление производственным предприятием, редакция 1.3 (1.3.122.1).

Регистры накопления УПП Остатки

См. также

Корректировка данных Зарплата Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    5368    38    20    

46

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    34861    111    152    

75

Корректировка данных Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    112311    676    175    

716

Корректировка данных Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Обработка предназначена для ООО для смены системы налогообложения УСН на ОСНО, без ведения раздельного учета, входящего НДС по способам учета. При реализации перехода в операции формируются проводки по выделению НДС, который ранее учитывался в стоимости номенклатуры, регистр «НДС Предъявленный».

6000 руб.

22.01.2025    983    3    0    

5

Корректировка данных Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    879    13    0    

9

Корректировка данных Ценообразование, анализ цен Мастера заполнения Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Теперь Вам не понадобится пересчитывать цену в другую валюту отдельно по каждой номенклатуре. Расширение сэкономит Ваше время, позволив сделать это при помощи групповой обработки в документе Установки цен.

2400 руб.

27.06.2023    2862    3    0    

3

Закрытие периода Корректировка данных Программист Пользователь Платформа 1С v8.3 Система компоновки данных 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    51667    175    29    

127

Банковские операции Корректировка данных Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

При загрузке банковской выписки поступлений по платежным картам 1С не совсем верно распознает данные, предоставляемые банком. В результате приходится корректировать эти данные вручную в документе "Поступление на расчетный счет". Ставить сумму комиссии (даже когда программа автоматом рассчитала сумму она не всегда совпадает с банком), вид операции, в зависимости от торговой точки менять учет налогов, ставить договор итд. Все это настраивается один раз и вам останется только выбрать период! Есть и простой вариант использования - просто правит сумму комиссии. Расширение в комплекте позволяет вызвать обработку автоматически после загрузки выписки.

4200 руб.

23.12.2021    15736    10    26    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Teut_Vlad 192 27.02.20 17:31 Сейчас в теме
//Только отрицательные
			            Если Метаданные.РегистрыНакопления[СтрокаТаблицыРегистров.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
				КоманднаяПанельРегистра.Кнопки.Добавить("РазделительПередЗаполнитьОтрицательные" + СтрокаТаблицыРегистров.Имя);
				КнопкаЗаполненияОстатками = КоманднаяПанельРегистра.Кнопки.Добавить("ЗаполнитьОтрицательные"+СтрокаТаблицыРегистров.Имя, ТипКнопкиКоманднойПанели.Действие, , Новый Действие("ЗакрытьОтрицательныеОстатки"));
				КнопкаЗаполненияОстатками.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;
				КнопкаЗаполненияОстатками.Картинка    = БиблиотекаКартинок.Лупа;
				КнопкаЗаполненияОстатками.Подсказка   = "Заполнить отрицательные остатки (-)";
				КнопкаЗаполненияОстатками.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F3,Истина,Истина);
			КонецЕсли;	
//КВ теут+		


Процедура ЗакрытьОтрицательныеОстатки(Кнопка)
	ИмяРегистра = СокрЛП(СтрЗаменить(СокрЛП(Кнопка.Имя),"ЗаполнитьОтрицательные",""));
	Если ИмяРегистра = "" Тогда
		Возврат;
	КонецЕсли;
	
	РегОстатки = РегистрыНакопления[ИмяРегистра].Остатки(КонецДня(Дата)+1,,,);
	Если ТаблицаРегистровНакопления.Найти(ИмяРегистра, "Имя") = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	НаборДвижений = Движения[ИмяРегистра];
	Если НаборДвижений.Количество() <> 0 Тогда
		Ответ = Вопрос("Существующие движения регистров будут очищены. Продолжить?",РежимДиалогаВопрос.ДаНет);
		Если Ответ = КодВозвратаДиалога.Нет Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
	//....отбираем записи по выбранной организации
	ОтборОрганизация = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Организация")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по организации?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаОрганизаций = Справочники.Организации.ПолучитьФормуВыбора();
			ФормаОрганизаций.РежимВыбора = Истина;
			ФормаОрганизаций.МножественныйВыбор = Ложь;
			ФормаОрганизаций.ЗакрыватьПриВыборе = Истина;
			ФормаОрганизаций.Заголовок = "В качестве отбора по организации можете выбрать необходимый элемент";
			ФормаОрганизаций.ОткрытьМодально();
			ОтборОрганизация = ФормаОрганизаций.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	//....отбираем записи по выбранному контрагенту
	ОтборКонтрагент = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Контрагент")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по контрагенту?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКантрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКантрагента.РежимВыбора = Истина;
			ФормаКантрагента.МножественныйВыбор = Ложь;
			ФормаКантрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКантрагента.Заголовок = "В качестве отбора по контрагенту можете выбрать необходимый элемент";
			ФормаКантрагента.ОткрытьМодально();
			ОтборКонтрагент = ФормаКантрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	ОтборПоставщик = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Поставщик")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по поставщику?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКонтрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКонтрагента.РежимВыбора = Истина;
			ФормаКонтрагента.МножественныйВыбор = Ложь;
			ФормаКонтрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКонтрагента.Заголовок = "В качестве отбора по поставщику можете выбрать необходимый элемент";
			ФормаКонтрагента.ОткрытьМодально();
			ОтборПоставщик = ФормаКонтрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	ОтборПокупатель = Неопределено;
	Если Движения[ИмяРегистра].Метаданные().Измерения.Найти("Покупатель")<>Неопределено Тогда
		ОтветПоОрганизации = Вопрос("Хотите установить отбор по покупателю?",РежимДиалогаВопрос.ДаНет);
		Если ОтветПоОрганизации = КодВозвратаДиалога.Да Тогда
			ФормаКонтрагента = Справочники.Контрагенты.ПолучитьФормуВыбора();
			ФормаКонтрагента.РежимВыбора = Истина;
			ФормаКонтрагента.МножественныйВыбор = Ложь;
			ФормаКонтрагента.ЗакрыватьПриВыборе = Истина;
			ФормаКонтрагента.Заголовок = "В качестве отбора по покупателю можете выбрать необходимый элемент";
			ФормаКонтрагента.ОткрытьМодально();
			Покупатель = ФормаКонтрагента.ТекущийЭлемент.ТекущаяСтрока;
		КонецЕсли;
	КонецЕсли;	
	
	НаборДвижений.Очистить();
	Для Каждого ДвижениеСторнируемое Из РегОстатки Цикл
		Если (ОтборОрганизация<>Неопределено)И(ОтборОрганизация<>ДвижениеСторнируемое.Организация) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборКонтрагент<>Неопределено)И(ОтборКонтрагент<>ДвижениеСторнируемое.Контрагент) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборПоставщик<>Неопределено)И(ОтборПоставщик<>ДвижениеСторнируемое.Поставщик) Тогда
			Продолжить;
		КонецЕсли;	
		Если (ОтборПокупатель<>Неопределено)И(ОтборПокупатель<>ДвижениеСторнируемое.Покупатель) Тогда
			Продолжить;
		КонецЕсли;
		Если ДвижениеСторнируемое.Количество > 0 Тогда
			Продолжить;
		КонецЕсли;
		
		ДвижениеСторно = НаборДвижений.Добавить();
		ЗаполнитьЗначенияСвойств(ДвижениеСторно, ДвижениеСторнируемое,,);
		ДвижениеСторно.Период = Дата;
		Если ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Приход Тогда
			ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Расход;
		Иначе	
			ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Приход;
		КонецЕсли;	
	КонецЦикла;	
КонецПроцедуры	
Показать
Оставьте свое сообщение