1c и Excel

  • Автор темы Автор темы konst
  • Дата начала Дата начала
KiR, про фильтр в экселе сможешь рассказать- как его делать.

2 поля не катит... в экселе есть колонка заказ.. вот она и говорит нам какие строки грузить, но проблема в том, что они сгруппированы и свернуты...
ну фильтр этот нужен только для визуального светрывания файла, 1С пофигу на него обычно. Ну тогда при загузке можешь вычитывать в цикле каждую строку с условием Если ПустаяСтрока("ЗаказИзФайла") = 1 продолжить иначе - обрабатываем данные
 
т.е. 1с позволяет считывать свернутые(сгруппированный) строки, и их не надо предварительно разворачивать в экселе
 
я под группировками понимаю + или - с левой стороны от строк в экселе, т.е. истроки можно сворачивать и разворачивать

Может кто подскажет, как сделать копирование из 1с, части файла экселя и вставки его в другой файл эксель
 
думаю 1Ске без разницы, хотя попробуй, потом скажешь наверняка.
а зачем тебе еще и копирование?
 
В эксель буду выводить список типов цен, а потом к этой строке необходимо присоединить еще 2 ячейки по просьбе заказчика.
 
на прямую даж не знаю как лучше сделать. а так получается - грузить в ТЗ, а потом во второй файл...
 
Столкнулся с проблемой, в экселе скрыта колонка, не могу найти как ее отобразить, может кто знает...
 
Columns("D").Hidden = False
Columns("B:E").Hidden = False (колонка/диапазон колонок).
Через макрорекордер можно все узнать, если что
 
Вывожу в цикле строки в эксель, в каждой строке есть 4 колонки - ном-ра, цена, заявка и сумма. Проблема в том, что никак не могу в колонку самма записать формулу, которая было заявку умножала
бы на цену, причем заявка заполняется не из 1с, а пользователем в экселе. Как вставить формулу знаю Лист.Cells(НомерСтроки,НомерКолонки).Formula, а вот алгоритм формулы никак придумать не могу
Подскажите плиз как такое можно реализовать.
 
Лист.Cells(НомерСтроки,НомерКолонки).Formula

мона попробовать на ячейке суммы цене
Лист.Cells(НомерСтроки,НомерКолонки).Value = "=R"+(НомерСтроки)+"C"+(НомерКолонки-2)+"*R"+(НомерСтроки)+"C"+(НомерКолонки-1)";

Если вторая слева от суммы - положим заявка (количество), а первая слева - цена.
для Formula примерно то-же самое
 
Пишу так Лист.Cells(2,11).Formula = "=ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+";0)"; возникает ошибка почему-то, хотя если Лист.Cells(2,11).Value = "ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+";0)"; и в самом экселе поставить впреди = все в порядке... считает

ТипЦен - имя ячейки, показывает какую из множества цен брать
Сч - счетчик в цикле это хочу сделать
 
Про цикл непонятно. Если значение в ТипЦен используется для выбора нужной колонки цен, то можно использовать функцию листа СМЕЩ, безо всяких циклов. Может, правда, я не понял чего.
 
а может, проще в самой колонке, где лежит сумма в листе файла excel прописать формулу, а из1С только заносить аргументы для нее ?
Не раз доводилось выводить в excel данные по количеству проданного товара и его цене - сумма получается автоматически.
Правда, в тех случаях иностранные партнеры присылали шаблон, каковой вместо ручного заполнения мы делали автоматическим.
Суть была примерно в следующем - из первой колонки брали название товара, искали его по наименованию, определяли обороты за нужный период и клали во вторую колонку.
В 3-й лежала цена - а 4-я (сумма) вычислялась в excel. Конечно, там было все посложнее, но смысл передала верно.
 
, хотя если Лист.Cells(2,11).Value = "ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+";0)";

Ну и поставь туда
Лист.Cells(2,11).Value = "=ЕСЛИ(ТипЦен="+Сч+";R"+(НомерСтроки)+"C"+(2+Сч+1)+"*R"+(НомерСтроки)+"C"+(Заявка)+"
 
У меня есть эксель в котором с ячейку вводится число, но там что-то прописано и при вводе числа больше чем заданное, выводится ошибка типа "введите цифру от 1 до 5" подскажите плиз как это исправить и где можно у видеть что там прописано. Вроде бы макросов нет никаких, не могу понять в чем дело.
 
Поищи ВБА код в твоем екселе О_О ( хотя я не думаю что кто-то так уж извращался)
а еще лутше пересматри его аакуратно и еще раз
 
Определяю кол-во строк и столбцов в экселе, с которого буду грузить данные, вот так
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;

первую группировку и все ее внутренние группировки в экселе читает нормально(разворачивает все внутренние группировки), а вот группировку идущую после первой не разворачивает, т.е. строки которые есть в этой группировке не определяет, подскажите плиз что я не так делаю
 
Может можно узнать как-то количество внутренних группировок, чтоб потом сделать так ActiveSheet.Outline.ShowLevels RowLevels:=4. т.е если руками, то нажать на последнюю 4 ку в левом верхнем углу(для группировок) и все группировки развернуть(откроются)
 
Столкнулся с такой проблемой - формирую формулу таким образом
ФормулаНачало = "=";
ФормулаКонец = "0";
СтрашийИндекс = ТипЦен.ВГраница()+1;
Для Сч = 0 По ТипЦен.ВГраница() Цикл
Число1 = 2+Сч;
СтрашийИндекс = СтрашийИндекс - 1;
ФормулаНачало = ФормулаНачало + "IF(ТипЦен="+СтрашийИндекс+",RC[-"+Число1+"]*RC[-1],";
КонецЦикла;

Для Сч = 0 По ТипЦен.ВГраница() Цикл
ФормулаКонец = ФормулаКонец + ")";
КонецЦикла;

Формула = ФормулаНачало + ФормулаКонец;

В результате получаю примерно следующее
"=IF(ТипЦен=7,RC[-2]*RC[-1],IF(ТипЦен=6,RC[-3]*RC[-1],IF(ТипЦен=5,RC[-4]*RC[-1],IF(ТипЦен=4,RC[-5]*RC[-1],IF(ТипЦен=3,RC[-6]*RC[-1],IF(ТипЦен=2,RC[-7]*RC[-1],IF(ТипЦен=1,RC[-8]*RC[-1],IF(ТипЦен=0,RC[-9]*RC[-1],0))))))))
для 8 типов цен

и

=IF(ТипЦен=8,RC[-2]*RC[-1],IF(ТипЦен=7,RC[-3]*RC[-1],IF(ТипЦен=6,RC[-4]*RC[-1],IF(ТипЦен=5,RC[-5]*RC[-1],IF(ТипЦен=4,RC[-6]*RC[-1],IF(ТипЦен=3,RC[-7]*RC[-1],IF(ТипЦен=2,RC[-8]*RC[-1],IF(ТипЦен=1,RC[-9]*RC[-1],IF(ТипЦен=0,RC[-10]*RC[-1],0)))))))))
для 9 типов цен

Проблема в том, что формула для 8 типов цен выводиться в эксель нормально, а вот для 9 при выводе пишет ошибку

даже не знаю в чем и проблема, вроде бы все правильно, но почему не работает, подскажите плиз...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!