Закрытие остатков регистра накопления в документе "Корректировка записей регистров". УПП 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С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

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

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

4800 руб.

06.10.2023    2622    30    15    

35

Тестирование и исправление ключей аналитики ERP, УТ11, КА

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

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

3600 руб.

10.02.2017    107284    636    173    

679

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

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

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

14400 руб.

29.04.2020    27926    82    146    

61

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

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

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22553    302    35    

74

Заполнение документа "Корректировка регистров" произвольными данными

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

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

2400 руб.

13.07.2015    50319    171    29    

121

Исправление ошибок по НДФЛ и взаиморасчетам с сотрудниками в 1С:Бухгалтерия 3.0

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

Внешняя обработка предназначена для исправления самых различных ошибок, возникших по самым разным причинам. Общее проявление этих ошибок видно в различии данных между: проводками и различными отчетами по НДФЛ, заполнении ведомостей на выдачу зарплаты, неверным расчетом НДФЛ при начислении ЗП и т.д.

3600 руб.

09.02.2024    716    3    4    

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


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