Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 11:19
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Выгрузка/загрузка данных в word или Excel  (Прочитано 3659 раз)

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

Оффлайн wolf3d

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 7
  • КПД: 17%
  • Регистрация: 2011-01-22
  • Сайт: 
  • Профессия: Программист 8.1
Давным-давно (лет 5 назад) понадобилось мне прочесть данные в 1с из Excela.. Порылся я по иннету и на одном форуме (foxclub.ru ) нашел как это сделать. Потом на основе данного примера написал выгрузку в ворд.[/size]Через некоторое время начал читать данный форум и иногда помогать людям советом. И как то раз упомянул в какойто теме что решил проблему с загрузкой/выгрузкой с сабжем. И понеслась - за эти годы я получил море просьб объяснить как я реализовал сабж, не только на этом форуме но и на паре других... Неужели так трудно погуглить и просто почитать инфу... Меня это вконец достало - прошу администрацию не удалять этот пост.В общем выкладываю сюда пример как из 1с загрузить информацию из Excela. с Word я думаю сами разберетесь на основе данного примера. Еще раз повторяю - автор не я (я просто переделал пример под свои нужды) - автор на форуме указанном вверху - помоему пример там даже в FAQ вынесен. Итак погнали:--------ВУ свое время кроме собственно программирования я еще и вел учет поступающего товара. И самые большие поставщики высылали на почту файлик с подтверждекнием. В файлике был описан перечень товара, его цена, количество, точка которая заказала (у нас магазины сами заказы делают) - короче вся необходимая инфа. А накладные от 1 до 300 позиций - чтобы их внести иногда требовался целый днь. И так ежедневно. А я по природе лентяй  - зачем мне пахать когда стоит комп - пусть он пашет - он жалезный . И как-то раз меня посетила идея грузить накладные а не вбивать их. Написал я обработку - процесс вбивания накладных сократился минут до 40...
Поставшик Новый город (в примере - НГ) шлет накладные в формате .xls, а поставщик Шате-М (в примере ШМ) - в формате .csv Это я пишу чтобы было понятней разобраться в примере.с


[/color]
Процедура ИмяФайлаПриИзменении()
    имяфайла="";
    если пустаястрока(флНомерНакл) = истина тогда
        имяфайла=открытиеФайла();
    иначе
        имяфайла=флНомерНакл;
    КонецЕсли;
    состояние("Очистка временного справочника");
// поиск группы "загрузка накладной"  если нету  создаем
    фл=0;
    кодродителя=неопределено;
    выб=справочники.Временный.ВыбратьИерархически();
    пока выб.следующий() цикл
        ОбработкаПрерыванияПользователя();
        если выб.этогруппа = истина тогда
            если сокрлп(выб.наименование) = "Загрузка накладной" тогда
                фл=1;
                кодродителя=выб.код;
                прервать;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    если фл = 0 тогда
        вв=справочники.Временный.СоздатьГруппу();
        вв.наименование="Загрузка накладной";
        кодродителя=вв.код;
        вв.записать();
        кодродителя=вв.код;
    КонецЕсли;
//очистка группы
    фл=0;
    выб=справочники.Временный.ВыбратьИерархически();
    пока выб.следующий() цикл
        ОбработкаПрерыванияПользователя();
        если выб.этогруппа = истина тогда
            если сокрлп(выб.наименование) = "Загрузка накладной" тогда
                фл=1;
            КонецЕсли;
            продолжить;
        КонецЕсли;
        если фл=1 тогда
            если сокрлп(выб.родитель.наименование) = "Загрузка накладной" тогда
                вв=выб.ссылка.получитьобъект();
                вв.удалить();
            КонецЕсли;
            если сокрлп(выб.родитель.наименование) <> "Загрузка накладной" тогда
                прервать;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
 
// обработка НГ в Екселе 
    если элементыформы.ТипФайла.Значение = перечисления.ТипыФайлов.Excel тогда
        орг = справочники.Организации.НайтиПоКоду(офдопнастр("СсылкаНаНГДляОбработкиЭТТН","ЛС").код);
        если Организация.код = орг.код тогда
//Номер листа в книге Excel для получения данных
            НомерЛиста = 1;
 
    //Пытаемся подключиться к Excel
           Попытка
               Excel = новый COMОбъект("Excel.Application");
          Исключение
              Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
              Возврат;
           КонецПопытки;   
 
    //Подключились удачно, открываем файл
           Excel.Workbooks.Open(сокрлп(имяфайла));
 
    //Открываем необходимый лист
          Excel.Sheets(1).select();
 
    //Определяем количество строк и колонок в листе
              ВсегоКолонок = Excel.Cells (1,1).SpecialCells (11).Column;
            ВсегоСтрок = Excel.Cells (1,1).SpecialCells (11).Row;
            фл=0;
            Для яя=1  по ВсегоСтрок Цикл
                зн= сокрлп(Строка(Excel.Cells(яя,элементыформы.ПолеВвода1.Значение).Value));
                если зн = сокрлп(элементыформы.ПолеВвода6.Значение) тогда
                    фл=1;
                    продолжить;
                КонецЕсли;
                если фл=1 тогда
                    если пустаястрока(сокрлп(Строка(Excel.Cells(яя,2).Value))) = истина тогда
                        прервать;
                    КонецЕсли;
                    вв=табличнаячасть1.добавить();
                    вв.номердлязаказа=сокрлп(Строка(Excel.Cells(яя,2).Value));
                    вв.КодДляНГ=сокрлп(Строка(Excel.Cells(яя,2).Value));
                    вв.количество=число(сокрлп(Строка(Excel.Cells(яя,элементыформы.ПолеВвода2.Значение).Value)));
                    вв.цена=число(сокрлп(Строка(Excel.Cells(яя,элементыформы.ПолеВвода1.Значение).Value)))/вв.количество;;
                    вр=сокрлп(Строка(Excel.Cells(яя,3).Value));
                    вв.номертовара=слово(вр,"_");
                    вв.номердлязаказа=вв.номертовара;
                    если лев(вр,1) = "=" тогда
                        вр1=слово(вр,"=");
                    КонецЕсли;
                    вв.аналоги=слово(вр,"!");
                    вв.группа=слово(вр,"\");
                    вв.примечание=вр;
                КонецЕсли;
                состояние("Обработана строка: "+строка(яя));
            КонецЦикла;
            Excel.ActiveWorkbook.Close();
            вф=табличнаячасть2.добавить();
            вф.файл=сокрлп(имяфайла);
        КонецЕсли;
    КонецЕсли;




// обработка ШМ в CSV
    если элементыформы.ТипФайла.Значение = перечисления.ТипыФайлов.csv тогда
        орг = справочники.Организации.НайтиПоКоду(офдопнастр("СсылкаНаШМДляОбработкиЭТТН","ЛС").код);
        если Организация.код = орг.код тогда
            ф=новый текстовыйдокумент;
            ф.прочитать(сокрлп(имяфайла));
            колст=ф.количествострок();
            для яя=1 по колст цикл
                если яя=1 тогда
                    продолжить;
                КонецЕсли;
                ст=ф.получитьстроку(яя);
                если пустаястрока(ст) = истина тогда
                    прервать;
                КонецЕсли;
                вв=табличнаячасть1.добавить();
                вв.номертовара=слово(ст,"_");
             
                вв.номердлязаказа=сокрлп(вв.номертовара)+"_"+сокрлп(слово(ст,";"));
                вв.количество=число(сокрлп(слово(ст,";")));
                вр=слово(ст,";");
                вр=слово(ст,";");
                вв.цена=число(слово(ст,";"));
               вр=слово(ст,";");
                вв.группа=слово(ст,";");
                вр=слово(ст,";");
                состояние("Обработана строка: "+строка(яя));
            КонецЦикла;
            вф=табличнаячасть2.добавить();
            вф.файл=сокрлп(имяфайла);
        КонецЕсли;
    КонецЕсли;


Оффлайн TreeDogNight

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 28
  • КПД: 14%
  • Регистрация: 2013-10-16
    • Skype: treedognight3
  • Сайт: www.avars.uz
  • Профессия: Программист 1С
Аааа мои глаза... Какой некрасивый и нечитабельный код! Большинство слов с маленькой буквы, кривое название переменных... Ужас, а не код!
Один плюс, что комментарии ставишь!
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

Оффлайн wolf3d

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 7
  • КПД: 17%
  • Регистрация: 2011-01-22
  • Сайт: 
  • Профессия: Программист 8.1
Аааа мои глаза... Какой некрасивый и нечитабельный код! Большинство слов с маленькой буквы, кривое название переменных... Ужас, а не код!
Один плюс, что комментарии ставишь!
Дружище - мне глубоко фиолетово на твои глаза - не нравиться - не читай. Я этот код кинул из РАБОЧЕЙ конфы, а не писал для твоих глазок специально. Комментарии здесь только потому что попали из первоисточника. Я, в отличие от тебя (наверное) трачу 90% своего времени на написание ПРАВИЛЬНОГО кода, а не на всякие рюшечки и красивости - вероятно у тебя полностью наоборот. То что код нечитабельный преследует свою цель - конкуренты даже если им попадет мой код - с трудом в нем разбираются (если разбираются). Наконец - система в коде есть - какая не скажу. Свой код я читаю без проблем - именно потому что ЗНАЮ систему.
И последнее - моими программами пользуется пол города уже по 5-15 лет при том что законодательство менялось А программы все работают - настройку подкорректировал и вперед. Так что дружище не тебе меня учить.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Для эстетов придумали ALT+SHIFT+F

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

Оффлайн TreeDogNight

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 28
  • КПД: 14%
  • Регистрация: 2013-10-16
    • Skype: treedognight3
  • Сайт: www.avars.uz
  • Профессия: Программист 1С
Дружище - мне глубоко фиолетово на твои глаза - не нравиться - не читай. Я этот код кинул из РАБОЧЕЙ конфы, а не писал для твоих глазок специально. Комментарии здесь только потому что попали из первоисточника. Я, в отличие от тебя (наверное) трачу 90% своего времени на написание ПРАВИЛЬНОГО кода, а не на всякие рюшечки и красивости - вероятно у тебя полностью наоборот.
Может я потрачу на написание кода на 5 минут больше, но зато в будущем, на исправление/перенастройку процедуры я потрачу на много меньше времени.

Цитировать
То что код нечитабельный преследует свою цель - конкуренты даже если им попадет мой код - с трудом в нем разбираются (если разбираются).
Ты добился этой цели. Я думаю мало кто захотел разбираться в этом коде, из-за его нечитабельности.:) И ещё. Если ты не хочешь, чтобы конкуренты украли твой код, то зачем ты его выкладываешь на всеобщее обозрение?

Цитировать
Наконец - система в коде есть - какая не скажу. Свой код я читаю без проблем - именно потому что ЗНАЮ систему.
То что система в коде есть, это видно.

Цитировать
И последнее - моими программами пользуется пол города уже по 5-15 лет при том что законодательство менялось А программы все работают - настройку подкорректировал и вперед. Так что дружище не тебе меня учить.
Я не собираюсь тебя учить, тем более, что судя по твоим словам, опыта работы в 1С у тебя лет на 20 больше)
Я просто выражаю свою критику. Просто на месте людей, не разбирающихся в выгрузке/загрузке данных с офиса, я бы разбирался бы в этом коде долго...






Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

Оффлайн wolf3d

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 7
  • КПД: 17%
  • Регистрация: 2011-01-22
  • Сайт: 
  • Профессия: Программист 8.1
Для эстетов придумали ALT+SHIFT+F

wolf3d, зря вы так комментарии в коде обижаете, они иногда хорошо помогают разбираться в том, что написано (даже если исключительно тобой ;) )
Да не обижаю я коменты - самому нравится код с коментам, просто когда пишу - редко их употребляю, потому что итак понимаю о чем речь... Правда когда то лет 10 назад писал на паскале утилиту для фидонет txt3msg - недавно разгребал завалы свои, и наткнулся на исходники данной утилиты - попытался разобраться в них - нифига не понял. :) Как я умудрился впихнуть СТОЛЬКО возможностей в ТАКОЙ МАЛЕНЬКИЙ объем? :) Но паскаль уже порядком подзабыл - таку что главное помнить язык, а комментарии так - для напоминания...

То^ TreeDogNight,
1. Я не трачу "на 5 минут дольше", я стараюсь писать универсально - трачу на это не 5 минут а сутки - зато больше к данному вопросу практически не возвращаюсь (помнишь слова о 5-15 годах использования моих программ - я то за эти года к программам и не прикасался). Приведу пример: лет 15-20 назад работал я программером в белорусском банке Инвестбанк (тогда он обзывался БелБизнесБанк) - так вот каждыые пару часов я выполнял рутинные и повторяющиеся действия - обзванивал оперционыстов - говорил им что пора закрывать "рейс", отсвылал "рейс", Получал результат предыдущего рейса, зхагружал его, опять обзвыанивал операционистов... короче меня это вконец замотало и я написал MAILPROC (коллегам из белбизнеса привет:) она с помощью батника делала 90% работы сама... Каково же было мое удивление через пару лет когда в Фидо я прочел что моя прога добралась аж до столицы и активно используется... Заметь ПАРУ ЛЕТ - т.е. написана была универсально - оттуда наверное я и начал писать так :) Еще пример : с какой весии ты узнал про "винду3"? Лично я услышал аж только про Windows 3.0 А почему? де версии 2.0 и 1.0? А в топке... Дело в том что майкрософт  раньше вкладывалав бабки (до 70% всех потраченных на разработку средств) именно в "рюшечки и красивости. А с версии 3.0 начали активно писать код - результат известен

2. Городок у нас маленький - 70 000 населения - все программеры друг друга знают и конкурренция офигенная.  выложил я код потому что а) коль я его в свое время нашел в инете - то и другие найдут и б) достали письмами - подскажи да подскажи :)

3.
4. А код на то и расчитан чтобы разбирались долго - зато когда все поймут - "вумные" станут шо ппц :)

зы. Ты уж извиняй за предыдущий мой ответ - специально писал аггрессивно - енсли бы ты повел себя неадекватно - все понятно - очередной тупой малолетка :) А ты не сорвался - у тебя большое будущее :)
зыы. Администрации - сорь за оффтоп.

Последний раз редактировалось: wolf3d; 04 Сен 2014, 15:13

Оффлайн TreeDogNight

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 28
  • КПД: 14%
  • Регистрация: 2013-10-16
    • Skype: treedognight3
  • Сайт: www.avars.uz
  • Профессия: Программист 1С
wolf3d,Спасибо за продуктивный и интересный ответ! :)
Согласен с тобой, что написание правильно построенного и систематизированного кода, намного важнее, чем внешнее его оформление.
А так, при написании кода, я пытаюсь учесть все возможные ошибки, которые могут произойти, а красивое написание и оформление у меня просто вошло в привычку, ибо в некоторых вещах, я ужасный перфекционист :)
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

Оффлайн wolf3d

  • *
  • Сообщений: 42
  • РЕПУТАЦИЯ: 7
  • КПД: 17%
  • Регистрация: 2011-01-22
  • Сайт: 
  • Профессия: Программист 8.1
А так, при написании кода, я пытаюсь учесть все возможные ошибки, которые могут произойти, а красивое написание и оформление у меня просто вошло в привычку, ибо в некоторых вещах, я ужасный перфекционист :)
ИМНО удобство работы важнее красивого оформления. Приведу пример (снова :) ) Представь себе службу занятости - при оформлении безработногшо они заносят в РАЗНЫЕ поля Имя, в другое поле - Фамилию, в третье - отчество. Неудобно ужасно. Но зато красиво... А почему бы просто ФИО не вносить в одно поле ввода и потом программно не разбирать на фамилию, имя и отчество - это и экономия времени (быстрее вводят) и крепче нервы (например в поле имени зафигачил отчество - стирай, пиши имя прыгай на поле отчества по новой пиши отчество - короче БЕСИТ). А теперь умножь это на месяц или год. Сколько человеко/часов данный прием сэкономит

зы.За ошибки извиняй - пишу "вслепую", с прошлого года стал инвалидом 1 группы, не могу ходить а комп находится далеко (безпроводные мышка и клава) - иногда не вижу что написано


Теги:
 

Перенос данных из 1с 82 БП (базовая) в 1с 82 БГУ (базовая)

Автор Владимир87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7457
Последний ответ 06 Дек 2014, 17:40
от дфтын
Поиск по бае данных,(полнотекстовый поиск)

Автор kot_ooРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3891
Последний ответ 19 Май 2014, 15:40
от kot_oo
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

Автор dollРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2127
Последний ответ 01 Янв 2017, 20:27
от Геннадий ОбьГЭС
"Задваивание" данных в отчете

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 7378
Последний ответ 15 Окт 2015, 11:21
от Mari_beginner
Куда сохраняются данные в режиме работы клиент при выгрузке данных обработкой "Универсальный обмен данными в формате XML"

Автор xDDРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 6970
Последний ответ 13 Ноя 2014, 08:23
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
53 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

  • Точка Гостей: 250
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal