К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как в идентификатор записать значение переменной

Гость
0 - 27.05.2014 - 10:49
Вот собственно код внизу строчку пометил "!!!"
Перем А,Б,Колво,Рекв,С;
//*******************************************
Процедура Сформировать();
А="Справочник."+СокрЛП(ВыбСпр.Вид());
Б=(0);Рекв=(1);
Колво=Метаданные.Справочник(ВыбСпр.Вид()).Реквизит ();
Таб.НоваяКолонка("Заказ");
Пока Б<Колво Цикл
Таб.новаяколонка(Метаданные.Справочник(ВыбСпр.Вид( )).Реквизит(Рекв).Идентификатор);
Б=(Б+1);Рекв=(Рекв+1);
КонецЦикла;
Значение=СоздатьОбъект(А);
Значение.ВыбратьЭлементы();
Пока Значение.ПолучитьЭлемент()=1 Цикл
Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда
Таб.НоваяСтрока();
Таб.Заказ = Значение.ТекущийЭлемент();
Б=(0);Рекв=(1);
//Таб.Корреспондент = Значение.Корреспондент;
//Таб.КоррСчет = Значение.КоррСчет;
//Таб.Местонахождение = Значение.Местонахождение;
//Таб.Адрес = Значение.Адрес;
//Таб.Телефоны = Значение.Телефоны;
Пока Б<КолВо Цикл
С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор);

!!! как присвоить нужно значение С выводит ошибку (необходимо указать идентификатор)--> Таб.=Значение.;
Б=(Б+1);Рекв=(Рекв+1);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры;



Гость
1 - 27.05.2014 - 11:01
Предположу, что в Рекв в С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); следует удалить пробел :)
Гость
2 - 27.05.2014 - 11:07
Попробуй Шаблон
3 - 27.05.2014 - 11:12
(0)
ужос... какая задача то была изначально?
Гость
4 - 27.05.2014 - 11:17
Функция ПрисвоитьЗначение(Чему, Что)
Чему = Что;
Возврат ""
КонецФункции
.....................
Докум.УстановитьАтрибут(НаимРеквизита, ЗначениеРеквизита);
Шаблон("[ПрисвоитьЗначение("+НаимРеквизита+",ЗначениеРеквиз ита)]");
Гость
5 - 28.05.2014 - 07:23
4-VZ > Ему не в документ, а в ТЗ надо засунуть
(0) На Мисте тебе же ответили, или надо разжевать и в рот положить?
И вместо вот этого барахла:
Б=(0);Рекв=(1);
Пока Б<КолВо Цикл
С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор);
...
Б=(Б+1);Рекв=(Рекв+1);
КонецЦикла;

Открой для себя уже цикл "для":
НС=Таб.НомерСтроки;
Для Л=1 по КолВо Цикл
С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Л) .Идентификатор);
Таб.УстановитьЗначение(НС,С,Значение.ПолучитьАтриб ут(С));
КонецЦикла;
Гость
6 - 28.05.2014 - 07:32
+5 а вообще весь этот говнокод лучше выбросить пока не поздно, ибо ДЛЯ ЧЕГО??? В ТЗ содержащую уже САМ элемент справочника, пихать колонки с его же реквизитами. Причем "нужный для запихивания" элемент ищется таким варварским способом...
ВыбСпр - это что? Подозреваю, что реквизит на форме...
Гость
7 - 28.05.2014 - 09:50
(6) иногда для нетривиальных сортировок лучше загрузить реквизиты в ТЗ.
Гость
8 - 28.05.2014 - 10:29
7-Helen1986 > Глядя на:

Значение=СоздатьОбъект(А);
Значение.ВыбратьЭлементы();
Пока Значение.ПолучитьЭлемент()=1 Цикл
Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда
Таб.НоваяСтрока();

сдается мне, что сортировать там нечего
Гость
9 - 28.05.2014 - 10:46
Цитата:
Сообщение от Duke1C Посмотреть сообщение
+5 а вообще весь этот говнокод лучше выбросить пока не поздно, ибо ДЛЯ ЧЕГО??? В ТЗ содержащую уже САМ элемент справочника, пихать колонки с его же реквизитами. Причем "нужный для запихивания" элемент ищется таким варварским способом... ВыбСпр - это что? Подозреваю, что реквизит на форме...
ты прав, во всем прав. Спасибо что помог. Да я быдлокодер который нихрена не знает, да это моя первая программа в 1с которую как я понимаю и считать программой то нельзя еще рез изаените
Гость
10 - 28.05.2014 - 10:53
9-forawork >ну что я прав, я и сам знаю :)))
ты лучше скажи помогло тебе (5) али нет ?
А вообще, лучше бы описал саму задачу, для чего всё это ваяется, глядишь, подсказали бы люди оптимальный путь решения изначально. А не методом вставки дополнительных палочек в, и без того уже кривые, костыли. Об этом собственно и (6), а не оскорбленья для.
Гость
11 - 28.05.2014 - 11:35
Помогло. А по поводу задачи дело было так. Меня отправили на практику от техникума(там у нас был access), но на предприятии сказали что у них 1с предприятие следовательни и делать буду его. Вот дали первую задачку вывести реквизиты выбранного справочника в таблицу на форме как-то так.
12 - 28.05.2014 - 11:50
(11)
вот так и надо было начинать тему, помогите люди добрые, подскажите путь истинный...
1С 7.7 вероятно ровесница твоя и велосипедов на ней написано уже столько, что никаких интернетов не хватит все объять))
самое простое для решения задачи и уяснения для себя ее возможных реализаций это сделать так http://*******/1lQoDXI
13 - 28.05.2014 - 11:54
(12)+
сцылко
Гость
14 - 28.05.2014 - 11:58
11-forawork >Именно в "таблицу на форме", т.е. в ТаблицуЗначений или же в печатную форму, т.е. в Таблицу?
и, кстати, про ВыбСпр так и не ответил
Гость
15 - 28.05.2014 - 12:03
13-user1C > боюсь, ему как новичку, те примеры сложноваты будут, к тому же, судя по:
Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда
там не весь справочник нужно выводить, а лишь один элемент
16 - 28.05.2014 - 12:07
(15)
все мы были когда-то новичками и, если есть тяга к знаниям, то разобраться там - дело техники, было бы желание, примеры и документация...
Гость
17 - 28.05.2014 - 12:13
16-user1C >золотые слова :)
так что, forawork, не стесняйся - спрашивай, заодно с учетом (14), научишься правильно формулировать вопросы, не только к "помогающим", но и заказчику.
А это, если не полдела, то все равно не малая его часть, ибо предотвращает от лишних телодвижений/переделок.
Гость
18 - 28.05.2014 - 18:51
ВыбСпр- поле ввода с типом <Справочник>. Таблица добавленная на форму (по идее мне не разъяснили в какую таблицу,просто сказали выведи в таблицу). И по поводу элементов- выводятся только элементы выбранной записи в справочнике.
Гость
19 - 28.05.2014 - 20:49
18-forawork > В терминах 1Сv77 существуют объекты: Таблица (таблица-документ, что-то вроде екселевского листа), Таблица Значений (2-х мерная структура), Табличная часть документа, и табличная часть формы.
Последние три имеют весьма схожие методы и свойства, но суть их разная: ТаблицаЗначений есть объект динамический, как переменная, объявляется в модуле; табличная часть документа суть объект метаданных, состав предопределяется в конфигураторе для каждого значения строки, и служит хранилищем данных. Табличная часть формы есть элемент формы [отображения], форма документа с табличной частью в принудительном порядке содержит таблицу, состав которой тождественен составу табличной части документа. Эту таблицу нельзя убрать (но можно скрыть), колонки нельзя убрать (но можно скрыть, и можно динамически добавить), служит для ввода данных в табличную часть документа.
Свойствами вывода на печать обладает только Таблица.
Ссылочным объектом не являются все описанные виды таблиц, даже табличная часть документа: сам документ имеет значение ссылка, его табличная часть - нет.
Форма, и все в ней существует, пока форма открыта.
Гость
20 - 28.05.2014 - 21:44
так, не то же самое?
только не понятно "выводятся только элементы выбранной записи в справочнике" - это "реквизиты выбранного элемента справочника"?

//*******************************************
Процедура Сформировать();
Если ВыбСпр.Выбран() = 0 Тогда
Возврат;
КонецЕсли;
А=СоздатьОбъект("Справочник."+ВыбСпр.Вид());
Таб.НоваяКолонка("Заказ");
Таб.НоваяСтрока();
Таб.Заказ = А.НайтиЭлемент(ВыбСпр);
Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл
ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор;
ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический;
ЗначениеРеквизита = "ПериодическийРеквизит";
Если ПериодическийРеквизит = 0 Тогда
ЗначениеРеквизита = А.ПолучитьАтрибут(ИдентификаторРеквизита);
Иначе
Периодический = СоздатьОбъект("Периодический");
Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,А);
ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата());
КонецЕсли;
Таб.НоваяКолонка(ИдентификаторРеквизита);
Таб.УстановитьЗначение(Таб.КоличествоСтрок(),Идент ификаторРеквизита,ЗначениеРеквизита);
КонецЦикла;
КонецПроцедуры
Гость
21 - 28.05.2014 - 21:47
единственно, я бы это повесил на не на кнопку "Сформировать", а на процедуру ПриВыбореВыбСпр()
а то кнопку можно и нажать забыть
Гость
22 - 28.05.2014 - 22:02
извиняюсь, вот так немножко

//*******************************************
Процедура Сформировать();

Если ВыбСпр.Выбран() = 0 Тогда
Возврат;
КонецЕсли;

Таб.Очистить();
Таб.НоваяКолонка("Заказ");

Таб.НоваяСтрока();
Таб.Заказ = ВыбСпр;

Периодический = СоздатьОбъект("Периодический");

Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл
ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор;
ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический;
Если ПериодическийРеквизит = 0 Тогда //не периодический
ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита);
Иначе
Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,ВыбСпр);
ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата());
КонецЕсли;
Таб.НоваяКолонка(ИдентификаторРеквизита);
Таб.УстановитьЗначение(Таб.КоличествоСтрок(),Идент ификаторРеквизита,ЗначениеРеквизита);
КонецЦикла;

КонецПроцедуры
Гость
23 - 28.05.2014 - 22:28
да и вообще
что это за таблица значений с одной строкой
если уж в ТЗ пихать, то так как-то

//*******************************************
Процедура Сформировать();

Таб.УдалитьСтроки();
Если ВыбСпр.Выбран() = 0 Тогда
Возврат;
КонецЕсли;
Если Таб.КоличествоКолонок() = 0 Тогда
Таб.НоваяКолонка("Реквизит");
Таб.НоваяКолонка("Значение");
КонецЕсли;

Периодический = СоздатьОбъект("Периодический");

Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл
ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор;

ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический;
Если ПериодическийРеквизит = 0 Тогда //не периодический
ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита);
Иначе
Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,ВыбСпр);
ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата());
КонецЕсли;

Таб.НоваяСтрока();
Таб.Реквизит = ИдентификаторРеквизита;
Таб.Значение = ЗначениеРеквизита;
КонецЦикла;

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

лан, автор. тренируйся.
Гость
24 - 29.05.2014 - 06:34
+ не забываем про предопределенные реквизиты "Код" и "Наименование", которые через:
Метаданные.Справочник("ххх").Реквизит() "не видно"


К списку вопросов






Copyright ©, Все права защищены