Движения документа по регистрам, очередное чудо

Новая тема
Показывать по 10 20 40 сообщений
"День добрый. Ниже приведен фрагмент кода (извиняюсь за вид, не знаю, как вставить, чтобы красиво было):


Процедура ОбработкаПроведения(Отказ, Режим)
   //структура, содержащая имена регистров сведений по которым надо проводить документ
   Перем СтруктураПроведенияПоРегистрамНакопления;

   // Заголовок для сообщений об ошибках проведения.
   Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка);

   РезультатЗапросаПоШапке = СформироватьЗапросПоШапке();
   
   // Получим реквизиты шапки из запроса
   ВыборкаПоШапкеДокумента = РезультатЗапросаПоШапке.Выбрать();

   Если ВыборкаПоШапкеДокумента.Следующий() Тогда

       //Надо позвать проверку заполнения реквизитов шапки
       ПроверитьЗаполнениеШапки(ВыборкаПоШапкеДокумента, Отказ, Заголовок);

       // Движения стоит добавлять, если в проведении еще не отказано (отказ =ложь)
       Если НЕ Отказ Тогда

           // получим учетную политику
           УпрощенныйУчетНДФЛ                     = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "УпрощенныйУчетНДФЛ");
           
           // ведется ли учет задолженности в разрезе периодов возникновения задолженности
           УчетЗадолженностиПоМесяцам    = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "УчетЗадолженностиПоМесяцам");
           
           // получим реквизиты табличной части
           ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ВыборкаПоШапкеДокумента).Выбрать();
           
           Пока ВыборкаПоНачислениям.СледующийПоЗначениюПоля("НомерСтроки") Цикл

               // проверим очередную строку табличной части
               ПроверитьЗаполнениеСтрокиРаботникаОрганизации(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям, Отказ, Заголовок);

               Если НЕ Отказ Тогда

                   // В регистр расчета начисления пишем только для работников организации
                   // Комментарий поставлен в начале 2010 г
                   //Если НЕ ВыборкаПоНачислениям.ФизлицоАкционер Тогда
                   //    ДобавитьСтрокуДополнительныхНачислений(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям);
                   //    СтруктураПроведенияПоРегистрамНакопления =  Новый Структура("НДФЛСведенияОДоходах, НДФЛРасчетыСБюджетом, ВзаиморасчетыСРаботникамиОрганизаций");
                   //Иначе
                   //    СтруктураПроведенияПоРегистрамНакопления =  Новый Структура("НДФЛСведенияОДоходах, НДФЛРасчетыСБюджетом");
                   //КонецЕсли;
                   //
                   //ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям, СтруктураПроведенияПоРегистрамНакопления, УпрощенныйУчетНДФЛ, УчетЗадолженностиПоМесяцам);
                   
                   Если НЕ ВыборкаПоНачислениям.ФизлицоАкционер Тогда
                       ДобавитьСтрокуДополнительныхНачислений(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям);
                       СтруктураПроведенияПоРегистрамНакопления =  Новый Структура("ВзаиморасчетыСРаботникамиОрганизаций,НДФЛСведенияОДоходах");
                   
                       ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям, СтруктураПроведенияПоРегистрамНакопления, УпрощенныйУчетНДФЛ, УчетЗадолженностиПоМесяцам);
                   КонецЕсли;
                   
               КонецЕсли;

           КонецЦикла;
           
       КонецЕсли;

   КонецЕсли;

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

Т.е. документ должен делать движения по двум регистрам. Вопрос: КАК надо создать и провести документ, чтобы движения по регистру ВзаиморасчетыСРаботникамиОрганизаций были, а по регистру НДФЛСведенияОДоходах не было? Наши в один голос твердят, что это не возможно. Однако смотрю в базу, а там именно это и вижу. У одного пользователя за январь, февраль, март, апрель движения есть, май, июнь - движений нет, июль, август, сентябрь - движения есть, октябрь, ноябрь,декабрь - движений нет. Такие же документы создавали и другие пользователи, но у них все нормально, чертовски талантливой только одна оказалась.
ЗЫ: Речь идет ещё про 8.1."
Видимо все самое интересное в "ДобавитьСтрокуВДвиженияПоРегистрамНакопления()".
"Процедура ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоТЧ,
СтруктураПроведенияПоРегистрамНакопления, УпрощенныйУчетНДФЛ, УчетЗадолженностиПоМесяцам)

ИмяРегистра = "НДФЛСведенияОДоходах";
Если СтруктураПроведенияПоРегистрамНакопления.Свойство(ИмяРегистра) Тогда

Движение = Движения[ИмяРегистра].Добавить();

// Свойства
Движение.Период = ВыборкаПоШапкеДокумента.ДатаРегистрации;


// Измерения
Движение.Организация = ВыборкаПоШапкеДокумента.ГоловнаяОрганизация;
Движение.ФизЛицо = ВыборкаПоТЧ.ФизЛицо;
Движение.КодДохода = ВидРасчета.КодДоходаНДФЛ;
Движение.ПериодРегистрации = НачалоМесяца(ВыборкаПоШапкеДокумента.ДатаРегистрации);

// Ресурсы
Движение.СуммаДохода = ВыборкаПоТЧ.Результат;
Движение.СуммаВычета = 0;

// Реквизиты
Движение.ОбособленноеПодразделение = ВыборкаПоШапкеДокумента.ОбособленноеПодразделение;
//Движение.КодВычета = Справочники.ВычетыНДФЛ.Код601;
Движение.ИсчисленоИзЗарплаты = Истина;

КонецЕсли;

ИмяРегистра = "НДФЛРасчетыСБюджетом";
Если СтруктураПроведенияПоРегистрамНакопления.Свойство(ИмяРегистра) Тогда

Если ВыборкаПоТЧ.НДФЛ <> 0 Тогда

Движение = Движения[ИмяРегистра].Добавить();

// Свойства
Движение.Период = ВыборкаПоШапкеДокумента.ДатаРегистрации;
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

// Измерения
Движение.Организация = ВыборкаПоШапкеДокумента.ГоловнаяОрганизация;
Движение.ФизЛицо = ВыборкаПоТЧ.ФизЛицо;
Движение.СтавкаНалогообложенияРезидента = ВидРасчета.КодДоходаНДФЛ.СтавкаНалогообложенияРезидента;
Движение.МесяцНалоговогоПериода = ВыборкаПоШапкеДокумента.ДатаРегистрации;

// Ресурсы
Движение.Налог = ВыборкаПоТЧ.НДФЛ;

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

Движение = Движения[ИмяРегистра].Добавить();

// Свойства
Движение.Период = ВыборкаПоШапкеДокумента.ДатаРегистрации;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

// Измерения
Движение.Организация = ВыборкаПоШапкеДокумента.ГоловнаяОрганизация;
Движение.ФизЛицо = ВыборкаПоТЧ.ФизЛицо;
Движение.СтавкаНалогообложенияРезидента = ВидРасчета.КодДоходаНДФЛ.СтавкаНалогообложенияРезидента;
Движение.МесяцНалоговогоПериода = ВыборкаПоШапкеДокумента.ДатаРегистрации;

// Ресурсы
Движение.Налог = ВыборкаПоТЧ.НДФЛ;

// Реквизиты
Движение.ОбособленноеПодразделение = ВыборкаПоШапкеДокумента.ОбособленноеПодразделение;
Движение.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Удержание;

Движение.КодДохода = ВидРасчета.КодДоходаНДФЛ;
КонецЕсли;
КонецЕсли;
КонецЕсли;

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

Движение = Движения[ИмяРегистра].Добавить();

// Свойства
Движение.Период = ВыборкаПоШапкеДокумента.ДатаРегистрации;
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

// Измерения
Движение.Организация = ВыборкаПоШапкеДокумента.Организация;
Движение.ФизЛицо = ВыборкаПоТЧ.ФизЛицо;
Если УчетЗадолженностиПоМесяцам Тогда
Движение.ПериодВзаиморасчетов = НачалоМесяца(ВыборкаПоШапкеДокумента.ДатаРегистрации);
КонецЕсли;

// Ресурсы
Движение.СуммаВзаиморасчетов = ВыборкаПоТЧ.Результат - ВыборкаПоТЧ.НДФЛ;

КонецЕсли;

КонецПроцедуры // ДобавитьСтрокуВДвиженияПоРегистрамНакопления"
Зачем здесь этот код? Он у вас отличается от типового?
Ты писал:
>Видимо все самое интересное в "ДобавитьСтрокуВДвиженияПоРегистрамНакопления()".
я ответила. Я там особо интересного не вижу. Это процедура из модуля документа.
А ошибка вообще воспроизводится? А то может это было в каком-то релизе с ошибкой сформировано, а сейчас если перепровести, то все встанет на места.
нет, не воспроизводится. Если в текущей базе провести эти документы - все движения есть.
Я не поленилась, восстановила базу за июнь 2010, там документ за май только что создан. Движений по нужному регистру нет, перепровожу - есть. Всячески извращалась, пытаясь создать проведенный документ без движений - у меня не получается. А она ведь и дальше таких настряпала.
При этом напоминаю, что в это же время у других пользователей такого нет.
Даже если перепроводишь под ее пользователем, то движения появляются?
ну перепроводила то я под своим именем...Попробую заново загрузить и под ней зайти...
при перепроведении и под её именем все нормально. Блин, ну как так можно сделать, у кого богатая фантазия?! Готова проверить все самые идиотские варианты!
Читают тему
(гостей: 1)

Быстрый переход