Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 609
от 23.09.2007, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 403, Экспертов: 58
В номере:Вопросов: 6, Ответов: 12


Вопрос № 102332: Здравствуйте!!! 1с 8 Как програмно узнать вид субконто(к примеру 1) у определенного счета???...
Вопрос № 102344: Здравствуйте!!! Приведеный код для семерки назначает значения для неопределенных элементов формы. как то же самое сделать для восьмерки????...
Вопрос № 102348: здравствуйте!! 1с 8 как назначить определенный тип элементу формы, у которого составной тип данных???...
Вопрос № 102424: Здравствуйте, уважаемые эксперты!!! 1с 8 1.У меня одному реквизиту присвоен тип данных справочник.ссылка, т.е. любой справочник. как програмно присвоить ему определенный тип справочник, (сотрудники, должности и т.п.) 2.как то же самое сде...
Вопрос № 102428: Здравствуйте!!! 1с 8 Всем спасибо еще раз за предыдущие ответы. У меня на форме 3 реквизита: субконто1,субконто2,субконто3. Как с помощью цикла получить к ним доступ??? типа субконто[a]=бла,бла,бла... ..
Вопрос № 102441: Доброго времени Вам. Кто поможет задачку решить? 1) есть реестр документов 2) выбираем тип документов, период... - после отбора наблюдаем красивую табличку Как распечатать каждый документ из этой таблицы в его собственной печатно...

Вопрос № 102.332
Здравствуйте!!!
1с 8
Как програмно узнать вид субконто(к примеру 1) у определенного счета???
Отправлен: 17.09.2007, 14:53
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Полозов Олег aka Asher
Здравствуйте, BigHard!

Возможно поможет следующая конструкция:

Приложение:

Ответ отправил: Полозов Олег aka Asher (статус: 9-ый класс)
Ответ отправлен: 18.09.2007, 02:29
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, то что надо :)

Отвечает: Яна
Здравствуйте, BigHard!
Определенный счет - это ссылка на элемент плана счетов. Т.е. имеет тип ПланСчетовСсылка. У него есть свойство ВидыСубконто. Посмотрите описание в синтакс-помощнике.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 18.09.2007, 08:42
Оценка за ответ: 5


Вопрос № 102.344
Здравствуйте!!!
Приведеный код для семерки назначает значения для неопределенных элементов формы. как то же самое сделать для восьмерки????

Приложение:

Отправлен: 17.09.2007, 16:11
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Полозов Олег aka Asher
Здравствуйте, BigHard!

В семерке назначение типов было необходимо исходя из того, что объекты не могли быть "мультитиповыми", т.е. не могли иметь одновременно несколько типов. В восьмерке эта возможность есть. Т.о. При задании типа реквизита документа, справочника, и т.п. в поле определения типа, справа, нажимаете кнопку с увеличительным стеклом, в форме выбора вверху ставим галку "Составной тип данных" и отмечаем галками те типы которые нам необходимы.

Ответ отправил: Полозов Олег aka Asher (статус: 9-ый класс)
Ответ отправлен: 18.09.2007, 02:52


Вопрос № 102.348
здравствуйте!!
1с 8
как назначить определенный тип элементу формы, у которого составной тип данных???
Отправлен: 17.09.2007, 16:39
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sim_tm
Здравствуйте, BigHard!

Ну любой элемент формы связан у вас с данными (предположим ПолеВвода1), у элемента составной тип, предположим строка и какой-нить справочник, тогда

ПолеВвода1 = "";
ПолеВвода1 = Справочники.Какой-тоСправочник.ПустаяСсылка();

ну и т.д.
Ответ отправил: Sim_tm (статус: 2-ой класс)
Ответ отправлен: 17.09.2007, 17:46

Отвечает: Яна
Здравствуйте, BigHard!
Элементу форму можно назначить составной тип, полностью соответсвующий всем возможным значениям. Но, если Вы хотите, чтобы пользователь мог выбрать значение только одного конкретного типа можно написать обработчик события НачалоВыбора у требуемого элемента управления, в котором открыть нужную Вам форму выбора или предложить пользователю на выбор несколько вариантов, а потом открыть выбранную форму выбора. По умолчанию элемент управления с составным типом предложит пользователю выбрать тип, а потом откроет форму выбора соответственно выбранному типу. Обработчик НачалоВыбора может использоваться для ограничения свободы выбора пользователя.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 18.09.2007, 08:52


Вопрос № 102.424
Здравствуйте, уважаемые эксперты!!!
1с 8
1.У меня одному реквизиту присвоен тип данных справочник.ссылка, т.е. любой справочник. как програмно присвоить ему определенный тип справочник, (сотрудники, должности и т.п.)
2.как то же самое сделать с реквизитом, которому указан составной тип данных?
Отправлен: 18.09.2007, 08:48
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sim_tm
Здравствуйте, BigHard!
Справончик.Ссылка это фактически тоже составной тип, включающий в себя все справочники.

ВашРеквизит = Справочники.Сотрудники.ПустаяСсылка(); Тем самым вы присвоете риквизиту тип "СправочникСсылка.Сотрудники". На форме при нажатии кнопки выбора откроется именно этот справочник.
если надо поменять тип то ВашРеквизит = Справочники.Должности.ПустаяССылка();

если же один из типов не является ссылочным (например строка или число) то делайте так:
ВашРеквизит = ""; Присвоет тип Строка
ВашРеквизит = 0; Присвоет риквизиту тип Число
Ответ отправил: Sim_tm (статус: 2-ой класс)
Ответ отправлен: 18.09.2007, 09:04
Оценка за ответ: 5
Комментарий оценки:
Наконец то все получилось, ура!!!


Вопрос № 102.428
Здравствуйте!!!
1с 8
Всем спасибо еще раз за предыдущие ответы.
У меня на форме 3 реквизита: субконто1,субконто2,субконто3. Как с помощью цикла получить к ним доступ???
типа субконто[a]=бла,бла,бла...
Отправлен: 18.09.2007, 09:31
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sim_tm
Здравствуйте, BigHard!
Ну если элементы у вас на форме как поля ввода то никак. вы можете в цикле получить доступ ко всем элементам формы:
Для каждого ТекЭлемент ИЗ ЭлементыФормы Цикл
...
КонецЦикла;
и уже в цикле проверять к примеру по имени. Но так что бы тока субконто.

Можно, к примеру, расположить субконто в таблице значений (сделать три строки с вашими субконто), убрать возможность добавления и удаления строк и тогда сделать:
Для Каждого ТекСтрока ИЗ ТаблицаЗначений Цикл
...
КонецЦикла;

Ответ отправил: Sim_tm (статус: 2-ой класс)
Ответ отправлен: 18.09.2007, 10:20

Отвечает: Астафьев Александр Николаевич
Здравствуйте, BigHard! Есть методы ПолучитьАтрибут(<ИмяРеквизита>) чтобы считать значение и УстановитьАтрибут(<?>,) чтобы установить занчение реквизита
Когда названия рексвизитов похожи то все просто:
Для А = 1 По 3 Цикл
Значен = ПолучитьАтрибут("Субконто"+А);
КонецЦикла;
Если у Вас эти реквизиты сидят в табличной части документа:
Выбратьстроки();
Пока Получитьстроку()=1 Цикл
Для А = 1 По 3 Цикл
Значен = ПолучитьАтрибут("Субконто"+А);
КонецЦикла;
КонецЦикла;
Можно все то же самое сделать через агрегатный объект МЕТАДАННЫЕ но это стоит делать когда у нас разные наименования реквизитов.
Ответ отправил: Астафьев Александр Николаевич (статус: 1-ый класс)
Ответ отправлен: 19.09.2007, 08:43


Вопрос № 102.441
Доброго времени Вам.
Кто поможет задачку решить?
1) есть реестр документов
2) выбираем тип документов, период... - после отбора наблюдаем красивую табличку

Как распечатать каждый документ из этой таблицы в его собственной печатной форме?
А если печатных форм несколько?

Спасибо.
Отправлен: 18.09.2007, 11:43
Вопрос задал: Muxa (статус: Студент)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Elric
Здравствуйте, Muxa!

В форме документа в процедуре ПриОткрытии() пишем следующие строки:

Если Форма.Параметр="Печать" Тогда
Печать();
СтатусВозврата(0);
Возврат;
КонецЕсли;

Теперь если в любой обработке написать строку
ОткрытьФорму(Док,"Печать");
(где Док -- ссылка на документ этого вида), то мы получим печатную форму документа, как если б мы открыли документ и нажали кнопку "Печать" (сама экранная форма при этом открываться не будет).

Если так вызвать на печать несколько документов подряд, мы получим несколько печатных форм. Чтобы все это было одной таблицей, или чтобы они без предварительного показа посылались сразу на печать, придется переделать еще и процедуру "Печать" в форме документов.

Если для адекватной отработки процедуре Печать() нужны какие-то дополнительные параметры, то рекомендую поместить все их в СписокЗначений и передавать уже его в качестве параметра формы документа.
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 18.09.2007, 12:10
Оценка за ответ: 5

Отвечает: Dmitry Stashenko
Здравствуйте, Muxa!

Ну, как вариант можно так:
1. Делаешь в наблюдаемой красивой табличке расшифровку, по которой открываешь документ через ОткрытьФорму(). В ОткрытьФорму() есть параметр КонтекстФормы, в котором можно передать значение в открываемую форму. В открытой форме это значение будет доступно как Форма.Параметр.
2. В документах в процедуре ПриОткрытии() проверяешь Форма.Параметр на соответствие с переданным значением, и если совпадает, то СтатусВозврата(0), и вызываешь процедуру Печать(). Ну а если несколько печатных форм, то это надо учесть в процедуре Печать().

Удачи
Ответ отправил: Dmitry Stashenko (статус: 10-ый класс)
Ответ отправлен: 18.09.2007, 12:23
Оценка за ответ: 5

Отвечает: Иванов Алексей Владимирович
Здравствуйте, Muxa!
Для 1С 7.7 решение видится следующее:
Существует системная процедура ОткрытьФорму(<Документ>,<КонтекстФормы>,<РежимПросмотра>). Она позволяет открыть форму документа и передать через <КонтекстФормы> любое значение, например название печатной формы, доступное в открытой форме документа как Форма.Параметр. Можно в предопределенной процедуре ПриОткрытии() контролировать этот параметр и соответственно выполнять какие-то действия. Например:
.........
Процедура ПриОткрытии()
Если Форма.Параметр = 1 Тогда
Печать(1);
Форма.Закрыть(0);
КонецЕсли;
КонецПроцедуры
..........
Наверняка придется слегка доработать процедуру печати, м.б. еще что-то, но в целом данный механизм работает.
Ответ отправил: Иванов Алексей Владимирович (статус: 3-ий класс)
Ответ отправлен: 18.09.2007, 18:17
Оценка за ответ: 4

Отвечает: Владимир (1С)
Здравствуйте, Muxa!

Я представляю решение так: создать дополнительный справочник, элементры которого будут указывать пути на внешние печатные формы для каждого документа. А процедура Печать будет определять Вид() данного документа и вызывать соответствующий элемент этого справочника.

А можно при вызове документа передавать параметр, например, "Печать", как при Торг-12 или оформлении возвратной накладной. А в процедуре модуля документа ПриОткрытии() разбирать Форма.Параметр. Если параметр печать - тогда вызвать процедуру печати этого документа а потом закрыть форму документа.

Пример:

В форму журнала поместите кнопку с формулой ОткрытьФорму(ТекущийДокумент,"Печать")

В документе:
Процедура ПриОткрытии() //Предопределенная процедура

Если ПустоеЗначение(Форма.Параметр)=0 Тогда
Если ТипЗначенияСтр(Форма.Параметр)="Строка" Тогда
Если ВРег(Форма.Параметр)="ПЕЧАТЬ" Тогда
Печать();
Форма.Закрыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;
... далее по тексту
КонецПроцедуры

Успехов!
Владимир.
Ответ отправил: Владимир (1С) (статус: 4-ый класс)
Ответ отправлен: 18.09.2007, 19:01
Оценка за ответ: 4


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60 от 22.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное