Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  COMобъекты Запрос и получение значений результата
DmitryPushkarev
Отправлено: 21.08.20, 13:28


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


Цитата(DmitryPushkarev @ 20.08.20, 8:17) *
Появился еще вопрос по теме. Есть реквизит в документе ссылка на перечисление, получаю тоже как комобъект, возможно ли получить значение этого реквизита?

   |    ПеремещениеТоваров.НДСвСтоимостиТоваров,


Нашел решение в Запросе найти
ПРЕДСТАВЛЕНИЕ (ПеремещениеТоваров.НДСвСтоимостиТоваров)
,вроде бы является одним из возможных решений.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #165826 · Ответов: 4 · Просмотров: 2017
 

>  COMобъекты Запрос и получение значений результата
DmitryPushkarev
Отправлено: 20.08.20, 7:17


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


Появился еще вопрос по теме. Есть реквизит в документе ссылка на перечисление, получаю тоже как комобъект, возможно ли получить значение этого реквизита?

   |    ПеремещениеТоваров.НДСвСтоимостиТоваров,


  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #165788 · Ответов: 4 · Просмотров: 2017
 

>  COMобъекты Запрос и получение значений результата
DmitryPushkarev
Отправлено: 16.08.20, 14:17


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


Версия 8.3.7.1845
Бухгалтерия для Беларуси 1.6
Доброго времени суток. Делаю запрос и получаю COM объект в значениях.
Как получить сами значения из запроса, то есть не COMобъекты, а цифры строки и т.д.?

ЗапросВТорг = База.NewObject("Запрос");
    ЗапросВТорг.Текст = "ВЫБРАТЬ
                        |    ПеремещениеТоваров.Ссылка,
                        |    ПеремещениеТоваров.ВерсияДанных,
                        |    ПеремещениеТоваров.ПометкаУдаления,
                        |    ПеремещениеТоваров.Номер,
                        |    ПеремещениеТоваров.Дата,
                        |    ПеремещениеТоваров.Проведен,
                        |    ПеремещениеТоваров.Автомобиль,
                        |    ПеремещениеТоваров.ВидОперации,
                        |    ПеремещениеТоваров.ОтражатьВНалоговомУчете,
                        |    ПеремещениеТоваров.Владелец,
                        |    ПеремещениеТоваров.Водитель,
                        |    ПеремещениеТоваров.ДоверенностьДата,
                        |    ПеремещениеТоваров.ДоверенностьНомер,
                        |    ПеремещениеТоваров.ДоверенностьФИО,
                        |    ПеремещениеТоваров.Сделка,
                        |    ПеремещениеТоваров.Заказчик,
                        |    ПеремещениеТоваров.КоличествоСтрокНаСтраницеПриложения,
                        |    ПеремещениеТоваров.Комментарий,
                        |    ПеремещениеТоваров.КомуВыданыТМЦ,
                        |    ПеремещениеТоваров.СчетСписанияНДСНУ,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ1,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ2,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ3,
                        |    ПеремещениеТоваров.НДСвСтоимостиТоваров,
                        |    ПеремещениеТоваров.НомерНакладной,
                        |    ПеремещениеТоваров.Организация,
                        |    ПеремещениеТоваров.ОснованиеОтпуска,
                        |    ПеремещениеТоваров.Ответственный,
                        |    ПеремещениеТоваров.ОтпускПроизвел,
                        |    ПеремещениеТоваров.ОтпускРазрешил,
                        |    ПеремещениеТоваров.ПереданыДокументы,
                        |    ПеремещениеТоваров.ПечататьНаОдинЛист,
                        |    ПеремещениеТоваров.ПринялПолучатель,
                        |    ПеремещениеТоваров.Прицеп,
                        |    ПеремещениеТоваров.ПунктПогрузки,
                        |    ПеремещениеТоваров.ПунктРазгрузки,
                        |    ПеремещениеТоваров.ПутевойЛист,
                        |    ПеремещениеТоваров.РучнаяКорректировка,
                        |    ПеремещениеТоваров.СдалОтправитель,
                        |    ПеремещениеТоваров.СерияБланка,
                        |    ПеремещениеТоваров.СкладОтправитель,
                        |    ПеремещениеТоваров.СкладПолучатель,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС1,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС2,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС3,
                        |    ПеремещениеТоваров.СчетСписанияНДС,
                        |    ПеремещениеТоваров.ТипЦен,
                        |    ПеремещениеТоваров.Транспорт,
                        |    ПеремещениеТоваров.Франко,
                        |    ПеремещениеТоваров.ВидПеревозки,
                        |    ПеремещениеТоваров.Грузоотправитель,
                        |    ПеремещениеТоваров.Грузополучатель,
                        |    ПеремещениеТоваров.ЦельПриобретения,
                        |    ПеремещениеТоваров.Экспедитор,
                        |    ПеремещениеТоваров.ВидимостьТабличнойЧастиСписаниеБСО,
                        |    ПеремещениеТоваров.ТипБСО,
                        |    ПеремещениеТоваров.АвтоЗаполнениеПриОбмене,
                        |    ПеремещениеТоваров.КоличествоЕздок,
                        |    ПеремещениеТоваров.Товары.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        КоличествоМест,
                        |        ЕдиницаИзмерения,
                        |        Коэффициент,
                        |        Количество,
                        |        Цена,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        ЦенаВРознице,
                        |        СуммаВРознице,
                        |        СтавкаНДСВРознице,
                        |        ДокументОприходования,
                        |        Партия,
                        |        ВидТары,
                        |        КоличествоВМесте,
                        |        Масса,
                        |        ГрузоДокументы,
                        |        Протокол,
                        |        Прейскурант,
                        |        СтавкаНПВРознице,
                        |        Сертификат,
                        |        СтранаПроисхождения,
                        |        ЦенаИзготовителя,
                        |        Сделка,
                        |        СтавкаНП,
                        |        Контрагент,
                        |        ДоговорКонтрагента,
                        |        ЦенаВРубляхБезНДС,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.ТоварыНаКомиссии.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        КоличествоМест,
                        |        ЕдиницаИзмерения,
                        |        Коэффициент,
                        |        Количество,
                        |        Цена,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.ВозвратнаяТара.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        Количество,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        Партия,
                        |        ЕдиницаИзмерения,
                        |        ЦенаВРубляхБезНДС,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.НомераБСО.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Организация,
                        |        ТипХранения,
                        |        Номенклатура,
                        |        Партия,
                        |        Склад,
                        |        Сотрудник,
                        |        ТипБСО,
                        |        СерияБСО,
                        |        НомерБланка,
                        |        Количество,
                        |        Сумма,
                        |        ТипСписания,
                        |        Основной,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    )
                        |ИЗ
                        |    Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
                        |ГДЕ
                        |    ПеремещениеТоваров.Дата МЕЖДУ &Дата1 И &Дата2";    
                        
    ЗапросВТорг.УстановитьПараметр("Дата1",Дата(ЭтотОбъект.Дата1));
    ЗапросВТорг.УстановитьПараметр("Дата2",Дата(ЭтотОбъект.Дата2));
                        
    РезультатВыбора = ЗапросВТорг.Выполнить().Выбрать();
    Счетчик = 0;
    СчетчикНеудачПоКоду =0;
    СчетчикНеудачПоНаименванию= 0;
    СчетчикОтсутсвияНоменклатуры = 0;
    СчетчикДокументов = 0;
    Пока РезультатВыбора.Следующий() Цикл
        
        Предмет = Справочники.Номенклатура.НайтиПоКоду(РезультатВыбора.Товары.Columns.КодНоменклатуры);    
        НаименованиеПредмета = Справочники.Номенклатура.НайтиПоНаименованию( РезультатВыбора.Товары.Columns.Номенклатура, Истина);
        Если ЗначениеЗаполнено(Предмет)И ЗначениеЗаполнено (НаименованиеПредмета )   Тогда
            Счетчик = Счетчик +1;              
        ИначеЕсли ЗначениеЗаполнено(Предмет) И НЕ ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикНеудачПоНаименванию = СчетчикНеудачПоНаименванию +1;    
        ИначеЕсли НЕ ЗначениеЗаполнено(Предмет) И ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикНеудачПоКоду = СчетчикНеудачПоКоду +1;
        ИначеЕсли НЕ ЗначениеЗаполнено(Предмет) И НЕ ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикОтсутсвияНоменклатуры = СчетчикОтсутсвияНоменклатуры + 1;
        КонецЕсли;
        СчетчикДокументов = СчетчикДокументов + 1;
    КонецЦикла;
     Сообщить ("Было проверено " + СчетчикДокументов + " документов"+" с " + Формат(Дата(ЭтотОбъект.Дата1), "ДФ=dd.MM.yyyy")
     + " по " + Формат(Дата(ЭтотОбъект.Дата2), "ДФ=dd.MM.yyyy"));
     Сообщить ("Было " +Счетчик + " попаданий");
     Сообщить ("Было промахов по причине кода " + СчетчикНеудачПоКоду);
     Сообщить ("Было неудач по наименованию " + СчетчикНеудачПоНаименванию);
     Сообщить ("Не было найдено номенклатуры ни по коду, ни по наименованию " + СчетчикОтсутсвияНоменклатуры);
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #165672 · Ответов: 4 · Просмотров: 2017
 

>  Добавление данных в документ по средством обработки
DmitryPushkarev
Отправлено: 06.07.20, 15:24


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


В общем получилось сделать заполнение вот таким путем, естественно под свои реквизиты код.

&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
    Форма=  ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента");
    КопияФормы = Форма.Объект;    

    ЗаполнитьДокументНаСервере(КопияФормы);
    КопироватьДанныеФормы(КопияФормы,
    Форма.Объект);
    
      ////Объект.Данные.Загрузить(ФормаДокумента.Товары.Выгрузить());
    // ФормаНовогоДокумента.Открыть();
    
    Закрыть();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументНаСервере(ДанныеФормы);      
    
      Поступление = ДанныеФормыВЗначение(ДанныеФормы,
      Тип("ДокументОбъект.ПриобретениеТоваровУслуг"));    

    Для Каждого Строка Из Объект.Данные Цикл
        
        
    НоваяСтрока = Поступление.Товары.Добавить();
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(
    Строка.Наименование    );

    НоваяСтрока.КоличествоУпаковок = Строка.Количество;
    НоваяСтрока.Цена = Строка.Цена;
        
    ЗначениеВДанныеФормы(Поступление,ДанныеФормы);    
        
    КонецЦикла;
    
    
КонецПроцедуры


Может кому понадобится или кто увидит ошибку и посоветует изменить.
Так же узнал что такую задачу делают через временное хранилище.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #164497 · Ответов: 6 · Просмотров: 1158
 

>  Добавление данных в документ по средством обработки
DmitryPushkarev
Отправлено: 02.07.20, 14:22


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


denis84 @ Сегодня, 15:07 * ,

&НаСервере
Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения)   // ОбъектыНазначения - как берется переменная?
    Для каждого ЗаказКлиента из ОбъектыНазначения Цикл
        ЗаказКлиентаОбъект = ЗаказКлиента.ПолучитьОбъект();   //Инициализируется объект для каждой итерации объекта назначения - это для всех заказов клиента?
        Для каждого  СтрокаТЗ из ЗаказКлиентаОбъект.Товары Цикл
            СтрокаТЗ.ПроцентРучнойСкидки = 5;
            СтрокаТЗ.СуммаРучнойСкидки = СтрокаТЗ.Сумма * 0.95;
        КонецЦикла;
        ЗаказКлиентаОбъект.Записать();    
    КонецЦикла;    
КонецПроцедуры


У Вас получается весь код для существующих документов "ЗаказКлиента", который записывает ручные скидки через обработку?
Попробую что-нибудь использовать из приведенного кода.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #164396 · Ответов: 6 · Просмотров: 1158
 

>  Добавление данных в документ по средством обработки
DmitryPushkarev
Отправлено: 02.07.20, 13:41


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


denis84 @ Сегодня, 13:49 * ,
Да, Управляемые формы.
Я тут чутка вроде уже начал разбираться и осталась финальная часть вопроса. "Как добавить данные из таблицы Обработки в Таблицу Документа". Вот код кнопки обработчика, который сделал чтобы найти объект документа.


&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
    Форма=  ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента");
    Если Форма.Открыта()Тогда
        ОбъектФормы = Форма.Объект;
    КонецЕсли;
    ЗаполнитьДокументНаСервере(ОбъектФормы);
    
    Закрыть();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументНаСервере(ДанныеФормы);
    
    
    Для Каждого Строка Из Объект.Данные Цикл
        Товары = ДанныеФормы.Товары.Добавить();
        
        Товары.Номенклатура = Строка.Наименование;
        Товары.Код = Строка.Код;
        Товары.Артикул = Строка.Артикул;
        
        
    КонецЦикла;
        
КонецПроцедуры
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #164394 · Ответов: 6 · Просмотров: 1158
 

>  Добавление данных в документ по средством обработки
DmitryPushkarev
Отправлено: 02.07.20, 12:32


Молчаливый
*

Группа: Пользователи
Сообщений: 7
Регистрация: 02.07.20
Пользователь №: 69857


Доброго времени суток. Конфигурация УПП 2 , версия 8.3.

Есть такая задача: необходимо заполнить табличную часть "Товары" документа ПоступленияТоваровУслуг, через обработку ЧтениеЭксель, где в табличной части "Данные" заполнены определенные реквизиты которые могут отличаться от порядка реквизитов в табличной части "Товары".

Вопрос: Как в обработке получить данные о документе, который вызвал обработку, и как заполнить подходящие поля из таблицы "Данные" в таблицу "Товары" документа, при условии что документ может быть еще не проведен или же записан.

Код обработчика, который есть пока что.

&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Объект.Файл = "";
    
    //Диалог выбора файла
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    //ДиалогВыбора.Заголовок = “Выберите файл”;
    
    Если ДиалогВыбора.Выбрать() Тогда
        Объект.Файл = ДиалогВыбора.ПолноеИмяФайла;
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура Прочитать(Команда)          
    
    Объект.Данные.Очистить();
    
    //подключаемся к эксель
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(Объект.Файл);
        Состояние("Обработка файла Microsoft Excel...");
    Исключение
        Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;    
    
    //Открываем необходимый лист
    Попытка
        Excel.Sheets(1).Select(); // лист 1, по умолчанию
    Исключение
        //Закрываем Excel
        Excel.ActiveWorkbook.Close();
        Excel = 0;
        Сообщить("Файл "+Строка(Объект.Файл)+" не соответствует необходимому формату! Первый лист не найден!");
        Excel.ОтменитьТранзакцию();
        Возврат;
    КонецПопытки;
    
    НС = 2;
    Пока НС <= Объект.КоличествоСтрок Цикл    
        Состояние("Файл "+Строка(Объект.Файл)+": Обрабатывается первый лист "+Строка(Формат(?(Объект.КоличествоСтрок=0,0,((100*НС)/Объект.КоличествоСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        НоваяСтрока = Объект.Данные.Добавить();
        //заполнение списока значениями            
        НоваяСтрока.Наименование = Excel.Cells(НС, 1).Text;
        НоваяСтрока.Цена = Excel.Cells(НС, 2).Text;
        НоваяСтрока.Валюта = Excel.Cells(НС, 3).Text;
        НоваяСтрока.Код = Excel.Cells(НС, 4).Text;    
        НоваяСтрока.НаименованиеДляПечати = Excel.Cells(НС, 5).Text;
        НоваяСтрока.Артикул = Excel.Cells(НС, 6).Text;    
        НоваяСтрока.Количество = Excel.Cells(НС, 7).Text;
        
        НС = НС +1;    
    КонецЦикла;                  
    
    
    //Объект.Файл.Вставить(0,ИмяФайла,ИмяФайла);
    //Закрытие Эксель после выполнения процедуры
    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
    
КонецПроцедуры

// Здесь начинается вопрос темы.
&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
    
    ЗаполнитьДокументНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументНаСервере()
    
    //

КонецПроцедуры


Код для открытия формы обработчика в документе ПриобретениеТоваровУслуг
&НаКлиенте
Процедура ЗаполнитьИзФайла(Команда)
    ПолучитьФорму("Обработка.ЧтениеЭксель.Форма.Форма").Открыть();
    
КонецПроцедуры


Как я понял при помощи кода ниже, можно получить открытый документ, но на него нельзя воздействовать на прямую.
  Форма=Документы.ПриобретениеТоваровУслуг.ПолучитьФорму();

P.s: Изучаю 1С - пожалуйста сильно не бейте.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #164390 · Ответов: 6 · Просмотров: 1158
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 26.04.24, 14:57
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!