|
Установка даты запрета изменения счета | ☑ | ||
---|---|---|---|---|
0
Топ 1 программист ми
14.10.13
✎
02:27
|
Кто сталкивался?
БП 2. Нужно дать возможность буху ставить дату запрета движения по счету. Как лучше реализовать |
|||
1
Топ 1 программист ми
14.10.13
✎
02:31
|
Как вариант подписка на событие - РегистрБухгалтерииНаборЗаписей.Хозрасчетный\
событие ПередЗаписью или ПриЗаписи |
|||
2
Топ 1 программист ми
14.10.13
✎
02:46
|
если мы сделали подписку РегистрБухгалтерииНаборЗаписей.Хозрасчетный.ПередЗаписью и когда проводят документ, мы видим по каким счетам дкоумент хочет сделать движения.
Но к сожалению не видно этого при отмене проведения документа( там вообще пустые движения, может придется делать отдельный запрос именно при отмене проведения. Отбирать из регистра движения по документу и сразу отбор ставить по нужным счетам |
|||
3
Cyberhawk
14.10.13
✎
02:58
|
Так в типовой РБ с корреспонденцией - у тебя будет в проводках по нужному тебе к запрету счету участвовать любой другой произвольный. Таким образом пользуйся типовым механизмом даты запрета изменений
|
|||
4
Топ 1 программист ми
14.10.13
✎
03:11
|
(3) не понял ответа вообще. а причем тут РБ? ))
|
|||
5
Cyberhawk
14.10.13
✎
03:16
|
(4) а как ты понял аббревиатуру "РБ"?
|
|||
6
Топ 1 программист ми
14.10.13
✎
03:17
|
(5) распред. база?
|
|||
7
Топ 1 программист ми
14.10.13
✎
03:17
|
(5) а ты про РегистрБух
|
|||
8
Топ 1 программист ми
14.10.13
✎
03:18
|
(3) тогда не совсем пойму в чем трабла?
Я через отладчик вижу в подписке при проведении документа он делает движения по проводкам, там смотрю какие счета и если надо делаю отказ. ЧТо не так? |
|||
9
Cyberhawk
14.10.13
✎
03:26
|
(8) да так-то все так (еще на документ корректировки записей регистров проверь только свой механизм и на документ "ОперацияБух"), только какую цель преследует заказчик? Типа, гарантировать неизменность ОСВ по счету на задаваемую дату?
|
|||
10
Топ 1 программист ми
14.10.13
✎
03:39
|
(9) да такую цель, ну я думаю отсеять лишние документы не трабла =)
|
|||
11
Топ 1 программист ми
14.10.13
✎
04:12
|
Ну вот выложу решение мож кому пригодится.
На скорую руку за часик + проверки в отладчике(вариант не самый конечный, ещё уточню про Не нужные доки и т.д.) Функция ДатаЗапретаСчета_СписокСчетов() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ИмяРегистра.Счет, | ИмяРегистра.ДатаЗапрета |ИЗ | РегистрСведений.ИмяРегистра КАК ИмяРегистра"; Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Процедура ДатаЗапретаСчета_ПередЗаписью(Источник, Отказ, РежимЗаписи) Экспорт // если идет проведение документа Если Источник.Количество() > 0 Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Движения.СчетКт, | Движения.Период, | Движения.СчетДт |ПОМЕСТИТЬ Движения |ИЗ | &Движения КАК Движения |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Счета.Счет, | Счета.ДатаЗапрета, | 1 КАК Запрет |ПОМЕСТИТЬ Счета |ИЗ | &Счета КАК Счета |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Счета.Запрет, | Счета.Счет, | Счета.ДатаЗапрета |ИЗ | Счета КАК Счета | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Движения КАК Движения | ПО (Счета.Счет = Движения.СчетДт | ИЛИ Счета.Счет = Движения.СчетКт) | И Счета.ДатаЗапрета < Движения.Период"; Запрос.УстановитьПараметр("Движения", Источник.Выгрузить()); Запрос.УстановитьПараметр("Счета", ДатаЗапретаСчета_СписокСчетов()); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Сообщить("Счет " + Результат.Счет + " запрещен для изменений (от " + Результат.ДатаЗапрета + ")"); Отказ = Истина; КонецЦикла; // если идет отмена проведения Иначе Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт |ПОМЕСТИТЬ Движения |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Регистратор |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Счета.Счет, | Счета.ДатаЗапрета, | 1 КАК Запрет |ПОМЕСТИТЬ Счета |ИЗ | &Счета КАК Счета |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Счета.Запрет, | Счета.Счет, | Счета.ДатаЗапрета |ИЗ | Счета КАК Счета | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Движения КАК Движения | ПО (Счета.Счет = Движения.СчетДт | ИЛИ Счета.Счет = Движения.СчетКт) | И Счета.ДатаЗапрета < Движения.Период"; Запрос.УстановитьПараметр("Регистратор", Источник.Отбор.Регистратор.Значение); Запрос.УстановитьПараметр("Счета", ДатаЗапретаСчета_СписокСчетов()); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Сообщить("Счет " + Результат.Счет + " запрещен для изменений (от " + Результат.ДатаЗапрета + ")"); Отказ = Истина; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
12
Топ 1 программист ми
14.10.13
✎
04:13
|
Это все подписка на событие РегистрБухгалтерииНаборЗаписей.Хозрасчетный.ПередЗаписью
Счета находятся в регистре сведений. Измерение Счет, Ресурс ДатаЗапрета |
|||
13
Cyberhawk
14.10.13
✎
05:20
|
Да так-то хреновенькое решение.
Зачем тебе во втором случае выборка из физической таблицы РБ? Используй подходящую тебе виртуальную и перемести ГДЕ в ее параметры. Еще у тебя Сообщить в подписке: при массовом перепроведении на сервере или групповом изменении документов что делать будешь? |
|||
14
Cyberhawk
14.10.13
✎
05:20
|
Ну и еще пользователю что-то щас мешает залезть в твой РС и удалить оттуда запретные счета?
|
|||
15
Топ 1 программист ми
14.10.13
✎
05:28
|
(14) права на РС не? Доступен полным правам на изменение и остальным на чтение.
"Еще у тебя Сообщить в подписке" что будет? Взорвется система, будет информирование о том что нельзя менять документ. все нормально будет. (13) прирост скорости в данном случаи изменения с физ на вирт не будет вообще. |
|||
16
Cyberhawk
14.10.13
✎
05:35
|
(15) Odavid по тебе плачет ))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |