Копирование реквизитов и элементов табличной части справочника в соответствующий тип
|
|
#1 Чт Авг 07, 2008 15:23:35
|
|
|
Привет всем! Стоит задача скопировать реквезит Контрагент (проставляемый в документе), в текстовое поле добавленное мною(тип строка(100)), также необходимо скопировать элемент Номенклатура в табличной части документа , также в поле добавленное мною. Говоря простым языком нужно, чтобы при перепроведений документа найменование Контрагент скопировалось в пустое текстовое поле, такое же действие должно пройзоити в табличной части док-та с реквезитом Номенклатура. Я примено представляю как это все будет, элементарный цикл, наверное с таблицами значений или списками значений . но как это все увязать по порядку ????
Добавлено спустя 1 минуту 47 секунд:
аналогичная задача стоит в 1с 8.1 ....
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#3 Чт Авг 07, 2008 16:33:17
|
|
|
да именно, поле на форме и в него надо скопировать значение Контрагент(выбираемый ессено с одноименного справочника) в пустое текстовое поле, тоже самое действие надо пройзвести в табличной части документа с реквезитом номенклатура, то есть скопировать его в добавленное пустое поле в табличной части документа.
|
|
За помощь кликните ′Спасибо′ →
|
|
|
т.Сема
Нерезидент Баланса
|
|
|
|
#4 Чт Авг 07, 2008 17:51:52
|
Сообщить модератору
|
|
Может быть я ошибаюсь, но у меня подобная задача стояла при запоминании предыдущего контрагнета в договоре долевого стр-ва. Ибо при записи нового долевика старый долевик в договоре затирался. Суть - предыдущего контра перкидывает в реквизит Предыдущий контр, и долоняем его как строку в общий список предыдущих контров....
Код: |
[b]Процедура ПриЗаписи[/b]()
////записываем предыдущего контрагента
Если (ПустоеЗначение(ПредыдущийКонтрагент)=1) Тогда
ПредыдущийКонтрагент=Контрагент;
ИначеЕсли (ПустоеЗначение(ПредыдущийКонтрагент)=0) Тогда
Если (ПредыдущийКонтрагент<>Контрагент) Тогда
Если (ПустоеЗначение(СокрЛП(Строка(ПредыдущиеКонтрагенты)))=0) Тогда
ПредыдущиеКонтрагенты=СокрЛП(Строка(ПредыдущиеКонтрагенты))+"; "+СокрЛП(Строка(ПредыдущийКонтрагент));
Сообщить("Записан в предыдущие контрагенты "+СокрЛП(Строка(ПредыдущийКонтрагент)));
ПредыдущийКонтрагент=Контрагент;
ИначеЕсли (ПустоеЗначение(СокрЛП(Строка(ПредыдущиеКонтрагенты)))=1) Тогда
ПредыдущиеКонтрагенты=СокрЛП(Строка(ПредыдущийКонтрагент));
Сообщить("Записан в предыдущие контрагенты "+СокрЛП(Строка(ПредыдущийКонтрагент)));
ПредыдущийКонтрагент=Контрагент;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры |
Здесь ПредыдущийКонтрагент - реквизит шапки тип спр-к. контрагенты,
ПредыдущиеКонтрагенты - реквизит шапки тип строка. Он то и показывается в диалоге - типа "Сидоров, Петров..."...мона и в журнале показать также....
Может быть каг то таг ? Прием универсален...
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#5 Пт Авг 08, 2008 08:49:54
|
|
|
Спасибо большое !!! процедура супер, а такая простая, только я ее вставил в обработку проведения и строчку (ПредыдущийКонтрагент<>Контрагент) за менил на (ПредыдущийКонтрагент=Контрагент) мне не надо было его сравнивать на неравенство, задача стояла просто скопировать элемент. Но все равно большое спасибо !!!
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#6 Пт Авг 08, 2008 11:34:23
|
|
|
Да совсем забыл такое же действие необходимо пройзвести в табличной части документа с реквезитом Номенклатура(также создан дополнительный реквезит КопияНоменк ), предыдущий пример прекрасно работает, НО только с первой записью, попробовал циклом , не идет или я цикл неправильно делаю??? Вот он
Процедура ПриЗаписи()
Если (ПустоеЗначение(МаркаЦемента)=1) Тогда
МаркаЦемента=МаркаЦемента;
ИначеЕсли (ПустоеЗначение(МаркаЦемента)=0) Тогда
Если (МаркаЦемента = МаркаЦемента) Тогда
Если (ПустоеЗначение(СокрЛП(Строка(КопияНоменк)))=0) Тогда
Док = СоздатьОбъект("Документ.ОтгрузкаЖДВагонов");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку(МаркаЦемента)=1 цикл
КопияНоменк=СокрЛП(Строка(КопияНоменк))+"; "+СокрЛП(Строка(МаркаЦемента));
МаркаЦемента=МаркаЦемента;
конеццикла;
ИначеЕсли (ПустоеЗначение(СокрЛП(Строка(КопияНоменк)))=1) Тогда
КопияНоменк=СокрЛП(Строка(МаркаЦемента));
МаркаЦемента=МаркаЦемента;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#10 Пт Авг 08, 2008 13:48:18
|
|
|
спасибо всем за участие . мне подсказал коллега по работе . вот так работает
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
КопияНоменк =СокрЛП(Строка( МаркаЦемента.Наименование));
КопияНоменк = СокрЛП(Строка(КопияНоменк))+"; "+СокрЛП(Строка(МаркаЦемента));
МаркаЦемента = МаркаЦемента;
КонецЦикла;
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#11 Пн Авг 11, 2008 14:35:33
|
|
|
Да и еще один момент, наверное этот вопрос мне надо было бы в разделе Разработка 8.0 , но я так подумал, что мне надо бы продолжить тему здесь. теперь стоит задача немного дргуая.
в одном докумнте есть два реквезита в шапочной части документа Контрагент(тип.Справочник) и КопияКонтр(тип.Строка).
Задача. необходимо скопировать значение реквезита КопияКонтр в Контрагент. обратная задача решаеться достаточно легко.
Примерно вот так
КопияКонтр = "";
КопияКонтр = СокрЛП(Строка(Контрагент.Наименование));
а как сделать наоборот ?????
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
#12 Пн Авг 11, 2008 14:53:22
|
Сообщить модератору
|
|
Контрагент = НайтиПоНаименованию(СокрЛП(КопияКонтр));
Только как быть если однотипных наименований несколько?
Поэтому имхо такие задачи решать следует по другому, без текстовых полей.
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#13 Пн Авг 11, 2008 18:00:41
|
|
|
Не получаеться таким способом, ну никак мне не удаеться подцепится к какому либо свойству/методу этого текстового реквезита . что делать ?
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|