Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Как вы узнали о нашем сайте?

От друга, знакомого
Из печатных источников
Из поисковой машины
По ссылке с другого сайта
Случайно
Не знаю


Результаты
Другие опросы

Всего голосов: 1033
Комментарии: 4


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Формирование документов оплаты по неоплаченным ведомостям в 1С ЗУП


Обработка собирает за период перечень не оплаченных ведомостей по виду выплаты (в кассу или в банк). Ведомости которые нужно оплатить отмечаются галочкой. Затем по указанным ведомостям автоматически формируются документы оплаты.
Обработка будет удобна расчетчикам, когда вводить на основании каждой ведомости РКО или ПП - не хватает времени/внимания или просто лень. :)


Код
//(c)zebestov 2009

//общие настройки
Процедура НастроитьОформление()

Колонки = ЭлементыФормы.ДокументыВыплаты.Колонки;

Колонки.Документ.ширина = 20;
//Колонки.Документ.Доступность = ложь;
Колонки.Документ.ТекстШапки = "Ведомость";

Колонки.ЕстьПодчДок.ДанныеФлажка="ЕстьПодчДок";
Колонки.ЕстьПодчДок.Данные = "";
Колонки.ЕстьПодчДок.ТекстШапки = "";
Колонки.ЕстьПодчДок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
Колонки.ЕстьПодчДок.Ширина = 1;

Колонки.Ответственный.ширина = 7;
Колонки.Ответственный.Доступность = ложь;

Колонки.Комментарий.Доступность = ложь;
Колонки.Комментарий.ширина = 20;

КонецПроцедуры

Процедура НастроитьВидимость()

Если ЭлементыФормы.СпособОплаты.Значение = Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк тогда
ЭлементыФормы.ТекстСчет.Видимость = истина;
ЭлементыФормы.РасчетныйСчет.Видимость = истина;
иначе
ЭлементыФормы.ТекстСчет.Видимость = ложь;
ЭлементыФормы.РасчетныйСчет.Видимость = ложь;
КонецЕсли;

КонецПроцедуры

Процедура КоманднаяПанельВыплатаЗарплатыСнятьФлажки(Кнопка)
Для каждого стр из ДокументыВыплаты Цикл
стр.ЕстьПодчДок = ложь;
КонецЦикла;
КонецПроцедуры

Процедура КоманднаяПанельВыплатаЗарплатыУстановитьФлажки(Кнопка)
Для каждого стр из ДокументыВыплаты Цикл
стр.ЕстьПодчДок = истина;
КонецЦикла;
КонецПроцедуры

Процедура кнПериодНажатие(Элемент)

НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.УстановитьПериод(ДатаНачала, ?(ДатаОкончания='0001-01-01', ДатаОкончания, КонецДня(ДатаОкончания)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
НастройкаПериода.Редактировать();
ДатаНачала = НачалоМесяца(НастройкаПериода.ПолучитьДатуНачала());
ДатаОкончания = КонецМесяца(НастройкаПериода.ПолучитьДатуОкончания());
Если ДатаНачала > ДатаОкончания или Год(ДатаНачала) < Год(ДатаОкончания) Тогда
ДатаОкончания = КонецМесяца(ДатаНачала);
КонецЕсли;

КонецПроцедуры

Процедура СпособОплатыПриИзменении(Элемент)
НастроитьВидимость();
КонецПроцедуры

Процедура ПриОткрытии()
НастроитьВидимость();
КонецПроцедуры

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

КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);

ДокументыВыплаты = Запрос.Выполнить().Выгрузить();
элементыФормы.ДокументыВыплаты.СоздатьКолонки();
НастроитьОформление();

КонецПроцедуры

//формирование платежных документов
Процедура СформироватьРКО()

Для каждого стр из ДокументыВыплаты Цикл
Если стр.ЕстьПодчДок Тогда
Док = стр.Документ.ПолучитьОбъект();
Для каждого строкаВедомости из Док.Зарплата Цикл
СтрокаВедомости.ВыплаченностьЗарплаты = Перечисления.ВыплаченностьЗарплаты.Выплачено;
КонецЦикла;
Док.Записать();
Ведомость = стр.Документ;
НовыйРКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
НовыйРКО.Дата = Ведомость.Дата;
НовыйРКО.УстановитьНовыйНомер();
НовыйРКО.Организация = Ведомость.Организация;
НовыйРКО.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям;
НовыйРКО.ОтражатьВБухгалтерскомУчете = Истина;
НовыйРКО.Ответственный = УправлениеПользователями.ОпределитьТекущегоПользователя();
Для каждого фл из Ведомость.зарплата Цикл
Работник = НовыйРКО.Работники.Добавить();
Работник.Физлицо = фл.Физлицо;
Работник.Сумма = фл.сумма;
КонецЦикла;

ТЧ = НовыйРКО.ВыплатаЗаработнойПлаты;
строкаТЧ = ТЧ.Добавить();
строкаТЧ.Ведомость = Ведомость;

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

Если РезультатЗапроса.Пустой() Тогда
ОбщегоНазначения.СообщитьОбОшибке("По ведомости "+строка(Ведомость)+" нет сумм к выплате!");
Иначе
Выбор