Процедура ОбработкаПроверкиЗаполнения |
Я |
22.09.16 — 14:38
Всем привет ситуация такая создал «Функциональные опции» «ИспользованиеСкладаВтабличнойЧастиДокумнета»
и когда скрываю склад при проведении выдаёт ошибку
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ПриходнаяНакладная.МодульОбъекта(76)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать(Истина);
по причине:
Запись не верна! Значение поля «Склад» не может быть пустым! (Регистр накопления: Товары на складах; Номер строки
Полскажите что делать?
1 — 22.09.16 — 14:41
и причем тут ОбработкаПроверкиЗаполнения?
2 — 22.09.16 — 14:43
заполнить склад!
3 — 22.09.16 — 14:45
(2) Склад скрыт, как его заполнить?
4 — 22.09.16 — 14:45
например, программно
5 — 22.09.16 — 14:48
(4) как?
6 — 22.09.16 — 14:49
(5) Запись.Склад = МойСклад;
7 — 22.09.16 — 14:55
(3) «Склад скрыт, как его заполнить?» // Осознание проблемы пришло?
8 — 22.09.16 — 14:57
(7) Склад скрыт через»Функциональные опции» но при проведении документа ошибка что склад не заполнен
9 — 22.09.16 — 14:58
(8) то, что скрыт — понятно. а вас спрашивают — он заполнен или нет?
10 — 22.09.16 — 14:59
(8) Какой вывод из этого делаешь?
11 — 22.09.16 — 15:00
(9) Нет не заполнен
12 — 22.09.16 — 15:11
(0)
…
<ПроверяемыеРеквизиты>
Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам
13 — 22.09.16 — 15:13
(11) о чем программа и сообщает. верно?
14 — 22.09.16 — 15:21
(13) Верно
15 — 22.09.16 — 15:22
(13) Он на такие «провокационные» вопросы не отвечает, см. (10)
16 — 22.09.16 — 15:24
(12)Мимо
17 — 22.09.16 — 15:26
(14) отсюда напрашивается простой вывод — реквизит надо заполнить. Сокрытие реквизита _в_документе_ не отменяет необходимость заполнения реквизита _в_регистре_
18 — 22.09.16 — 15:30
(17) Тогда как его заполнить
И в принципе зачем его заполнять если он не нужен
Нельзя его как-то удалить?
19 — 22.09.16 — 15:32
(16) А, ну да, у него регистр
20 — 22.09.16 — 15:33
(18) Ды грохни в конфигураторе, делов-то
21 — 22.09.16 — 15:37
(20)Научишь щас, он ведь правда грохнет
22 — 22.09.16 — 15:38
(18) заполнить — например, программно.
То, что «не нужен» — это вряд ли. Но если вы уверены в том, что он не нужен — удаляйтте из регистра, или, по крайней мере, снимите запрет незаполненых значений. Но тут уж сам себе злобный буратино…
23 — 22.09.16 — 15:38
(21) говорят, что правило «не давать обезьянам гранату» отменили…
24 — 22.09.16 — 15:40
Название регистра тока поменяй тогда:)
25 — 22.09.16 — 15:40
(22) Сказали сделать не удаляя и не снимая запрет, поэтому я и спрашиваю
26 — 22.09.16 — 15:45
Чувак, у тебя ФО называется «ИспользованиеСкладаВТабличнойЧасти» а не «НеИспользоватьСкладВобще». Кроме табличной части у документа есть еще и шапка.
27 — 22.09.16 — 15:47
(26) Какая разница какое название?
28 — 22.09.16 — 15:50
(27)Перелогинься, седня еще не пятница
29 — 22.09.16 — 15:52
(28) ?
30 — 22.09.16 — 15:55
(28) «Мизда. пятница каждый день»©
31 — 22.09.16 — 16:22
поле Склад регистра Товары на складах включен в состав функциональной опции?
32 — 22.09.16 — 18:04
(31) Да
33 — 23.09.16 — 15:53
Ребята как сделать что если функциональная опция отключена удалить реквизит склад?
34 — 23.09.16 — 16:00
перед записью документа, если опция включена, то проставлять склад в тч из шапки
35 — 23.09.16 — 16:05
(0) пятнично.. включай опцию, заполняй склад в документе, потом выключай. и склад заполнен, и виден не будет
36 — 23.09.16 — 16:07
(35) как я сам не догадался
37 — 23.09.16 — 17:14
(33) Сколько платят за решение вопроса?
38 — 26.09.16 — 09:07
(37) в каком смысле сколько платят?
39 — 26.09.16 — 09:12
(38) По вашему, этот вопрос может иметь несколько смысловых значений?
40 — 26.09.16 — 09:16
(39) по моему 2 смысла
сколько мне плотят за это или сколько я плачу
41 — 26.09.16 — 09:18
(39) ответы на вопрос: Пьете ли вы водку на Новый год?
— Не понял вопроса… — 13%
— В каком смысле? — 18%
— Обычную водку? — 23%
— Как понять «пьете водку»? — 22%
— Все вышеперечисленное — 24%
©
42 — 26.09.16 — 09:19
(40) вообще-то это два разных слова. Плот и плакать.
43 — 26.09.16 — 09:22
(42) Маркс и Энгельс — это два разных человека. а Слава КПСС — вообще не человек, а лозунг
44 — 26.09.16 — 09:37
(41) А где вариант «Единая Россия» — 46% ?
45 — 26.09.16 — 09:47
(40) ладно, бесплатный совет. Щелкаешь по полю номенклатура, и перевыбираешь ее. Потом радуешься.
46 — 26.09.16 — 17:35
(40) Правильно. Мы же не знаем, исполнитель ли ты или конечный заказчик.
Если ты — исполнитель, то поделись, сколько тебе платят за решение этого вопроса.
Ну а если ты заказчик, то тут и так понятно (сколько предлагаешь типа).
47 — 26.09.16 — 17:48
(46) я исполнитель но мне платят не за заказ у меня месячный оклад
и подкинули вот такое левое задание
48 — 26.09.16 — 17:53
(47) Почему «левое»? У тебя должность там не «программист 1С» что ли?
49 — 26.09.16 — 17:53
(48) стажёр 1С
50 — 26.09.16 — 18:28
Какая конфа то?
51 — 27.09.16 — 08:46
(50) дали какую-то самописную конфу
52 — 27.09.16 — 08:59
(51) ты ведь заметил, что ошибка у тебя в регистре ТоварыНаСкладах? А ты нам про табличную часть документа талдычишь. Причем тут табличная часть?
53 — 27.09.16 — 09:03
(52) да как бы ни причём
54 — 27.09.16 — 09:20
(53) ты забыл заполнить поле склад в регистре. В этом ошибка. А то что там скрыто и не скрыто в табличной части, какая разница, зачем нам это?
55 — 27.09.16 — 09:24
(53) и там таких регистров штук 20. И в каждом есть склад. Это тебе сегодня на целый день работенка движения регистров переписывать. Так что ты не тормози, соберись и в темпе, чтобы успеть.
56 — 27.09.16 — 09:58
Скажите как получить значение Ф.О?
57 — 27.09.16 — 15:15
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ИспользованиеСклада = ПолучитьФункциональнуюОпцию(«ИспользованиеСклада»);
ИспользованиеСклада = ПроверяемыеРеквизиты.Найти(«Склад»);
Если Не ИспользованиеСклада (ложь) Тогда
Массив = Новый Массив;
Массив.Добавить(«Склад»);
Индекс = Массив.Найти(«Склад»);
Массив.Удалить(Индекс);
Массив.Очистить()
КонецЕсли;
КонецПроцедуры
в чёи ошибка? Что ещё нужно дописать сюда?
58 — 27.09.16 — 15:16
простите
В чём ошибка?*
59 — 27.09.16 — 15:22
(58) «в ДНК!»©
60 — 27.09.16 — 15:34
(59) Leck mich am Arsch
61 — 27.09.16 — 15:43
(60)
62 — 27.09.16 — 15:50
(57) можно Рамзану Кадырову в твиттер написать. Он решит эту проблему.
63 — 27.09.16 — 15:58
Слушай, ну ты же явный гуманитарий, если за 5 дней так и не смог решить задачу. Ну нахрен тебе это программирование? Не мучай свое естество.
64 — 27.09.16 — 16:05
(63) Какая тебе нахрен разница что мне нужно? я же не говорю тебе что делать
65 — 27.09.16 — 16:45
(57) «ИспользованиеСклада = ПроверяемыеРеквизиты.Найти(«Склад»);
Массив = Новый Массив;
Массив.Добавить(«Склад»); » это всё удалить надо
66 — 27.09.16 — 16:50
Народ а есть здесь функция редактирования отправленного сообщения?
67 — 27.09.16 — 16:53
(66) Нет. Пиши так, чтобы не было стыдно
68 — 27.09.16 — 16:55
(67) спасибо, буду знать на будущее)
69 — 27.09.16 — 16:58
(67) А что за дебаты здесь происходят?
«Sv4org» хочет что-бы ему помогли,но никак не может вкурить что делать, я правильно понимаю?
70 — 27.09.16 — 17:01
(64) ты разницу понимаешь между документом и регистром? в (57) у тебя проверка документа, а в (0) ошибка в регистре.
71 — 27.09.16 — 17:03
(70) в (57) этот код написан в модуле набора записей регистра
hhhh
72 — 27.09.16 — 19:48
(71) в (57) полностью бред написан. Просто какой-то набор букв.
Процедура ОбработкаПроверкиЗаполнения |
Я |
Sv4org
22.09.16 — 14:38
Всем привет ситуация такая создал «Функциональные опции» «ИспользованиеСкладаВтабличнойЧастиДокумнета»
и когда скрываю склад при проведении выдаёт ошибку
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ПриходнаяНакладная.МодульОбъекта(76)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать(Истина);
по причине:
Запись не верна! Значение поля «Склад» не может быть пустым! (Регистр накопления: Товары на складах; Номер строки
Полскажите что делать?
DrShad
1 — 22.09.16 — 14:41
и причем тут ОбработкаПроверкиЗаполнения?
В тылу врага
2 — 22.09.16 — 14:43
заполнить склад!
Sv4org
3 — 22.09.16 — 14:45
(2) Склад скрыт, как его заполнить?
DrShad
4 — 22.09.16 — 14:45
например, программно
Sv4org
5 — 22.09.16 — 14:48
(4) как?
Mankubus
6 — 22.09.16 — 14:49
(5) Запись.Склад = МойСклад;
Cyberhawk
7 — 22.09.16 — 14:55
(3) «Склад скрыт, как его заполнить?» // Осознание проблемы пришло?
Sv4org
8 — 22.09.16 — 14:57
(7) Склад скрыт через»Функциональные опции» но при проведении документа ошибка что склад не заполнен
Это_mike
9 — 22.09.16 — 14:58
(8) то, что скрыт — понятно. а вас спрашивают — он заполнен или нет?
Cyberhawk
10 — 22.09.16 — 14:59
(8) Какой вывод из этого делаешь?
Sv4org
11 — 22.09.16 — 15:00
(9) Нет не заполнен
Mauser
12 — 22.09.16 — 15:11
(0)
…
<ПроверяемыеРеквизиты>
Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам
Это_mike
13 — 22.09.16 — 15:13
(11) о чем программа и сообщает. верно?
Sv4org
14 — 22.09.16 — 15:21
(13) Верно
Cyberhawk
15 — 22.09.16 — 15:22
(13) Он на такие «провокационные» вопросы не отвечает, см. (10)
aleks_default
16 — 22.09.16 — 15:24
(12)Мимо
Это_mike
17 — 22.09.16 — 15:26
(14) отсюда напрашивается простой вывод — реквизит надо заполнить. Сокрытие реквизита _в_документе_ не отменяет необходимость заполнения реквизита _в_регистре_
Sv4org
18 — 22.09.16 — 15:30
(17) Тогда как его заполнить
И в принципе зачем его заполнять если он не нужен
Нельзя его как-то удалить?
Mauser
19 — 22.09.16 — 15:32
(16) А, ну да, у него регистр
Mauser
20 — 22.09.16 — 15:33
(18) Ды грохни в конфигураторе, делов-то
aleks_default
21 — 22.09.16 — 15:37
(20)Научишь щас, он ведь правда грохнет
Это_mike
22 — 22.09.16 — 15:38
(18) заполнить — например, программно.
То, что «не нужен» — это вряд ли. Но если вы уверены в том, что он не нужен — удаляйтте из регистра, или, по крайней мере, снимите запрет незаполненых значений. Но тут уж сам себе злобный буратино…
Это_mike
23 — 22.09.16 — 15:38
(21) говорят, что правило «не давать обезьянам гранату» отменили…
aleks_default
24 — 22.09.16 — 15:40
Название регистра тока поменяй тогда:)
Sv4org
25 — 22.09.16 — 15:40
(22) Сказали сделать не удаляя и не снимая запрет, поэтому я и спрашиваю
aleks_default
26 — 22.09.16 — 15:45
Чувак, у тебя ФО называется «ИспользованиеСкладаВТабличнойЧасти» а не «НеИспользоватьСкладВобще». Кроме табличной части у документа есть еще и шапка.
Sv4org
27 — 22.09.16 — 15:47
(26) Какая разница какое название?
aleks_default
28 — 22.09.16 — 15:50
(27)Перелогинься, седня еще не пятница
Sv4org
29 — 22.09.16 — 15:52
(28) ?
Это_mike
30 — 22.09.16 — 15:55
(28) «Мизда. пятница каждый день»©
fimanich
31 — 22.09.16 — 16:22
поле Склад регистра Товары на складах включен в состав функциональной опции?
Sv4org
32 — 22.09.16 — 18:04
(31) Да
Sv4org
33 — 23.09.16 — 15:53
Ребята как сделать что если функциональная опция отключена удалить реквизит склад?
kaliliga
34 — 23.09.16 — 16:00
перед записью документа, если опция включена, то проставлять склад в тч из шапки
Lamer1C
35 — 23.09.16 — 16:05
(0) пятнично.. включай опцию, заполняй склад в документе, потом выключай. и склад заполнен, и виден не будет
Sv4org
36 — 23.09.16 — 16:07
(35) как я сам не догадался
Cyberhawk
37 — 23.09.16 — 17:14
(33) Сколько платят за решение вопроса?
Sv4org
38 — 26.09.16 — 09:07
(37) в каком смысле сколько платят?
mehfk
39 — 26.09.16 — 09:12
(38) По вашему, этот вопрос может иметь несколько смысловых значений?
Sv4org
40 — 26.09.16 — 09:16
(39) по моему 2 смысла
сколько мне плотят за это или сколько я плачу
Это_mike
41 — 26.09.16 — 09:18
(39) ответы на вопрос: Пьете ли вы водку на Новый год?
— Не понял вопроса… — 13%
— В каком смысле? — 18%
— Обычную водку? — 23%
— Как понять «пьете водку»? — 22%
— Все вышеперечисленное — 24%
©
hhhh
42 — 26.09.16 — 09:19
(40) вообще-то это два разных слова. Плот и плакать.
Это_mike
43 — 26.09.16 — 09:22
(42) Маркс и Энгельс — это два разных человека. а Слава КПСС — вообще не человек, а лозунг
mehfk
44 — 26.09.16 — 09:37
(41) А где вариант «Единая Россия» — 46% ?
hhhh
45 — 26.09.16 — 09:47
(40) ладно, бесплатный совет. Щелкаешь по полю номенклатура, и перевыбираешь ее. Потом радуешься.
Cyberhawk
46 — 26.09.16 — 17:35
(40) Правильно. Мы же не знаем, исполнитель ли ты или конечный заказчик.
Если ты — исполнитель, то поделись, сколько тебе платят за решение этого вопроса.
Ну а если ты заказчик, то тут и так понятно (сколько предлагаешь типа).
Sv4org
47 — 26.09.16 — 17:48
(46) я исполнитель но мне платят не за заказ у меня месячный оклад
и подкинули вот такое левое задание
Cyberhawk
48 — 26.09.16 — 17:53
(47) Почему «левое»? У тебя должность там не «программист 1С» что ли?
Sv4org
49 — 26.09.16 — 17:53
(48) стажёр 1С
zigomodo
50 — 26.09.16 — 18:28
Какая конфа то?
Sv4org
51 — 27.09.16 — 08:46
(50) дали какую-то самописную конфу
hhhh
52 — 27.09.16 — 08:59
(51) ты ведь заметил, что ошибка у тебя в регистре ТоварыНаСкладах? А ты нам про табличную часть документа талдычишь. Причем тут табличная часть?
Sv4org
53 — 27.09.16 — 09:03
(52) да как бы ни причём
hhhh
54 — 27.09.16 — 09:20
(53) ты забыл заполнить поле склад в регистре. В этом ошибка. А то что там скрыто и не скрыто в табличной части, какая разница, зачем нам это?
hhhh
55 — 27.09.16 — 09:24
(53) и там таких регистров штук 20. И в каждом есть склад. Это тебе сегодня на целый день работенка движения регистров переписывать. Так что ты не тормози, соберись и в темпе, чтобы успеть.
Sv4org
56 — 27.09.16 — 09:58
Скажите как получить значение Ф.О?
Sv4org
57 — 27.09.16 — 15:15
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ИспользованиеСклада = ПолучитьФункциональнуюОпцию(«ИспользованиеСклада»);
ИспользованиеСклада = ПроверяемыеРеквизиты.Найти(«Склад»);
Если Не ИспользованиеСклада (ложь) Тогда
Массив = Новый Массив;
Массив.Добавить(«Склад»);
Индекс = Массив.Найти(«Склад»);
Массив.Удалить(Индекс);
Массив.Очистить()
КонецЕсли;
КонецПроцедуры
в чёи ошибка? Что ещё нужно дописать сюда?
Sv4org
58 — 27.09.16 — 15:16
Это_mike
59 — 27.09.16 — 15:22
(58) «в ДНК!»©
Sv4org
60 — 27.09.16 — 15:34
(59) Leck mich am Arsch
eric
61 — 27.09.16 — 15:43
(60)
craxx
62 — 27.09.16 — 15:50
(57) можно Рамзану Кадырову в твиттер написать. Он решит эту проблему.
aleks_default
63 — 27.09.16 — 15:58
Слушай, ну ты же явный гуманитарий, если за 5 дней так и не смог решить задачу. Ну нахрен тебе это программирование? Не мучай свое естество.
Sv4org
64 — 27.09.16 — 16:05
(63) Какая тебе нахрен разница что мне нужно? я же не говорю тебе что делать
Deutschland
65 — 27.09.16 — 16:45
(57) «ИспользованиеСклада = ПроверяемыеРеквизиты.Найти(«Склад»);
Массив = Новый Массив;
Массив.Добавить(«Склад»); » это всё удалить надо
Deutschland
66 — 27.09.16 — 16:50
Народ а есть здесь функция редактирования отправленного сообщения?
Mauser
67 — 27.09.16 — 16:53
(66) Нет. Пиши так, чтобы не было стыдно
Deutschland
68 — 27.09.16 — 16:55
(67) спасибо, буду знать на будущее)
Deutschland
69 — 27.09.16 — 16:58
(67) А что за дебаты здесь происходят?
«Sv4org» хочет что-бы ему помогли,но никак не может вкурить что делать, я правильно понимаю?
hhhh
70 — 27.09.16 — 17:01
(64) ты разницу понимаешь между документом и регистром? в (57) у тебя проверка документа, а в (0) ошибка в регистре.
Sv4org
71 — 27.09.16 — 17:03
(70) в (57) этот код написан в модуле набора записей регистра
hhhh
72 — 27.09.16 — 19:48
(71) в (57) полностью бред написан. Просто какой-то набор букв.
Обработка проверки заполнения
Автор tasya, 27 июл 2021, 22:42
0 Пользователей и 1 гость просматривают эту тему.
Добрый день! Подскажите как из модуля формы передать данные в модуль объекта именно в процедуру ОбработкаПроверкиЗаполнения()? Через дополнительные свойства не получается, так как они заполняются в процедуре ПередЗаписьюНаСервере(), а она вызывается после ОбрабткаПроверкиЗаполнения.
Цитата: tasya от 27 июл 2021, 22:42Добрый день! Подскажите как из модуля формы передать данные в модуль объекта именно в процедуру ОбработкаПроверкиЗаполнения()? Через дополнительные свойства не получается, так как они заполняются в процедуре ПередЗаписьюНаСервере(), а она вызывается после ОбрабткаПроверкиЗаполнения.
а какие данные хотите передавать? какая задача стоит?
механизм примерно следующий
1.у реквизитов объекта (см. конфигуратор) есть свойство: Проверка Заполнения, режимы Выдавать ошибку или Не проверять
для важных реквизитов указано: Выдавать ошибку
2.при выполнении операции Записи или Проведения из формы (см.настройки формы)
вызывается процедура проверки
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
ПроверяемыеРеквизиты — «Массив путей к реквизитам…» см.СП
вот этом массиве как раз все Реквизиты из п.1 у которых выбрано Проверка Заполнения: Выдавать ошибку
3.в этой процедуре вы можете изменить этот массив, Добавить или Удалить из него элементы
либо сразу установить Отказ = Истина, тогда процедура Записи или Проведения будет прервана
так как процедура ОбработкаПроверкиЗаполнения() расположена в модуле Объекта,
то вам сразу, просто по именам, доступны ВСЕ реквизиты, ничего дополнительно в процедуру передавать не надо.
если помогло нажмите: Спасибо!
Цитата: Ивашка от 27 июл 2021, 23:04
Цитата: tasya от 27 июл 2021, 22:42Добрый день! Подскажите как из модуля формы передать данные в модуль объекта именно в процедуру ОбработкаПроверкиЗаполнения()? Через дополнительные свойства не получается, так как они заполняются в процедуре ПередЗаписьюНаСервере(), а она вызывается после ОбрабткаПроверкиЗаполнения.
а какие данные хотите передавать? какая задача стоит?
Есть программно добавленная табличная часть, вот нужно в обработке проверки заполнения проверить поля на заполнение
Цитата: LexaK от 28 июл 2021, 10:52механизм примерно следующий
1.у реквизитов объекта (см. конфигуратор) есть свойство: Проверка Заполнения, режимы Выдавать ошибку или Не проверять
для важных реквизитов указано: Выдавать ошибку2.при выполнении операции Записи или Проведения из формы (см.настройки формы)
вызывается процедура проверки
ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
ПроверяемыеРеквизиты — «Массив путей к реквизитам…» см.СП
вот этом массиве как раз все Реквизиты из п.1 у которых выбрано Проверка Заполнения: Выдавать ошибку3.в этой процедуре вы можете изменить этот массив, Добавить или Удалить из него элементы
либо сразу установить Отказ = Истина, тогда процедура Записи или Проведения будет прервана
так как процедура ОбработкаПроверкиЗаполнения() расположена в модуле Объекта,
то вам сразу, просто по именам, доступны ВСЕ реквизиты, ничего дополнительно в процедуру передавать не надо.
На форме есть программно добавленная табличная часть. Вот ее и нужно проверить на заполнение в процедуре обработка проверки заполнения
tasya, это прямо на форме создать процедуру/функцию
ПроверитьДобавленнуюТабличнуюЧасть(Отказ);
вызвать ее в процедуре формы ПередЗаписью(…)
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ПроверитьДобавленнуюТабличнуюЧасть(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДобавленнуюТабличнуюЧасть(Отказ)
Для каждого лкСтр Из ВашаДобавленнаяТаблица Цикл
Для каждого лкКол Из ВашаДобавленнаяТаблица.Колонки Цикл
Если Не ЗначениеЗаполнено(лкСтр[лкКол.Имя]) Тогда //или свое условие проверки
Сообщить(«Незаполнено значение в колонке: » + лкКол.Имя); //добавить строку в какой
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
если что-то не заполнено, будет сообщение, документ не запишется.
если помогло нажмите: Спасибо!
Самый простой способ это создать свою Функцию, вот код:
&НаСервере
Функция ПроверкаЗаполнения()
ТД=РеквизитФормыВЗначение(«Объект»);
ТД.ДополнительныеСвойства.Вставить(«РаспределениеЗатрат»,Ложь);
Возврат ТД.ПроверитьЗаполнение();
КонецФункции // ПроверкаЗаполнения()
&НаКлиенте
Функция РаспределениеЗатратФрагмент()
Если ПроверкаЗаполнения()=Ложь Тогда //Имя нашей функции
Возврат Ложь;
КонецЕсли;
КонецФункции // РаспределениеЗатратФрагмент()
В этом случае дополнительные свойства будут заполнены в модуле объекта, дальше всё просто
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
Если ДополнительныеСвойства.Свойство(«РаспределениеЗатрат»)
И ДополнительныеСвойства.РаспределениеЗатрат=Ложь Тогда
МассивНепроверяемыхРеквизитов.Добавить(«РаспределениеЗатрат»);
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
КонецПроцедуры //ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Ответ на вопрос — бесплатно!
Ответ на дурацкий вопрос — 5$
Ответ на дурацкий вопрос с обдумыванием — 100$
Добрый День !Помогите с проблемой! Ошибка при выполнении обработчика — ‘ОбработкаПроверкиЗаполнения’ по причине: {Справочник.Контрагенты.МодульОбъекта}: Преобразование значения к типу Булево не может быть выполнено Если ПлательщикНДС Тогда
Я только вчера установил эту программу и не сильно знаю куда надо нажимать)
нажимай на телефон и вызывай специалиста
так и регистрироваться вчера надо было ну что же ты так?…
как-то много сегодня пятничных веток.
по делу. Давайте поиграем в эльдарского фарсира. Раньше все работало хорошо? Или первый же контрагент, что попытались ввести сразу же роняет систему? Конфигруация типовая? Вы не пробовали ее «поизучать» и что-нибудь поменять?
помогаем с проблемой. пиши «Если ПлательщикНДС=0 Тогда» это уже будет преобразование к числу, а числа, надеюсь, ты уже освоил
у него ПлательщикНДС не определен может быть. Ошибка останется
угу. Сразу пишем «Если Истина Тогда»
А потом еще страницу объясняем где писать и что нужно сделать, чтобы он начал писать.
зачем лишние условие? Просто закомментить
тогда КонецЕсли еще надо комментить. А его еще найти надо.
нельзя просто так взять и подсказать… Если ПлательщикНДС=Истина
НАпример затем чтобы у читающего закомментированный внизу «КонецЕсли» было меньше усилий чтобы найти его начало
Иначе Если ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан ИНН’»), ЭтотОбъект, «ИННПлательщикаНДС», , Отказ
а чем это отличается от исходного варианта?
а, ну теперь все сразу стало понятно
Тем, что работает независимо от того, что находится в переменной. Всегда ваш, К.О.
Получается когда создаю группу для контрагента а сам онтр агент создается! Нет ничего не менял создал организацию магазин
тыкаю пальцем в небо. Попробуй задать ИНН у контрагента.
не свалится надо придумать какого-то робота, который будет парсить ветки, и, если ответ дан в самом начале, а в ветке больше 100 постов — переносить сразу в пятницу
Главное, держи интригу, и ни в коем случаем не разглашай, что за конфигурация у тебя.
я боюсь, тут решения в самом начале не будет. Все-таки багаж знаний у автора сейчас немного не того объема. Опыта маловато.
1С:Предприятие 8.2 (8.2.18.109) «Розница для Украины», редакция 2.0. Разработка конфигурации: «ABBYY Ukraine», 2013 (2.0.1.5)
а ты не в курсе, кто-нибудь вступал в тесный контакт с ней посредством конфигуратора?
Вот в этой строке все правильно написан? сли ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан ИНН’»), ЭтотОбъект, «ИННПлательщикаНДС»,
возможность изменений включена в конфе?
Всё зависит от того, какой тип получается у переменной ПлательщикНДС. Если булево — тогда правильно, если другой — то неправильно.
смахивает на живительную инъекцию г-кода. только с чьей стороны?
+ если быть более точным, там есть слева от желтого квадратика замочек или нету?
Точней вот как полностью выглядит ! Иначе Если ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан ИНН’»), ЭтотОбъект, «ИННПлательщикаНДС», , Отказ ); КонецЕсли; Конецесли; Редактирование в конф. было отключено я его включил!
Раз было отключено, то скорее всего это косяк разработчика. Если не планируешь обновлять конфу, можешь исправить.
конфигуратор открой, посмотри там слева такая панелька, там замочек есть рядом с желтым квадратом, или как в ? или вообще квадратика нет?
а что бывало в той строке до твоего включения?
попробуй модифицировать «Если ПлательщикНДС Тогда» На » Если НЕ ЭтоГруппа И ПлательщикНДС Тогда» как в предложили. А вообще, после того как ты включил возможность изменения, ты что-то добавлял?
раз было отключено, можешь звонить туда, где купил, и на них наехать. имеешь полное право. хоть от этого работать и не начнет)
будем сравнивать с конфигурацией поставщика? а то до сотки не дотянем
если только 1С не поставила своей целью загубить экономику Украины такими радикальными релизами, то дело пахнет излишним любопытством и не очень прямыми руками.
Я еще ничего не редактировал ! Просто скопировал и вставил сюда в сообщения! Да замочек есть
а редактирование как включил?
разработчик же некий эбби, мы не при делах
Изменил как написали Если НЕ ЭтоГруппа И ПлательщикНДС Тогда После этого следующая ошибка с другим модулем объекта! Ошибка при выполнении обработчика — ‘ОбработкаПроверкиЗаполнения’ по причине: {Справочник.Контрагенты.МодульОбъекта}: Преобразование значения к типу Булево не может быть выполнено Если ПлательщикНДС Тогда Вот что в редакторе Если ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан номер свидетельства плательщика НДС’»), ЭтотОбъект, «НомерСвидетельстваПлательщикаНДС», , Отказ ); КонецЕсли; Конецесли;
в российской спокойно отрабатывает Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо ИЛИ ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент Тогда ЮрФизЛицо только для элемента
+ кто первый сказал Если ПлательщикНДС=Истина Тогда?
надо все равно искать что за ПлательщикНДС и почему он не булево. Чуйка говорит, что там еще не одно получаение его всплывает.
Установил «Розница для Украины», редакция 2.0. только демо В ней Группы созданы ! а когда сам создаю та же ошибка
не дошло ещё? Если ПлательщикНДС=Истина Тогда Если ПлательщикНДС=Истина Тогда Если ПлательщикНДС=Истина Тогда Если ПлательщикНДС=Истина Тогда
В общем заработало! Прописал такую же строку в следующей ошибке Если ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан номер свидетельства плательщика НДС’»), ЭтотОбъект, «НомерСвидетельстваПлательщикаНДС», , Отказ ); КонецЕсли; Конецесли; изменил на Если НЕ ЭтоГруппа И ПлательщикНДС Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр(«ru = ‘Не указан номер свидетельства плательщика НДС’»), ЭтотОбъект, «НомерСвидетельстваПлательщикаНДС», , Отказ ); КонецЕсли; Конецесли;
так ты нет так написал Если ПлательщикНДС=Истина Тогда а я написал Если НЕ ЭтоГруппа И ПлательщикНДС Тогда
всё правильно, благодарности мы не заслужили
Нет заслужили ! Всем огромное спасибо !
а как он с чето там пишет вообще. никому не интересно?)
Тэги: Математика и алгоритмы
Комментарии доступны только авторизированным пользователям
Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта. Для этого нужно воспользоваться свойством ПроверкаЗаполнения
, которое есть у реквизитов объектов конфигурации.
Если установить это свойство в значение «Выдавать ошибку», поле Поставщик
в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.
Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:
- Одно событие —
ОбработкаПроверкиЗаполненияНаСервере
— можно обработать в модуле формы. - Другое событие —
ОбработкаПроверкиЗаполнения
— можно обработать в модуле прикладного объекта.
У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:
Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере
предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.
Напротив, событие объекта ОбработкаПроверкиЗаполнения
предназначено для для того, чтобы проверить реквизиты основного реквизита формы.
Обработчики обеих событий имеют параметр ПроверяемыеРеквизиты
, в который платформа передает массив имен тех реквизитов, которые подлежат проверке. Если после выхода из обработчика в этом массиве все еще останутся какие-то имена реквизитов — платформа выполнит автоматическую проверку оставшися реквизитов.
Поэтому существует несколько сценариев того, как разработчик может встроить свой алгоритм в механизм проверки заполнения:
- самостоятельно проверить заполненность всех реквизитов и очистить массив
ПроверяемыеРеквизиты
, чтобы платформа не выполняла их проверку - проверить часть реквизитов самостоятельно, удалить их из массива
ПроверяемыеРеквизиты
, а оставшиеся оставить на проверку платформе - добавить в массив
ПроверяемыеРеквизиты
какие-то реквизиты, чтобы платформа проверила и их тоже - вообще отказаться от проверки заполненности реквизитов, очистив массив
Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; // Проверка остальных реквизитов // .......... // Очистить массив проверяемых реквизитов, чтобы платформа // не выполняла их автоматическую проверку ПроверяемыеРеквизиты.Очистить();
Чтобы проверить лишь часть реквизитов, можно выполнить такой код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; // Удалить поставщика из массива проверяемых реквизитов ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Поставщик"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли; КонецЕсли;
Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:
ПроверяемыеРеквизиты.Добавить("Комментарий");
А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:
ПроверяемыеРеквизиты.Очистить();
Вторым параметром в обработчиках этих событий является параметр Отказ
. Если ему присвоить значение Истина
, то после выхода из обработчика дальнейшая запись объекта будет отменена. Таким образом этот параметр нужно устанавливать в значение Истина
тогда, когда ваш алгоритм приходит к выводу, что реквизит не заполнен. В этом случае запись объекта выполнена не будет.
Справка
ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись выполнена не будет. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение()
. Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически
. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения()
модуля объекта.
Позволяет разработчику самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Для формы документа, если при конфигурировании для документа свойство Проведение
установлено в Разрешить
, событие вызывается только при проведении. Если документ не проводится (свойство Проведение
установлено в Запретить
), то вызывается при записи.
ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение()
. Если для документа при конфигурировании свойство Проведение
установлено в Разрешить
, то вызывается только при проведении. Если документ не проводится (установлено Запретить
), то вызывается при записи.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита «Покупатель» Покупатель = ПроверяемыеРеквизиты.Найти("Покупатель"); Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель» ПроверяемыеРеквизиты.Удалить(Покупатель); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары» ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар")); // Обходим строки и проверяем заполнение реквизита Для Индекс = 0 По Товары.Количество()-1 Цикл СтрокаТовар = Товары.Получить(Индекс); Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара"; Сообщение.Поле = "Товары[" + Индекс + "].Товар"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Поиск:
1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма
sokol566535 0 / 0 / 0 Регистрация: 09.01.2017 Сообщений: 30 |
||||
1 |
||||
Ошибка в обработке удаление проведения.18.05.2017, 18:52. Показов 3476. Ответов 4 Метки нет (Все метки)
Подскажите как быть , провожу отмену проведения, конфигурация не снимает проведение, выдает ошибку как перед повторной записью. Что поменять в обработке удаления проведения?
__________________ 0 |
841 / 604 / 211 Регистрация: 24.07.2013 Сообщений: 2,101 |
|
18.05.2017, 18:58 |
2 |
sokol566535, Очистить содержимое обоих обработчиков. 0 |
0 / 0 / 0 Регистрация: 09.01.2017 Сообщений: 30 |
|
18.05.2017, 19:00 [ТС] |
3 |
а как быть если мне нужно перед записью убедиться что документ не проведен , если проведен программа должна сообщать что «заказ уже оформлен» 0 |
1789 / 1213 / 438 Регистрация: 16.01.2015 Сообщений: 5,349 |
|
18.05.2017, 19:05 |
4 |
Сообщение было отмечено sokol566535 как решение Решение
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Как вариант — переместить в ОбработкаПроверкиЗаполнения, проверяется только при проведении, при распроведении игнорируется 1 |
0 / 0 / 0 Регистрация: 09.01.2017 Сообщений: 30 |
|
18.05.2017, 19:19 [ТС] |
5 |
спасибо все работает!!))) 0 |
Всем привет ситуация такая создал «Функциональные опции» «ИспользованиеСкладаВтабличнойЧасти» и когда скрываю склад при проведении выдаёт ошибку
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’ по причине: {Документ.ПриходнаяНакладная.МодульОбъекта(76)}: Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать(Истина); по причине: Запись не верна! Значение поля «Склад» не может быть пустым! (Регистр накопления: Товары на складах; Номер строки
Знаю что надо где-то рыть в «Процедура ОбработкаПроверкиЗаполнения»
Вот написал часть кода а что дальше делать не пойму
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Склад = ПроверяемыеРеквизиты.Найти(«Склад»);
Если Не ЗначениеЗаполнено(Справочники.Склады) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = «Не указан Склад!»;
Сообщение.Поле = «Покупатель»;
Сообщение.УстановитьДанные(ЭтотОбъект);
ПроверяемыеРеквизиты.Удалить(Склад);
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти(«Ссылк.Товар»));
Яещё новичок подскажите что делать? Заренее спаисбо!
Почему не отрабатывает код при повторном проведении
Автор Nosferatu112, 19 янв 2023, 14:04
0 Пользователей и 1 гость просматривают эту тему.
В общем какая проблема, с Документом Реализации проблем нет он отрабатывает всегда как должен но с документом возврата какая то фигня при создании и проведении документа всё работает как надо но стоит закрыть документ потом открыть и перепровести он всегда даёт ошибку независимо от того какая там организация результат при повторном проведении равен NULL
&НаСервере
Функция СовпадениеОрганизации(Организация, Ссылка) Экспорт
Если ТипЗнч(Ссылка) = Тип(«ДокументСсылка.РеализацияТоваровУслуг») Тогда
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, «ЗаказКлиента.Организация»);
Если Организация <> Результат Тогда
Отказ = Истина;
ВызватьИсключение «Организация в документе проведения не соответствует организации документа заказ клиента (Отказ проведения)»;
КонецЕсли;
ИначеЕсли ТипЗнч(Ссылка) = Тип(«ДокументСсылка.ВозвратТоваровОтКлиента») Тогда
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, «ДокументРеализации.Организация»);
Если Организация <> Результат Тогда
Отказ = Истина;
ВызватьИсключение «Организация в документе проведения не соответствует организации документа реализация товаров и услуг(Отказ Проведения)»;
КонецЕсли;
КонецЕсли;
КонецФункции
Это вызов функции в документах
&Перед(«ОбработкаПроверкиЗаполнения»)
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Расш1_ОбщегоНазначения.СовпадениеОрганизации(Организация, Ссылка);
КонецПроцедуры
И ещё напишите кто нибудь как код закидывать сюда как код а не как текст
Nosferatu112, проверьте результат который возвращает эта строка
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ДокументРеализации.Организация");
есть подозрение что ДокументРеализации — не заполнен. Поэтому ошибка и возникает
что бы вставить код, здесь на окне нажмите кнопку с картинкой 1С
появится «
» между скобками «] … [» вставляете код
- 1 пользователь сказал спасибо!
если помогло нажмите: Спасибо!
а случайно нигде не затирается Организация при открытии НЕ НОВОГО документа?
Надо глянуть, в функции какие значения у Результата и Организации, просто тыкнуть точку останова и посмотреть.
Максим75, У организации значение выбраное в проводимом документе а у Результата NULL
Я просто не могу понять почему 1я часть кода спокойно выполняеться а вторая косячит
LexaK, ДокументВозврата создаёться на основании реализации а реализация на основании заказа клиента при создании проведении и повторном проведении Реализации всё отрабатывает как надо а вот при создании и проведении Возврата всё ок но стоит закрыть документ и открыть опять он выдаёт ошибку не зависимо от того какая указана организация эта строчка выдаёт при создании организацию документа основания а после закрытия открытия и повторного проведения выдаёт NULL
вот, значит затирает документ-основание.
смотри в процедуре общего модуля, куда передается ссылка и организация в документе-основании.
- 1 пользователь сказал спасибо!
Всем спасибо кто отвечал эту задачу я решил так
Общий модуль
&НаСервере
Функция СовпадениеОрганизации(Организация, ДокументОснование, Отказ, Ссылка) Экспорт
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Организация");
Если Организация <> Результат Тогда
ОбщегоНазначения.СообщитьПользователю("Организация в документе проведения не соответствует организации документа заказ клиента (Отказ проведения)",,,,Отказ);
КонецЕсли;
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Организация");
Если Организация <> Результат Тогда
ОбщегоНазначения.СообщитьПользователю("Организация в документе проведения не соответствует организации документа реализация товаров и услуг (Отказ проведения)",,,,Отказ);
КонецЕсли;
КонецЕсли;
КонецФункции
Документ Возврата
&Перед("ОбработкаПроверкиЗаполнения")
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты, ДокументОснование)
Если ЭтотОбъект.ДокументРеализации <> Неопределено Тогда
Расш1_ОбщегоНазначения.СовпадениеОрганизации(ЭтотОбъект.Организация, ЭтотОбъект.ДокументРеализации, Отказ, Ссылка);
Иначе
Сообщить("Отсутствует документ основания");
КонецЕсли;
КонецПроцедуры
Документ реализации
&Перед("ОбработкаПроверкиЗаполнения")
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты,ДокументОснование)
Если ЭтотОбъект.ЗаказКлиента <> Неопределено Тогда
Расш1_ОбщегоНазначения.СовпадениеОрганизации(ЭтотОбъект.Организация, ЭтотОбъект.ЗаказКлиента, Отказ, Ссылка);
Иначе
Сообщить("Отсутствует документ основания");
КонецЕсли;
КонецПроцедуры
Сложился неожиданный вопрос код который я выложил в конце отлично отрабатывает делает всё как надо, НО если создать документ реализации на основании двух заказов клиента сохранить его а потом в одном из документов основания сменить организацию тогда он во первых
&Перед("ОбработкаПроверкиЗаполнения")
На этом этапе не заходит в Если а сразу кидает сообщение а во вторых если закомментировать всё и оставить только строку с расширением то уже там он кидает ошибку
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты, ДокументОснование)
Если ЗначениеЗаполнено(ЭтотОбъект.ДокументРеализации) Тогда
Расш1_ОбщегоНазначения.СовпадениеОрганизации(ЭтотОбъект.Организация, ЭтотОбъект.ДокументРеализации, Отказ, Ссылка);
Иначе
Сообщить("Отсутствует документ основания");
КонецЕсли;
КонецПроцедуры
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1472)}: Результат = Форма.Записать(ПараметрыЗаписи);
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1425)}: ЗаписатьОбъект(Форма, ПараметрыЗаписи);
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(2988)}: ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроверкиЗаполнения'
по причине:
{ОбщийМодуль.ОбщегоНазначения.Модуль(167)}: Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
- Значение должно быть ссылкой или именем предопределенного элемента
Результат = Форма.Записать(ПараметрыЗаписи);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроверкиЗаполнения'
по причине:
{ОбщийМодуль.ОбщегоНазначения.Модуль(167)}: Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
- Значение должно быть ссылкой или именем предопределенного элемента
Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
- Значение должно быть ссылкой или именем предопределенного элемента
{ОбщийМодуль.ОбщегоНазначения.Модуль(167)}: НСтр("ru = 'Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
{ОбщийМодуль.ОбщегоНазначения.Модуль(401)}: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка);
{Расширение1 ОбщийМодуль.Расш1_ОбщегоНазначения.Модуль(5)}: Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Организация");
{Расширение1 Документ.РеализацияТоваровУслуг.МодульОбъекта(7)}: Расш1_ОбщегоНазначения.СовпадениеОрганизации(ЭтотОбъект.Организация, ЭтотОбъект.ЗаказКлиента, Отказ, Ссылка);
Так же есть вариант рабочего кода который обходит эту проблему но так как это код 2го стажёра а у нас они должны быть разными его скопипастить нельзя я всю черепушку сломал уже
Процедура Проверка(ЭтотОбъект,Отказ) Экспорт
Если ТипЗнч(ЭтотОбъект.Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
МассивЗаказов = ЭтотОбъект.Товары.ВыгрузитьКолонку("ЗаказКлиента");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Представление КАК Представление
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В(&МассивЗаказов)";
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Организация <> ЭтотОбъект.Организация Тогда
ОбщегоНазначения.СообщитьПользователю("Поле ""Организация"" не соотвествует реквизитам документа-основания " + Выборка.Представление,,,,Отказ);
КонецЕсли;
КонецЦикла;
Как обойти эту проблему
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Дмитрий Кошкин
активный пользователь
офлайн
Дата регистрации: 21.03.2023
Сообщений: 12
Здравствуйте! Не загружается выписка в ЕРП (2.5.8.429) за 18.04.2023. Я так понимаю, что из-за того, что не указана валюта счета получателя (хотя может быть я и ошибаюсь). В отчете о загрузке вижу вот это, но где в файле выписки указать валюту не могу понять.. Заранее спасибо!
Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20883
Дмитрий Кошкин, это кто ж вас так на ЕРП перевел?
Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20883
Дмитрий Кошкин пишет:
Цитата |
---|
В отчете о загрузке вижу вот это, но где в файле выписки указать валюту не могу понять.. Заранее спасибо! |
картинка не приложилась, что за ошибка?
Дмитрий Кошкин
активный пользователь
офлайн
Дата регистрации: 21.03.2023
Сообщений: 12
Это мы так обновились) фото ошибки вставил в ворд во вложении
Дмитрий Кошкин
активный пользователь
офлайн
Дата регистрации: 21.03.2023
Сообщений: 12
Дмитрий Кошкин
активный пользователь
офлайн
Дата регистрации: 21.03.2023
Сообщений: 12
Вот так тогда вставлю
Ошибка при вызове метода контекста (ПроверитьЗаполнение)
{Обработка.КлиентБанк.МодульМенеджера(4690)}:ДокументОбъект.ПроверитьЗаполнение();
{Обработка.КлиентБанк.МодульМенеджера(228)}:СоздатьДокументы(ДокументыКЗагрузке, БанковскийСчет, ПараметрыЗагрузки.СоздаватьКонтрагентов, ПараметрыЗагрузки.ПроводитьДокументы);
{(1)}:Обработки.КлиентБанк.Загрузить(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5362)}:Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(1464)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1441)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Ошибка при выполнении обработчика — ‘ОбработкаПроверкиЗаполнения’
по причине:
Команда не может быть выполнена для указанного объекта!
по причине:
по причине:
Ошибка при выполнении обработчика — ‘ОбработкаПроверкиЗаполнения’
по причине:
{ОбщийМодуль.СписаниеБезналичныхДенежныхСредствЛокализация.Модуль(7147)}: Команда не может быть выполнена для указанного объекта!
Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20883
Дмитрий Кошкин, тут надо отладчик звать на помощь, как мне кажется там передается не объект документа, а что то другое. Т.е. надо смотреть что в файле, что творится при отладке.
Показывать по
10
20
40
сообщений
Читают тему: