Перенос данных из одного документа в другой (программно) |
Я |
19.06.19 — 15:38
Привет всем, только начала изучать этот язык, прочитала пару книг и тут же вляпалась в проблему про которую не дописали в книгах.
Значение текстового поля (являющегося реквизитом табличной части), заполняемого на форме и сохраняющегося вместе с формой, надо перенести в другой документ создаваемый на его основании. Реквизит создан, на форме размещён, запросы знаю, но куда этот запрос поместить и как потом этому полю присвоить значение реквизита из совершенно другого документа?
Просветите, а то уже начинаю ненавидеть эту цифру и букву (1с)
1 — 19.06.19 — 15:39
продолжай ненавидеть , меньше вас — нам лучше )
ОбработкаЗаполнения
2 — 19.06.19 — 18:47
Злюки :-), про ОбработкаЗаполнения я знаю что конструктором создается, но я в готовой конфигурации пытаюсь работать. Там уже все создали только подправить надо, добавить реквизит в одном документе и в другом и сделать перенос. Где это делается я знаю, а вот как совсем никак.
3 — 19.06.19 — 18:53
(2) ну так смотри как другие реквизиты переносятся и делай так же
4 — 20.06.19 — 06:11
Не верю, что в книгах не написано про ввод на основании или про заполнение реквизитов объекта, вы какие-то странные книги прочитали.
5 — 20.06.19 — 06:59
(2) Там же есть документ-основание (он передаётся как входной параметр).
Проваливайся в него, в нужную тебе табличную часть и строку, вынимай в строке значение нужного реквизита.
Только на всякий пожарный сначала проверь его тип.
6 — 20.06.19 — 08:03
(4) Но она же девушка! ))
7 — 20.06.19 — 08:04
(0) Фото не опубликовано!
8 — 20.06.19 — 08:12
(6) Вообще-то catena тоже
9 — 20.06.19 — 08:13
(8) знаю, и она знает, почему я так ее подкалываю )
10 — 20.06.19 — 08:14
Попробуй использовать отладчик.
11 — 20.06.19 — 08:36
(9)Считается)))
12 — 20.06.19 — 08:40
(0) табличные части схожи? можно в получателе однозначно идентифицировать строку таб.части на основе строки источника?
или тебе просто таб.часть получателя заполнить надо?
13 — 20.06.19 — 08:50
(0) это не Ваше, выходите замуж.
Ps. Почему-то мне кажется что это не МашаЗ, а МишаЗ
14 — 20.06.19 — 09:05
[b]Жан Пердежон[/b], да они переносятся непонятно как, названий конкретных нет, какие то или массивы или структуры, этот клубок не расплести
[b]catena[/b], там это есть, но показано как конструктором этим пользоваться, а в конфигурации с которой работаю все написал какой-то маньяк всё вручную и очень запутано.
[b]Loyt[/b], а пример есть какой-нибудь, как проваливаться, вынимать и т.п.? Тип такой же я его сама создавала один-в-один
[b]SleepyHead[/b], (7) это нужно? Стыдно признаться я даже фото опубликовать здесь не умею.
[b]Nuobu[/b], (10) отладчик умею запускать, если он ещё что-то умеет, то для меня это сюрприз)))
[b]FIXXL[/b], нет, поле заполняется в таб. части любым текстом его он и должен перенести в точно такое же поле в другом документе.
[b]xXeNoNx[b], (13) а что у вас тут девушки редкое явление, у нас в отделе например одни девушки и женщины, только програмиировать никто не умеет)
15 — 20.06.19 — 09:09
(14) не нужно ставить [b] и [/b]. Эта магия здесь не работает.
16 — 20.06.19 — 09:09
(13) за программиста? Хитрый ход но надеюсь обойтись своими силами:-)
P.S. Выделение не работает почему-то
17 — 20.06.19 — 09:10
(15) уже поняла, странно, где-то было написано что это волшебный форум
18 — 20.06.19 — 09:11
(17) Здесь особая магия.
19 — 20.06.19 — 09:13
(17)Волшебный <> phpBB
(14)Процедура обработкаЗаполнения есть? Параметр Основание есть? Примеры использования его в этой процедуре есть? Я понимаю, что некоторые разработчики пишут под грибами и разобрать чужую писанину бывает сложно, но сейчас вы по сути просите объяснить основы, а это долго, нудно и дорого. Давайте хоть от чего-то отталкиваться: на чем конкретно вы застопорились?
20 — 20.06.19 — 09:14
(13) Сейчас время такое, что и Миша может замуж выйти.
21 — 20.06.19 — 09:35
(14) >>а в конфигурации с которой работаю все написал какой-то маньяк всё вручную и очень запутано.
А как конфигурация называется если не секрет?
22 — 20.06.19 — 09:43
(19) сейчас посмотрю что из этого есть. Спасибо.
(20) согласна, но и будь я Мишей всё равно замуж не хочу
(21) Бухгалтерия, но в неё то и дело вносились изменения.
23 — 20.06.19 — 09:49
(19) ОбработкаЗаполнения есть
Написано так
Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)
Параметр Основание — нет, там код небольшой могу написать.
24 — 20.06.19 — 09:51
Почему что то выделяется а что-то нет, какой тут 1с, как на форуме нормально писать бы разобраться)))
25 — 20.06.19 — 10:00
(23)Вас должен интересовать параметр ДанныеЗаполнения
26 — 20.06.19 — 10:02
27 — 20.06.19 — 10:02
Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)
ТипДанныхЗаполнения = ТипЗнч (Данные Заполнения);
Если ДанныеЗаполнения <> Неопределено И ТипДанныхЗаполнения <> Тип («Структура») И Метаданные(). ВводитсяНаОсновании.Содержит (ДанныеЗаполнения.Метаданные()) Тогда ЗаполнитьПоДокументуОснованию (ДанныеЗаполнения);
28 — 20.06.19 — 10:03
Иначе СуммаВключаетНДС = Истина;
КонецЕсли;
ЗаполнениеДокументов.Заполнить (ЭтотОбъект, ДанныеЗаполнения);
КонецПроцедуры
29 — 20.06.19 — 10:04
Всё что там есть, больше совсем ничего, и непонятно что откуда и куда
30 — 20.06.19 — 10:06
(26) спасибо прочитаю, но замер мне не нужен, я где то читала что можно с помощью чего то посмотреть какое значение у переменной в данный момент как эта штука называется?
31 — 20.06.19 — 10:13
(30) Shift+F9
(28) если встать курсором на Заполнить в строке «ЗаполнениеДокументов.Заполнить (ЭтотОбъект, ДанныеЗаполнения);» и нажать F12, то сможешь туда «провалиться»
32 — 20.06.19 — 12:00
(31) спасибо!
А как насчёт верхнего кода или я не то написала?
33 — 20.06.19 — 12:16
(32)Так написали же: жать ф12 и идти внутрь процедур.
34 — 20.06.19 — 12:17
(32)Ну и, к слову, в приведенном коде ничего наркоманского не написано. Если вы не можете понять даже то, что написано в этой процедуре, то писать вам еще рано.
35 — 20.06.19 — 12:19
(33) (34) Есть подозрение, что ТС не понимает что такое «процедура» (
36 — 20.06.19 — 12:20
(35) Проце- что? :))
37 — 20.06.19 — 12:28
(34) а я и не писала что он наркоманский, просто сложный (для меня), ну писать мне рано я согласна, а как подготовиться если не путём проб и ошибок?
38 — 20.06.19 — 12:32
(37) прогони весь код отладчиком построчно и попробуй понять, где заполняются соседние поля (и ТЧ вообще)
39 — 20.06.19 — 12:33
(35) тот код что выше писала не я, я написала запрос в модуле формы который берёт данные из реквизита одного документа и помещает его в реквизит другого документа:
40 — 20.06.19 — 12:39
аСервере
Процедура ЗаполнитьДобавленныеКолонкиТаблиц();
ПараметрыКонтекста = Новый Структура ();
ПараметрыКонтекста.Вставить («Организация», Объект.Организация);
ПараметрыКонтекста.Вставить («Дата», Объект.Дата);
Запрос = Новый Запрос;
Запрос.Текст =
41 — 20.06.19 — 12:40
ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Ссылка»;
42 — 20.06.19 — 12:41
РезультатЗапроса = Запрос.Выполнить ();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать ();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект.ТоварыИУслуги.Содержание = ВыборкаДетальныеЗаписи.Содержание;
КонецЦикла;
43 — 20.06.19 — 12:43
Напомню это в модуле формы, в модуле объекта писала выше, код исполняется значение не переносится
(39) ф12 и др. я попробую когда станет доступна база, пока у нас в отделе всё висит
44 — 20.06.19 — 12:51
Вы обманываете, этот код не может исполняться. Не установлен параметр запроса, в запросе нет поля «Содержание», нет позиционирования на строке при заполнении.
45 — 20.06.19 — 15:32
(44) может недокопировала, как будет доступ гляну
46 — 20.06.19 — 15:40
Запрос.УстановитьПараметр («Ссылка», Ссылка);
47 — 20.06.19 — 15:41
Блин т.е. Запрос.УстановитьПараметр («Ссылка», Объект.Ссылка); вот недостающая строка?
48 — 20.06.19 — 15:46
(44) а то что нет поля содержание, так в запросе получаю ссылку на табличную часть в документе, может здесь моя ошибка?
49 — 20.06.19 — 15:47
Т.е. на сам документ, я имела ввиду может надо на табличную часть
50 — 20.06.19 — 15:48
(41) А можно поинтересоваться, в чём смысл сего запроса?
51 — 20.06.19 — 15:50
(50) получить для реквизита содержание из другого документа
52 — 20.06.19 — 15:51
Данные блин как тут редактировать кошмар
53 — 20.06.19 — 15:52
(51) Тогда это неправильный запрос. Он вернёт тебе лишь ту самую ссылку документа, которую ты передаёшь ему в параметры :))
54 — 20.06.19 — 15:52
+(53) Точнее, он тебе не нужен, т.к. возвращает ровно то, что ты передаёшь.
55 — 20.06.19 — 15:59
(54) запрос совсем не нужен, или такой запрос не нужен?
56 — 20.06.19 — 15:59
(0) Отладчиком пользоваться умеешь? Как называется конфигурация?
57 — 20.06.19 — 16:01
(56) умею ф5 нажимать, выше рассказали больше, так что умею, конфигурация бухгалтерия
58 — 20.06.19 — 16:03
(55) Такой запрос не имеет смысла — просто лишнее обращение к БД. А нужен ли он в принципе — тебе решать. Я пока так и не понял, что именно, откуда и куда ты хочешь перенести.
59 — 20.06.19 — 16:28
(57) Отлично. Научись нажимать соседние кнопочки и смотреть как меняются переменные, свойства и какие методы используются. На основе этой информации надо научиться разбирать код. На основе этого сможешь понять, где ошибаешься и что используешь не так. Есть полезное сочетание кнопок Ctrl-F1 для вызова Синтаксис-Помощника. Ты вначале пути. Набирайся терпения и сил.
60 — 21.06.19 — 14:53
(31) проваливаюсь в модуль, буду копать больше мне увы ничего не остается.
Шифт+ф8 не работает, ничего не происходит
61 — 21.06.19 — 14:57
(58) есть поле с текстом произвольным текст вводится на форме и сохраняется вместе с документом, что-то вроде комментария, так вот мне нужно чтобы при создании документа на основании этого, текст точно так же копировался как и остальные реквизиты. А вот как перенести текст из одного реквизита табл. части документа1 в другой реквизит табл. части документ2 я не знаю. Вот и вся проблемка :-/
62 — 24.06.19 — 10:10
(61)
63 — 24.06.19 — 10:22
(61) в таблчастях там не всё так просто, там ещё строки есть. Таблчасть состоит из строк. ТО есть нельзя сказать «реквизита табл. части», реквизит это колонка таблчасти, надо еще строку таблчасти указать. Вы целиком всю колонку хотите скопировать? или что?
64 — 24.06.19 — 11:22
Там, где-то выше, было:
«Объект.ТоварыИУслуги.Содержание = ВыборкаДетальныеЗаписи.Содержание;»
без [] почему-то.
Или цикл должен был быть
Для каждого ЭлСтр из Объект.ТоварыИУслуги Цикл
и уже
ЭлСтр.Содержание = ВыборкаДетальныеЗаписи.Содержание;
Если для каждой строки Содержание надо установить одинаковое.
Не помню, есть ли для ТЧ «ЗаполнитьЗначения(Колонка, Значение)», а то, может, ещё проще
Объект.ТоварыИУслуги.ЗаполнитьЗначения(«Содержание», ВыборкаДетальныеЗаписи.Содержание);»
65 — 25.06.19 — 12:58
(63) там в основном одна запись, но нужно чтобы каждой записи строки в документе1 соответствовала запись строки в документе2. Допустим в строке реквизита «содержание» написано: «Приветики» и при создании нового документа на основании в строке содержание тоже было написано: «Приветики».
catena
66 — 25.06.19 — 13:25
(65)Это не отменяет необходимость перебора строк. Даже если в ТЧ одна строка, нужно сперва спозиционироваться на эту строку, чтобы присвоить значение.
Процедура предназначена для программного копирования содержимого реквизитов и/или табличных частей из одного документа (источника) в другой документ (приёмник). В параметры процедуры передаем документ-приёмник (из которого будем копировать реквизиты и/или табличные части) и документ-источник (куда будем вставлять реквизиты и/или табличные части).
В параметр СвойстваВключаемые можно передать строку с перечнем имён реквизитов (через запятую) которые будут скопированы, если параметр оставить пустым — то будут скопированы все реквизиты/табличные части.
В параметр СвойстваИсключаемые можно передать строку с перечнем имён реквизитов (через запятую) которые будут исключены (не будут скопированы), если параметр оставить пустым — то будут скопированы все реквизиты/табличные части без исключений.
Здравствуйте! Я новичок в 1С, у меня учебная задача, собственная конфигурация.
Есть документ «Индивидуальный заказ» с тч «Заказ». На документе есть кнопка, при нажатии на которую, создаются документы «Конкретное изделие в заказе». Сколько строк в тч, столько и создается документов. Вопрос в том, как перенести реквизит Сумма Документа из документа «Конкретное изделие» в тч документа «Индивидуальный заказ»? Подскажите, в каком направлении идти?
Со второй картинки суммы нужно скопировать на первую. При этом, чтобы они не перепутались
0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
|
1 |
|
Как из одного документа перенести значение из табличной части в реквизит другого документа?14.12.2018, 15:33. Показов 7041. Ответов 9
Только начинаю осваивать 1С, учебная задача. Миниатюры
0 |
841 / 604 / 211 Регистрация: 24.07.2013 Сообщений: 2,101 |
|
14.12.2018, 18:26 |
2 |
Galina_71, Почитайте форум. Тут примерно каждое третье сообщение с Вашим вопросом.
документ «Конкретное изделие в заказе» Кажеться, что это должен быть все-таки справочник.
0 |
0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
|
14.12.2018, 19:15 [ТС] |
3 |
Нет, это именно документ. Нужно что-то типа на какой строке таблицы стоишь, такой документ «конкретное изделие» и создаешь (по количеству позиций в заказе).
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,159 Записей в блоге: 1 |
|
15.12.2018, 00:05 |
4 |
для каждого Стр из Заказы Цикл
0 |
0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
|||||
15.12.2018, 20:40 [ТС] |
5 |
||||
При таком коде создается документ только на последнюю строчку таблицы.
Миниатюры
0 |
Galina_71 0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
||||
15.12.2018, 21:15 [ТС] |
6 |
|||
При таком коде создается документ только на последнюю строчку таблицы.
0 |
polax 1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,394 |
||||||||
15.12.2018, 22:10 |
7 |
|||||||
Galina_71,
Добавлено через 8 минут
0 |
0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
|
16.12.2018, 17:10 [ТС] |
8 |
При таком коде значения реквизитов не копируются совсем.
0 |
0 / 0 / 0 Регистрация: 30.04.2016 Сообщений: 11 |
|
16.12.2018, 17:45 [ТС] |
9 |
Точнее документы создаются. При нажатии кнопки Создать на основании открывается документ, но реквизиты в нем пустые (см вложения 1,2, красным выделены реквизиты, которые должны быть скопированы). При этом в списке документов документы уже созданные лежат.
0 |
1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,394 |
|
16.12.2018, 22:34 |
10 |
Galina_71,Проверяйте типы значений. например, Код как правило строка, а у вас на втором скрине число. Думаю и другие типы косячат
0 |
В типовых конфигурациях 1С есть возможность копировать строки из одного документа в другой. Она присутствует в документах содержащих поле Номенклатура. Например, в программе «1С:Бухгалтерия 8» (ред. 3.0) такие документы как: счета, поступление товаров, реализации, перемещения. Данные строк этих документов можно копировать в табличные части с номенклатурой из других документов, и наоборот.
Обратите внимание! Копироваться будут только совпадающие поля. Например, в документе перемещения нет суммовых показателей, поэтому будет скопировано только количество.
1. Копирование с помощью кнопок, горячих клавиш и меню
Копирование строк можно осуществить с помощью кнопок Копировать и Вставить (им соответствуют горячие клавиши, информация о которых отображается при наведении курсора мыши). Сам процесс копирования очень прост:
Откройте документ, из которого требуется скопировать строки табличной части. Выделите нужные строки. Для этого можно щелкать левой клавишей мыши по нужным строкам с зажатой на клавиатуре клавишей Ctrl. Либо можно выделить сразу все строки таблицы с помощью сочетания клавиш Ctrl+A в английской раскладке.
После этого нажмите на кнопку Копировать . При этом выделенные строки будут скопированы в буфер обмена. Обратите внимание, рядом расположена кнопка Вставить. Точно такие же кнопки будут и в табличной части того документа, в который вы будете вставлять строки. При необходимости скопированные строки можно вставить и в текущий документ. Затем перейдите или создайте нужный документ и там нажмите кнопку Вставить строки
Как видно на Рисунке 2. выделенные строки вставились в том порядке и с теми же данными что и в документе доноре.
Команды копирования также можно вызывать с помощью контекстного меню. Нажмите правой клавишей мыши на табличной части документа внизу будут располагаться команды копирования и вставки. Таким образом, у вас есть как минимум три способа вызова данного механизма.
2. Перенос с помощью команды изменить.
Еще один удобный и универсальный способ добавления строк в нужный вам документ это использование команды Изменить. Если она доступна для данного документа, то она, как правило, будет располагаться в верхней панели табличной части.
После нажатия на кнопку Изменить. Откроется форма служебной обработки изменения таблицы товаров. Далее по кнопке Добавить из документа сначала необходимо выбрать вид документа (в списке, будут присутствовать все доступные для подбора строк виды документов). Затем нужно выбрать непосредственно тот документ, из которого будут добавляться новые строки. После этого строки добавятся в форму.
Обратите внимание, что добавлять можно сразу из нескольких документов. Это можно сделать последовательно повторив процедуру выбора нужного документа. Также можно сразу выделить мышью нужные документы из списка и обработка перенесет данные из всех выделенных документов. Подобранные таким образом строки, необходимо перенести в исходный документ. Строки можно предварительно отредактировать и снять флажки с ненужных позиций. После этого нужно нажать Перенести в документ.
Описанные выше приемы переноса строк показывались на конфигурации 1С:Бухгалтерия. Эти механизмы также работают и в других актуальных типовых конфигурациях, в которых ведется учет по номенклатуре УТ 11, ERP 2, УНФ 1.6, КА 2.4 и других.
На этом все.
Подписывайтесь на наши группы в социальных сетях, чтобы не пропустить новые публикации.
Поделитесь ссылкой, если Вам понравилась эта статья.
Необходимо создать новый документ(Документ1) со списком реквизитов документа (Документ2). Затем взять заданные документы (Документ1) за определённый период и все значения реквизитов этих документов поместить в только что созданный документ(Документ1). Затем всю эту бодягу вывести в форме документа (Документ1). Чо-то как только не парился не могу получить нормального заполнения документа. ПОМОГИТЕ КТО НИБУДЬ.
Делаешь архив. Разворачиваешь в другом каталоге, меняешь имя Документ2 на Документ1. После этого сливаешь md обеих баз. В первой получаешь Документ идентичный Документу2. Дальше вопрос не ясен. Нужно перенести Данные каждого попавшегося документа2 в каждый новый Документ2? Не ясно что нужно всетаки вывести в форме Документа1?
Бр-р-р-р ни фига не понял. Это все из одой базы?
Как я поняла это все должно быть в одной базе. Но автора нет, и неясно что он хочет.
Нескромный вопрос — а зачем в нужена была другая база? Контрол-С и Контрол-В не работают?
Да. Согласна. Полнейшая глупость.
Еще можно контрол прижать и мышью перетащить. А кажеться изобретает «универальный» документ….
Дело в том, что оба документа находятся в одной базе. Причём документов вида 2 очень много, они содержат различную информацию о контрагентах. Часто требуется создавать и приоводить 1 документ типа 2, содержащий кучу выбранных документов типа 1. Просто действительно это всё можно сделать вручную, но при этом необходимо нажать как минимум 50 раз на мышку. Куда проще автоматически выбрать необходимые документы, слить все их поля в один документ и этот окумент вывести на экран для анализа бухгалтером.
А разве сложно? В твоем случае два пути. Даже три. Написать свою обработку. Взять готовую. Написать ввод документа на основании.
так я и непонял эти доки ОПРЕДЕЛЕННЫХ видов, или речь идет об универсальном доке. Делал такой док сам, да и на проклабе есть — «универсальный движитель регистров», т.е. «шапка» дока подстраивалась под регистр…..
Спасибо за информацию. Еле еле сделал то что хотел. Тут просто старый программист полей множество насоздавал с неопределённым типом и поэтому при создании документа на основании нескольких выбранных не получалось совсем.
Тэги:
Комментарии доступны только авторизированным пользователям
Отправить эту статью на мою почту
Иногда бывает необходимо скопировать табличную часть документа в другой документ. Самый типичный случай — это когда вы создали документ Счет на оплату покупателю с большим количеством номенклатуры и теперь Вам понадобилось на основании этого документа сделать документ Поступление товаров и услуг, но к сожалению, ввести на основании счета документ Поступление нельзя, можно конечно сначала сделать реализацию, потом на основании нее ввести Поступление товаров и услуг, но это лишнее «телодвижение», да и бывают случае, когда оба документа вобще никак не относятся друг друг, ни через какой документ.
Но выход есть. В 1С (обычные формы) давным-давно есть очень удобный функционал, только многие пользователи его просто не замечают и даже не знают зачем нужна эта кнопка «Изменить»:
При нажатии на кнопку «Изменить» открывается окно «Обработка табличной части», где у вас появляется возможность заполнить текущую табличную часть, например, данными из практически любого документа, а также вы можете два клика изменить все цены на определенный процент, или сделать округление…
Для того, чтобы перенести номенклатуру из одного документа в другой выберите вид действия «Добавить из документа», далее в поле на против нажмите на многоточие:
Выберите нужный документ из списка, например, если Вы желаете перенести данные из документа Счет на оплату покупателю, то выберите «Счет на оплату покупателю».
Нажмите кнопку Выполнить, убедитесь, что нужные товарыуслуги отобразились в таблице. Вы можете пометить флагами только необходимые позиции и снизу установить флаг «Переносить в документ только отмеченные позиции», тогда при нажатии кнопки «ОК» в табличную часть документа перенесутся только отмеченные позиции. Нажмите кнопку ОК:
В итоге, номенклатура успешно перенеслась в нужный документ из другого документа:
Обсудить статью на 1С форуме?