Имя: Пароль:
1C
1С v8
Колонку из ТЧ на форму
,
0 Dyspho
 
04.03.16
08:20
В ТЧ есть ШаблонЭтикетки, хочу сделать, чтобы выбор этикетки был не в ТЧ(скрою видимость), а на форме(добавить реквизит?), подскажите как сделать
1 Fedor-1971
 
04.03.16
08:42
(0) в УФ просто вытащи из ТЧ на форму своё поле
для ОФ - сделай поле формы и в "Путь к данным" укажи поле из строки ТЧ Объекта

Подойдёт?
2 Dyspho
 
04.03.16
08:46
(1) УФ, выношу - не видит
3 Dyspho
 
04.03.16
08:47
(1) А не, это я баран, скрыл сначала, потом удивляюсь что не видит)
Думал надо добавлять реквизит в него помещать то, чтов тч,а в тч колонку скрыть)
4 Dyspho
 
04.03.16
08:50
(1) Спасибо
5 Fedor-1971
 
04.03.16
08:53
(4) на здоровье
6 Dyspho
 
04.03.16
09:02
(5) Всё таки нетак надо)
Надо сделать, чтобы в реквизите на форме выбирался шаблон и подставлялся в ТЧ в скрытую колонку)
7 Fedor-1971
 
04.03.16
09:09
(6) и? как в ТЧ выбирается шаблон? НачалоВыбора и ОбработкаВыбора - небось остались на ТЧ? подключи их к новому полю, и отладь работу
8 Fedor-1971
 
04.03.16
09:10
7+ или посмотри как заполняется СписокВыбора
9 Dyspho
 
04.03.16
09:12
(8) Надо именно, чтобы в ТЧ осталась колонка, но заполнялась при изменении реквизита на форме, выбрал в реквизите ШаблонЭтикетки 20х30 и сразу вТЧ в скрытой колонке выбралось тоже
10 Dyspho
 
04.03.16
09:25
Правильно понимаю, нужно событие у реквизита ПриИзменении и там как то указать, что при изменении Реквизит, колонка ТЧ ШаблонЭтикетки заполняется тем же значением?
11 Fedor-1971
 
04.03.16
09:34
(10) Ты сделал: из Объект-ТЧ-ШаблонЭтикетки - вытащил на форму рядом с таблицей. Проверил как он заполняется и исправил обработчики НачалоВыбора и ОбработкаВыбора и При Изменении с учётом того, что у тебя вынесен реквизит на форму (опора на Элемент уже не подойдёт)?

Если так, то ничего менять больше не нужно, если нет, тогда ПриИзменении пиши в таблицу
12 Dyspho
 
04.03.16
09:39
(11) А нельзя создать новый реквизит,
и при его изменении что-то типа реквизит = объект.товары.шаблонэтикетки?
13 Fedor-1971
 
04.03.16
09:45
(12) Конечно можно, только сделай отдельный реквизит формы. При активации строки заполняй его,при изменении пиши в ТЧ.
И направление присваивания перепутал.
14 Fedor-1971
 
04.03.16
09:46
13+ Если сделал как в 11, то всё это будет делать платформа
15 Dyspho
 
04.03.16
09:47
(13) а как правильно обратиться к строке тч ? объект.товары.шаблонэтикетки - Поле объекта не обнаружено (ШаблонЭтикетки)
16 Dyspho
 
04.03.16
09:57
ы?
17 Pro-tone
 
04.03.16
10:01
(15) сперва получить строку надо, строка тогда будет коллекция, в которой поля - это твои колонки
18 Dyspho
 
04.03.16
10:02
(17) &НаКлиенте
Процедура Реквизит1ПриИзменении(Элемент)
        Элементы.Товары.ТекущиеДанные.ШаблонЭтикетки = Реквизит1;    
КонецПроцедуры
\
сделал так и всё вроде работает
19 Dyspho
 
04.03.16
10:06
(17) Надо было по-другому?
20 Fedor-1971
 
04.03.16
10:11
(19) НаКлиенте
стр=Элементы.ТЧ.ТекущиеДанные
Если стр=неопределено тогда  //попытались внести данные без строки в ТЧ
  Возврат;
КонецЕсли;
стр.ШаблонЭтикетки=Реквизит1;

Как-то так
21 Dyspho
 
04.03.16
10:15
(20) А почему моё неправильно?
22 Fedor-1971
 
04.03.16
10:18
(21) по причине того, что внешний реквизит ничего не знает про тот факт, что в ТЧ просто может не быть строк и куда тогда писать то что выбрано?
при таком раскладе Элементы.Товары.ТекущиеДанные.ШаблонЭтикетки - вызовет ошибку
23 Dyspho
 
04.03.16
10:20
(22) Понял, спасибо за инфу !)
24 Fedor-1971
 
04.03.16
10:20
(23) на здоровье.
25 Kondarat
 
04.03.16
10:22
(23) Это только на тот случай, когда надо засунуть шаблон в активную строку ТЧ. А если в ТЧ несколько строк?
26 Dyspho
 
04.03.16
10:25
(25) Я понял, мне мой вариант тоже подходит, т.к. у меня в при выборе строки предыдущая затирается, зато теперьбуду знать)
27 Fedor-1971
 
04.03.16
10:25
(25) в 11 написано: при активации строки - заполняем реквизит текущими данными, если изменили, то изменения пишем в текущую строку
28 Dyspho
 
04.03.16
11:29
Извиняюсь, ещё вопрос, а как сделать, чтобы шаблон этикетокоткрывался выбор с отбором, только 2 нужные мне этикетки?
29 Dyspho
 
04.03.16
11:36
1
30 Fedor-1971
 
04.03.16
11:40
(28) передай условие в форму выбора или заполни СписокВыбора в НачалоВыбора или НачалоВыбораИзСписка твоего Реквизит1
31 Dyspho
 
04.03.16
11:43
(30) Не понимаю)
32 Fedor-1971
 
04.03.16
11:53
(31) задавай вопрос. В какой части непонятно
33 Dyspho
 
04.03.16
11:54
(30) Можно пример,как программно открывать в форму выбора справочника с отбором
34 Fedor-1971
 
04.03.16
11:58
(33) пар=новый Структура;
пар.Вставить("ОтбиратьНужноеМне", Истина);
ОткрытьФорму("Справочник.Нечто.ФормаВыбора", пар);

в ПриСозданииНаСервере формы выбора
Если Параметры.Свойство("ОтбиратьНужноеМне") тогда
   от=Параметры.ОтбиратьНужноеМне;
   дальше устанавливаешь нужные тебе отборы или рулишь запросом ДС
КонецЕсли;

Прочитай в инете про Отбор - информации много
35 Dyspho
 
04.03.16
12:03
А в "Отбирать нужноемне" можно указывать название шаблона этикетки? ("Этикетка 20на30") к примеру
36 Fedor-1971
 
04.03.16
12:11
(35) Это как хочешь - главное, что-бы смог настроить ДС или организовать выбор

Если их у тебя 2 вида, так заполни СписокВыбора у поля формы Реквизит1 и не заморачивайся с открытием окон. Будет выпадающий списочек из нескольких строк.

Аналогично почитай как его заполнить в инете.
37 Dyspho
 
04.03.16
12:21
(36) Чот не найду как заполнять )
38 Dyspho
 
04.03.16
12:40
(36) Не подскажете ?) Не могу сообразить и инфу норм найти
39 Kondarat
 
04.03.16
12:43
СписокВыбора элемента формы - это обычный список значений.
Вот в него и добавляешь нужные шаблоны, устанавливаешь режим выбора из списка и все.
40 Dyspho
 
04.03.16
12:44
(39) Не получается там добавить шаблоны
41 Kondarat
 
04.03.16
12:45
Покажи как добавляешь.
42 Dyspho
 
04.03.16
12:45
(39) Туда вообще ничегоне получается добавить
43 Dyspho
 
04.03.16
12:47
44 hhhh
 
04.03.16
12:50
(42) ну и где там галки, что режим выбора из списка? Что ты нам фуфло подсовываешь?
45 Dyspho
 
04.03.16
12:51
46 Kondarat
 
04.03.16
13:13
Конфигуратор ничего не знает про твои шаблоны. Добавляй программно.
47 Dyspho
 
04.03.16
13:19
(46) Ну я изначально и просил помочь добавить программно
хотябы пример как это сделать
48 Kondarat
 
04.03.16
13:20
(47) Тебе нужен код как найти твои шаблоны и добавить их в список значений?
49 Dyspho
 
04.03.16
13:21
(48) Я даже примерно не знаю как делать, прошу как-нибудь помочь
50 Fedor-1971
 
04.03.16
13:24
(47)
&НаКлиенте
Процедура Реквизит1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
спис=Новый СписокЗначений;
спис.Добавить( тут получи ссылку на свой шаблон1, "шаблон1");
спис.Добавить( тут получи ссылку на свой шаблон2, "шаблон2");
ДанныеВыбора=спис;
КонецПроцедуры

Прочитай какую-нить книжку по программированию в 1С.
51 Dyspho
 
04.03.16
13:25
(50) да НАДО БЫ
52 Dyspho
 
04.03.16
13:26
(50) А ссылку на шаблон получить как ?
53 luter-89
 
04.03.16
13:26
)) Ну как тут не потроллить)
54 luter-89
 
04.03.16
13:27
(52) Шаблон -  это же внешний файл на диске? Тогда ссылка э то путь
55 Dyspho
 
04.03.16
13:28
(54) нет, шаблон это шаблон этикетки на скд
56 luter-89
 
04.03.16
13:28
Если шаблон - это эл. справочника, то это Справочники.ШаблоныЭтикетокИлиКактоТак.Выбрать() - это ссылка
57 luter-89
 
04.03.16
13:29
(55) Макет что ли?
58 Dyspho
 
04.03.16
13:29
(57) Ну да
59 luter-89
 
04.03.16
13:29
Я с ними никогда не сталкивался
60 Dyspho
 
04.03.16
13:29
Справочники.ХранилищеШаблонов, я полагаю
61 luter-89
 
04.03.16
13:30
Ну, получи макеты тогда
62 luter-89
 
04.03.16
13:30
(60) По идее должен быть справочник
63 Dyspho
 
04.03.16
13:30
(62) ну Справочники.ХранилищеШаблонов
64 luter-89
 
04.03.16
13:31
Ну и в чем проблема? Получить необходимый список эл справочника?
65 Dyspho
 
04.03.16
13:33
да в этом проблема)
66 luter-89
 
04.03.16
13:35
Чтобы программно выбрать именно тот шаблон,который тебе нужен, у него должен быть какой-нибудь уникальный признак, например на самый плохой случай - это код элемента
67 Dyspho
 
04.03.16
13:37
68 luter-89
 
04.03.16
13:38
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать
Спр.Ссылка КАК Шаблон
ИЗ Справочник.ХранилищеШаблонов КАК Спр
ГДЕ Код = &КОД";

Запрос.УстановитьПараметр("Код",100500);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий;
СсылкаНаШаблон = Выборка.Шаблон;



"
69 Dyspho
 
04.03.16
13:41
&НаСервере
Процедура Реквизит1ПриИзменении(Элемент)

    стр=Элементы.Товары.ТекущиеДанные;
    Если стр=неопределено тогда  //попытались внести данные без строки в ТЧ
        
        Возврат;
    КонецЕсли;
КонецПроцедуры


тут этописать ?
70 luter-89
 
04.03.16
13:41
Добавь регистр сведений. Измерение - Шаблон, Ресур - Использовать

Сделай записи в регистр. Например добавил шаблон, указал флаг использовать. Флаг использовать - это флаг программного использования шаблона в список значений.

А потом Запросом к регистру получишь необходимый набор ссылок. Регистр нужен для того, чтобы не менять типовой справочник
71 Dyspho
 
04.03.16
13:43
жесть какая а
72 luter-89
 
04.03.16
13:43
Сообщение 50 читал?
73 luter-89
 
04.03.16
13:45
Я тебе подсказал что делать после 50 сообщения
74 Dyspho
 
04.03.16
13:50
(73) Да не пойму я как получить ссылку на шаблон этот
75 luter-89
 
04.03.16
13:58
(74) Открываешь синтакс помощник. Смотришь такой класс - как СправочникиМенеджер. То есть обращение Справочники. - это класс СправочникиМенеджер. Далее, у класса СправочникиМенеджер есть свойство - ИмяСправочника. Какой у нас справочник? Правильно ХранилищеШаблонов. То что надо.
Итого Справочники.ХранилищеШаблонов. Теперь это у нас какой класс? СправочникМенеджер. А какие есть у него методы? А например Выбрать(). А что он возвращает? Следующий класс СправочникиВыборка, а у него есть свойство - ссылка. И это то что нужно.
Рановато ты за такую задачу взялся. Сначала надо основы знать
76 luter-89
 
04.03.16
13:58
Судя по твоим сообщениям тебе не подсказка нужна, тебе нужно полностью решить задачу
77 Dyspho
 
04.03.16
15:13
&НаКлиенте
Процедура Реквизит1ПриИзменении(Элемент)
    пар=новый Структура;
    ОткрытьФорму("Справочник.ХранилищеШаблонов.ФормаВыбора", пар);
    СтандартнаяОбработка=Ложь;    
    спис=Новый СписокЗначений;
    спис.Добавить(Справочники.ХранилищеШаблонов.НайтиПоНаименованию("этикетка 40на57"));
    спис.Добавить(справочники.ХранилищеШаблонов.НайтиПоНаименованию("Этикетка 20на30"));
    ДанныеВыбора=спис;
    стр=Элементы.товары.ТекущиеДанные;
    Если стр=неопределено тогда  //попытались внести данные без строки в ТЧ
        
        Возврат;
    КонецЕсли;
    стр.ШаблонЭтикетки=Этикетка;
КонецПроцедуры
код на клиенте, но к справочникам нельзя обращаться на клиенте
как быть ?
78 luter-89
 
04.03.16
15:26
ОткрытьФорму("Справочник.ХранилищеШаблонов.ФормаВыбора", пар);
А зачем форму открывать?
79 luter-89
 
04.03.16
15:27
А список заполняй на сервере
80 Dyspho
 
04.03.16
15:35
как?(
81 Dyspho
 
04.03.16
15:37
Процедура СписокНаСервере()
    спис=Новый СписокЗначений;
    спис.Добавить(Справочники.ХранилищеШаблонов.НайтиПоНаименованию("этикетка 40на57"));
    спис.Добавить(справочники.ХранилищеШаблонов.НайтиПоНаименованию("Этикетка 20на30"));
    ДанныеВыбора=спис;

КонецПроцедуры
82 Dyspho
 
04.03.16
15:37
и на клиенте её вызывать?
83 Dyspho
 
04.03.16
15:38
1 хер все этикетки выпадают...
84 luter-89
 
04.03.16
15:43
&НаКлиенте
Процедура Реквизит1НачалоВыбора(Элемент, ДанныеВыбора,СтандартнаяОбработка)

СтандартнаяОбработка=Ложь;

Список =Новый СписокЗначений;
СформироватьСписок(Список);
ДанныеВыбора=Список ;

КонецПроцедуры

НаСервере
Процедура СформироватьСписок(Список)

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать
Спр.Ссылка КАК Ссылка
ИЗ Справочник.ХранилищеШаблонов КАК Спр
ГДЕ
Спр.КОД = &Код"

Запрос.УстановитьПараметр("Код","123");

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

    Список.Добавить(Выборка.Ссылка);

КонецЦикла

КонецПроцедуры
85 luter-89
 
04.03.16
15:43
По наименование искать не нужно
86 luter-89
 
04.03.16
15:44
Лучше сделать регистр как я тебе говорил