![]() |
Как в идентификатор записать значение переменной Вот собственно код внизу строчку пометил "!!!" Перем А,Б,Колво,Рекв,С; //******************************************* Процедура Сформировать(); А="Справочник."+СокрЛП(ВыбСпр.Вид()); Б=(0);Рекв=(1); Колво=Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(); Таб.НоваяКолонка("Заказ"); Пока Б<Колво Цикл Таб.новаяколонка(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Рекв).Идентификатор); Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; Значение=СоздатьОбъект(А); Значение.ВыбратьЭлементы(); Пока Значение.ПолучитьЭлемент()=1 Цикл Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда Таб.НоваяСтрока(); Таб.Заказ = Значение.ТекущийЭлемент(); Б=(0);Рекв=(1); //Таб.Корреспондент = Значение.Корреспондент; //Таб.КоррСчет = Значение.КоррСчет; //Таб.Местонахождение = Значение.Местонахождение; //Таб.Адрес = Значение.Адрес; //Таб.Телефоны = Значение.Телефоны; Пока Б<КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Рекв).Идентификатор); !!! как присвоить нужно значение С выводит ошибку (необходимо указать идентификатор)--> Таб.=Значение.; Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры; |
Предположу, что в Рекв в С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); следует удалить пробел :) |
Попробуй Шаблон |
(0) ужос... какая задача то была изначально? |
Функция ПрисвоитьЗначение(Чему, Что) Чему = Что; Возврат "" КонецФункции ..................... Докум.УстановитьАтрибут(НаимРеквизита, ЗначениеРеквизита); Шаблон("[ПрисвоитьЗначение("+НаимРеквизита+",ЗначениеРеквизита)]"); |
4-VZ > Ему не в документ, а в ТЗ надо засунуть (0) На Мисте тебе же ответили, или надо разжевать и в рот положить? И вместо вот этого барахла: Б=(0);Рекв=(1); Пока Б<КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); ... Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; Открой для себя уже цикл "для": НС=Таб.НомерСтроки; Для Л=1 по КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Л).Идентификатор); Таб.УстановитьЗначение(НС,С,Значение.ПолучитьАтрибут(С)); КонецЦикла; |
+5 а вообще весь этот говнокод лучше выбросить пока не поздно, ибо ДЛЯ ЧЕГО??? В ТЗ содержащую уже САМ элемент справочника, пихать колонки с его же реквизитами. Причем "нужный для запихивания" элемент ищется таким варварским способом... ВыбСпр - это что? Подозреваю, что реквизит на форме... |
(6) иногда для нетривиальных сортировок лучше загрузить реквизиты в ТЗ. |
7-Helen1986 > Глядя на: Значение=СоздатьОбъект(А); Значение.ВыбратьЭлементы(); Пока Значение.ПолучитьЭлемент()=1 Цикл Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда Таб.НоваяСтрока(); сдается мне, что сортировать там нечего |
[quote=Duke1C;35361916] +5 а вообще весь этот говнокод лучше выбросить пока не поздно, ибо ДЛЯ ЧЕГО??? В ТЗ содержащую уже САМ элемент справочника, пихать колонки с его же реквизитами. Причем "нужный для запихивания" элемент ищется таким варварским способом... ВыбСпр - это что? Подозреваю, что реквизит на форме... [/quote] ты прав, во всем прав. Спасибо что помог. Да я быдлокодер который нихрена не знает, да это моя первая программа в 1с которую как я понимаю и считать программой то нельзя еще рез изаените |
9-forawork >ну что я прав, я и сам знаю :))) ты лучше скажи помогло тебе (5) али нет ? А вообще, лучше бы описал саму задачу, для чего всё это ваяется, глядишь, подсказали бы люди оптимальный путь решения изначально. А не методом вставки дополнительных палочек в, и без того уже кривые, костыли. Об этом собственно и (6), а не оскорбленья для. |
Помогло. А по поводу задачи дело было так. Меня отправили на практику от техникума(там у нас был access), но на предприятии сказали что у них 1с предприятие следовательни и делать буду его. Вот дали первую задачку вывести реквизиты выбранного справочника в таблицу на форме как-то так. |
(11) вот так и надо было начинать тему, помогите люди добрые, подскажите путь истинный... 1С 7.7 вероятно ровесница твоя и велосипедов на ней написано уже столько, что никаких интернетов не хватит все объять)) самое простое для решения задачи и уяснения для себя ее возможных реализаций это сделать так [url]http://*******/1lQoDXI[/url] |
(12)+ [url=http://lmgtfy.com/?q=%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2+1%D1%81+7.7]сцылко[/url] |
11-forawork >Именно в "таблицу на форме", т.е. в ТаблицуЗначений или же в печатную форму, т.е. в Таблицу? и, кстати, про ВыбСпр так и не ответил |
13-user1C > боюсь, ему как новичку, те примеры сложноваты будут, к тому же, судя по: Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда там не весь справочник нужно выводить, а лишь один элемент |
(15) все мы были когда-то новичками и, если есть тяга к знаниям, то разобраться там - дело техники, было бы желание, примеры и документация... |
16-user1C >золотые слова :) так что, forawork, не стесняйся - спрашивай, заодно с учетом (14), научишься правильно формулировать вопросы, не только к "помогающим", но и заказчику. А это, если не полдела, то все равно не малая его часть, ибо предотвращает от лишних телодвижений/переделок. |
ВыбСпр- поле ввода с типом <Справочник>. Таблица добавленная на форму (по идее мне не разъяснили в какую таблицу,просто сказали выведи в таблицу). И по поводу элементов- выводятся только элементы выбранной записи в справочнике. |
18-forawork > В терминах 1Сv77 существуют объекты: [b]Таблица[/b] (таблица-документ, что-то вроде екселевского листа), [b]Таблица Значений[/b] (2-х мерная структура), [b]Табличная часть документа[/b], и [b]табличная часть формы[/b]. Последние три имеют весьма схожие методы и свойства, но суть их разная: ТаблицаЗначений есть объект динамический, как переменная, объявляется в модуле; табличная часть документа суть объект [b]метаданных[/b], состав предопределяется в конфигураторе для каждого значения строки, и служит хранилищем данных. Табличная часть формы есть элемент формы [отображения], форма документа с табличной частью в принудительном порядке содержит таблицу, состав которой тождественен составу табличной части документа. Эту таблицу нельзя убрать (но можно скрыть), колонки нельзя убрать (но можно скрыть, и можно динамически добавить), служит для ввода данных в табличную часть документа. Свойствами вывода на [em]печать[/em] обладает только Таблица. [em]Ссылочным[/em] объектом не являются все описанные виды таблиц, даже табличная часть документа: сам документ имеет значение [em]ссылка[/em], его табличная часть - нет. Форма, и все в ней существует, пока форма открыта. |
так, не то же самое? только не понятно "выводятся только элементы выбранной записи в справочнике" - это "реквизиты выбранного элемента справочника"? //******************************************* Процедура Сформировать(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; А=СоздатьОбъект("Справочник."+ВыбСпр.Вид()); Таб.НоваяКолонка("Заказ"); Таб.НоваяСтрока(); Таб.Заказ = А.НайтиЭлемент(ВыбСпр); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Периодический; ЗначениеРеквизита = "ПериодическийРеквизит"; Если ПериодическийРеквизит = 0 Тогда ЗначениеРеквизита = А.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический = СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект(ИдентификаторРеквизита,А); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяКолонка(ИдентификаторРеквизита); Таб.УстановитьЗначение(Таб.КоличествоСтрок(),ИдентификаторРеквизита,ЗначениеРеквизита); КонецЦикла; КонецПроцедуры |
единственно, я бы это повесил на не на кнопку "Сформировать", а на процедуру ПриВыбореВыбСпр() а то кнопку можно и нажать забыть |
извиняюсь, вот так немножко //******************************************* Процедура Сформировать(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб.Очистить(); Таб.НоваяКолонка("Заказ"); Таб.НоваяСтрока(); Таб.Заказ = ВыбСпр; Периодический = СоздатьОбъект("Периодический"); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Периодический; Если ПериодическийРеквизит = 0 Тогда //не периодический ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический.ИспользоватьОбъект(ИдентификаторРеквизита,ВыбСпр); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяКолонка(ИдентификаторРеквизита); Таб.УстановитьЗначение(Таб.КоличествоСтрок(),ИдентификаторРеквизита,ЗначениеРеквизита); КонецЦикла; КонецПроцедуры |
да и вообще что это за таблица значений с одной строкой если уж в ТЗ пихать, то так как-то //******************************************* Процедура Сформировать(); Таб.УдалитьСтроки(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; Если Таб.КоличествоКолонок() = 0 Тогда Таб.НоваяКолонка("Реквизит"); Таб.НоваяКолонка("Значение"); КонецЕсли; Периодический = СоздатьОбъект("Периодический"); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРеквизитовСправочника).Периодический; Если ПериодическийРеквизит = 0 Тогда //не периодический ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический.ИспользоватьОбъект(ИдентификаторРеквизита,ВыбСпр); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяСтрока(); Таб.Реквизит = ИдентификаторРеквизита; Таб.Значение = ЗначениеРеквизита; КонецЦикла; КонецПроцедуры лан, автор. тренируйся. |
+ не забываем про предопределенные реквизиты "Код" и "Наименование", которые через: Метаданные.Справочник("ххх").Реквизит() "не видно" |
Текущее время: 19:14. Часовой пояс GMT +3. |