|
Программная запись нового элемента справочника, ошибка | ☑ | ||
---|---|---|---|---|
0
Анастасия Изотова
25.08.15
✎
10:24
|
Добрый день, уважаемые специалисты.
Подскажите, мне нужно создать программно несколько элементов справочника. Пишу код: Процедура Функ(Кнопка) СпрФизическиеЛица = Справочники.ФизическиеЛица; НовЭл = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовЭл.Фамилия = "Петров"; НовЭл.Имя = "Петр"; НовЭл.Пол = "Петрович"; НовЭл.Наименование = СокрЛП(Фамилия) + " " + СокрЛП(Имя) + " " + СокрЛП(Отчество) + " (" + Формат(ДатаРождения,"ДЛФ=D") + ")"; НовЭл.ДатаРождения = "12.15.15"; НовЭл.Записать(); КонецПроцедуры но 1С ругается что : {Форма.Форма(596,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля я что то не не там разместила ? это простая 8.1., Модуль формы внешней обработки |
|||
1
ДенисЧ
25.08.15
✎
10:26
|
где-то раньше после КонецПроцедуры ; затесалась
|
|||
2
Остап Сулейманович
25.08.15
✎
10:26
|
(0) Перед "Процедура Функ(Кнопка)" написано что-то типа КонецПроцедуры; или КонецФункции;. И написано именно с точкой-запятой в конце, которой там быть не должно.
|
|||
3
Господин ПЖ
25.08.15
✎
10:27
|
НовЭл.Пол = "Петрович";
петрович, карл!! |
|||
4
Остап Сулейманович
25.08.15
✎
10:28
|
(0) И эттта... НовЭл.Пол = "Петрович"; Это что за пол такой? Знаю мужской, женский. И даже средний. Но пол Петрович - впервые слышу. )))
|
|||
5
ДенисЧ
25.08.15
✎
10:30
|
(4) Там опечатка, должно быть "Михалыч"...
|
|||
6
aka AMIGO
25.08.15
✎
10:30
|
(1) синтаксконтроль разве не ловит эти ";" ?
должен-бы.. |
|||
7
Остап Сулейманович
25.08.15
✎
10:31
|
(6) Буду банален. Это 1С, детка.
ЗЫ Это была шутка есличо. |
|||
8
Анастасия Изотова
27.08.15
✎
09:20
|
Парни, ну серьезно )) Михалыч, это для теста, я же проверяю, как оно работать станет...
Ошибка ушла. Но!, не записываются данные в поля ПолеВыбора (в частности Пол, дата рождения) . ТАм просто пусто: переписала попроще: НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Новый999"; НовыйЭлемент.Пол = "111"; НовыйЭлемент.ДатаРождения = "12.12.1202"; НовыйЭлемент.Фамилия = "1"; НовыйЭлемент.Имя = "2"; НовыйЭлемент.Отчество = "3"; НовыйЭлемент.Записать(); В итоге создает записи только по простых Строковых полях ) |
|||
9
Альбатрос
27.08.15
✎
09:24
|
(8) А ты думала в сказке оказалась? Думаешь, все эти реквизиты имеют тип "Строка"? И даже никакой РС не задействован?
|
|||
10
Апош
27.08.15
✎
09:28
|
(8) "111" - это Перечисления.ПолыФизЛиц.Девочка или Перечисления.ПолыФизЛиц.Мальчик?
|
|||
11
Альбатрос
27.08.15
✎
09:30
|
(10) Это таки "Петрович" )))))
|
|||
12
Апош
27.08.15
✎
09:30
|
(11) Гадя Петрович Хренова?
|
|||
13
Альбатрос
27.08.15
✎
09:31
|
(12) Судя по вводным данным - именно она )))
|
|||
14
Апош
27.08.15
✎
09:32
|
(8) твои строки неявно преобразуются к типу левого операнда, чтоб ты знала
|
|||
15
Альбатрос
27.08.15
✎
09:32
|
Вот это тоже супер: НовЭл.ДатаРождения = "12.15.15";
Марсианское летоисчисление? |
|||
16
Апош
27.08.15
✎
09:34
|
>НовыйЭлемент.Отчество = "3";
поправь на "3ич" или "3на" |
|||
17
capllary_
surgut 27.08.15
✎
09:46
|
(0) Для низмоводов:
НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Пупкин Василий Иванович"; НовыйЭлемент.Пол = Перечисления.ПолФизическихЛиц.Мужской; НовыйЭлемент.ДатаРождения = Дата("20141231"); НовыйЭлемент.Фамилия = "Пупкин"; НовыйЭлемент.Имя = "Василий"; НовыйЭлемент.Отчество = "Иванович"; НовыйЭлемент.Записать(); Как-то так) джейзет рулит) |
|||
18
Апош
27.08.15
✎
09:48
|
ну уж дату можно было и литералом записать
|
|||
19
Trotter
27.08.15
✎
09:50
|
Почему пишут так НовЭл.Фамилия = "Петров";
а потом вот так СокрЛП(Фамилия); ? Почему не так НовЭл.Фамилия = СокрЛП("Петров"); ? |
|||
20
Trotter
27.08.15
✎
09:51
|
НовЭл.Наименование = СокрЛП(НовЭл.Фамилия) ?
|
|||
21
hhhh
27.08.15
✎
09:55
|
(20) перестраховываются. Вдруг у разработчиков конфы рука дрогнет спьяну и они сделают реквизит "Фамилия" строкой фиксированной длины. А тут всё готово, Сразу СокрЛП и всё в порядке.
|
|||
22
13_Mult
27.08.15
✎
09:58
|
(17) А как же РегистрыСведений.ФИОФизЛиц ?
|
|||
23
Trotter
27.08.15
✎
10:00
|
А для этого разве нету в общих модулях функциях добавление нового лица ?) или есть ?
|
|||
24
Анастасия Изотова
27.08.15
✎
10:56
|
to capllary_surgut - спасибо за джей зет!
я правда не знаю, кто такой этот Джей Зет, может рэппер какой, но не суть важно! получилось! и огромное вам за это спасибо! Скажите, а можно подобную манипуляцию - программное занесение человека в справочник, сделать для группы лиц, циклом ? на основании табличной части *? есть табличная часть, куда я заношу десяток таких людей, указав ФИО, пол, телефон, и по всей этой компании создаются набор элементов в справочнике ? |
|||
25
Lexey_
27.08.15
✎
11:00
|
(24) а что натолкнуло на мысль о невозможности?
|
|||
26
Апош
27.08.15
✎
11:07
|
(25) она разрешения спрашивает
(24) благословляем |
|||
27
ДенисЧ
27.08.15
✎
11:08
|
(24) Я присоединяюсь. Не имею никаких возражений к реализации.
|
|||
28
Славен
27.08.15
✎
11:11
|
(24) помещаешь всё из (17) в цикл
Для каждого ... из ... цкил |
|||
29
Trotter
27.08.15
✎
11:12
|
(24) Для Каждого Стр ИЗ ИЗ
|
|||
30
Trotter
27.08.15
✎
11:12
|
ИЗ ИЗ -> ИЗ ТЗ
|
|||
31
Анастасия Изотова
01.09.15
✎
04:19
|
Допустим табличная часть называется: Персоны
Тогда попробуем просмотреть построчно табличную часть и согласно каждой строке создать записи в Справочнике физ лиц: ТЗКомплекс = Персоны.Выгрузить(); ТЗКомплекс.Свернуть("Пол","ДатаРождения","Фамилия","Имя","Отчество","Категория","БСО"); Для Каждого СтрКомплекс Из ТЗКомплекс Цикл НовыйЭлемент.Пол = СтрКомплекс.Пол; НовыйЭлемент.ДатаРождения = СтрКомплекс.ДатаРождения; НовыйЭлемент.Фамилия = СтрКомплекс.Фамилия; НовыйЭлемент.Имя = СтрКомплекс.Имя; НовыйЭлемент.Отчество = СтрКомплекс.Отчество; НовыйЭлемент.Категория = СтрКомплекс.Категория; НовыйЭлемент.БСО = СтрКомплекс.БСО; НовыйЭлемент.Записать(); Я вот насчет свертки-развертки не уверена ((( |
|||
32
mehfk
01.09.15
✎
04:32
|
А что в СП написано по этому поводу?
|
|||
33
Анастасия Изотова
02.09.15
✎
10:29
|
Если честно - синтаксис помошник подсказывает в общем, что значит тот или иной обьект ...
А мне понять нужно, в чем тут ошибка, в этом куске кода ? |
|||
34
Анастасия Изотова
02.09.15
✎
10:30
|
Я наверное неправильно что то делаю, но эти ИЗ-ИЗ, я не уверена что правильно написала код ((
|
|||
35
Lexey_
02.09.15
✎
10:42
|
(31) а зачем ТЗКомплекс сворачивать?
|
|||
36
hhhh
02.09.15
✎
10:53
|
(34) вообще добавления нет
НовЭл = Справочники.ФизическиеЛица.СоздатьЭлемент(); куда делось? |
|||
37
mehfk
02.09.15
✎
11:00
|
(33) А о количестве и типах параметров методов он дает представление?
|
|||
38
ДенисЧ
02.09.15
✎
11:00
|
(37) о количестве - даёт
|
|||
39
mistеr
02.09.15
✎
11:15
|
(24) Сделай еще одну форму списка для справочника, и всего делов.
С другой стороны, опыт написания кода тоже нужно где-то набирать... |
|||
40
Анастасия Изотова
03.09.15
✎
08:12
|
Форма списка для справочника - для чего ?
У меня табличная часть на форме, куда заносятся новые люди. Далее нажимаю на процедуру: Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ТабличнаяЧасть.Номер, | ТабличнаяЧасть.Фамилия, | ТабличнаяЧасть.Имя, | ТабличнаяЧасть.Отчество, | ТабличнаяЧасть.Пол, | ТабличнаяЧасть.ДатаРождения, | ТабличнаяЧасть.БСО | ИЗ | Документ.ПервичныйДокумент.Услуги КАК ТабличнаяЧасть"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл НовыйЭлемент = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовыйЭлемент.Пол = Результат.Пол; НовыйЭлемент.ДатаРождения = Результат.ДатаРождения; НовыйЭлемент.Фамилия = Результат.Фамилия; НовыйЭлемент.Имя = Результат.Имя; НовыйЭлемент.Отчество = Результат.Отчество; НовыйЭлемент.БСО = Результат.БСО; НовыйЭлемент.Записать(); КонецЦикла; как вы думаете, выберет она из табличной части людей и занесет их в справочник ? |
|||
41
Брегорьян
03.09.15
✎
08:13
|
это загадка такая? ответ - может быть
|
|||
42
Брегорьян
03.09.15
✎
08:14
|
а вообще, сделала хрень. массовое создание элементов лучше обработкой делать
|
|||
43
hhhh
03.09.15
✎
09:27
|
(40) не указано, какой конкретно документ в запросе. То есть все документы базы берете?
|
|||
44
Анастасия Изотова
03.09.15
✎
09:30
|
to hhhh - документ так и называется Первичный документ. В нем есть табличная часть, которая называется Услуги. это я как пример.
to Брегорьян - Ну хорошо, последую вашему совету. вот внешняя обработка. одна из моих любых. вот на обработке табличная часть. с полями: фио, пол, и т.д. вот на форме кнопка вот запускается процедура вот запрос оббегает строки табличной части вот в цикле, согласно Результатам запроса выше, создаются в справочнике физ лиц обьекты, Иванов, Петров, Сидоров, с реквизитами уже внесенными, согласно табличной части выше ... общая идея такая. Скажите, в этом коде выше все необходимое есть ? |
|||
45
hhhh
03.09.15
✎
09:35
|
(43) но в базе могут быть миллионы этих "Первичный документ.". Вы сразу несколько миллионов физ лиц создаете?
|
|||
46
Trotter
03.09.15
✎
09:36
|
(45) Раньше хоть свёртка была
|
|||
47
Анастасия Изотова
03.09.15
✎
09:37
|
оу, и правда. а я думала запрос пойдет по ЭТОМУ документу, который и вызвал обработку. Да, я была не права.
А можно задать условие, в запросе, что именно ЭТОТ документ, который открыт ? |
|||
48
Славен
03.09.15
✎
09:43
|
(47) в запрос добавь условие
|ГДе | Документ.ПервичныйДокумент.Ссылка = &Твойдок Запрос.Параметры.Установить("ТвойДок", ТвойДок); |
|||
49
Trotter
03.09.15
✎
09:45
|
из (48) ТвойДок - это ссылка на твой документ.
|
|||
50
Анастасия Изотова
03.09.15
✎
09:52
|
Ага, то есть если я ЭТО во внешнюю обработку впишу, а ее подцеплю к системе, то при открытии в документе, по штатным меню, она сама этот док, ее открыший найдет ?
а если я открою ее через файл->открыть, то нужно на форму встроить строку выбора документа, связав ее с полем данных: ТвойДок ... и указать - в какой док лезть, и из какого брать табличную часть ? |
|||
51
Славен
03.09.15
✎
09:57
|
рука лицо
|
|||
52
mistеr
03.09.15
✎
10:32
|
(40) >Форма списка для справочника - для чего ?
У нее предназначение такое - массовый ввод элементов в справочник в табличном виде. И все, что ты тут пытаешься накодить, уже реализовано в платформе. |
|||
53
Анастасия Изотова
03.09.15
✎
10:48
|
почитала про форму списка. У меня есть в справочнике ФизЛиц в списке Форм, ФормаСписка.
создать еще одну ? А в чем общая затея заключается ? мне то нужно было на основании некоей табличной части из обработки внешней создать: 1. несколько записей в справочнике. 2. документы создать одного типа, на эти физ лица и с типовым заполнением реквизитов и полей. 3. провести это все. |
|||
54
Брегорьян
03.09.15
✎
10:52
|
(53) я сейчас примерно то же ваяю. можешь ждать код-полуфабрикат ;)
|
|||
55
Анастасия Изотова
03.09.15
✎
10:55
|
серьезно ? Было бы неплохо очень !
to Славен - я может не совсем понятно описала, но .. Обычно так внешние обработки у меня и выглядят. Строка выбора документа на форме. По ней выбираю какой то документ в базе. И при выполнении процедур, она что то с Этим, выбранным документом делает. В данном случае "ТвойДок", ТвойДок); - ты ведь про это, да ? |
|||
56
Брегорьян
03.09.15
✎
10:57
|
(55) можешь в почту напоминалку кинуть
|
|||
57
mistеr
03.09.15
✎
11:29
|
(53) Это уже не просто соэдание элементов справочника. Делай как делала.
|
|||
58
Славен
03.09.15
✎
12:05
|
(55) да, замени ТвойДок, который не в кавычках, на ссылку документа
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |