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

Программно поменять движения документа

Автор ppkmlite, 19 дек 2014, 22:30

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

ppkmlite

Здравствуйте. Подскажите, пожалуйста, как В БГУ редакция 2.0 поменять движения документа "платежное поручение"?
Имеется документ платежное поручение. При формировании проводок к счету кредита не проставляется дополнительное субконто.
Нужно обработкой проставить в это субконто(СубконтоКт2) значение дополнительной классификации(как привязка к счету,доп классификация-это справочник, он имеет в данном случае единственное значение, его нужно проставить).


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

Подскажите, как обратиться к субконто2 и заполнить его значением?
И еще, выходит ошибка переменная не определена Документ.Ссылка
                      переменная не определена Ссылка




ppkmlite

Собственно рисунок
Добавлено: 20 дек 2014, 00:17


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


Возвращает в отладчике пустой набор записей. Кнопка обработки не реагирует.

Добавлено: 20 дек 2014, 01:48


Ошибка НЕ установлен отбор по регистратору
Как не установлен? Не могу никак понять,может я здесь что не так написала??
НаборЗаписей.Отбор.Регистратор.Установить(регистрыбухгалтерии.ЖурналПроводокЕПСБУ);

cska-fanat-kz

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

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

ppkmlite

Здравствуйте.Спасибо, что откликнулись. Подскажите, пожалуйста, если я делаю так выходит ошибка


Для каждого Проводка ИЗ ДвиженияДокумента Цикл
            БухгалтерскийУчет.УстановитьСубконто(ДвиженияДокумента.СчетКт,ДвиженияДокумента.СубконтоКт2,"ДополнительнаяБюджетнаяКлассификация", выборкадетальныезаписи);

Выходит ошибка  "Поле объекта не обнаружено (СчетКт).


\\\У меня запрос

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПлатежноеПоручениеРасшифровкаПлатежа.Ссылка,
    |    ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт,
    |    ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт2
    |ИЗ
    |    Документ.ПлатежноеПоручение.РасшифровкаПлатежа КАК ПлатежноеПоручениеРасшифровкаПлатежа
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто КАК ЖурналПроводокЕПСБУДвиженияССубконто
    |        ПО (2 = 1)";
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыборкаДетальныеЗаписи = Документы.ПлатежноеПоручение.Выбрать();
   
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       
        ДвиженияДокумента = РегистрыБухгалтерии.ЖурналПроводокЕПСБУ.СоздатьНаборЗаписей();
       
        ДвиженияДокумента.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Ссылка);

ДвиженияДокумента.Прочитать();
        Для каждого Проводка ИЗ ДвиженияДокумента Цикл
            БухгалтерскийУчет.УстановитьСубконто(ДвиженияДокумента.СчетКт,ДвиженияДокумента.СубконтоКт2,"ДополнительнаяБюджетнаяКлассификация", выборкадетальныезаписи);

    КонецЦикла;

Подскажите, что неправильно

cska-fanat-kz

БухгалтерскийУчет.УстановитьСубконто(ДвиженияДокумента.СчетКт,ДвиженияДокумента.СубконтоКт2,"ДополнительнаяБюджетнаяКлассификация", выборкадетальныезаписи);

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

ppkmlite

Я сделала так, у меня ошибка метод объекта не обнаружен НайтиСтроки

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

Что я делаю не так??

cska-fanat-kz

НайтиСтроки() - это метод таблицы значений.
либо надо результат запроса в ТЗ выгружать, либо использовать НайтиСледующий()
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ppkmlite

Скажите, что здесь не так.ошибка не удалось записать "журнал проводок ЕПСБУ"

Проводка 2. Не заполнено субконто кредита Доп. классификация.
Так я и для этого обработку  делаю,чтоб проставить это субконто.!!





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

&НаКлиенте
Процедура Обработать(Команда)
    ОбработатьНаСервере();
КонецПроцедуры

ppkmlite

Здравствуйте. Снова я к вам обращаюсь.Вернулась к своей  обработке(поменять программно движения документа). Как быть,если у  некоторых документов допклассификация два раза указывается в проводке,  то если два вида кбк, то счет 18 два раза проставляется. По моей  обработке проставляется субконто только к первой строчке, а вторая  остается пустой!



         
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            

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

Теги:

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

Рейтинг@Mail.ru

Поиск