Имя: Пароль:
1C
1С v8
ПроверятьЗаполнениеАвтоматически
0 Anempadest
 
27.09.11
18:49
Пишу внешнюю обработку.
1) Для формы пометил флаг ПроверятьЗаполнениеАвтоматически.
2) Для формы установил событие ОбработкаПроверкиЗаполнения().
3) Для реквизитов установил "Проверка заполнения=Выдавать ошибку".

Нажимаю "Выполнить" и никакая проверка заполнения не выполняется, сразу выполняется КнопкаВыполнитьНажатие().

Что я не понимаю и что я делаю не так?
1 Mort
 
27.09.11
19:12
А что такое кнопка "Выполнить" ?
2 Anempadest
 
27.09.11
19:20
(1) Кнопка "Выполнить" - это кнопка по умолчанию на форме внешней обработки. По нажатию на эту кнопку выполняется то, ради чего была написана внешняя обработка.
3 Mort
 
27.09.11
19:27
(2) То что она по-умолчанию, ещё не повод вызывать обработку проверки заполнения автоматом.
4 sprinter83
 
27.09.11
19:30
Если НЕ ПроверитьЗаполнение() Тогда
       Возврат;
КонецЕсли;
5 Anempadest
 
28.09.11
18:50
(4) Спасибо! Тогда второй вопрос. Пишу внешнюю обработку по загрузке цен. Импортируем цены из прайса поставщика (экселовский файл).

Сначала нажимаем кнопку "Загрузить из файла".
Артикул находится в колонке "1", а цена находится в колонке "5". К тому же начинаются данные со строки "19", а заканчиваются на строке "2895".
Поэтому в обработке предусмотрел реквизиты:
- НомерПервойСтроки
- НомерПоследнейСтроки
- НомерКолонкиАртикул
- НомерКолонкиЦена
Загруженные данные помещаются в табличное поле. Менеджер, который загружает цены, визуально анализирует данные и потом...

Нажимаем кнопку "Создать документ". Из табличного поля данные заносятся в новый документ "УстановкаЦенНоменклатуры". В документе нужно заполнить ещё несколько реквизитов:
- ТипЦен
- Валюта
- Процент скидки (наценки)
А если товара нет в справочнике, то создаём новую номенклатуру. Для этого предусматриваем заполнение таких реквизитов:
- ВидНоменклатуры
- БазоваяЕдиницаИзмерения
- СтавкаНдс

Две кнопки выполняют разные действия. При выполнении каждого действия пользователь должен заполнить на форме обработки разные группы реквизитов.

Вопрос:
Как сделать так, чтобы при нажатии кнопки А проверялось заполнение реквизитов группы А, а при нажатии кнопки Б проверялось заполнение реквизитов группы Б?

Теоретически, можно вручную описать проверку каждого реквизита. Но, может быть, можно как-то упростить проверку?
6 Mort
 
28.09.11
19:13
Сделай кнопку "проверить" данные, которая до загрузки подсветит ячейки где менеджер должен указать данные.
7 Anempadest
 
28.09.11
19:20
(6) То есть, всё-таки, нажимай на кнопку "Загрузить из файла" или на кнопку "Создать документ", но проверяться будут ВСЕ данные?
8 sprinter83
 
28.09.11
19:34
Можно описать в ОбработчикеПроверкиЗаполнения
Какие реквизиты в каком случае проверять. Но в случае внешней обработки, да и вообще обработки у меня такое не получалось. Там в качестве проверяемых объектов стоит "ОбработкаОбъект" и всё, ни прибавить ни отнять. Точнее прибавить можно, но из  списка проверяемых полей убрать что-то не получается. Приходилось свою функцию писать. Хотя если это не реквизиты объекта, а реквизиты формы, тогда может всё в ОбработчикеПроверкиЗаполнения попробовать сделать.
9 sprinter83
 
28.09.11
19:41
Пример из книги

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
   
   Если ПроверятьОтветственного = Ложь Тогда
       //уберём поле ответственный из списка обязательных полей
       ИндексОтветственного = ПроверяемыеРеквизиты.Найти("Ответственный");
       ПроверяемыеРеквизиты.Удалить(ИндексОтветственного);
   КонецЕсли;
   
КонецПроцедуры
10 Anempadest
 
28.09.11
20:52
(9) Благодарю! На какую книгу ссылка, кстати?
11 sprinter83
 
28.09.11
20:56