1.
G_112691538235479115945
18.03.21 14:44 Сейчас в теме
Добрый день. Я совсем начинающий программист. Суть задачи.
Необходимо для любого документа который выберет пользователь создать обработку выгрузки данного документа в файл.
Проблема у меня уже на первом этапе. Я никак не могу сообразить как на клиенте получить ссылку на документ с которого запустили обработку.
очень прошу либо подскажите либо направьте по нужному адресу.
при попытке выполнить вот такой код выдает форму запроса а не выбранного документа.
Но, наверно я не прав, правда в другом), не совсем понятна задача, есть реквизит документа на форме?
Тогда ссылка = Объект.НашДокумент, где НашДокумент - название реквизита, стоит приложить скрин формы из конфигуратора
(8) А владелец формы вообще заполнен в этой обработке? Как она вызывается?
Для решения этой конкретной задачи внешняя обработка в принципе не нужна, но если менять конфигурацию нельзя, то:
1. Создают внешнюю обработку в соответствии с требованиями платформы (ищи в гугле "Внешняя обработка 1С").
2. В ней делают кнопку выгрузить.
3. Регистрируют ее в системе, добавляют список документов, для которых она будет доступна. При нажатии на появившуюся в форме документов кнопку вызывается эта обработка.
Если есть возможность изменять конфигурацию, то просто делают глобальную команду, в тип источника которой закидывают все те объекты, которые хочется выгрузить., а там такой примерно код:
З = Новый ЗаписьXML;
З.Открыть(ИмяФайла);
СериализаторXDTO.ЗаписатьXML(З, Источник);
З.Закрыть();
(8) А владелец формы вообще заполнен в этой обработке? Как она вызывается?
Для решения этой конкретной задачи внешняя обработка в принципе не нужна, но если менять конфигурацию нельзя, то:
1. Создают внешнюю обработку в соответствии с требованиями платформы (ищи в гугле "Внешняя обработка 1С").
2. В ней делают кнопку выгрузить.
3. Регистрируют ее в системе, добавляют список документов, для которых она будет доступна. При нажатии на появившуюся в форме документов кнопку вызывается эта обработка.
Если есть возможность изменять конфигурацию, то просто делают глобальную команду, в тип источника которой закидывают все те объекты, которые хочется выгрузить., а там такой примерно код:
З = Новый ЗаписьXML;
З.Открыть(ИмяФайла);
СериализаторXDTO.ЗаписатьXML(З, Источник);
З.Закрыть();
11.
G_112691538235479115945
18.03.21 16:21 Сейчас в теме
я кажется понял в чем проблема. у меня команда выгрузить доступна через сервис . а нужно я так понимаю чтобы кнопка была на форме документа. или не обязательно?
12.
G_112691538235479115945
19.03.21 07:27 Сейчас в теме
(10)Почитал как создается обработка по вашей ссылке. Понял, что сильно тупанул. Добавил реквизит с типом документссылка. Теперь перед выгрузкой можно выбрать нужный документ. Теперь вопрос как передать эту ссылку на сервер? Понимаю, что вопросы тупые и на уровне начальных уроков, но курсы по программированию, которые я проходил, были ужасные. По этому такие вопросы.
Но, наверно я не прав, правда в другом), не совсем понятна задача, есть реквизит документа на форме?
Тогда ссылка = Объект.НашДокумент, где НашДокумент - название реквизита, стоит приложить скрин формы из конфигуратора
13.
G_112691538235479115945
19.03.21 07:49 Сейчас в теме
(12)в целом я разобрался как передать ссылку на сервер. но при РеквизитФормыВЗначение выдает такую ошибку:
{Обработка.ВыгрузкаФайлов.Форма.Форма.Форма(39)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
Док = РеквизитФормыВЗначение(ДокументСсылка);
по причине:
Несоответствие типов (параметр номер '1')
Несоответствие типов (параметр номер '1')
вот сам код:
&НаСервере
Процедура выгрузитьНаСервере(ДокументСсылка)
Док = РеквизитФормыВЗначение(ДокументСсылка);
Для каждого реквизит Из Док.метаданные().реквизиты Цикл
Сообщить(Реквизит);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура выгрузить(Команда,ДокументСсылка)
ВыгрузитьНаСервере(ДокументСсылка);
КонецПроцедуры
16.
G_112691538235479115945
19.03.21 11:37 Сейчас в теме
Объясните еще пожалуйста как работать с РеквизитФормыВЗначение. что должно подставляться в параметр "Имя реквизита". у меня почему то при попытке подставить туда ДокументСсылка выдает ошибку."Недопустимое значение параметра (параметр номер '1')"
или дайте почитать что нибудь для тупых на эту тему...
17.
G_112691538235479115945
22.03.21 15:06 Сейчас в теме
в общем в итоге вот что получилось.
&НаСервере
Процедура выгрузитьНаСервере(ДокСсылка)
Текст = Новый ТекстовыйДокумент;
ИмяДокумента = ДокСсылка.Метаданные().Имя;
ДатаДокумента = ДокСсылка.Дата;
текст.ДобавитьСтроку("" + ИмяДокумента);
текст.ДобавитьСтроку("" + ДатаДокумента);
для каждого Шреквизит из ДокСсылка.метаданные().Реквизиты цикл
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя]) ;
конецЦикла;
Для каждого ТабЧасть из докссылка.Метаданные().ТабличныеЧасти Цикл //Определеяем имена табличных частей
Для каждого ТекСтрока из Докссылка[ТабЧасть.имя] цикл //используя имя табличной части получить строки ТЧ
для каждого ТЧреквизит из Табчасть.реквизиты цикл //находясь на строке ТЧ перебираем реквизиты ТЧ
текст.ДобавитьСтроку("ТабличныеЧасти."+ ТабЧасть.Имя+" "+ ТЧреквизит.Имя+"="+ТекСтрока[""+ТЧреквизит.имя]);
КонецЦикла;
КонецЦикла;
КонецЦикла;
Текст.Записать("C:\1C\2.txt");
КонецПроцедуры
&НаКлиенте
Процедура выгрузить(Команда)
ВыгрузитьНаСервере(ДокСсылка);
КонецПроцедуры]Скрытый текст