Имя: Пароль:
1C
1С v8
Подскажите как программно изменить значение в поле ввода?
,
0 HarDlacK
 
14.07.16
16:26
Задача стоит в том чтоб при нажатии кнопки программно изменить значение в СправочникКлиентыФормаЭлемента  в поле ввода СтатусКлиента на одно из СправочникСсылка.СтатусыКлиентов

Программиста 1с уволили за пьянство, а я простой админ сижу ковыряю(
1 Ёпрст
 
14.07.16
16:30
(0) напейся
2 HarDlacK
 
14.07.16
16:32
Не, мне незя контора повесится...
3 Nuobu
 
14.07.16
16:32
(2) А тебе повысили зп после его увпольнения?
4 HarDlacK
 
14.07.16
16:34
только кашка обещанка...
5 Nuobu
 
14.07.16
16:34
(4) Ну, тогда, когда выплатят, то на доп деньги найми спеца, пусть тебе покажет, как это делается.
6 Nuobu
 
14.07.16
16:34
(5) + рассказывай всю задачу.
7 ovrfox
 
14.07.16
16:36
Во первых - у тебя управляемые формы или нет?
Скорее всего управляемые - нужно найти реквизит, который отвечает за СправочникКлиентыФормаЭлемента. Это скорее всего Объект.СтатусКлиента.
Вот именно ему и нужно назначить нужное значение, но сделать это нужно на сервере.
Понятно?
8 HarDlacK
 
14.07.16
16:38
Реквизит есть СтатусКлиента
9 HarDlacK
 
14.07.16
16:38
как назначить значение из СправочникСсылка.СтатусыКлиентов?
10 HarDlacK
 
14.07.16
16:39
ну чтоб статус с Кодом такимто выставлялся?
11 Nuobu
 
14.07.16
16:40
Объект.СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Твоё наименование");

Это го*внокод, конечно, но за те деньги, что ты дополучишь - самое оно!
12 HarDlacK
 
14.07.16
16:42
спасибо сейчас попробую
13 Nuobu
 
14.07.16
16:42
(12) Ты так и не написал УФ, или ОФ. Если не знаешь, то пришли скрин шот.
14 ovrfox
 
14.07.16
16:43
Достаточно просто СтатусКлиента  = Значение или как в (11) но это должно быть в процедуре, которая выполняется с директивой &НаСервере
15 HarDlacK
 
14.07.16
16:51
16 HarDlacK
 
14.07.16
16:53
Не отработал код, кажись 1с не понимает что мне нужно изменить статус именно у этого клиента...
17 Nuobu
 
14.07.16
16:54
(16) Опиши, как работает обработка, и выложи еще скриншот её работы.
18 FIXXXL
 
14.07.16
16:54
(16) надеюсь ты не в общем списке клиентов надеешься изменить что-то?
19 Ёпрст
 
14.07.16
16:54
(16) меню-сервис-ищи обработку групповое изменение реквизитов.
В ней, меняй че хочешь, кодить не надо.
20 HarDlacK
 
14.07.16
16:57
Обработка берет двух клиентов и сравнивает их http://prntscr.com/bsu10n так вот мне надо тому клиенту что справа поставить программно статус клиента ДУБЛЬ

Процедура кнСлитьНажатие(Элемент)
    массив = новый массив;
    
    Запрос = новый Запрос;
    Запрос.текст =
    "ВЫБРАТЬ
    |    ЗаказКлиента.Ссылка
    |ИЗ
    |    Документ.ЗаказКлиента КАК ЗаказКлиента
    |ГДЕ
    |    ЗаказКлиента.Клиент = &Клиент";
    
    
    если нВсе = 0 Тогда
        Запрос.УстановитьПараметр("Клиент",Клиент2.Ссылка);            
        правильныйЭлемент = Клиент1.ссылка;
        УдаляемыйЭлемент = Клиент2.ссылка;
    Иначе
        Запрос.УстановитьПараметр("Клиент",Клиент1.Ссылка);            
        правильныйЭлемент = Клиент2.ссылка;
        УдаляемыйЭлемент = Клиент1.ссылка;
    конецЕсли;
    
    РезЗапроса = ВыполнитьЗапросНаСервере(Запрос);
    Массив = РезЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка");
    массив.Добавить(УдаляемыйЭлемент);
    
    
    ПараметрыСеанса.НеФиксироватьОтветсвенного=Истина;
    Состояние("Поиск ссылок на удаляемого на клиента");
    ТаблицаСсылок = НайтиПоСсылкам(массив);
    
    
    ВыполнитьЗаменуЭлементов(правильныйЭлемент,УдаляемыйЭлемент,ТаблицаСсылок);
    //Если ВыполнитьЗаменуЭлементов(правильныйЭлемент,УдаляемыйЭлемент,ТаблицаСсылок) Тогда
    //    //СоздатьДвиженияПоРегСвДублиКлиентов(правильныйЭлемент.Ссылка,УдаляемыйЭлемент.Кампейн,УдаляемыйЭлемент.ID_Ввода,УдаляемыйЭлемент.АвторСоздания);
    //    УдаляемыйЭлемент.ПолучитьОбъект().Удалить();
    //КонецЕсли;
        

    ПараметрыСеанса.НеФиксироватьОтветсвенного=ЛОЖЬ;
    //Объект.СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Дубль");
    
        
    ЭтаФорма.Закрыть();
КонецПроцедуры
21 Nuobu
 
14.07.16
17:03
(20) мда. Всё очень плохо.
22 Garykom
 
гуру
14.07.16
17:12
(0) Используй AutoIT для веб-клиента
23 Garykom
 
гуру
14.07.16
17:13
(21) Почему плохо когда ОФ где можно элементами формы рулить, вот создавать их низзя ))
24 ovrfox
 
14.07.16
17:58
(20) У тебя есть процедура ВыполнитьЗаменуЭлементов(правильныйЭлемент,УдаляемыйЭлемент,ТаблицаСсылок)
Вот в ней и нужно устанавливать
Покажи ее код
25 ovrfox
 
14.07.16
18:00
+(24) И кстати, кому собираешься статус менять - правильному элементу или удаляемому?
26 Beretta
 
14.07.16
19:15
(0) Микрокредитование?
27 youalex
 
14.07.16
22:13
(20) +1. Банда Ответсвенных все больше.
28 HarDlacK
 
15.07.16
09:16
Сорри вчера не отписался, свет вырубили) Статус нужно менять удаляемому.
29 HarDlacK
 
15.07.16
09:21
ВыполнитьЗаменуЭлементов(правильныйЭлемент,УдаляемыйЭлемент,ТаблицаСсылок);
    //Если ВыполнитьЗаменуЭлементов(правильныйЭлемент,УдаляемыйЭлемент,ТаблицаСсылок) Тогда

    //    //СоздатьДвиженияПоРегСвДублиКлиентов(правильныйЭлемент.Ссылка,УдаляемыйЭлемент.Кампейн,УдаляемыйЭлемент.ID_Ввода,УдаляемыйЭлемент.АвторСоздания);

    //    УдаляемыйЭлемент.ПолучитьОбъект().Удалить();

    //КонецЕсли;
30 HarDlacK
 
15.07.16
09:21
но мне не нужно чтоб удаляло клиента, нужно чтоб ему ставило статус Дубль
31 HarDlacK
 
15.07.16
10:37
Объект.СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Дубль");
не отрабатывает((
32 Garykom
 
гуру
15.07.16
10:41
(31) Поймите у Вас легкие пропуски в базовых знаниях об 1С 8. Очень напоминает операцию на гландах через задний проход.
33 HarDlacK
 
15.07.16
10:42
Это я отчетливо понимаю) Но операцию нужно провести!)
34 Garykom
 
гуру
15.07.16
10:45
(33) Форма это не горло, это 5-я точка. Горло это СправочникОбъект.Записать()
35 HarDlacK
 
15.07.16
10:50
Без бутылки точно не разобраться...(
36 Мимохожий Однако
 
15.07.16
11:01
(35)Вот теперь ты поймешь спившегося 1С-ника
37 HarDlacK
 
15.07.16
11:07
Ну так он то знал на что идет.
38 Alloev
 
15.07.16
11:10
Неловко даже прерывать этот троллинг, но напишите уже как-нибудь так:

УдаляемыйЭлемент.ПолучитьОбъект().СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Дубль");
УдаляемыйЭлемент.Записать();
39 Nuobu
 
15.07.16
11:12
(38) Воу-воу, полегче (Код не правильный и он не заработает).

Человеку пытаются донести, что у него без теории не получится ничего. Вот пусть садится за книги и делает примеры из них, а уже потом - делает на рабочей базе.
40 Aleksandr N
 
15.07.16
11:12
(0) За пьянство не увольнять, а поощрять нужно.
Поощрять за то, что программист не убивает дебильных пользователей, а просто пьет.
41 Garykom
 
гуру
15.07.16
11:20
(38) А почему не так:
(УдаляемыйЭлемент.ПолучитьОбъект().СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Дубль")).Записать();

? :)
42 Garykom
 
гуру
15.07.16
11:21
(41)+ вот терь точно код не рабочий ))
43 Alloev
 
15.07.16
11:30
(39) Действительно ерунда, каюсь :) Тогда как-нибудь по-другому:
УдаляемыйЭлементОбъект = УдаляемыйЭлемент.ПолучитьОбъект();
УдаляемыйЭлементОбъект.СтатусКлиента = Справочники.СтатусыКлиентов.НайтиПоНаименованию("Дубль");
УдаляемыйЭлементОбъект.Записать();

Человек же говорит, что он простой админ, может он больше не будет лезть куда не надо.
44 HarDlacK
 
15.07.16
11:31
Мне просто намекнули что я или в ручную буду это делать или найду способ...(
45 Nuobu
 
15.07.16
11:34
(44) Найди программиста-девушку, соблазни её и пусть она тебе поможет. А то нанимать на твою обещанную зп - многовато будет. Сколько надбавка за 1С, если не секрет?
46 HarDlacK
 
15.07.16
11:36
её нет, мне вот только обещают мол потянешь будет тебе хорошо
47 HarDlacK
 
15.07.16
11:36
За код огромное спасибо! Сработал!
48 HarDlacK
 
15.07.16
11:45
Огромнейшее спасибо, по Вашему примеру и другие поля заполнил!
49 HarDlacK
 
15.07.16
12:02
Вылезла новая проблема, мне нужно в поле ввода записать текущего пользователя и текущую дату, у меня получается записать туда или только пользователя или только дату( как записать все чтоб в поле стало: Администратор 15.07.2016??
50 Nuobu
 
15.07.16
12:04
(49) Поле ввода - это текст и заполняется он в ф-и "ПриОткрытии" или "ПередОткрытием" нужно найти, откуда он тянет значения.
51 HarDlacK
 
15.07.16
12:14
сейчас у меня получается записать в поле ввода или текущего
пользователя: Администратор или текущую дату: 15.07.2016

УдаляемыйЭлементОбъект.Ответственный = (ПараметрыСеанса.ТекущийПользователь + НачалоДня(ТекущаяДата()));
52 HarDlacK
 
15.07.16
12:14
мне бы правильно это написать)
53 HarDlacK
 
15.07.16
12:34
Нужно преобразовать эти значения в строку а потом вывести их, как это сделать?
54 Alloev
 
15.07.16
12:36
Найдите в конфигурации справочник "Клиенты", откройте в нем форму элемента, найдите там нужное поле ввода, посмотрите его свойства и скажите, что там указано в графе "ПутьКДанным".
55 HarDlacK
 
15.07.16
12:40
56 Alloev
 
15.07.16
12:44
В реквизитах справочника есть "Ответственный"?
57 Garykom
 
гуру
15.07.16
12:44
(55) Это элемента на форме и к реквизиту объекта не привязано. ручками ручками кодом кодом
58 HarDlacK
 
15.07.16
12:44
Вот этот код отработал, получилось то что надо!



УдаляемыйЭлементОбъект = УдаляемыйЭлемент.ПолучитьОбъект();
УдаляемыйЭлементОбъект.Ответственный = Строка(ПараметрыСеанса.ТекущийПользователь) + Строка(НачалоДня(ТекущаяДата()));
УдаляемыйЭлементОбъект.Записать();
59 Dzenn
 
гуру
15.07.16
13:00
Нет, ты уже не простой админ, ты посвящённый в таинства админ ;-)
60 Dzenn
 
гуру
15.07.16
13:00
*Ищущий просветления ;-)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс