Подскажите, пожалуйста. Вопрос такой: выгружаю данные из документа «Выплата заработной платы» во временную таблицу, потом из этой таблицы загружаю в документ «Перечисление НДФЛ в бюджет», одной обработкой. Загружаются реквизиты: Сотрудники, сумма НДФЛ (по формуле), дата ведомости, общая сумма. Не загружаются ставка, период, ОКАТО_КПП. То есть, если открыть документ, в который загрузились данные, ставка стоит 0, периода нет, и ОКАТО_КПП не проставляет. А если смотреть в Журнале Перечисление НДФЛ в Бюджет, ставка проставляется ,ОКАТО_КПП есть, но периода нет. В чем может быть проблема?
Словестный алгоритм (без расчета к удержанию)
1 На основании выплаты создается документ "ПеречислениеНДФЛвБюджет"
2 В процедуре документа "ВводНаОсновании"( которая срабатывает сразу же после того как выбрал док, основанием которого явл-ся выплата ЗП)
заполнил свою временную таблицу (1), выгрузив из таб части документа основания
3 Добавил в свою временную таблицу (1) столбцы ОКАТО_КПП и прочие
4 Создал еще одну временну таблицу (2), в которую выгрузил два столбца("ОКАТО_КПП" и "Сумма") из таблицы (1) и свернул ее (2) по столбцу "ОКАТО_КПП" суммировав столбец "Сумма"
Тем самым получил примерное количество документов к созданию (примерное - возможны варианты с разными ставками НДФЛ, минус один документ, т.к. в одном из них уже находимся)
5 Произвел выборку по второй временной таблице (2), и внутри цикла (перебора записей таблицы (2)) создаю документы перечисления ( реквизит ОКАТО_КПП проставляю из текущей строки временной таблицы (2), а остальные реквизиты в шапке таблицы, за исключением номера платежки и перечисления, определены и присваиваются тут же)
6 все в том же цикле по перебору записей временной таблицы (2), перебираю таблицу с сотрами (1) и если, ОКАТО_КПП, в котором работает сотрудник, совпадает с ОКАТО_КПП свернутой таблицы (2), то Добавляю запись по сотру в документ перечисления
7 в конце каждого прохода цикла (2) проводим созданный документ, кстати, созданный через "СоздатьОбъект", и переходим к новой записи.
З.Ы. так как выполняю я действия по разбросу сотров по разным докам в новосозданном документе перечислениеНДФЛ, то первую строку свернутой таблице я обрабатываю для него, т.е. заполняю текущий документ, который в конце предстает пользователю заполненным и ему предстоит его провести(если захочет)
Словестный алгоритм (без расчета к удержанию)
1 На основании выплаты создается документ "ПеречислениеНДФЛвБюджет"
2 В процедуре документа "ВводНаОсновании"( которая срабатывает сразу же после того как выбрал док, основанием которого явл-ся выплата ЗП)
заполнил свою временную таблицу (1), выгрузив из таб части документа основания
3 Добавил в свою временную таблицу (1) столбцы ОКАТО_КПП и прочие
4 Создал еще одну временну таблицу (2), в которую выгрузил два столбца("ОКАТО_КПП" и "Сумма") из таблицы (1) и свернул ее (2) по столбцу "ОКАТО_КПП" суммировав столбец "Сумма"
Тем самым получил примерное количество документов к созданию (примерное - возможны варианты с разными ставками НДФЛ, минус один документ, т.к. в одном из них уже находимся)
5 Произвел выборку по второй временной таблице (2), и внутри цикла (перебора записей таблицы (2)) создаю документы перечисления ( реквизит ОКАТО_КПП проставляю из текущей строки временной таблицы (2), а остальные реквизиты в шапке таблицы, за исключением номера платежки и перечисления, определены и присваиваются тут же)
6 все в том же цикле по перебору записей временной таблицы (2), перебираю таблицу с сотрами (1) и если, ОКАТО_КПП, в котором работает сотрудник, совпадает с ОКАТО_КПП свернутой таблицы (2), то Добавляю запись по сотру в документ перечисления
7 в конце каждого прохода цикла (2) проводим созданный документ, кстати, созданный через "СоздатьОбъект", и переходим к новой записи.
З.Ы. так как выполняю я действия по разбросу сотров по разным докам в новосозданном документе перечислениеНДФЛ, то первую строку свернутой таблице я обрабатываю для него, т.е. заполняю текущий документ, который в конце предстает пользователю заполненным и ему предстоит его провести(если захочет)
Хай!
У тебя действительно, что то не так
Вот моя процедурка при открытии перечисления НДФЛ
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
// если открыли для печати
Если глВыполнитьКомандуФормы(Контекст,"Печать","")=1 Тогда
Предупреждение( "У документа ""Перечисление НДФЛ в бюджет РФ"""
"отсутствует печатная форма... Вывести на печать"
"документы данного вида невозможно.",10);
СтатусВозврата(0);
Возврат;
КонецЕсли;
//12.07.2011 *** Joker *** Начало
//Ставка = Константа.СтавкаНДФЛсЗарплатыРезидентов.Получить(ОкончаниеГода);
//СписокСтавок.ТекущаяСтрока(1);
//Если СписокОКАТОКПП.РазмерСписка()<>0 Тогда
// ОКАТО_КПП = СписокОКАТОКПП.ПолучитьЗначение(1);
// СписокОКАТОКПП.ТекущаяСтрока(1);
//КонецЕсли;
Если ПустоеЗначение(Ставка) = 0 Тогда
ПозицияСписка = СписокСтавок.НайтиЗначение(СОКРЛП(Ставка));
СписокСтавок.ТекущаяСтрока(ПозицияСписка);
Иначе
Ставка = Константа.СтавкаНДФЛсЗарплатыРезидентов.Получить(ОкончаниеГода);
СписокСтавок.ТекущаяСтрока(1);
КонецЕсли;
Если (ПустоеЗначение(ОКАТО_КПП)=0) и (СписокОКАТОКПП.РазмерСписка()<>0) Тогда
ПозицияСписка = СписокОКАТОКПП.НайтиЗначение(СОКРЛП(ОКАТО_КПП));
Если ПозицияСписка<>0 Тогда
СписокОКАТОКПП.ТекущаяСтрока(ПозицияСписка);
КонецЕсли;
Иначе
Если СписокОКАТОКПП.РазмерСписка()<>0 Тогда
ОКАТО_КПП = СписокОКАТОКПП.ПолучитьЗначение(1);
СписокОКАТОКПП.ТекущаяСтрока(1);
КонецЕсли;
КонецЕсли;
//12.07.2011 *** Joker *** Конец
Иначе
Если Ставка <> 0 Тогда
ПозицияСписка = СписокСтавок.НайтиЗначение(Ставка);
Если ПозицияСписка<>0 Тогда
СписокСтавок.ТекущаяСтрока(ПозицияСписка);
КонецЕсли;
КонецЕсли;
Если (ПустоеЗначение(ОКАТО_КПП)=0) и (СписокОКАТОКПП.РазмерСписка()<>0) Тогда
ПозицияСписка = СписокОКАТОКПП.НайтиЗначение(СОКРЛП(ОКАТО_КПП));
Если ПозицияСписка<>0 Тогда
СписокОКАТОКПП.ТекущаяСтрока(ПозицияСписка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ПриОткрытии
а вот у меня установка значения ОКАТО/КПП и ставки и периода
У меня такая же установка значений.Вот:
ОКАТО_КПП = СокрЛП(ВременнаяТаблица.КодПоОКАТО)+"/"+СокрЛП(ВременнаяТаблица.КПП);
ДокПеречислениеНДФЛ.ОКАТО_КПП = СОКРЛП(ОКАТО_КПП);
ДокПеречислениеНДФЛ.МесяцНалоговогоПериода = НачМесяца(ВременнаяТаблица.ДатаПериода);
ДокПеречислениеНДФЛ.ДатаДок = ВременнаяТаблица.ДатаДок;
А как ты группируешь по ОКАТО_КПП?Почему то у меня из таблицы значений формируется только один документ и ОКАТО_КПП берет последний,а должен сразу несколько документов с разными ОКАТО_КПП..И еще откуда ты берешь в тзВременная ОКАТО_КПП?я выгружаю из документа "Выплата заработной платы",у меня выгружается по отдельности ОКАТО И КПП.
хай, извини, не хоца разбираться, что там у тебя, высылаю свои наброски пока еще.
З.Ы. ты скорее всего не обратила внимание на процедуру открытия дока перечисления, в которой устанавливается значение списка ОКАТО_КПП. А присваивание то действительно обычным оператором "=" работает.
Вообще то это у меня обычная внешняя обработка..в документе "Перечисление НДФЛ в бюджет" я ничего не дописывала кроме процедуры При открытии().В этой обработке я ставлю дату определенную,и данные берутся из Выплаты з/п на эту дату.,формируется новый документ Перечисление.Моя проблема в том что у меня не делит по ОКАТО_КПП.
Странно у тебя находятся значения ОКАТО и в присланной тобой таблице последний столбец с датой в виде строки вроде бы как, ну да ладно...
Проверить - что ты записала в документ перечисления- можно либо в конце его формирования, в отладчике, либо при его открытии(уже сохраненного), оять таки в отладчике. Ты посмотрела "ПриОткрытии"?
Возьми, выгрузи из своей временной таблицы два столбца "ОКАТО_КПП" и "Сумма", сверни получившуюся табличку, а потом перебор своей временной таблицы вложи в перебор свернутой и проверяй в условии на соответствие "ОКАТО_КПП".
Не понятно,как у тебя автоматически формируются документы Перечисление НДФЛ из Выплаты з/п..я то хотела простой обработкой выгрузка-загрузка,не меняя конфу..А по той теме,что могу сказать,проблема есть,мы еще не отчитывались конечно перед налоговой.у нас сотров 2000штук ,с начала года естественно бух не хочет ручками бить документы Перечисление НДФЛ.