Как сделать проверку регистра накопления чтобы при расходнике он смотрел сколько он может списать если там уже есть статья и сумма к примеру.
Посмотреть, как в типовых это сделано не предлагать?
Flexy @ Сегодня, 10:53
,
Предложите только скажите где есть? я не встречал. Верней в типовой я не посмотрю ибо база самописная)
Как мне на это сделать проверку
! | http://pro1c.org.ua/index.php?act=announce&id=2: 8 |
ВЫБРАТЬ
ОстаткиЧегото.СуммаОстаток
ИЗ
РегистрНакопления.ОстаткиЧегото.Остатки(&ПериодРегистратора, ) КАК ОстаткиЧегото
...
Если СуммаОстатки ИзЗапроса > СуммаДокументаРегистратора Тогда
...
Flexy @ Сегодня, 11:22
,
Щас попробую)
Сделал вот так и ничего. где ошибся или везде)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ОстаткиБюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиБюджетРасходовИПриходов.Остатки(&ПериодРегистратора, ) КАК ОстаткиБюджетРасходовИПриходов
|Если
|СуммаОстатки ИзЗапроса > СуммаДокументаРегистратора Тогда
| Отказ = Истина";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ОстаткиБюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиБюджетРасходовИПриходов.Остатки(&ПериодРегистратора, ) КАК ОстаткиБюджетРасходовИПриходов
|;
Запрос.УстановитьПараметр("ПериодРегистратора", ДатаПроводимогоДокумента);
Результат = Запрос.Выполнить();
Если Результать.Пустой() Тогда
// проверять нечего. возврат
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.СуммаОстаток < СуммаПроводимогоДокумента Тогда
//Отказ
КонецЕсли;
Flexy @ Сегодня, 11:42
,
Ошибки полезли
! | http://pro1c.org.ua/index.php?act=announce&id=2: 8 |
Неужели Вы тупо скопировали тот текст запроса, что я писал?
Поставьте правильные (свои) имена переменных в алгоритм
Flexy @ Сегодня, 11:48
,
Поправил но не могу понять что за параметр результат у меня на него ругаеться.
Ругается потому, что Результать и Результат - две разные переменне
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ОстаткиБюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиБюджетРасходовИПриходов.Остатки(&ПериодРегистратора, ) КАК ОстаткиБюджетРасходовИПриходов
|";
Запрос.УстановитьПараметр("ПериодРегистратора", ДатаБюджета);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
// проверять нечего. возврат
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.СуммаОстаток < СуммаВБазовойВалюте Тогда
//Отказ
КонецЕсли;
Значить нет у Вас такого регистра
БюджетРасходовИПриходов <> ОстаткиБюджетРасходовИПриходов
Flexy @ Сегодня, 13:27
,
НУжно вот так ?
|БюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.БюджетРасходовИПриходов.Остатки(&ПериодРегистратора, ) КАК БюджетРасходовИПриходов
|";
Если Выборка.СуммаОстаток < СуммаВБазовойВалюте Тогда
Отказ = Истина;
КонецЕсли;
Это хорошо или плохо?
Flexy @ Сегодня, 13:44
,
ну в бюджете у меня стоит расход по статье этой за месяц 6400. я не могу провести и 100. то есть не работает.
Потому што на дату проведения эта сумма = 0. Вы пытаетесь провести расход раньше чем было поступление.
Flexy @ Сегодня, 13:53
,
я пробывал уже дату менять вот 1 число
у меня в принципе должна быть не одна проводна в месяц имено на дату бюджета. Бюджет забиваться на месяц и надо чтобы рассходники смотрели на назначение и подразделение и месяц и нельзя было сделать по сумме больше чем в бюджете.
я исправил дату бюджета на 01,02 все работает я не могу провести одним платежом больше чем стоит в бюджете. но я провожу 6400 и потом могу хоть 100 раз проводить эту сумму
В Вашей самописной конфигурации хоть в каком нибудь документе есть контроль превышения остатков?
Что бы 100 раз перепроводить документ, который контролирует остаток нужно перед проведением удалять его движения из регистра.
Flexy @ Сегодня, 14:51
,
Все заработало. Но мне нужно не только по дате смотреть а и по подразделению и назначению. у нас 3 подразделения и у каждого свой бюджет .Что в запросе нужно дописать?
ГДЕ
Подразделение = &Подразделение И Назначение = &Назначение
Flexy @ Сегодня, 15:50
,
Поправил так. Или не надо было добавлять строки? но ошибку выдает
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ЗаявкаНаРасходование.МодульОбъекта(163)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(8, 34)}: Поле не найдено "Назначение"
Подразделение = &Подразделение И <<?>>Назначение = &Назначение
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|БюджетРасходовИПриходовОстатки.Подразделение,
|БюджетРасходовИПриходовОстатки.Назначения,
|БюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.БюджетРасходовИПриходов.Остатки(&ПериодРегистратора, ) КАК БюджетРасходовИПриходов
|ГДЕ
|Подразделение = &Подразделение И Назначение = &Назначение
|";
Запрос.УстановитьПараметр("ПериодРегистратора", ДатаБюджета);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("Назначение", НазначениеПлатежа);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
// проверять нечего. возврат
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.СуммаОстаток < СуммаВБазовойВалюте Тогда
Отказ = Истина;
Сообщить("Сумма больше чем Бюджет")
КонецЕсли;
|ВЫБРАТЬ
|БюджетРасходовИПриходов.СуммаОстаток
|ИЗ
| РегистрНакопления.БюджетРасходовИПриходов.Остатки(&ПериодРегистратора, Подразделение = &Подразделение И
| Назначение = &Назначение ) КАК БюджетРасходовИПриходов
Flexy @ Сегодня, 16:09
,
Всервоно пишет Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ЗаявкаНаРасходование.МодульОбъекта(164)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(9, 34)}: Поле не найдено "Назначение"
Подразделение = &Подразделение И <<?>>Назначение = &Назначение
Опять не правильные имена переменных. Подставляйте свои.
Flexy @ Сегодня, 16:24
,
поправил. вроде работает но выдает вот такое. Что можна с датой сделать чтобы она не именно на число смотрела а на весь месяц в не зависимости какого числа сделали бюджет
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.СуммаОстаток < СуммаВБазовойВалюте Тогда
Отказ = Истина;
Сообщить("Сумма больше чем Бюджет")
КонецЕсли;
КонецЕсли;
Flexy @ Вчера, 17:05
,
Работает. Скажите что изменить чтобы при создании документа его дата была не такая же как в бюджете а в пределах месяца. то есть бюджет делается 1 числа а рассходники то уже потом. Сейчас работает только если рассходник на дата бюджета.
burza @ Сегодня, 9:31
,
Не понял вопрос. Если Установка Бюджета на 01.02, а Заявка на расход 02.02, что происходит при ее проведении?
Flexy @ Сегодня, 11:40
,
Дата заявки остается не изменой а вот ДатаБюджета должна смотреть на бюджет в периоде месяца. То есть если я делаю 2 бюджета 01.02 на 5000 и 01.03 на 5000 то сейчас заявку можно провести 2 раза за месяц на сумму 10000.
Запрос.УстановитьПараметр("ПериодРегистратора", ДатаБюджета);
Flexy @ Сегодня, 12:19
,
Я правельно понял?
так тоже не работает
Запрос.УстановитьПараметр("ПериодРегистратора", Дата);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("Назначение", НазначениеПлатежа);
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua