Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 02:38

Как сопоставить разные типы регистров?

Автор Лейсан, 17 фев 2012, 13:02

0 Пользователей и 1 гость просматривают эту тему.

Лейсан

Пишу обработку, кот создает док-т "Корр-ка записей регистров накопления"и заполнит регистр накопления "Расчет налоговых агентов с бюджетом по НДФЛ" на основаниии регистра накопления "НДФЛ расчеты с бюджетом".
Измерение регистра  Расчеты Налоговых агентов с бюджетом по НДФЛ- ПеречислениеСсылка.НДФЛСтавки,а у НДФЛ расчет с бюджетом-ПеречислениеСсылка.НДФЛСтавкиНалогообложенияРезидента.Как соспоставить значения разных типов?подскажите пожалуйста?

cska-fanat-kz

А в предыдущей теме об этом нельзя спросить?
Обязательно новую создавать? (


Выбираете записи из Регистра1.
Циклом их обходите.
Создаете записи в Регистре2.
Как доходите до полей с разными типами, вызывайте самописную функцию,
которая по значению Перечисления1 вернет значение Перечисления2...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Лейсан

Простите пожалуйста. спасибо за ответ.попробую

Михаил Сергеевич

можно всё запросом сделать, засунуть в параметры таблицу соответствия и соединить

cska-fanat-kz

Цитата: Михаил Сергеевич от 17 фев 2012, 15:00
можно всё запросом сделать, засунуть в параметры таблицу соответствия и соединить

Согласен.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Лейсан

Функция СоответствиеРегистров()
   ПеречислениеСсылка.НДФЛСтавкиНалогообложенияРезидента=(ПеречислениеСсылка.НДФЛСтавки);
   НоваяЗапись.Поле=ПеречислениеСсылка.НДФЛСтавкиНалогообложенияРезидента;
   НоваяЗапись.Поле=(ПеречислениеСсылка.НДФЛСтавки);
    КонецФункции

Примерно так будет?и перед (ПеречислениеСсылка.НДФЛСтавки) какая функция должна быть?

cska-fanat-kz

Функция ПолучитьЗначениеПеречисления2(ЗначениеПеречисления1)

Если ЗначениеПеречисления1 = Перечисления.НДФЛСтавки.Значение1 Тогда
     Возврат Перечисления.НДФЛСтавкиНалогообложенияРезидента.Значение1;
ИначеЕсли ЗначениеПеречисления1 = Перечисления.НДФЛСтавки.Значение2 Тогда
     Возврат Перечисления.НДФЛСтавкиНалогообложенияРезидента.Значение2;
....и так далее...
КонецЕсли;

КонецФункции
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Лейсан

попробовала.все равно пишет что ставка не заполнена. в каком еще месте можно посмотреть свою ошибку?

Dethmontt

СоответствиеЗначиний = Новый соответствие;
СоответствиеЗначиний.вставить("Значение1","Значение88");//Чему равно значение одного перечисления (Значение1) другого перечисления (Значение88)
СоответствиеЗначиний.Вставить("Значение2","Значение77");
Пока Выборка.Следующий() Цикл
ПеречислениеДляЗаполнения = Перечисления.НДФЛСтавкиНалогообложенияРезидента[СоответствиеЗначиний[Выборка.Твоеперечисление]];
КонецЦикла;
//Но лучший способ - это сугубо мое мнение, все таки через запрос это сделать сразу. прямо в запросе описать соответствие или же подсунуть как параметр.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Лейсан

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

Если СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка09 Тогда
Возврат Перечисления.НДФЛСтавки.Ставка09;
ИначеЕсли СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13 Тогда
Возврат Перечисления.НДФЛСтавки.Ставка13;
КонецЕсли;

КонецФункции


я так делала.попробую через соответствия.спасибо

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск