|
БП 3.0 Расширение документа Путевой лист. Не могу убрать проверку заполнения расстояния | ☑ | ||
---|---|---|---|---|
0
tgu82
17.05.21
✎
11:39
|
https://курсы-по-1с.рф/бесплатное/2020-04-10-izmenit-svoystvo-proverka-zapolneniya/
Вот даже ссылка и делал вроде как здесь. &После("ОбработкаПроверкиЗаполнения") Процедура ПЛ_спецОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Маршрут.Расстояние"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли; КонецПроцедуры Но ошибка при открытии в 1С документа "путевой лист": {ПЛ_ФЗспец "Ожидается определение Процедуры/Функции" Документ.ПутевойЛист.Форма.ФормаДокумента.Форма(57,12)} |
|||
1
tgu82
17.05.21
✎
12:50
|
Я так понимаю что мне надо же еще многострочную часть подвязывать.
Но пусть даже просто реквизит шапки будет. Что я не так делаю ??? |
|||
2
tgu82
17.05.21
✎
12:54
|
Где требуется определение Процедуры
Вот же оно Процедура ПЛ_спецОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) |
|||
3
bedrikd
17.05.21
✎
13:26
|
Режим совместимости расширения какой стоит?
|
|||
4
tgu82
17.05.21
✎
13:27
|
(3) Ошшибку я убрал.
А вот с проверкой реквизитов - вот тут ерунда. |
|||
5
bedrikd
17.05.21
✎
13:34
|
А что не так?
|
|||
6
tgu82
17.05.21
✎
13:36
|
(5) Да ничего не происходит. По-прежнему требуется заполнить "Расстояние" в тч
|
|||
7
tgu82
17.05.21
✎
13:38
|
(6)+ А надо чтоб не требовало
|
|||
8
zuza
17.05.21
✎
13:48
|
Покажите код расширяемой процедуры
|
|||
9
tgu82
17.05.21
✎
13:52
|
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив; ВидДокументаТопливнаяКарта = Перечисления.ВидыДокументовПриобретенияГСМ.ТопливнаяКарта; ПлательщикНДС = УчетнаяПолитика.ПлательщикНДС(Организация, Дата); СтавкиБезНДС = Новый Массив; СтавкиБезНДС.Добавить(Перечисления.СтавкиНДС.БезНДС); СтавкиБезНДС.Добавить(Перечисления.СтавкиНДС.НДС0); Для Каждого ТекущаяСтрока Из Топливо Цикл Если ТекущаяСтрока.ВидВходящегоДокумента = ВидДокументаТопливнаяКарта Тогда Продолжить; КонецЕсли; Если ТекущаяСтрока.Сумма = 0 Тогда СообщитьОЗаполненииОбязательногоРеквизита("Сумма", ТекущаяСтрока.НомерСтроки, "Топливо", Отказ); КонецЕсли; Если ПлательщикНДС И СуммаВключаетНДС И Не ЗначениеЗаполнено(ТекущаяСтрока.СтавкаНДС) Тогда СообщитьОЗаполненииОбязательногоРеквизита("СтавкаНДС", ТекущаяСтрока.НомерСтроки, "Топливо", Отказ); КонецЕсли; Если ПлательщикНДС И СуммаВключаетНДС И ТекущаяСтрока.СуммаНДС = 0 И СтавкиБезНДС.Найти(ТекущаяСтрока.СтавкаНДС) = Неопределено Тогда СообщитьОЗаполненииОбязательногоРеквизита("СуммаНДС", ТекущаяСтрока.НомерСтроки, "Топливо", Отказ); КонецЕсли; КонецЦикла; Номенклатура = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТранспортноеСредство, "Топливо"); Если Не ЗначениеЗаполнено(Номенклатура) Тогда ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не заполнено поле ""Топливо"" в транспортном средстве.'"),, "ТранспортноеСредство", "Объект", Отказ); КонецЕсли; Если Документы.ПутевойЛист.ВодительскоеУдостоверениеФизлица(ФизЛицо, Дата) = Неопределено Тогда ТекстОшибки = НСтр("ru = 'Не заполнено водительское удостоверение сотрудника. См. Справочники - Физическое лицо - Все Документы'"); ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ФизЛицо, "ФизЛицо", "Объект", Отказ); КонецЕсли; КоличествоСтрок = Маршрут.Количество(); Для Каждого ТекущаяСтрока Из Маршрут Цикл НомерСтроки = Маршрут.Индекс(ТекущаяСтрока); ПроверятьПересечениеПериодов = Истина; // Проверка корректности дат в текущей строке Если ТекущаяСтрока.ДатаОтправления > ТекущаяСтрока.ДатаВозвращения Тогда ШаблонПоляОшибки = ?(День(ТекущаяСтрока.ДатаОтправления) = День(ТекущаяСтрока.ДатаВозвращения), "Маршрут[%1].ВозвращениеВремя", "Маршрут[%1].ВозвращениеДата"); ТекстОшибки = НСтр("ru = 'Дата возвращения из рейса не может быть меньше даты отправления.'"); ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, СтрШаблон(ШаблонПоляОшибки, НомерСтроки), "Объект", Отказ); ПроверятьПересечениеПериодов = Ложь; КонецЕсли; ПроверятьПересечениеПоказаний = Истина; // Проверка корректности показаний одометра в текущей строке Если ТекущаяСтрока.ПоказаниеОдометраДо > ТекущаяСтрока.ПоказаниеОдометраПосле Тогда ШаблонПоляОшибки = "Маршрут[%1].ПоказаниеОдометраПосле"; ТекстОшибки = НСтр("ru = 'Показание одометра при возращении из рейса не может быть меньше показаний одометра при выезде.'"); ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, СтрШаблон(ШаблонПоляОшибки, НомерСтроки), "Объект", Отказ); ПроверятьПересечениеПоказаний = Ложь; КонецЕсли; Если Не ПроверятьПересечениеПоказаний И Не ПроверятьПересечениеПериодов Тогда Продолжить; КонецЕсли; Для ИндексСледующейСтроки = НомерСтроки + 1 По КоличествоСтрок - 1 Цикл СтрокаСравнения = Маршрут[ИндексСледующейСтроки]; // Проверка пересечения показаний одометра Если ПроверятьПересечениеПериодов И ТекущаяСтрока.ПоказаниеОдометраПосле > СтрокаСравнения.ПоказаниеОдометраДо Тогда ШаблонПоляОшибки = "Маршрут[%1].ПоказаниеОдометраДо"; Если ТекущаяСтрока.ПоказаниеОдометраДо >= СтрокаСравнения.ПоказаниеОдометраПосле Тогда ТекстОшибки = НСтр("ru = 'Показания одометра в строке %1 должны быть больше показаний в строке %2.'"); Иначе ТекстОшибки = НСтр("ru = 'Показания одометра в строке %1 пересекаются с данными строки %2.'"); КонецЕсли; ОбщегоНазначения.СообщитьПользователю(СтрШаблон(ТекстОшибки, ИндексСледующейСтроки + 1, НомерСтроки + 1),, СтрШаблон(ШаблонПоляОшибки, ИндексСледующейСтроки), "Объект", Отказ); КонецЕсли; // Проверка даты отправления и возвращения Если ПроверятьПересечениеПоказаний И ТекущаяСтрока.ДатаВозвращения > СтрокаСравнения.ДатаОтправления Тогда ШаблонПоляОшибки = ?(НачалоДня(ТекущаяСтрока.ДатаОтправления) = НачалоДня(СтрокаСравнения.ДатаОтправления), "Маршрут[%1].ОтправлениеВремя", "Маршрут[%1].ОтправлениеДата"); Если ТекущаяСтрока.ДатаОтправления >= СтрокаСравнения.ДатаВозвращения Тогда ТекстОшибки = НСтр("ru = 'Отсортируйте строки по периоду. Сейчас период в строке %1 меньше, чем в строке %2.'"); Иначе ТекстОшибки = НСтр("ru = 'Период рейса в строке %1 пересекается с данными строки %2.'"); КонецЕсли; ОбщегоНазначения.СообщитьПользователю(СтрШаблон(ТекстОшибки, ИндексСледующейСтроки + 1, НомерСтроки + 1),, СтрШаблон(ШаблонПоляОшибки, ИндексСледующейСтроки), "Объект", Отказ); КонецЕсли; КонецЦикла; КонецЦикла; РеквизитыЗаСсылками = Документы.ПутевойЛист.РеквизитыЗаСсылками(); СчетаУчетаВДокументах.ПроверитьЗаполнение(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, РеквизитыЗаСсылками); ПроверкаЗаполненияДокументов.ПроверитьРеквизитыЗаСсылками(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, РеквизитыЗаСсылками); КонецПроцедуры |
|||
10
bedrikd
17.05.21
✎
14:01
|
А в отладчике в расширении попадаешь в процедуру ПЛ_спецОбработкаПроверкиЗаполнения ?
|
|||
11
tgu82
17.05.21
✎
14:07
|
(10) Попадаю. В самом конце.
|
|||
12
tgu82
17.05.21
✎
14:08
|
(11) ТАм видимо надо "вместо" писать или как-то еще, получается что уже поздно что-то отменять в смысле проверок когда дошел до конца процедуры. Там уже все проверено получается
|
|||
13
bedrikd
17.05.21
✎
14:13
|
а в строчку ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); заходит?
|
|||
14
tgu82
17.05.21
✎
14:23
|
(13) Заходит
ПроверяемыеРеквизиты это массив все норм но удалиться Расстояние оттуда не удалилось |
|||
15
bedrikd
17.05.21
✎
14:25
|
надо его оттуда удалить и тогда система не будет Расстояние проверять
|
|||
16
Масянька
17.05.21
✎
14:28
|
(14) А здесь Документы.ПутевойЛист.РеквизитыЗаСсылками(); что?
|
|||
17
tgu82
17.05.21
✎
14:47
|
(15,16) Мозги затупились. Хотел удалить Расстояние а по факту удалял физ. лицо (водителя) из проверки.
Все получилось хотя мне надо чтобы он не проверял Расстояние только если в строке есть моточасы. Но с другой стороны сскорее всего у того у кого моточасы вариант что еще надо расстояние вряд ли возможен. Так что более менее все получилось в упрощенном режиме |
|||
18
tgu82
17.05.21
✎
14:53
|
Всем большое спасибо!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |