Имя: Пароль:
1C
1С v8
Программное заполнение док.ЗаявкаНаОткрытиеСчетов
,
0 листопад
 
27.04.14
21:12
Заполняю док.ЗаявкаНаОткрытиеСчетов. Выдает ошибку:
{Форма.Форма.Форма(746)}: Поле объекта не обнаружено (ФизЛицо)
    Док.РаботникиОрганизации.ФизЛицо = СокрЛП(ТекСтрока.FIO);

В док-те, есть табличная часть "РаботникиОрганизации" и в ней есть реквизит "ФизЛицо". Почему тогда выдает ошибку???


Док = Документы.ЗаявкаНаОткрытиеСчетов.СоздатьДокумент();
Док.Организация = Справочники.Организации.НайтиПоКоду("000000001");
Док.Дата = ТекущаяДата();
Док.ВводНачальныхСведений = Истина;
Док.РаботникиОрганизации.ФизЛицо = СокрЛП(ТекСтрока.FIO);
Док.РаботникиОрганизации.НомерЛицевогоСчета = СокрЛП(ТекСтрока.LIC_SCHET);
Док.Записать();
1 Рэйв
 
27.04.14
21:15
Строка какая у таб части РаботникиОрганизации куда писать
пытаешься?
2 Рэйв
 
27.04.14
21:16
НоваяСтрока=РаботникиОрганизации.Добавить()
И дальше

НоваяСтрока.ляляля=...
3 Рэйв
 
27.04.14
21:16
Что то вроде
4 Torquader
 
27.04.14
21:18
А ФизЛицо - это же не строка, а справочник.
5 ДенисЧ
 
27.04.14
21:18
о. май. гад....
6 листопад
 
27.04.14
21:18
(4) Ага, спр.ФЛ
7 kotletka
 
27.04.14
21:20
(6) ну и? приравиваешь ссылку и строку, у тебя сегодня обострение?
8 Torquader
 
27.04.14
21:20
(7) У неё сегодня весеннее отупление.
9 kotletka
 
27.04.14
21:21
Док.РаботникиОрганизации.ФизЛицо = Справочники.ФизЛица.НайтипоНаименованию(СокрЛП(ТекСтрока.FIO)); ито через жпо
10 Рэйв
 
27.04.14
21:21
(7)У с=меня есть мнение что сегодня у всех. Обострение:-)
Такие вопросы задают - закачаешься.
11 kotletka
 
27.04.14
21:21
(10) ммм так больше половины вопросов сегодня от неё))
12 neo_matrix_123
 
27.04.14
21:22
Процедура ДействияФормыЗагрузкаНомеровДоговоров1(Кнопка)
    Предупреждение("Если для работников уже введены номера договоров, то они будут заменены на номера из файла!");
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Фильтр = "Файл базы(*.dbf)|*.dbf";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        ВыбФайл = Новый Файл(ДиалогОткрытияФайла.ВыбранныеФайлы[0]);
    Иначе
        Предупреждение("Файл не выбран!");
        Возврат;
    КонецЕсли;        
    xB = Новый xBase(ВыбФайл.ПолноеИмя);
    xB.Кодировка = КодировкаXBase.OEM;
    Если НЕ xB.Открыта() Тогда
        xB.ОткрытьФайл(ВыбФайл.ПолноеИмя);
    КонецЕсли;
    Если xB.Поля.Найти("CONTRACTNO") = Неопределено Тогда
        Предупреждение("Неверный формат файла!");
        Возврат;
    КонецЕсли;
    xB.Первая();
    НомерДоговора = СокрЛП(xB.CONTRACTNO);
    ФЛ = СокрЛП(xB.SBK_FIO);
    НайденноеЗначение = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФЛ);
    Если НайденноеЗначение = Справочники.ФизическиеЛица.ПустаяСсылка() Тогда
        Сообщить("В справочнике ""Физические лица"" не найден(а): " + ФЛ);
    Иначе
        НомДог = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НомДог.Отбор.Объект.Установить(НайденноеЗначение);
        НомДог.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер_договора"));
        НомДог.Прочитать();
        НомДог.Очистить();
        Запись = НомДог.Добавить();
        Запись.Объект = НайденноеЗначение;
        Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер_договора");
        Запись.Значение = НомерДоговора;
        НомДог.Записать();
    КонецЕсли;
    Пока xB.Следующая() Цикл
        НомерДоговора = СокрЛП(xB.CONTRACTNO);
        ФЛ = СокрЛП(xB.SBK_FIO);
        НайденноеЗначение = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФЛ);
        НомДог = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        Если НайденноеЗначение = Справочники.ФизическиеЛица.ПустаяСсылка() Тогда
            Сообщить("В справочнике ""Физические лица"" не найден(а): " + ФЛ);
        Иначе
            НомДог = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
            НомДог.Отбор.Объект.Установить(НайденноеЗначение);
            НомДог.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер_договора"));
            НомДог.Прочитать();
            НомДог.Очистить();
            Запись = НомДог.Добавить();
            Запись.Объект = НайденноеЗначение;
            Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер_договора");
            Запись.Значение = НомерДоговора;
            НомДог.Записать();
        КонецЕсли;
    КонецЦикла;
    Если xB.Открыта() Тогда
        xB.ЗакрытьФайл();
    КонецЕсли;
    Сообщить("    Загрузка завершена!");
КонецПроцедуры
13 Рэйв
 
27.04.14
21:23
может ВР предложит на полставки взять?:-)
14 Рэйв
 
27.04.14
21:24
(12)Поднимите мне веки!
Дайте мне развидеть это!
15 kotletka
 
27.04.14
21:24
(13) он таких ущербных любит, что неТаня Цветочек, что ОхотницаЗаГоловками
16 Рэйв
 
27.04.14
21:25
(15)Ну это естественно.Я их тоже люблю:-)
17 листопад
 
27.04.14
21:27
(9) О! Спасибо!!! Уже что-то. Щас попробую...
18 листопад
 
27.04.14
21:29
(9) Не помогло, выдал ошибку:

{Форма.Форма.Форма(747)}: Поле объекта не обнаружено (ФизЛицо)
    Док.РаботникиОрганизации.ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(ТекСтрока.FIO));
19 Torquader
 
27.04.14
21:30
(16) Конечно, "розовое чудо" всегда вызывает восторг и радость, когда что-то пытается сделать - потому как - некоторые решения бывают настолько удивительными.
20 Рэйв
 
27.04.14
21:31
(18)>>Поле объекта не обнаружено (ФизЛицо)

Если тебе этв фраза ни о чем не говорит..(а судя по всему нет)
Пригласи программиста.
21 Рэйв
 
27.04.14
21:33
(19)Я просто получаю удовольствие от стиля их мышления:-)
Их переубеждать  даже не надо.
22 kotletka
 
27.04.14
21:33
а ты понимаешь что Док.РаботникиОрганизации это табличная часть и её надо заполнять в цикле, либо если 1 строка то Док.РаботникиОрганизации[0].Физлицо, где счетчик итератор
23 листопад
 
27.04.14
21:34
(20) Так в конфигураторе же есть этот реквизит!!! В док-те, есть табличная часть "РаботникиОрганизации" и в ней есть реквизит "ФизЛицо" (спр.ФЛ)!!!
24 листопад
 
27.04.14
21:34
(22) Я это сама не осилю ((( Помогите!!!
25 kotletka
 
27.04.14
21:35
(23) смотри (22) ФизЛицо это колонка таб части
26 kotletka
 
27.04.14
21:35
(24) в 12 готовое решение
27 Torquader
 
27.04.14
21:36
(24) Вы вообще кто по должности и кто по образованию ?
Поймите, наконец, программирование не ваше призвание - нужно искать другие виды деятельности и зарабатывания денег.
28 Рэйв
 
27.04.14
21:36
(23)Мало ли что там есть.
Вот допустим я хочу обратиться к реквизиту документа Реквизит.
Говорю Сообщить(реквизит).

Куда оно меня пошлет?
Правильно.Именно туда:-)
Область видимости нужна.
29 Torquader
 
27.04.14
21:36
(26) Только там загрузка из DBF - "чудо" из (0) этого не поймёт.
30 листопад
 
27.04.14
21:37
(26) В (12)- пример записи в регистр. А мне надо в документ.
31 kotletka
 
27.04.14
21:37
(29) у чудла тоже их дбф
32 Torquader
 
27.04.14
21:38
(30) А excel тут при чём  тогда ?
33 kotletka
 
27.04.14
21:38
(30) вместо регистра заполняй табличную часть документа, тоже в цикле добавляй ст
34 kotletka
 
27.04.14
21:39
*строки в тч вот в строке твое физЛицо и будет доступно
35 kotletka
 
27.04.14
21:39
(32) ты уже её темы путаешь)
36 kotletka
 
27.04.14
21:40
а хотя нет это я не туда смотрю
37 листопад
 
27.04.14
21:41
(31), (32) Из Эксель данные загрузила в ТЗ на форме, по нажатию кнопки, должен заполняться док-т.
38 zak555
 
27.04.14
21:41
(8) так у неё или у него ?
39 Torquader
 
27.04.14
21:41
(35) Я то темы путаю, а (0) - профессию перепутал.
40 kotletka
 
27.04.14
21:41
нстрока = Док.РаботникиОрганизации.Добавить();
Нстрока.ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(ТекСтрока.FIO));
41 Torquader
 
27.04.14
21:42
(38) А, может быть, при отуплении пол меняется - но (0) где-то утверждает, что оно - "девушка не замужем".
42 zak555
 
27.04.14
21:42
(40) ковнокодинг
43 zak555
 
27.04.14
21:43
(41) ты же сегодня утверждал, что в 0 автор м по данным инфостарта
44 kotletka
 
27.04.14
21:44
(42) убейся, "из того что было я его слепила". Сделай лучше из того что дано
45 Torquader
 
27.04.14
21:45
(42) Ну давайте ещё "белому чуду" расскажем, что такое правильное написание кода и как это нужно делать.
46 zak555
 
27.04.14
21:47
(44) сначала надо в РС ФИОфизиков поискать, а уж потом в справочнике
и если нигде нет -- создать элемент
47 kotletka
 
27.04.14
21:47
(46) сделай
48 zak555
 
27.04.14
21:49
(47) мне не надо
49 kotletka
 
27.04.14
21:50
отвлеченно умничаешь значит, тож умеемс
50 листопад
 
27.04.14
22:21
Выдает ошибку:
{Форма.Форма.Форма(775)}: Поле объекта не обнаружено (FIO)
Запрос.УстановитьПараметр("ФИО", ТекСтрока.FIO);


Вот что я состряпала:


Процедура ЗагрузитьНажатие(Элемент)
    
    Для Каждого СтрокаТЧ Из Таблица Цикл
        
        ФЛ = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(СтрокаТЧ.FIO),Истина);
        Если ФЛ = Справочники.ФизическиеЛица.ПустаяСсылка() Тогда
            ТекФЛ = СоздатьФЛ(СтрокаТЧ);
            ТекФЛ = ЗагрузитьЛицевыеСчета(СтрокаТЧ);
        Иначе
            Сообщить(СтрокаТЧ.FIO + " уже есть в базе!!!");
        КонецЕсли;        
        
    КонецЦикла;
    
КонецПроцедуры


Функция ЗагрузитьЛицевыеСчета(ТекСтрока)
    
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЛицевыеСчетаРаботниковОрганизации.Организация,
    |    ЛицевыеСчетаРаботниковОрганизации.Банк,
    |    ЛицевыеСчетаРаботниковОрганизации.ФизЛицо,
    |    ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета
    |ИЗ
    |    РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
    |ГДЕ
    |    ЛицевыеСчетаРаботниковОрганизации.Организация = &Организация
    //|    И ЛицевыеСчетаРаботниковОрганизации.Банк = &Банк
    |    И (ВЫРАЗИТЬ(ЛицевыеСчетаРаботниковОрганизации.ФизЛицо.Наименование КАК СТРОКА(50))) = (ВЫРАЗИТЬ(&ФИО КАК СТРОКА(50)))
    |    И (ВЫРАЗИТЬ(ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета КАК СТРОКА(23))) = (ВЫРАЗИТЬ(&Счет КАК СТРОКА(23)))"
    ;
    
    Организация = Справочники.Организации.НайтиПоКоду("000000001");
    Запрос.УстановитьПараметр("Организация", Организация);
    //Запрос.УстановитьПараметр("Банк", Банк);
    Запрос.УстановитьПараметр("ФИО", ТекСтрока.FIO);
    Запрос.УстановитьПараметр("Счет", ТекСтрока.LIC_SCHET);
    
    ТаблРез = Запрос.Выполнить().Выгрузить();
    ТаблРезКол = ТаблРез.Количество();            
    
    Если ТаблРезКол = 0 Тогда
        
        Запрос = Новый Запрос();
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ФизическиеЛица.Ссылка
        |ИЗ
        |    Справочник.ФизическиеЛица КАК ФизическиеЛица
        |ГДЕ
        |    (ВЫРАЗИТЬ(ФизическиеЛица.Наименование КАК СТРОКА(50))) = (ВЫРАЗИТЬ(&ФИО КАК СТРОКА(50)))"
        ;
        
        Запрос.УстановитьПараметр("ФИО", ТекСтрока.FIO);
        
        ТаблФИО = Запрос.Выполнить().Выгрузить();
        ТаблФИОКол = ТаблФИО.Количество();
        
        Если ТаблФИОКол = 0 Тогда
            Сообщить("Не найден сотрудник " + ТекСтрока.FIO + " лицевой счет " + ТекСтрока.LIC_SCHET + " не записан");
        ИначеЕсли ТаблФИОКол > 1 Тогда
            Сообщить("Не уникален сотрудник " + ТекСтрока.FIO + " лицевой счет " + ТекСтрока.LIC_SCHET + " не записан");
        Иначе
            ЗаписьЛС = РегистрыСведений.ЛицевыеСчетаРаботниковОрганизации.СоздатьМенеджерЗаписи();
            ЗаписьЛС.Организация = Справочники.Организации.НайтиПоКоду("000000001");
            //    ЗаписьЛС.Банк = Банк;
            ЗаписьЛС.ФизЛицо = ТаблФИО[0].Ссылка;
            ЗаписьЛС.НомерЛицевогоСчета = ТекСтрока.LIC_SCHET;
            ЗаписьЛС.Записать();
            
        КонецЕсли;
    КонецЕсли;
    
КонецФункции
51 zak555
 
27.04.14
22:26
запрос в цикле -- фу
52 Torquader
 
27.04.14
22:39
(51) Да там и остальное ФУ особенно
ВЫРАЗИТЬ(ФизическиеЛица.Наименование КАК СТРОКА(50))) = (ВЫРАЗИТЬ(&ФИО КАК СТРОКА(50)))"
53 neo_matrix_123
 
27.04.14
22:45
(51)+1 да уж. мое фио точно все не влезет
54 Homer
 
27.04.14
22:46
(50) пациент скорее мертв чем жив
55 Torquader
 
27.04.14
22:47
(50) "Чудик" - во-первых, организацию нужно найти один раз и потом использовать её, сохранённую в переменной.
Во-вторых, мы можем загрузить список ФИО в массив и выбрать соответствие запросом один раз.
56 neo_matrix_123
 
27.04.14
22:47
мне интересно, а следующая ветка не будет, случаем, про выгрузку лицевых счетов обратно в файл для банка?
57 Torquader
 
27.04.14
22:49
(56) Будет.
Загрузить, чтоб выгрузить ^_^
58 neo_matrix_123
 
27.04.14
22:54
(57) ;-)) ну тада ждемс...
59 Torquader
 
27.04.14
22:59
(50) листик, листик, кис, кис, кис - напиши запрос на бис ^_^
60 zulu_mix
 
27.04.14
23:03
вангую
Док.РаботникиОрганизации.Загрузить(Запрос.Выполнить.Выгрузить());
61 листопад
 
27.04.14
23:09
Ничего не поняла. ГДЕ У МЕНЯ ОШИБКА В (50)??? Помогите пожалуйста!!!!
62 zulu_mix
 
27.04.14
23:18
(61) по шагам.
1) грузи ехель во временную тз запроса
2) соединяй временную тз с данными из БД с условием что физлицо не нулл
3) (6)
4) в запросе меняешь условие из 2 на нулл. это надо создать и дополнить табчасть в цикле
63 листопад
 
27.04.14
23:23
(62) Из Эксель в ТЗ уже выгружено: Таблица. Затем перебираю ТЗ, строка в (50):
Для Каждого СтрокаТЧ Из Таблица Цикл

А дальше как?
64 zulu_mix
 
27.04.14
23:28
(63) не надо так делать. внимательно изучи 2) из (62)
тебе надо соединить данные в запросе и поставить условие.
65 Torquader
 
27.04.14
23:30
(63) Мы в запросе должны найти человека по введённым данным, но данные живут в ТЗ.
66 листопад
 
27.04.14
23:35
(64) не получается по-другому...
67 Torquader
 
27.04.14
23:39
Таблицу во временную таблицу:
"ВЫБРАТЬ /список полей - напиши сам/
ПОМЕСТИТЬ ВремТаб1
ИЗ &ПараметрВременнаяТаблица"

Соединить:
ВЫБРАТЬ /Список полей - напиши сам/
ИЗ ВремТаб1 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК СпрФл ПО /здесь пишем условие соединения/
68 zak555
 
27.04.14
23:40
завтра у автора будет матумба ?
69 Torquader
 
27.04.14
23:42
Ладно - я - спать.
(68) А вы старайтесь, чтобы "чудо" написало, то, что результат давало.
70 листопад
 
27.04.14
23:51
(67) Неосилю...
71 zulu_mix
 
28.04.14
17:18
напишу обработку за фотку топлес