Выгрузка из Зуп в УСН 1.3

Тема в разделе "1C и всё что с ней связано", создана пользователем SeverBap, 28 окт 2010.

  1. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Вообщем ситуация такова:
    Есть учет в ЗУП по нескольким организациям в одной базе, организации как на ОСН и УСН!
    С выгрузкой в ОСН проблем нет так как стандартными средствами выгружаю в Бух 4.5. Но с выгрузкой в УСН появились проблемы так как как таковой я штатной реализации не нашел пришлось писать с нуля.
    Дошел до собственой фиксации данных в УСН натолкнулся на проблемы при которых не получается проставить правильно проводки (реальзую выгрузку через ОLЕ, написал запрос получения из ЗУП)
    Запрос:
    Код ( (Unknown Language)):
        "ВЫБРАТЬ
    |   ОтражениеЗарплатыВРеглУчете.Организация,
    |   ОтражениеЗарплатыВРеглУчете.Ссылка,
    |   ОтражениеЗарплатыВРеглУчете.Дата,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт3,
    |   СУММА(ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма) КАК Сумма
    |ИЗ
    |   Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете
    |       ПО ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка = ОтражениеЗарплатыВРеглУчете.Ссылка
    |ГДЕ
    |   ОтражениеЗарплатыВРеглУчете.Дата <= &Дата2
    |   И ОтражениеЗарплатыВРеглУчете.Дата >= &Дата1
    |   И ОтражениеЗарплатыВРеглУчете.Организация = &Организация
    |
    |СГРУППИРОВАТЬ ПО
    |   ОтражениеЗарплатыВРеглУчете.Дата,
    |   ОтражениеЗарплатыВРеглУчете.Ссылка,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |   ОтражениеЗарплатыВРеглУчете.Организация,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт3";
    При присвоении субконтоКт и СубконтоДТ сваливается на ошибки:
    Листинг после запроса урезаный:
    Код ( (Unknown Language)):
    Запрос.УстановитьПараметр("Дата1", НачалоДня(ЭлементыФормы.ДатаНачала.Значение));
    Запрос.УстановитьПараметр("Дата2", КонецДня(ЭлементыФормы.ДатаЗавершения.Значение));
    Запрос.УстановитьПараметр("Организация",Организация);
    ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Запрос.Выполнить().Выгрузить().Количество();
    йуукеку = Запрос.Выполнить().Выгрузить();
    Выборка = Запрос.Выполнить().Выбрать();
    Сотрудники = СерверOLE.CreateObject("Справочник.Сотрудники");
    РасходыБудущихПериодов=СерверOLE.CreateObject("Справочник.РасходыБудущихПериодов");
    Счет = СерверOLE.CreateObject("Счет");
    СтараяДата=1;
    Опер = СерверOLE.CreateObject("Операция");
    Пока Выборка.Следующий() Цикл
    ЭлементыФормы.Индикатор1.Значение = ЭлементыФормы.Индикатор1.Значение + 1;
    Если СтараяДата=1 Тогда
    Опер.Новая();
    Опер.Содержание = "Перенос отражения зарплаты из ЗУП";
    Опер.ДатаОперации = Выборка.Дата;
    СуммаИтог = 0;
    ИначеЕсли Не СтараяДата=Выборка.Дата Тогда
    Опер.СуммаОперации = СуммаИтог;
    Опер.Записать();
    Опер.Новая();
    Опер.Содержание = "Перенос отражения зарплаты из ЗУП";
    Опер.ДатаОперации = Выборка.Дата;
    СуммаИтог = 0;
    КонецЕсли;
    СтараяДата=Выборка.Дата;
    Опер.НоваяПроводка();
    Дт = Опер.Д*цензура*;
    Кт = Опер.Кредит;
    Если ВыБорка.СчетДт.Код="97.01" Тогда
    Если Счет.НайтиПоКоду("97.1") = 1 Тогда
    СчетДт = Счет.ТекущийСчет();
    КонецЕсли;
    Если ТипЗнч(Выборка.СубконтоДТ2)=Тип("СправочникСсылка.ФизическиеЛица") Тогда
    Если Сотрудники.НайтиПоНаименованию(СокрЛП(Выборка.СубконтоДТ2)) = 1 Тогда
    Сотрудник = Сотрудники.ТекущийЭлемент();
    Кт.СубконтоКт = Сотрудник; ///тут ошибка что нет СубконтоКт
    ИначеЕсли Сотрудники.НайтиПоНаименованию(СокрЛП(Выборка.СубконтоДТ2)) = 0 Тогда
    Сотрудники.Новый();
    Сотрудники.Наименование = СокрЛП(Выборка.СубконтоДТ2);
    Сотрудники.Записать();
    Сотрудник = Сотрудники.ТекущийЭлемент();
    Кт.СубконтоКт = Сотрудник; ///тут ошибка что нет СубконтоКт
    КонецЕсли;

    КонецЕсли;
    Если Выборка.СчетКт.Код="69.02.2" Тогда
    Если Счет.НайтиПоКоду("69.22")=1 Тогда
    СчетКт=Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;

    Дт.Счет = СчетДт;
    Кт.Счет = СчетКт;

    КонецЦикла;
    Опер.СуммаОперации = СуммаИтог;
    Опер.Записать();
    Уже все поперепробовал всеравно вываливается...
    У кого нибудь есть либо план обмена или подскажите как тут исправить - очень буду благодарен!
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Неверный синтаксис
    Надо
    Код ( (Unknown Language)):
    Кт.Субконто(1,Сотрудник)
     
  3. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Большую часть исправил получается пока так (сижу пишу исправления):
    Код ( (Unknown Language)):
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ОтражениеЗарплатыВРеглУчете.Организация,
    |   ОтражениеЗарплатыВРеглУчете.Ссылка,
    |   ОтражениеЗарплатыВРеглУчете.Дата,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт3,
    |   СУММА(ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма) КАК Сумма
    |ИЗ
    |   Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете
    |       ПО ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка = ОтражениеЗарплатыВРеглУчете.Ссылка
    |ГДЕ
    |   ОтражениеЗарплатыВРеглУчете.Дата <= &Дата2
    |   И ОтражениеЗарплатыВРеглУчете.Дата >= &Дата1
    |   И ОтражениеЗарплатыВРеглУчете.Организация = &Организация
    |
    |СГРУППИРОВАТЬ ПО
    |   ОтражениеЗарплатыВРеглУчете.Дата,
    |   ОтражениеЗарплатыВРеглУчете.Ссылка,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |   ОтражениеЗарплатыВРеглУчете.Организация,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт1,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт2,
    |   ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоКт3";

    Запрос.УстановитьПараметр("Дата1", НачалоДня(ЭлементыФормы.ДатаНачала.Значение));
    Запрос.УстановитьПараметр("Дата2", КонецДня(ЭлементыФормы.ДатаЗавершения.Значение));
    Запрос.УстановитьПараметр("Организация",Организация);
    ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Запрос.Выполнить().Выгрузить().Количество();
    йуукеку = Запрос.Выполнить().Выгрузить();
    Выборка = Запрос.Выполнить().Выбрать();
    Сотрудники = СерверOLE.CreateObject("Справочник.Сотрудники");
    ВидыНачислений= СерверOLE.CreateObject("Справочник.ВидыНачислений");
    РасходыБудущихПериодов=СерверOLE.CreateObject("Справочник.РасходыБудущихПериодов");
    Счет = СерверOLE.CreateObject("Счет");
    СтараяДата=1;
    Опер = СерверOLE.CreateObject("Операция");
    Пока Выборка.Следующий() Цикл
    ЭлементыФормы.Индикатор1.Значение = ЭлементыФормы.Индикатор1.Значение + 1;
    //СчетДт="";
    //СчетКт="";
    Если СтараяДата=1 Тогда
    Опер.Новая();
    Опер.Содержание = "Перенос отражения зарплаты из ЗУП";
    Опер.ДатаОперации = Выборка.Дата;
    СуммаИтог = 0;
    ИначеЕсли Не СтараяДата=Выборка.Дата Тогда
    Опер.СуммаОперации = СуммаИтог;
    Опер.Записать();
    Опер.Новая();
    Опер.Содержание = "Перенос отражения зарплаты из ЗУП";
    Опер.ДатаОперации = Выборка.Дата;
    СуммаИтог = 0;
    КонецЕсли;
    СтараяДата=Выборка.Дата;
    Опер.НоваяПроводка();
    Дт = Опер.Д*цензура*;
    Кт = Опер.Кредит;
    Если ВыБорка.СчетДт.Код="97.01" Тогда
    Если Счет.НайтиПоКоду("97.1") = 1 Тогда
    СчетДт = Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;    

    Если ВыБорка.СчетКт.Код="70" Тогда
    Если Счет.НайтиПоКоду("70") = 1 Тогда
    СчетКт = Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;    

    Если Выборка.СчетКт.Код="69.02.2" Тогда
    Если Счет.НайтиПоКоду("69.22")=1 Тогда
    СчетКт=Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;
    Если Выборка.СчетКт.Код="69.02.1" Тогда
    Если Счет.НайтиПоКоду("69.21")=1 Тогда
    СчетКт=Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;
    Если Выборка.СчетКт.Код="69.11" Тогда
    Если Счет.НайтиПоКоду("69.11")=1 Тогда
    СчетКт=Счет.ТекущийСчет();
    КонецЕсли;
    КонецЕсли;



    Дт.Счет = СчетДт;
    Кт.Счет = СчетКт;
    Сообщить("КодД "+Выборка.СчетДт.Код);
    Сообщить("Д1 "+Выборка.СубконтоДт1);
    Сообщить("Д2 "+Выборка.СубконтоДт2);
    Сообщить("Д3 "+Выборка.СубконтоДт3);
    Сообщить("КодК "+Выборка.СчетКт.Код);
    Сообщить("К1 "+Выборка.СубконтоКт1);
    Сообщить("К2 "+Выборка.СубконтоКт2);
    Сообщить("К3 "+Выборка.СубконтоКт3);

    Если (ВыБорка.СчетДт.Код="97.01")И ((Выборка.СчетКт.Код="69.02.2") ИЛИ (Выборка.СчетКт.Код="69.02.1") ИЛИ ((Выборка.СчетКт.Код="69.11")) ИЛИ (Выборка.СчетКт.Код="70")) Тогда
    Если Не Выборка.СчетКт.Код="69.11" Тогда
    Сотрудник = "";
    Если Сотрудники.НайтиПоНаименованию(СокрЛП(Выборка.СубконтоДт2)) = 1 Тогда
    Сотрудник = Сотрудники.ТекущийЭлемент();
    ИначеЕсли Сотрудники.НайтиПоНаименованию(СокрЛП(Выборка.СубконтоДт2)) = 0 Тогда
    Сотрудники.Новый();
    Сотрудники.Наименование = СокрЛП(Выборка.СубконтоДт2);
    Сотрудники.Записать();
    Сотрудник = Сотрудники.ТекущийЭлемент();
    КонецЕсли;
    Кт.Сотрудники = Сотрудник;
    КонецЕсли;
    РПБ="";
    Если РасходыБудущихПериодов.НайтиПоНаименованию(СокрЛП(Выборка.СубконтоДт1))=1 Тогда
    РПБ=РасходыБудущихПериодов.ТекущийЭлемент();
    Иначе
    РасходыБудущихПериодов.Новый();
    РасходыБудущихПериодов.Наименование=СокрЛП(Выборка.СубконтоДт1);
    РасходыБудущихПериодов.Записать();
    РПБ=РасходыБудущихПериодов.ТекущийЭлемент();
    КонецЕсли;
    Дт.РасходыБудущихПериодов=РПБ;
    Если Не Выборка.СчетКт.Код="70" Тогда
    Кт.ВидыПлатежей=СерверOLE.Перечисление.ВидыПлатежей.Налог;
    КонецЕсли;
    КонецЕсли;
    Опер.Сумма = Выборка.Сумма;
    СуммаИтог = СуммаИтог + Выборка.Сумма;
    КонецЦикла;
    Опер.СуммаОперации = СуммаИтог;
    Опер.Записать();
    Пока ошибок навалом, потом выложу для использования а то в нете нет для усн ничего вообще! <_<
     
  4. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Написал: Выгрузку из ЗУП, Зугрузка в УСН 1.3
    Проверяйте и тестируйте (пока только для тестирования) если кто-то желает доработать, доработайте и напишите что там еще надо поправить..... :newconfus:
     

    Вложения:

    • OUT.rar
      Размер файла:
      6,5 КБ
      Просмотров:
      56
    • IN.rar
      Размер файла:
      11,3 КБ
      Просмотров:
      24
  5. diablo04

    diablo04 Гость

    Доброго времени суток..
    при загрузки в УСН... написала ошибку
    Балансовый счет не может корреспондировать с пустым счетом (проводка 5)
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Поставить проверку - если счет не заполнен, приравнять его к счету "00"
     
  7. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    вышли свой файлик я просмотрю его и допишу что не так!
     
  8. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Обновил загрузку
     

    Вложения:

    • IN.rar
      Размер файла:
      12,1 КБ
      Просмотров:
      68
  9. diablo04

    diablo04 Гость

    Вот файл который выгружается из ЗуП 8

    ошибку я писал чуть выше...
     

    Вложения:

    • ________.txt
      Размер файла:
      2,3 КБ
      Просмотров:
      31
Загрузка...

Поделиться этой страницей