Добро пожаловать,
Формирование документов оплаты по неоплаченным ведомостям в 1С ЗУП
Обработка собирает за период перечень не оплаченных ведомостей по виду выплаты (в кассу или в банк). Ведомости которые нужно оплатить отмечаются галочкой. Затем по указанным ведомостям автоматически формируются документы оплаты.
Обработка будет удобна расчетчикам, когда вводить на основании каждой ведомости РКО или ПП - не хватает времени/внимания или просто лень. :)
Код //(c)zebestov 2009
//общие настройки
Процедура НастроитьОформление()
Колонки = ЭлементыФормы.ДокументыВыплаты.Колонки;
Колонки.Документ.ширина = 20;
//Колонки.Документ.Доступность = ложь;
Колонки.Документ.ТекстШапки = "Ведомость";
Колонки.ЕстьПодчДок.ДанныеФлажка="ЕстьПодчДок";
Колонки.ЕстьПодчДок.Данные = "";
Колонки.ЕстьПодчДок.ТекстШапки = "";
Колонки.ЕстьПодчДок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
Колонки.ЕстьПодчДок.Ширина = 1;
Колонки.Ответственный.ширина = 7;
Колонки.Ответственный.Доступность = ложь;
Колонки.Комментарий.Доступность = ложь;
Колонки.Комментарий.ширина = 20;
КонецПроцедуры
Процедура НастроитьВидимость()
Если ЭлементыФормы.СпособОплаты.Значение = Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк тогда
ЭлементыФормы.ТекстСчет.Видимость = истина;
ЭлементыФормы.РасчетныйСчет.Видимость = истина;
иначе
ЭлементыФормы.ТекстСчет.Видимость = ложь;
ЭлементыФормы.РасчетныйСчет.Видимость = ложь;
КонецЕсли;
КонецПроцедуры
Процедура КоманднаяПанельВыплатаЗарплатыСнятьФлажки(Кнопка)
Для каждого стр из ДокументыВыплаты Цикл
стр.ЕстьПодчДок = ложь;
КонецЦикла;
КонецПроцедуры
Процедура КоманднаяПанельВыплатаЗарплатыУстановитьФлажки(Кнопка)
Для каждого стр из ДокументыВыплаты Цикл
стр.ЕстьПодчДок = истина;
КонецЦикла;
КонецПроцедуры
Процедура кнПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.УстановитьПериод(ДатаНачала, ?(ДатаОкончания='0001-01-01', ДатаОкончания, КонецДня(ДатаОкончания)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
НастройкаПериода.Редактировать();
ДатаНачала = НачалоМесяца(НастройкаПериода.ПолучитьДатуНачала());
ДатаОкончания = КонецМесяца(НастройкаПериода.ПолучитьДатуОкончания());
Если ДатаНачала > ДатаОкончания или Год(ДатаНачала) < Год(ДатаОкончания) Тогда
ДатаОкончания = КонецМесяца(ДатаНачала);
КонецЕсли;
КонецПроцедуры
Процедура СпособОплатыПриИзменении(Элемент)
НастроитьВидимость();
КонецПроцедуры
Процедура ПриОткрытии()
НастроитьВидимость();
КонецПроцедуры
//сбор данных по неоплаченным ведомостям
Процедура КоманднаяПанельВыплатаЗарплатыкнЗаполнить(Кнопка)
ДокументыОплаты.Очистить();
Если ЭлементыФормы.СпособОплаты.Значение = Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаПлатежныхДокументов.Ссылка КАК ПлатежныйДокумент,
| ТаблицаПлатежныхДокументов.Ведомость КАК Ведомость
|ПОМЕСТИТЬ ТабПлатежныхДокументов
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаПП.Ссылка КАК Ссылка,
| ТаблицаПП.Ведомость КАК Ведомость
| ИЗ
| Документ.ПлатежноеПоручениеИсходящее.ПеречислениеЗаработнойПлаты КАК ТаблицаПП
| ГДЕ
| ТаблицаПП.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ТаблицаПП.Ссылка.Проведен = ИСТИНА
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаПО.Ссылка,
| ТаблицаПО.Ведомость
| ИЗ
| Документ.ПлатежныйОрдерСписаниеДенежныхСредств.ПеречислениеЗаработнойПлаты КАК ТаблицаПО
| ГДЕ
| ТаблицаПО.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ТаблицаПО.Ссылка.Проведен = ИСТИНА) КАК ТаблицаПлатежныхДокументов
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЛОЖЬ КАК ЕстьПодчДок,
| ТабВедомостей.Ссылка КАК Документ,
| ТабВедомостей.Ответственный,
| ТабВедомостей.Комментарий,
| ЕСТЬNULL(ТабПП.ПлатежныйДокумент, 0) КАК ДокументОплаты
|ПОМЕСТИТЬ ОбщийСписок
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций КАК ТабВедомостей
| ЛЕВОЕ СОЕДИНЕНИЕ ТабПлатежныхДокументов КАК ТабПП
| ПО (ТабПП.Ведомость = ТабВедомостей.Ссылка)
|ГДЕ
| ТабВедомостей.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ТабВедомостей.ПометкаУдаления = ЛОЖЬ
| И ТабВедомостей.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОбщийСписок.ЕстьПодчДок,
| ОбщийСписок.Документ,
| ОбщийСписок.Ответственный,
| ПОДСТРОКА(ОбщийСписок.Комментарий, 0, 200) КАК Комментарий
|ИЗ
| ОбщийСписок КАК ОбщийСписок
|ГДЕ
| (ОбщийСписок.ДокументОплаты.Проведен = ЛОЖЬ
| ИЛИ ОбщийСписок.ДокументОплаты = 0)";
иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРКО.Ссылка КАК ПлатежныйДокумент,
| ТаблицаРКО.Ведомость КАК Ведомость
|ПОМЕСТИТЬ ТабПлатежныхДокументов
|ИЗ
| Документ.РасходныйКассовыйОрдер.ВыплатаЗаработнойПлаты КАК ТаблицаРКО
|ГДЕ
| ТаблицаРКО.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ТаблицаРКО.Ссылка.Проведен = ИСТИНА
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЛОЖЬ КАК ЕстьПодчДок,
| ТабВедомостей.Ссылка КАК Документ,
| ТабВедомостей.Ответственный,
| ТабВедомостей.Комментарий,
| ЕСТЬNULL(ТабПП.ПлатежныйДокумент, 0) КАК ДокументОплаты
|ПОМЕСТИТЬ ОбщийСписок
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций КАК ТабВедомостей
| ЛЕВОЕ СОЕДИНЕНИЕ ТабПлатежныхДокументов КАК ТабПП
| ПО (ТабПП.Ведомость = ТабВедомостей.Ссылка)
|ГДЕ
| ТабВедомостей.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ТабВедомостей.ПометкаУдаления = ЛОЖЬ
| И ТабВедомостей.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезКассу)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОбщийСписок.ЕстьПодчДок,
| ОбщийСписок.Документ,
| ОбщийСписок.Ответственный,
| ПОДСТРОКА(ОбщийСписок.Комментарий, 0, 200) КАК Комментарий
|ИЗ
| ОбщийСписок КАК ОбщийСписок
|ГДЕ
| (ОбщийСписок.ДокументОплаты.Проведен = ЛОЖЬ
| ИЛИ ОбщийСписок.ДокументОплаты = 0)";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);
ДокументыВыплаты = Запрос.Выполнить().Выгрузить();
элементыФормы.ДокументыВыплаты.СоздатьКолонки();
НастроитьОформление();
КонецПроцедуры
//формирование платежных документов
Процедура СформироватьРКО()
Для каждого стр из ДокументыВыплаты Цикл
Если стр.ЕстьПодчДок Тогда
Док = стр.Документ.ПолучитьОбъект();
Для каждого строкаВедомости из Док.Зарплата Цикл
СтрокаВедомости.ВыплаченностьЗарплаты = Перечисления.ВыплаченностьЗарплаты.Выплачено;
КонецЦикла;
Док.Записать();
Ведомость = стр.Документ;
НовыйРКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
НовыйРКО.Дата = Ведомость.Дата;
НовыйРКО.УстановитьНовыйНомер();
НовыйРКО.Организация = Ведомость.Организация;
НовыйРКО.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям;
НовыйРКО.ОтражатьВБухгалтерскомУчете = Истина;
НовыйРКО.Ответственный = УправлениеПользователями.ОпределитьТекущегоПользователя();
Для каждого фл из Ведомость.зарплата Цикл
Работник = НовыйРКО.Работники.Добавить();
Работник.Физлицо = фл.Физлицо;
Работник.Сумма = фл.сумма;
КонецЦикла;
ТЧ = НовыйРКО.ВыплатаЗаработнойПлаты;
строкаТЧ = ТЧ.Добавить();
строкаТЧ.Ведомость = Ведомость;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ведомость);
Запрос.УстановитьПараметр("ВыплаченностьЗарплаты", Перечисления.ВыплаченностьЗарплаты.Выплачено);
Запрос.УстановитьПараметр("Регистратор", НовыйРКО.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ЗарплатаКВыплатеЗарплата.Сумма + ЗарплатаКВыплатеЗарплата.КомпенсацияЗаЗадержкуЗарплаты) КАК Сумма,
| ЗарплатаКВыплатеЗарплата.Ссылка
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеЗарплата
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям КАК РанееВыплаченныеСуммы
| ПО ЗарплатаКВыплатеЗарплата.Ссылка = РанееВыплаченныеСуммы.Ведомость
| И ЗарплатаКВыплатеЗарплата.Физлицо = РанееВыплаченныеСуммы.Физлицо
| И (РанееВыплаченныеСуммы.Регистратор <> &Регистратор)
|ГДЕ
| ЗарплатаКВыплатеЗарплата.Ссылка = &Ссылка
| И ЗарплатаКВыплатеЗарплата.ВыплаченностьЗарплаты = &ВыплаченностьЗарплаты
| И РанееВыплаченныеСуммы.Физлицо ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ЗарплатаКВыплатеЗарплата.Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбщегоНазначения.СообщитьОбОшибке("По ведомости "+строка(Ведомость)+" нет сумм к выплате!");
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
строкаТЧ.СуммаКВыплате = Выборка.Сумма;
НовыйРКО.Записать(РежимЗаписиДокумента.Проведение);
строкаДокОплаты = ДокументыОплаты.Добавить();
строкаДокОплаты.Документ = Документы.РасходныйКассовыйОрдер.ПустаяСсылка();
строкаДокОплаты.Документ = НовыйРКО.Ссылка;
сообщить("Сформирован новый РКО: "+строка(НовыйРКО.Ссылка));
КонецЕсли;
КонецЕсли;
КонецЦикла;
Предупреждение("Обработка завершена");
КонецПроцедуры
Процедура СформироватьППИ()
Если РасчетныйСчет.Ссылка = справочники.БанковскиеСчета.ПустаяСсылка() тогда
Предупреждение("Не заполнен расчетный счет!");
возврат;
КонецЕсли;
Для каждого стр из ДокументыВыплаты Цикл
Если стр.ЕстьПодчДок Тогда
Док = стр.Документ.ПолучитьОбъект();
Для каждого строкаВедомости из Док.Зарплата Цикл
СтрокаВедомости.ВыплаченностьЗарплаты = Перечисления.ВыплаченностьЗарплаты.Выплачено;
КонецЦикла;
Док.Записать();
Ведомость = стр.Документ;
НовыйППИ = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент();
НовыйППИ.Дата = Ведомость.Дата;
НовыйППИ.УстановитьНовыйНомер();
НовыйППИ.Организация = Ведомость.Организация;
НовыйППИ.ОчередностьПлатежа = 6;
НовыйППИ.ВидПлатежа = "электронно";
НовыйППИ.Контрагент = Ведомость.Банк;
НовыйППИ.СчетКонтрагента = Ведомость.Банк.ОсновнойБанковскийСчет;
НовыйППИ.СчетОрганизации = РасчетныйСчет;
НовыйППИ.Ответственный = УправлениеПользователями.ОпределитьТекущегоПользователя();
НовыйППИ.ИННПлательщика = Организация.ИНН;
НовыйППИ.КПППлательщика = Организация.КПП;
Для каждого фл из Ведомость.зарплата Цикл
Работник = НовыйППИ.Работники.Добавить();
Работник.Физлицо = фл.Физлицо;
Работник.Сумма = фл.сумма;
КонецЦикла;
ТЧ = НовыйППИ.ПеречислениеЗаработнойПлаты;
строкаТЧ = ТЧ.Добавить();
строкаТЧ.Ведомость = Ведомость;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ведомость);
Запрос.УстановитьПараметр("ВыплаченностьЗарплаты", Перечисления.ВыплаченностьЗарплаты.Выплачено);
Запрос.УстановитьПараметр("Регистратор", НовыйППИ.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ЗарплатаКВыплатеЗарплата.Сумма + ЗарплатаКВыплатеЗарплата.КомпенсацияЗаЗадержкуЗарплаты) КАК Сумма,
| ЗарплатаКВыплатеЗарплата.Ссылка
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеЗарплата
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям КАК РанееВыплаченныеСуммы
| ПО ЗарплатаКВыплатеЗарплата.Ссылка = РанееВыплаченныеСуммы.Ведомость
| И ЗарплатаКВыплатеЗарплата.Физлицо = РанееВыплаченныеСуммы.Физлицо
| И (РанееВыплаченныеСуммы.Регистратор <> &Регистратор)
|ГДЕ
| ЗарплатаКВыплатеЗарплата.Ссылка = &Ссылка
| И ЗарплатаКВыплатеЗарплата.ВыплаченностьЗарплаты = &ВыплаченностьЗарплаты
| И РанееВыплаченныеСуммы.Физлицо ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ЗарплатаКВыплатеЗарплата.Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОбщегоНазначения.СообщитьОбОшибке("По ведомости "+строка(Ведомость)+" нет сумм к выплате!");
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
строкаТЧ.СуммаКВыплате = Выборка.Сумма;
СуммаДокумента = Выборка.Сумма;
ТекстСумма="Сумма " + Формат(СуммаДокумента, "ЧЦ=15;ЧДЦ=2;ЧРД=-;ЧН=0-00") + Символы.ПС;
НовыйППИ.НазначениеПлатежа = ТекстСумма;
НовыйППИ.Записать(РежимЗаписиДокумента.Проведение);
строкаДокОплаты = ДокументыОплаты.Добавить();
строкаДокОплаты.Документ = Документы.ПлатежноеПоручениеИсходящее.ПустаяСсылка();
строкаДокОплаты.Документ = НовыйППИ.Ссылка;
сообщить("Сформировано новое платежное поручение: "+строка(НовыйППИ.Ссылка));
КонецЕсли;
КонецЕсли;
КонецЦикла;
Предупреждение("Обработка завершена");
КонецПроцедуры
Процедура Сформировать()
Если ЭлементыФормы.СпособОплаты.Значение = Перечисления.СпособыВыплатыЗарплаты.ЧерезКассу тогда
СформироватьРКО();
иначе
СформироватьППИ();
КонецЕсли;
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
Если ДокументыОплаты.Количество()>0 тогда
Для каждого стр из ДокументыВыплаты Цикл
стр.ЕстьПодчДок = ложь;
КонецЦикла;
ДокументыОплаты.Очистить();
КонецЕсли;
Сформировать();
КонецПроцедуры
ДатаНачала = НачалоМесяца(ТекущаяДата());
ДатаОкончания = КонецДня(КонецМесяца(ТекущаяДата()));
ЭлементыФормы.СпособОплаты.Значение = Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк;
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
Цитата
Архив обработки Внимание! Если у вас не получилось найти нужную информацию, используйте
рубрикатор или воспользуйтесь
поиском .
Обработки 1С Формирование документов оплаты по неоплаченным ведомостям в 1С ЗУП Обработка собирает за период перечень не оплаченных ведомостей по виду выплаты кассу или банк Ведомости которые нужно оплатить отмечаются галочкой Затем указанным ведомостям автоматически формируются документы оплаты будет удобна расчетчикам когда вводить на основании каждой ведомости РКО ПП хватает времени/внимания просто лень Код// zebestov 2009 //общие настройки Процедура НастроитьОформление Колонки