[ТЕМА ЗАКРЫТА]
24.05.2016 12:16
namesash
 
Может есть у кого готовый триггер на проверку подставлено основание в заказе, или нет?

появилась необходимость запрещать поднимать до розового статуса, если нет основания в контракте, а такое происходит если заказ поставщику создан вручную, т.е. через "создать новый" не на базе контракта.
24.05.2016 12:38
OlegON
 
а в штатных проверках разве такого нет?
24.05.2016 12:44
ReDHawK
 
Готовые триггеры ))
7 - Наличие товара в основании документа
151 - Запрет принятия приходной накладной не на основании заказа поставщику
201 - Запрет принятия приходной накладной без основания
24.05.2016 13:25
namesash
 
вот именно по ордерам нет, например для поступлений есть проверка "не на основании заказа", а также ещё одна "не на основании"
24.05.2016 13:26
namesash
 
Цитата:
ReDHawK Готовые триггеры ))
7 - Наличие товара в основании документа
151 - Запрет принятия приходной накладной не на основании заказа поставщику
201 - Запрет принятия приходной накладной без основания
вот именно приходная, а у меня вопрос по заказу поставщику
24.05.2016 16:42
ReDHawK
 
174. Контроль наличия действующего соглашения о поставках для заказа
Проверка срабатывает, если для какого-либо артикула из заказа поставщику не найдено соглашение о поставках, отвечающее следующим условиям:

- статус "Принят";
- поставщик совпадает с поставщиком из заказа;
- среди мест поставки есть место хранения заказа;
- в период действия контракта попадает дата заказа (или дата документа, если дата заказа не установлена);
- дата начала заказа артикула не установлена или не больше даты заказа (или даты документа, если дата заказа не установлена).

Смена статуса от "Черновик" до "Размещен"
(174) Контроль наличия действующего соглашения о поставках для заказа
174 Для артикула "019785" на дату заказа 24.05.2016 нет действующего соглашения о поставках
24.05.2016 19:47
denxz
 
+ еще если у должности отобрать права на создание заказа, но оставить права на формирование по контракту через Новый - заказ не создать (через экспорт тоже). по контракту все хорошо создается.
зы. да немножко неочевидный путь :)
26.05.2016 17:17
namesash
 
Цитата:
ReDHawK 174. Контроль наличия действующего соглашения о поставках для заказа
Проверка срабатывает, если для какого-либо артикула из заказа поставщику не найдено соглашение о поставках, отвечающее следующим условиям:

- статус "Принят";
- поставщик совпадает с поставщиком из заказа;
- среди мест поставки есть место хранения заказа;
- в период действия контракта попадает дата заказа (или дата документа, если дата заказа не установлена);
- дата начала заказа артикула не установлена или не больше даты заказа (или даты документа, если дата заказа не установлена).

Смена статуса от "Черновик" до "Размещен"
(174) Контроль наличия действующего соглашения о поставках для заказа
174 Для артикула "019785" на дату заказа 24.05.2016 нет действующего соглашения о поставках
так соглашение и контракт ЕСТЬ, но данная проверка отрабатывает встроенной процедурой см+, а вот при экспорте во внешнюю доверительную БД мы получим заказ без тега BASEID в секции SMCOMMONBASES
26.05.2016 17:20
namesash
 
Цитата:
denxz + еще если у должности отобрать права на создание заказа, но оставить права на формирование по контракту через Новый - заказ не создать (через экспорт тоже). по контракту все хорошо создается.
зы. да немножко неочевидный путь :)
вот не уверен, делал подобное для соглашения о поставке, в итоге на базе контракта не давал создавать, писал "создание запрещено".
26.05.2016 17:37
denxz
 
на тестовой базе для документа Заказ поставщику отключил право на создание нового - через Новый - запрет, через Контракт - документ создался.
26.05.2016 17:39
denxz
 
Цитата:
namesash так соглашение и контракт ЕСТЬ, но данная проверка отрабатывает встроенной процедурой см+, а вот при экспорте во внешнюю доверительную БД мы получим заказ без тега BASEID в секции SMCOMMONBASES
у меня есть что то подобное - административно такие заказы объявлены "неправильными" - и по ним никто ничего не отгружает.
27.05.2016 12:47
ReDHawK
 
Цитата:
namesash так соглашение и контракт ЕСТЬ, но данная проверка отрабатывает встроенной процедурой см+, а вот при экспорте во внешнюю доверительную БД мы получим заказ без тега BASEID в секции SMCOMMONBASES
Так в перовой мессаге
Цитата:
namesash Может есть у кого готовый триггер на проверку подставлено основание в заказе, или нет?

появилась необходимость запрещать поднимать до розового статуса, если нет основания в контракте, а такое происходит если заказ поставщику создан вручную, т.е. через "создать новый" не на базе контракта.
нужен тригер для запрета поднятия заказа до розового статуса, если в основании нет контракта (174 проверка - соглашения о поставке), при чем тут другая доверительная БД? Если подняли в этой БД до розового, где есть контракт и отправили в другую БД, значит заказ проверку прошел и по нему можно принимать. Если нужна проверка цены в контракте, то тут не обязательна привязка к контракту и так проверится в нем, если стоит галка "Контроль приходных цен по контрактам". Не пойму при чем тут BASEID в секции SMCOMMONBASES
31.05.2016 11:12
namesash
 
Цитата:
ReDHawK Так в перовой мессаге

нужен тригер для запрета поднятия заказа до розового статуса, если в основании нет контракта (174 проверка - соглашения о поставке), при чем тут другая доверительная БД? Если подняли в этой БД до розового, где есть контракт и отправили в другую БД, значит заказ проверку прошел и по нему можно принимать. Если нужна проверка цены в контракте, то тут не обязательна привязка к контракту и так проверится в нем, если стоит галка "Контроль приходных цен по контрактам". Не пойму при чем тут BASEID в секции SMCOMMONBASES
Ещё раз повторю, 174 проверка проверяет внутри СМ+. Что из того, что у меня есть соглашение и соответственно контракт, эта проверка пропускает приходную на основании заказа, который создан через "создать новый" без указания контракта. Если кто занимался стыковкой с БУ 1С, то наверняка знает, там договор, является обязательным как основание для приходной (поступление товаров и услуг), так вот при экспорте документа "приходная накладная" в формат xml теги остаются пустыми (это ответ на "Не пойму при чем тут BASEID в секции SMCOMMONBASES)
02.06.2016 09:44
ReDHawK
 
Ну а если в правах отобрать Создание и Импорт в этот тип, а оставить Формирование на базе контракта и По соглашениям, не подойдет?
02.06.2016 11:18
denxz
 
Цитата:
ReDHawK Ну а если в правах отобрать Создание и Импорт в этот тип, а оставить Формирование на базе контракта и По соглашениям, не подойдет?
я про это уже писал - говорит у него так не работает :)
и как бы в 1с можно без проблем найти нужный договор, если их несколько то придется установить какие то правила и им следовать.
09.06.2016 14:15
akonev
 
очень странно, что не работает. стандартное почти решение.

если вернуться к исходной задаче... по хорошему, надо делать не триггер на базу, а проверку в супермаге.

1) найти свободный номер проверки. мы начинали с 900, чтобы не пересекаться со штатными проверками. пусть для примера будет 955

2) создать
процедуру проверки:

Код:
CREATE OR REPLACE PROCEDURE CUS_INSP_OR_CHECK_CO(
                INDOCTYPE IN SMDOCUMENTS.DOCTYPE%TYPE
              , INDOCID IN SMDOCUMENTS.ID%TYPE
              , INOLDSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
              , INNEWSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
              , INDUMMY IN CORE.SMBOOL := NULL)
IS
-- KAI 09.06.2016 запрет размещения заказов поставщику, для которых в основании нет контракта
BEGIN
  INSPECT.Onstarttrans;

  insert into TTINSPECTRESBUFFER (INSPECTID, ERRID, INSPECTNAME, ERRTEXT)
  select 955, 0, '955', 'Запрещено размещать заказ поставщику '||INDOCID||' без контракта в основании заказа.'
    from smdocuments d
    where d.doctype = INDOCTYPE and d.id = INDOCID -- тип документа и номер нашего заказа мы получили как входные параметры
      and not exists (select 1 
                        from smcommonbases b
                        where b.doctype = d.doctype and b.id=d.id and b.basedoctype = 'CO'
                     )
  ;

INSPECT.SETFUNCNAME(955);
END CUS_INSP_OR_CHECK_CO;

3) задать наименование проверки и режим срабатывания по умолчанию

0 - отключена
1 - предупреждение
2 - запрет
3 - всегда запрет

Код:
insert into ssinspectfunc (id,name,definspectmode) 
values (955, 'Запрет размещения заказа поставщику без контракта в основании заказа', 2)
4) задать для каких документов и в какой момент должна срабатывать

Код:
-- включаем запрет для заказов ('OR') при смене статуса с "черновик" (1) на "размещен" (2)
insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
values('OR', 2, 1, 955, 'CUS_INSP_OR_CHECK_CO', 1)
12.07.2016 04:51
Elena
 
Цитата:
akonev очень странно, что не работает. стандартное почти решение.

если вернуться к исходной задаче... по хорошему, надо делать не триггер на базу, а проверку в супермаге.

1) найти свободный номер проверки. мы начинали с 900, чтобы не пересекаться со штатными проверками. пусть для примера будет 955

2) создать
процедуру проверки:

Код:
CREATE OR REPLACE PROCEDURE CUS_INSP_OR_CHECK_CO(
                INDOCTYPE IN SMDOCUMENTS.DOCTYPE%TYPE
              , INDOCID IN SMDOCUMENTS.ID%TYPE
              , INOLDSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
              , INNEWSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
              , INDUMMY IN CORE.SMBOOL := NULL)
IS
-- KAI 09.06.2016 запрет размещения заказов поставщику, для которых в основании нет контракта
BEGIN
  INSPECT.Onstarttrans;

  insert into TTINSPECTRESBUFFER (INSPECTID, ERRID, INSPECTNAME, ERRTEXT)
  select 955, 0, '955', 'Запрещено размещать заказ поставщику '||INDOCID||' без контракта в основании заказа.'
    from smdocuments d
    where d.doctype = INDOCTYPE and d.id = INDOCID -- тип документа и номер нашего заказа мы получили как входные параметры
      and not exists (select 1 
                        from smcommonbases b
                        where b.doctype = d.doctype and b.id=d.id and b.basedoctype = 'CO'
                     )
  ;

INSPECT.SETFUNCNAME(955);
END CUS_INSP_OR_CHECK_CO;

3) задать наименование проверки и режим срабатывания по умолчанию

0 - отключена
1 - предупреждение
2 - запрет
3 - всегда запрет

Код:
insert into ssinspectfunc (id,name,definspectmode) 
values (955, 'Запрет размещения заказа поставщику без контракта в основании заказа', 2)
4) задать для каких документов и в какой момент должна срабатывать

Код:
-- включаем запрет для заказов ('OR') при смене статуса с "черновик" (1) на "размещен" (2)
insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
values('OR', 2, 1, 955, 'CUS_INSP_OR_CHECK_CO', 1)
Спасибо, что открыли глаза на мир проверок.
Помогите пожалуйста есть задача переписать проверку 122.
Непонятно как найти/раскодировать текст проверки. нужно создать ее аналог, так чтобы она не срабатывала для документа Расходная накладная с типом операции "Списание брака".
Буду очень признательна.
Опции темы


Часовой пояс GMT +3, время: 14:42.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.