|
v7: Проверка перед записью в справочник | ☑ | ||
---|---|---|---|---|
0
Pazan
20.01.12
✎
15:59
|
1С77
Имеется процедура в документе: Процедура Клиент() СпрКлиент = СоздатьОбъект("Справочник.Клиенты"); СпрКлиент.Новый(); СпрКлиент.Наименование = Получатель1; СпрКлиент.ЕГРПОУ = Получатель1_Код; СпрКлиент.Полн_Наим = Получатель1; СпрКлиент.Банк = Получатель1_Банк; СпрКлиент.Счет = Получатель1_Счет; СпрКлиент.МФО = Получатель1_Банк_МФО; СпрКлиент.Город_Банк = Получатель1_Банк_Город; СпрКлиент.Записать(); КонецПроцедуры Вопрос: Как перед записью проверить на существование клиента, сравнив заполенение реквизита справочника .ЕГРПОУ и текстового поля документа Получатель1_Код. Если совпадает - предупредить, если пустой реквизит, аналогично сравнить .Наименование и Получатель1? |
|||
1
Ковычки
20.01.12
✎
16:01
|
Если
|
|||
2
Ковычки
20.01.12
✎
16:01
|
найтипореквизиту
перебор запрос |
|||
3
viktor_vv
20.01.12
✎
16:01
|
НайтиПоРеквизиту() = 1
|
|||
4
viktor_vv
20.01.12
✎
16:02
|
Тольок флажок "сортировка" на реквизите справочника должен стоять.
|
|||
5
Pazan
20.01.12
✎
16:09
|
Хм...
СпрКлиент = СоздатьОбъект("Справочник.Клиенты"); СпрКлиент.Новый(); //Поиск по реквизиту НАЧАЛО СпрКлиент.НайтиПоРеквизиту("ЕГРПОУ", Получатель1_Код, 1); Если СпрКлиент.Выбран() > 0 Тогда Сообщить("Клиент существует") Иначе СпрКлиент.Наименование = Получатель1; СпрКлиент.ЕГРПОУ = Получатель1_Код; СпрКлиент.Полн_Наим = Получатель1; СпрКлиент.Банк = Получатель1_Банк; СпрКлиент.Счет = Получатель1_Счет; СпрКлиент.МФО = Получатель1_Банк_МФО; СпрКлиент.Город_Банк = Получатель1_Банк_Город; КонецЕсли; // Поиск по реквизиту КОНЕЦ СпрКлиент.Записать(); Так должно быть? |
|||
6
viktor_vv
20.01.12
✎
16:16
|
Можно и так, можно и
Если СпрКлиент.НайтиПоРеквизиту("ЕГРПОУ", Получатель1_Код, 1) = 1 Тогда // нашли Иначе // не нашли // новый СпрКлиент.Новый(); ........ СпрКлиент.Записать(); КонецЕсли ; |
|||
7
viktor_vv
20.01.12
✎
16:17
|
(6)+ как в (5) Не надо так делать.
СпрКлиент = СоздатьОбъект("Справочник.Клиенты"); //СпрКлиент.Новый(); |
|||
8
Pazan
20.01.12
✎
16:18
|
жалуется на "Неверное имя реквизита"
|
|||
9
viktor_vv
20.01.12
✎
16:23
|
(8) Смотри (4).
|
|||
10
Pazan
20.01.12
✎
16:25
|
флаг установлен -- "Сортировка" + "Отбор за реквизитом". Об этом я знаю, но всё же ошибка
|
|||
11
Pazan
20.01.12
✎
16:27
|
мож у кого есть похожий пример?
|
|||
12
viktor_vv
20.01.12
✎
16:29
|
Да все там должно работать. Значит не стоит флаг.
Новый() Перенес после НайтиПоРеквизиту() ? |
|||
13
vinogradъ
20.01.12
✎
16:31
|
в НайтиПоРеквизиту в названии реквизита ошибка?
|
|||
14
Pazan
20.01.12
✎
16:36
|
Языком оригинала:
ДовКлієнт.НайтиПоРеквизиту(Код_ЄДРПОУ, Код1, 1); {Документ.ПД.Форма.Модуль(143)}: Невірне ім'я реквізита! |
|||
15
Pazan
20.01.12
✎
16:37
|
Процедура языком оригинала:
Процедура Клієнт() ДовКлієнт = СоздатьОбъект("Справочник.Клієнти"); Код_ЄДРПОУ = ДовКлієнт.ЄДРПОУ; Код1 = Одержувач1_Код; ДовКлієнт.НайтиПоРеквизиту(Код_ЄДРПОУ, Код1, 1); Если ДовКлієнт.Выбран() > 0 Тогда Сообщить("Клиент существует") Иначе ДовКлієнт.Новый(); ДовКлієнт.Наименование = Одержувач1; ДовКлієнт.ЄДРПОУ = Одержувач1_Код; ДовКлієнт.Повна_Назва = Одержувач1; ДовКлієнт.Банк = Одержувач1_Банк; ДовКлієнт.Рахунок = Одержувач1_Рахунок; ДовКлієнт.МФО = Одержувач1_Банк_МФО; ДовКлієнт.Місто_Банк = Одержувач1_Банк_Місто; ДовКлієнт.Записать(); КонецЕсли; КонецПроцедуры |
|||
16
viktor_vv
20.01.12
✎
16:39
|
ДовКлієнт.НайтиПоРеквизиту("ЄДРПОУ", Код1, 1)
|
|||
17
viktor_vv
20.01.12
✎
16:41
|
Закоментируй
//Код_ЄДРПОУ = ДовКлієнт.ЄДРПОУ; Тебе ж не значение надо, а имя реквизита, тем более, что в этот момент он еще не спозиционирован. |
|||
18
Pazan
20.01.12
✎
16:45
|
Все, понял "ЄДРПОУ". 1-я часть вопроса снята. осталась вторая:
"если пустой реквизит, аналогично сравнить .Наименование и Получатель1?" |
|||
19
viktor_vv
20.01.12
✎
16:50
|
НайтиПоНаименованию();
|
|||
20
viktor_vv
20.01.12
✎
16:53
|
//ДовКлієнт.НайтиПоРеквизиту(Код_ЄДРПОУ, Код1, 1);
Если ДовКлієнт.НайтиПоРеквизиту("ЄДРПОУ", Код1, 1) = 1 Тогда Сообщить("Клиент существует") ИначеЕсли ДовКлієнт.НайтиПоНаименованию(СокрЛП(Получатель1), 0, 1) = 1 Тогда // последний параметр смотри какой тебе надо Сообщить("Клиент существует"); Иначе ДовКлієнт.Новый(); ДовКлієнт.Наименование = Одержувач1; ДовКлієнт.ЄДРПОУ = Одержувач1_Код; ДовКлієнт.Повна_Назва = Одержувач1; ДовКлієнт.Банк = Одержувач1_Банк; ДовКлієнт.Рахунок = Одержувач1_Рахунок; ДовКлієнт.МФО = Одержувач1_Банк_МФО; ДовКлієнт.Місто_Банк = Одержувач1_Банк_Місто; ДовКлієнт.Записать(); КонецЕсли; |
|||
21
viktor_vv
20.01.12
✎
16:54
|
Получатель1 -> Одержувач1
|
|||
22
Pazan
20.01.12
✎
16:54
|
понял. спасибо
|
|||
23
Pazan
20.01.12
✎
16:55
|
я в конфиге перевёл правильно, просто, когда правил здесь, упустил. усё гуд!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |