Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 10:03

Объясните пожалуйста !

Автор вертер, 23 мая 2011, 15:38

0 Пользователей и 1 гость просматривают эту тему.

вертер

Каким образом из текущей формы обработки все данные построчно перенести в новый документ ввод остатков УПП 1с 8.2

вертер

Цитата: вертер от 23 мая 2011, 15:38
Каким образом из текущей формы обработки все данные построчно перенести в новый документ ввод остатков УПП 1с 8.2

Процедура СоздатьДокумент(Элемент)
   Для СтрокаЗап = 13 По ЭлементыФормы.Таблица.Область(1, 1).Текст  Цикл
    НаименованиеТовара=ЭлементыФормы.Таблица.Область(СтрокаЗап, 2).Текст;
   НаименованиеСумма=ЭлементыФормы.Таблица.Область(СтрокаЗап, 3).Текст;
   НаименованиеКол=ЭлементыФормы.Таблица.Область(СтрокаЗап, 4).Текст;
   Сообщить ("НаименованиеТовара");
   НовДок = Документы.РасходнаяНакладная.СоздатьДокумент();
   НовДок.Дата=ТекущаяДата();
   НовДок.Номер=УстановтьНовыйНомер();
   НовДок.Записать();
   КонецЦикла;

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

как записать табличную часть?


Klyacksa

Если я правильно поняла логику кода, то должно быть примерно так:

Процедура СоздатьДокумент(Элемент)
   НовДок = Документы.РасходнаяНакладная.СоздатьДокумент();
   НовДок.Дата=ТекущаяДата();
   НовДок.Номер=УстановтьНовыйНомер();

   ТабЧасть=НовДок.ТабЧасть;
   Колво=ЭлементыФормы.Таблица.Область(1, 1).Текст;
   Для СтрокаЗап = 13 По Колво Цикл
         НаименованиеТовара=ЭлементыФормы.Таблица.Область(СтрокаЗап, 2).Текст;
         НаименованиеСумма=ЭлементыФормы.Таблица.Область(СтрокаЗап, 3).Текст;
         НаименованиеКол=ЭлементыФормы.Таблица.Область(СтрокаЗап, 4).Текст;

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

   КонецПроцедуры
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

Плюс, наверняка еще нужно заполнить какие-то реквизиты шапки документа, проверять, нашли ли в справочнике подходящую номенклатуру и т.д. Но это уже бантики.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

данные заносятся из табличного документа??!!
может проще перейти к табличному полю с ТипомЗначения ТаблицаЗначений?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

заполняете шапку и табличную часть пытаетесь проводить.
если начинается ругаться - смотрите какие реквизиты еще надо заполнить...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

вертер

Цитата: Klyacksa от 23 мая 2011, 17:21
Плюс, наверняка еще нужно заполнить какие-то реквизиты шапки документа, проверять, нашли ли в справочнике подходящую номенклатуру и т.д. Но это уже бантики.

спасибо, то что нужно.

Klyacksa

Отлично, пожалуйста!
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

вертер

Цитата: cska-fanat-kz от 23 мая 2011, 18:39
данные заносятся из табличного документа??!!
может проще перейти к табличному полю с ТипомЗначения ТаблицаЗначений?

я еще только делаю первые шаги, возможно код избыточный, но с этого и начинается обычно работа в новой программной среде, сперва громоздко но работает, потом уже дальше, работа над качеством, спасибо за помощь, это мне да собственно и любому новичку сбережет массу времени на первое время, так же очень благодарен Кляксе. Но если что то можно сократить то буду рад это узнать, вот полный мой код

1. Из оборотки по 10 счету в бух 8.1 перевожу наименование, колическтво и сумму материалов в эксель, затем пишу обработку и переношу в таблицу этой обработки только наименования материалов, где есть остатки по сумме и затем идет этот код, что тут можно упростить???


Процедура ВыборФайла(Элемент, СтандартнаяОбработка)

// Отключение стандартной обработки
СтандартнаяОбработка = Ложь;

// Выбор файла Microsoft Excel
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "Документ Excel (*.xls)|*.xls";
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.ПолноеИмяФайла = ИмяФайла;
Выбор = ВыборФайла.Выбрать();
Если НЕ Выбор Тогда

Возврат;

КонецЕсли;

ИмяФайла = ВыборФайла.ВыбранныеФайлы[0];

КонецПроцедуры // ВыборФайла(Элемент, СтандартнаяОбработка)

Процедура ОбработкаФайла(Элемент)

Если ПустаяСтрока(ИмяФайла) Тогда

Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
Возврат;

КонецЕсли;

Попытка

// Загрузка Microsoft Excel
Состояние("Загрузка Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");

Исключение

Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;

КонецПопытки;

Попытка

// Открытие файла Microsoft Excel
Состояние("Открытие файла Microsoft Excel...");
ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);

// Обработка файла Microsoft Excel
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = ExcelФайл.Sheets(1);
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
//ExcelПоследняяСтрока = 100;
       
ЭлементыФормы.Таблица.Очистить();
СтрокаЗап=10;
Для Строка = 1 По ExcelПоследняяСтрока Цикл



Состояние("строка " + Строка);

ExcelЯчейка = ExcelЛист.Cells(Строка, 2);

Если Строка < 8  Тогда
ЭлементыФормы.Таблица.Область(Строка, 2).Текст = ExcelЯчейка.Value;
Иначе
     

Если (ПустаяСтрока (ExcelЛист.Cells(Строка,7).value)) ИЛИ (ПустаяСтрока(ExcelЛист.Cells(Строка,2).value)) Тогда
    //Сообщить("Пустая ячейка: "+ Строка+ ":2");

Продолжить;
Иначе
//попалась дебетовая строка суммы

                            СтрокаЗап=СтрокаЗап+1;

ExcelЯчейка = ExcelЛист.Cells(Строка, 2);
                        ЭлементыФормы.Таблица.Область(СтрокаЗап, 2).Текст = ExcelЯчейка.Value;

ExcelЯчейка = ExcelЛист.Cells(Строка, 7);
                        ExcelЯчейкаКол = ExcelЛист.Cells(Строка+1, 7);

                         ЭлементыФормы.Таблица.Область(СтрокаЗап, 3).Текст = Формат(ExcelЯчейка.Value, "ЧЦ=12; ЧДЦ=2");
ЭлементыФормы.Таблица.Область(СтрокаЗап, 4).Текст = Формат(ExcelЯчейкаКол.Value , "ЧЦ=12; ЧДЦ=2");

КонецЕсли;

                       

КонецЕсли;



КонецЦикла;
ЭлементыФормы.Таблица.Область(1, 1).Текст= СтрокаЗап;
Исключение

Сообщить("Ошибка при открытии/чтении файла " + ИмяФайла + "." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);

КонецПопытки;

ExcelПриложение.Quit();

КонецПроцедуры // ОбработкаФайла(Элемент)


Процедура СоздатьДокумент(Элемент)
НовДок = Документы.ВводНачальныхОстатковМатериаловВЭксплуатации.СоздатьДокумент();
НовДок.Дата=ТекущаяДата();
ТабЧасть=НовДок.ТабЧасть;
    Колво=ЭлементыФормы.Таблица.Область(1, 1).Текст;
   Для СтрокаЗап = 13 По Колво Цикл

    НаименованиеТовара=ЭлементыФормы.Таблица.Область(СтрокаЗап, 2).Текст;
НаименованиеСумма=ЭлементыФормы.Таблица.Область(СтрокаЗап, 3).Текст;
НаименованиеКол=ЭлементыФормы.Таблица.Область(СтрокаЗап, 4).Текст;

НоваяСтрока=ТабЧасть.Добавить();
         НоваяСтрока.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара,Истина);
         НоваяСТрока.Количество=Число(НаименованиеКол);
НоваяСТрока.Сумма=НаименованиеСумма;

КонецЦикла;
      НовДок.Записать();

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


Klyacksa

Тогда, действительно, нужно делать таблицу. А что у Вас есть "Таблица" на форме?
Лучше всего разместить на форме Табличное поле, создать у него колонки (соответственно колонкам файла), прочитать весь файл, загрузив в него значения, а потом уже из таблицы создавать документ.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск