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

Обработка для создания пко и рко в зависимости от наличия отриц остатка в кассе

Автор ppkmlite, 09 ноя 2014, 10:35

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

ppkmlite

Здравствуйте, вопрос такой. Делаю обработку которая бы создавала приходный и расходный кассовые ордера. На форме две кассы,при выборе касс выходит на форму остаток,если он отрицательный у организации 1,то создается приходный на организацию 1, соответственно расходный на организацию 2. Реквизиты должны проставляться те которые на форме выбраны(договор,контрагент).
Эти документы нужно выводить списком на форму. Может кто сталкивался, подскажите. Это запросом нужно выводить? Я это делаю на кнопке сформировать.Создаю новую команду, а вот какие процедуры нужны,затрудняюсь.

дфтын

Идея такая:
кладете на форму - табличное поле, с типом значения таблицазначений, при создании документа , добавляете строчку в таблицу значений. потмо , когда работа завершенна, делаете ЭлементыФормы.табличноеПоле.Значение = ВашатаблицаЗначений

ppkmlite

Подскажите, пожалуйста.
Я создала функцию, которая возвращает табличный документ, и мне теперь нужно, чтобы реквизиты документов-касса, организация проставлялись из выбранных на форме обработки.

Процедура Кнопка1(Элемент)
   ТабДок = СоздаетНовыеДокументы(ТабДок);
   ТабДок.ТолькоПросмотр = Истина;
КонецПроцедуры

Функция СоздаетНовыеДокументы(ТабДок) Экспорт
   НовыйПКО = Документы.Приходныйкассовыйордер.СоздатьДокумент();
   НовыйПКО.Дата = ТекущаяДата();
   НовыйПКО.УстановитьНовыйНомер();
   НовыйПКО.ОтражатьВУправленческомУчете = Истина;
   НовыйПКО.Оплачено=Истина;
    НовыйПКО.Касса=Касса1.Ссылка----здесь я выводится касса, которая выбрана на форме в обработке
   НовыйПКО.Записать(РежимЗаписиДокумента.Проведение);
   Возврат ТабДок;
КонецФункции

Просто выходит ошибка, что не заполнена касса

дфтын

ЭлементыФормы.Касса1.Значение ... например..
Скажите, а что такое ТабДок, и зачем оно вам надо. если вы с ним ничего не делаете?

ppkmlite

Подскажите, пожалуйста
Вывела табличный документ, на нем списком должны выводиться пко и рко, если остаток отрицательный.У меня сейчас на данный момент стоит условие вывода любого остатка. как сделать условие на вывод только отрицательного остатка?
Функция СоздаетНовыеДокументы() Экспорт
   Если СуммаДок < 0 Тогда
   НовыйПКО = Документы.Приходныйкассовыйордер.СоздатьДокумент();
   НовыйПКО.Дата = ТекущаяДата();
   НовыйПКО.ОтражатьВУправленческомУчете = Истина;
   НовыйПКО.Оплачено=Истина;
   НовыйПКО.Организация = ОрганизацияОт.Ссылка;
   НОвыйПКО.Контрагент = КонтрагентОт.Ссылка;
    НовыйПКО.Касса=Касса1.Ссылка;
   НовыйПКО.СуммаДокумента = Надпись1;
   НовыйПКО.Записать();
   Возврат НовыйПКО;
   КонецЕсли;
КонецФункции

Процедура Кнопка1(Элемент)
   ТабДок = СоздаетНовыеДокументы();
   Новаястрока = Многодокументов.Добавить();
   Новаястрока.Документ = ТабДок;
КонецПроцедуры

дфтын

НовыйПКО.СуммаДокумента = Надпись1;
классно. новые веяния..
А вы уверены ,ч то вот так вот надпись даст вам число?

Добавлено: 10 ноя 2014, 15:53


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

sertak

Цитата: ppkmlite от 10 ноя 2014, 15:41
Вывела табличный документ, на нем списком должны выводиться пко и рко, если остаток отрицательный.

Код вывода списка покажите.

ppkmlite

В этом запросе хочу выбрать остаток


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

Здесь нужно, чтоб создавал новые документы



Функция СоздаетНовыеДокументы() Экспорт
   Если СуммаДок < 0 Тогда
   НовыйПКО = Документы.Приходныйкассовыйордер.СоздатьДокумент();
   НовыйПКО.Дата = ТекущаяДата();
   НовыйПКО.ОтражатьВУправленческомУчете = Истина;
   НовыйПКО.Оплачено=Истина;
   НовыйПКО.Организация = ОрганизацияОт.Ссылка;
   НОвыйПКО.Контрагент = КонтрагентОт.Ссылка;
    НовыйПКО.Касса=Касса1.Ссылка;
   НовыйПКО.СуммаДокумента = Надпись1;
   НовыйПКО.Записать();
   Возврат НовыйПКО;
   КонецЕсли;
КонецФункции

Процедура Кнопка1(Элемент)
   ТабДок = СоздаетНовыеДокументы();
   Новаястрока = Многодокументов.Добавить();
   Новаястрока.Документ = ТабДок;
КонецПроцедуры

Подскажите, пожалуйста,
Я понимаю, что неправильно написала
НовыйПКО.СуммаДокумента = Надпись1;
Я хочу получить остаток по кассе в этой строке, числовое значение! Подскажите, как получить число

дфтын

При нажати на кнопку вычисляйте остаток
Остаток = ОстатокПоКассе()  ;
если остаток > 0 - рассадник делайте или наоборот.

sertak

А потом передавайте в функцию создания документов этот остаток:
Функция СоздаетНовыеДокументы(ОстатокПоКассе) Экспорт
   Если ОстатокПоКассе< 0 Тогда
   НовыйПКО = Документы.Приходныйкассовыйордер.СоздатьДокумент();
   НовыйПКО.Дата = ТекущаяДата();
   НовыйПКО.ОтражатьВУправленческомУчете = Истина;
   НовыйПКО.Оплачено=Истина;
   НовыйПКО.Организация = ОрганизацияОт.Ссылка;
   НОвыйПКО.Контрагент = КонтрагентОт.Ссылка;
    НовыйПКО.Касса=Касса1.Ссылка;
   НовыйПКО.СуммаДокумента = ОстатокПоКассе;
   НовыйПКО.Записать();
   Возврат НовыйПКО;
   Иначе
   НовыйРКО = Документы.Расходныйкассовыйордер.СоздатьДокумент();
    ...   
   НовыйРКО .Записать();
   Возврат НовыйРКО ;

   КонецЕсли;
КонецФункции
Добавлено: 10 ноя 2014, 16:28


Ну, по-хорошему еще если остаток = 0, ничего создавать не стоит.
Добавлено: 10 ноя 2014, 16:38


Итого:
1. По нажатию кнопки в реквизит на форме получаете значение из функции  ОстатокПоКассе()
2. Передаем значение реквизита в функцию создания документов
3. Выводим документ в таблицу на форме
Например:
Процедура Кнопка1(Элемент)
   МойРеквизит = ОстатокПоКассе();
   Если МойРеквизит <> 0   
       ТабДок = СоздаетНовыеДокументы(МойРеквизит);
       Новаястрока = Многодокументов.Добавить();
       Новаястрока.Документ = ТабДок;
   КонецЕсли
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск