Category: НОВОСТИ

Удаление помеченных объектов в 1с 8.3

В процессе работы ненужные объекты (документы, элементы справочников) можно пометить на удаление. Помеченные на удаление объекты остаются в базе данных, пометку на удаление у этих объектов при необходимости можно снять. Пометка на удаление означает неактуальность объекта для пользователя. При установке пометки на документ, его проведение автоматически отменяется.

Рассмотрим подробно, как можно не только пометить объект на удаление в 1С 8.3, но и физически удалить его из информационной базы.

Как пометить объект на удаление

Пометить объект на удаление можно несколькими способами: выделив требуемый объект нажать Delete на клавиатуре, либо пометить его на удаление через меню Ещё или контекстное меню объекта (клик правой кнопкой мышь на выбранном объекте в базе):

Удерживая кнопку Shift или Ctrl можно выделить сразу несколько объектов.

Помеченные на удаление объекты отмечаются красным крестиком.

Удаление помеченных объектов


Внимание!
Физическое удаление помеченных объектов из базы может выполнить только пользователь с правами администратора.


Для окончательного удаления объектов переходим в меню Администрирование – Удаление помеченных объектов:

В открывшейся обработке Удаление помеченных объектов будет предложено два варианта удаления – автоматический и выборочный. При автоматическом варианте программа обработает все помеченные на удаление объекты в системе, а при выборочной – объекты из указанного пользователем списка.

Также для ускорения процесса удаления можно временно заблокировать программу, установив соответствующую галочку. Это актуально при удалении большого объема информации. Программа при этом устанавливает монопольный режим, и другие сотрудники в это время не могут в ней работать.

В рамках процесса удаления, программа осуществляет контроль ссылочной целостности: объект, имеющий связь с другими, удален не будет. Поэтому, чтобы довести наш процесс до конца, надо удалить все связанные с ним объекты.

В этом случае откроется следующее окно, где программа нам показывает помеченные объекты. При этом если выделить объект слева, справа отразится информация, где он был задействован:

Для окончательного удаления объекта необходимо пометить на удаления все связанные с ним объекты в таблице справа.

Еще одним вариант – везде заменить удаляемый объект на другой с помощью кнопки Заменить. Выберем ту номенклатурную позицию, на которую будет произведена замена во всех связанных объектах. После этого нам снова будет доступно окно для повторного удаления.

При успешном удалении программа выведет соответствующее извещение:

Автоматическое удаление помеченных объектов по расписанию

Также в 1С 8.3 добавлена возможность автоматического удаления помеченных объектов по расписанию. Настроить, его можно в самой обработке – для этого необходимо поставить галочку Автоматически удалять помеченные объекты по расписанию и перейти по ссылке Настроить расписание для более детальной настройки:

В зависимости от объёма информационной базы, процедура удаления может занимать от нескольких минут, до нескольких часов. Поэтому выполнять её рекомендуется в нерабочее время, когда другие сотрудники завершили свою работу в 1С.

Read More

Структуры в языке 1С 8.3

 

Структура представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка. Структуры обычно используются для хранения небольшого количества значений, каждое из которых имеет некоторое имя.

К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.

Элементы коллекции: КлючИЗначение

Для объекта доступен обход коллекции посредством оператора Для каждого Из Цикл.

При обходе выбираются элементы коллекции.

Свойства:

Имя ключа В качестве свойств структура предоставляет элементы. Имя свойства определяется ключом, а значение свойства определяется значением элемента.

Методы:

Вставить(Ключ, Значение) Устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.
Количество() Получает количество элементов структуры.
Очистить() Удаляет все элементы структуры.
Свойство(Ключ,  НайденноеЗначение) Получает значение элемента по указанному имени, а также проверяет, имеется ли указанное свойство.
Возвращает значения:
Истина – ключ найден.
Ложь – в противном случае.
Удалить(Ключ) Удаляет элемент структуры с заданным ключом.

Конструкторы:

Новый Структура(ФиксированнаяСтруктура) Создаваемая структура заполняется свойствами из исходной фиксированной структуры.
Новый Структура(Ключи, Значения) Создает структуру с ключами, значения которых передаются в параметре конструктора. Если в первом параметре заданы ключи элементов структуры, то в следующих параметрах могут быть указаны значения этих элементов в том же порядке, в котором они расположены в строке в первом параметре.

Примеры работы со структурами:

//// Создание структуры (способ 1):
Время = Новый Структура("Часы, Минуты, Секунды", 12, 45, 33);
Сообщить("Время " + Время.Часы + ":" + Время.Минуты + ":" + Время.Секунды);
//// Создание структуры (способ 2):
ЛичныеДанные = Новый Структура;
// Добавляем в структуру записи в формате: пара ключ - значение (имя переменной – её значение произвольного типа)
ЛичныеДанные.Вставить("Фамилия", "Иванов");
ЛичныеДанные.Вставить("Имя", "Иван");
ЛичныеДанные.Вставить("ДатаРождения", '19800802');
Сообщить(ЛичныеДанные.Имя + " " + ЛичныеДанные.Фамилия + " родился " + ЛичныеДанные.ДатаРождения);
//// Изменение значения поля структуры (способ 1):
Время.Часы = 13;
//// Изменение значения поля структуры (способ 2):
ЛичныеДанные.Вставить("Фамилия", "Сидоров");
//// Как узнать количество элементов структуры:
Сообщить(Время.Количество());
//// Обход всех элементов структуры:
Для Каждого Элемент Из ЛичныеДанные Цикл
  Сообщить(Элемент.Ключ + " " + Элемент.Значение);
КонецЦикла;
//// Удалить элемента структуры:
ЛичныеДанные.Удалить("ДатаРождения");
//// Очистка всех элементов структуры:
ЛичныеДанные.Очистить();

Read More

Тестирование и исправление базы 1С 8.3

Во время работы с 1С иногда встречаются сбои различного рода. Это может быть Ошибка СУБД, файл базы данных поврежден, Ошибка формата потока и тому подобное. При повреждении информационной базы 1С в большинстве случаев помогает запуск тестирования и исправления через конфигуратор. Также тестирование и исправление информационной базы 1С 8.3 стоит выполнять перед обновлением конфигурации базы. Перед выполнением тестирования и исправления необходимо сделать резервную копию базы.

Если же зайти в конфигуратор тоже не получается, на этот случай есть утилита chdbfl.exe, находящаяся в папке с установленной программой 1С, о ней мы тоже поговорим ниже.

Тестирование и исправление в конфигураторе

Для начала следует заметить, что тестирование и исправление информационной базы может выполняться только в монопольном режиме, т.е. работа пользователей с информационной базой в процессе тестирования и исправления невозможна.

Запустим программу в режиме конфигуратора:

Откроем меню Администрирование пункт – Тестирование и исправление:

Настройка «Тестирования исправления информационной базы»

В Тестировании и исправлении информационной базы существует несколько опций, которые мы сейчас рассмотрим:

  • Реиндексация таблиц информационной базы – это полное перестроение индексов таблиц базы данных. Реиндексация повышает скорость работы информационной базы.
  • Проверка логической целостности информационной базы – проверяет логическую и структурную целостность БД, исправляет ошибки в данных.
  • Проверка ссылочной целостности информационной базы – проверка информационной базы на наличие «битых» ссылок. Такие ошибки могут возникать при непосредственном удалении объектов системы или сбоях. Существует 3 варианта действий для исправления таких ошибок:
    • Создавать объекты – система создает соответствующие элементы базы, которые можно потом заполнить необходимой информацией.
    • Очищать ссылки – «битые» ссылки будут очищены.
    • Не изменять – система только покажет вам ошибки.
  • Пересчет итогов. Итоги – таблица предварительно подсчитанных результатов в регистрах накопления, расчета и бухгалтерии. Пересчет итогов, как и реиндексация таблиц, помимо исправления ошибок позволит ускорить работу программы.
  • Сжатие таблиц информационной базы – при удалении данных 1С не удаляет строки таблиц, а лишь «помечает» их на удаление. Они перестают быть видимыми, но всё ещё находятся в базе данных. Сжатие базы данных удаляет эти данные безвозвратно, уменьшая объём базы. Так же такого же эффекта можно достичь выгрузкой и загрузкой файла информационной базы.
  • Реструктуризация таблиц информационной базы – процесс, при котором система пересоздаст таблицы базы. Такая же процедура происходит и при внесение изменений в структуру конфигурации.

В нашем примере проставим все галочки как на рисунке и нажмём Выполнить:

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

После окончания тестирования нажимаем Закрыть:

Результат выполнения операций мы можем увидеть в окне служебных сообщений.

Тестирование и исправление закончено.

Утилита chdbfl.exe

     Если информационная база повреждена настолько, что зайти в конфигуратор не получается, можно воспользоваться утилитой от 1С –  chdbfl.exe. Утилита поставляется вместе с платформой 1С, и найти ее можно в папке Bin в каталоге установки платформы 1С:

Перед началом тестирования следует сделать резервную копию информационно базы, поскольку использование этой утилиты может привести к необратимым последствиям.

Запускаем утилиту, в открывшемся окне указываем путь к нашей базе данных, ставим галочку Исправлять обнаруженные ошибки и жмём Выполнить:

Ждем окончания операции. В зависимости от размера базы, ожидание может занять продолжительное время.

     После выполнения, исправленные ошибки отобразятся в окне утилиты. В данном случае ошибок не обнаружено. Нажимаем Закрыть и пробуем зайти в программу. Если зайти все также не получается, вам необходимо обратиться к специалисту.

Read More

Перенос базы 1С 8.3 на другой компьютер с сохранением лицензии

В том случае, если информационная база является файловой и хранится на локальном компьютере, для её переноса следуйте дальнейшим инструкциям. В противном случае можно сразу приступить к подключению базы.

Выгрузка базы в файл

Обратите внимание, что выгрузку базы можно осуществить только с правами администратора. При этом в момент выгрузки не должно быть запущенных сеансов – то есть работа всех пользователей должна быть завершена.

Чтобы перенести базу 1С с одного компьютера на другой, ее необходимо выгрузить в файл. Делается это в конфигураторе, в меню Администрирование – Выгрузить информационную базу:

Выгрузка информационной базы – довольно длительный процесс, продолжительность которого зависит как от самой конфигурации, так и от количества данных в базе. После выгрузки базы мы получим файл с расширением .dt. Имя данного файла и место, куда вы его сохраните, могут быть произвольными.

Подключение базы

Мы используем файловый вариант информационной базы, поэтому следующим шагом будет создание на новом компьютере пустой базы. Запустите 1С:Предприятие, и в открывшемся списке информационных баз нажмите на кнопку Добавить:

Создадим новую информационную базу:

Выберем создание информационной базы без конфигурации:

Указываем наименование нашей новой базы и жмём Далее. После этого программа автоматически создаст пустую конфигурацию.

Загрузка базы

После добавления в список пустой конфигурации, в нее нужно зайти в режиме конфигуратора:

Загрузка производится как и выгрузка – в меню конфигуратора Администрирование – Загрузить информационную базу:

Программа попросит вас выбрать файл с выгруженной вами ранее информационной базой. В нашем случае это 1Cv8.dt:

Время загрузки информационной базы зависит от её объёма. По завершении загрузки, с ней уже можно работать.

Перенос лицензии

В случае, если вы используете сетевую лицензию, которая хранится на сервере, дополнительно ничего переносить не нужно. Достаточно прописать адрес сервера лицензий в соответствующем файле настроек.

Аппаратный ключ

Если вы используете аппаратный ключ – устройство, похожее на флешку, перенос лицензии не составит труда. В этом случае при установке платформы 1С:Предприятие нужно просто установить флажок Устанавливать драйвер защиты. В дальнейшем от вас потребуется только вставить ключ в USB – порт компьютера.

Программный ключ

Если же вы используете программный ключ, потребуется произвести ряд дополнительных действий. Причина в том, что когда настраивается программная лицензия, производится её привязка к железу. Даже в случае замены некоторых деталей компьютера может потребоваться регистрация лицензии заново. При этом формируется специальный файл, который подойдет только к этому компьютеру из-за привязки к комплектующим ПК.

Однако фирмой 1С предусмотрена, возможность замены как отдельных частей, так и всего компьютера. В таком случае можно будет воспользоваться резервными лицензиями. Резервные лицензии (пин-коды) находятся в коробке с программным продуктом, где был основной ключ. Их количество ограничено и обычно составляет 3 штуки.

При регистрации новой резервной лицензии необходимо вводить точно такие же данные, какие были введены изначально при вводе самого первого пин-кода из коробки. Эти данные уже переданы в фирму 1С, поэтому при их несовпадении лицензия может не активироваться. Следующим шагом требуется активировать лицензию. Сделать это можно через интернет, по электронной почте, или по телефону. Если резервные лицензии закончились, то решить данную проблему можно будет только обратившись в фирму 1С.

Так же учтите, что во избежание блокировки вашего ключа при регистрации резервного пин-кода, рекомендуется отключить компьютер с основной лицензией от интернета.

Read More

Самостоятельно обновляем 1С 8.3 через конфигуратор

Все типовые конфигурации 1С обновляются одинаково, сделать это не сложно. В данной статье рассмотрим, обновление 1С 8.3 через конфигуратор на примере конфигурации Бухгалтерия предприятия 3.0.


Важно!
Обновиться легко, если в вашей конфигурации нет своих доработок. Если же доработки есть, лучше привлечь программистов.


Итак, для обновления нашей конфигурации нам понадобится узнать наш текущий релиз, скачать новую версию и установить само обновление.

Как узнать текущую версию 1С

Текущую версию 1С можно посмотреть в пользовательском режиме, или в конфигураторе. Поскольку мы будем выполнять обновление в конфигураторе, то и смотреть будем в нём.

Сначала запустим 1С в режиме конфигуратора:

В конфигураторе зайдем в меню Справка — О программе:

Здесь будет указана текущая версия 1С. Видим, что у нашей конфигурации 1С:Бухгалтерия предприятия версия 3.0.77.52:

Создание резервной копии базы

Чтобы обезопасить свою базу данных от непредвиденных проблем, которые по разным причинам могут возникнуть при обновлении конфигурации, рекомендуется создать резервную копию базы. В случае, если после обновления возникли проблемы, всегда можно будет восстановить базу из резервной копии.

Копия создается в конфигураторе через меню Администрирование – Выгрузить информационную базу:

Загрузка обновления конфигурации

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

Там мы увидим таблицу с версиями 1С. Здесь нам понадобится знание текущей версии нашей конфигурации 1С, которую мы посмотрели выше. В нашем случае это 3.0.77.52. Далее ищем версию повыше (может быть и на несколько релизов выше) и проверяем, чтобы в колонке «Обновление версии» был наш релиз. В нашем случае можно обновиться на релиз 3.0.77.56:

Нажимаем на ссылку с номером, затем скачиваем дистрибутив обновления:

Установка шаблона обновления

Распакуем архив с обновлением и запустим файл setup.exe:

Откроется помощник установки шаблона обновления, в котором можно просто нажимать Далее.

Обновление в конфигураторе

Открываем конфигуратор и заходим в меню Конфигурация – Поддержка – Обновить конфигурацию:

Далее выберем источник, откуда брать обновления. Для первого варианта поиск выполняется автоматически из шаблонов. Во втором случае можно вручную указать файл .cfu.

Выберем Поиск доступных обновлений и нажмем Далее:

Уберем флажок Искать обновления в каталогах и снова нажмём Далее:

Откроется список версий для обновления. Здесь может быть несколько версий. Выбираем самую большую и проверяем, чтобы в скобках было написано «обновление». Если такого слова нет, значит на эту версию обновляться нельзя. Нажимаем Готово:

Жмём Продолжить обновление:

В следующем окне будут показаны текущая и новая конфигурации, нажимаем ОК:

После окончания обновления, выйдет сообщение:

Жмём кнопку Да для продолжения. В конце обновления выйдет сообщение со списком изменений. Нажимаем Принять:

Теперь открываем программу в режиме 1С:Предприятие и подтверждаем легальность обновления:

Последний этап также займет определенное время:

На этом обновление выполнено.

Read More

Обновление классификатора банков в 1С 8.3

Классификатор банков в 1С – это перечень кредитных организаций, которые могут вести банковскую деятельность РФ с актуальными реквизитами. Подобный справочник упрощает работу в 1С, и помогает избежать ошибок при ручном заполнении реквизитов банка. Естественно, очень важно держать его в актуальном состоянии и регулярно обновлять. Есть два способа обновить классификаторы банков: настроить автоматическую загрузку, или сделать это вручную.

Автоматическая загрузка классификатора банков в 1С 8.3

В новых выпусках конфигураций 1С:Предприятие справочник автоматически загружается ежедневно. Для этого создано регламентное задание, по которому при необходимости вносятся изменения и дополнения, либо происходит полная загрузка классификаторов.

Всегда есть возможность включить, выключить, или сменить настройки автоматического обновления справочника Классификатор банков РФ. Для смены настроек перейдем в Администрирование – Поддержка и обслуживание:

Далее раскроем блок Регламентные операции и выберем там пункт Регламентные и фоновые задания:

В открывшемся окне увидим перечень всех регламентных и фоновых заданий. Найдем среди них регламентное задание Загрузка классификатора банков. Обратите внимание, что если зеленая галочка напротив задания отсутствует, автоматическое обновление классификатора производиться не будет. Для открытия настроек дважды кликаем левой кнопкой мыши по нашему регламентному заданию:

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

Для включения регламентного задания ставим галочку Включено. Для изменения расписания обновлений перейдем по гиперссылке Расписание. По умолчанию загрузка классификаторов банков будет происходить раз в сутки, но частоту загрузки можно изменить по своему усмотрению.

Если произошла ошибка загрузки классификатора, то информацию об этом можно посмотреть в журнале регистрации.

Ручная загрузка классификатора банков в 1С 8.3

Фоновые задачи сильно тормозят работу системы 1С, поэтому некоторые администраторы стараются их по возможности отключать. Регламентное задание по загрузке классификатора тоже может быть неактивным. Также может случиться, что справочник нужно срочно обновить, и нет времени ждать, пока он загрузится автоматически. На этот случай существует возможность ручного обновления справочника. Рассмотрим, как это сделать на примере конфигурации 1С:Бухгалтерия 3.0.

Загрузку классификатора можно запустить из справочника Банки в меню Справочники. В случае, когда он в этом меню отсутствует (например, когда программа была впервые установлена), это можно исправить в настройках навигации, путем переноса его из одной части в другую.

Находясь в справочнике Банки, выбираем действие Создать. Будет предложен выбор банка из классификатора.

После согласия, откроется искомый справочник. В верхней части окна есть кнопка Загрузить классификатор, она также может находиться под кнопкой Еще. После нажатия выбираем источник обновления справочника: с сайта агенства «РосБизнесКонсалтинг», или с диска «ИТС». Жмём Загрузить:

Read More

Работа с файлами Excel в 1С 8.3

MS Excel давно стал стандартом для работы с электронными таблицами. Поэтому весьма частая задача, с которой сталкивается 1С разработчик – это чтение файлов Excel и загрузка их в 1С. В статье рассматриваются различные способы выгрузки и загрузки из 1С в файлы Excel.

Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки:

  • Обмен через OLE
  • Обмен через табличный документ
  • Использование COMSafeArray
  • Обмен через ADO
  • Выгрузка без программирования

Обмен через OLE

Наверно самый распространённый вариант – обмен через технологию OLE automation. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами.

Обмен через OLE требует наличие установленного MS Excel на компьютере, на котором будет производиться обмен данными:

  • На компьютере конечного пользователя, если обмен происходит на стороне клиента;
  • На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.

Чтение из Excel через OLE:

// —— ВАРИАНТ 1 ——
// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
// Закрытие книги
Книга.Close(0);
// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;
 
// —— ВАРИАНТ 2 ——
// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
// Закрытие книги
Книга.Application.Quit();

Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:

// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
    ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;
// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
    НомерСтроки = НомерСтроки + 1;
    ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
    Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
        Прервать;
    КонецЕсли;
КонецЦикла;

Очень часто приходится работать с очень большими файлами Excel, и обработка путем перебора строк занимает огромное количество времени. В таких случаях удобно в одно действие загрузить всю таблицу в массив и потом работать уже непосредственно с массивом:

ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();

Выгрузка в Excel через OLE:

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);
// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;
// Сохранение файла
Книга.SaveAs(ИмяФайла);
// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

Полезные функции при работе с Excel через OLE:

Устанавливает видимость Excel при работе //0 - Excel не виден, 1 - виден.
Соединение.Visible = Видимость;
Добавление новой книги в файл Excel Книга = Соединение.WorkBooks.Add();
Сохранение книги Excel Книга.SaveAs(ИмяФайла);
Добавление нового листа к книге Лист = Книга.WorkSheets.Add();
Переименование листа Лист.Name = ИмяЛиста;
Изменение маштаба листа //"Масштаб" (от 10 до 400).
Лист.PageSetup.Zoom = Масштаб;
Изменение ориентации листа //1 - книжная, 2 - альбомная.
Лист.PageSetup.Orientation = Ориентация;
Отступы листа //Левый отступ
Лист.PageSetup.LeftMargin = Соединение.CentimetersToPoints(Сантиметры);
//Верхний отступ
Лист.PageSetup.TopMargin = Соединение.CentimetersToPoints(Сантиметры);
//Правый отступ
Лист.PageSetup.RightMargin = Соединение.CentimetersToPoints(Сантиметры);
//Нижний отступ
Лист.PageSetup.BottomMargin = Соединение.CentimetersToPoints(Сантиметры);
Обращение к ячейке чтение/запись //Прочитать значение ячейки
//Сч = Номер строки
//Сч2 = Номер колонки
Данные = Лист.Cells(Сч, Сч2).Value;

//Записать значение в ячейку
Лист.Cells(Сч, Сч2).Value Данные;
Обращение к области ячеек //В качестве параметров передаем ячейки по диогонали
Лист.Range(ЛистЭксель.Cells(1, 1),ЛистЭксель.Cells(ВсегоСтрок, ВсегоКолонок))

Часто при чтении или записи значений в Excel, ставятся
лишние пробелы в числе. Например, 1502 может быть
считано как 1 502. В дальнейшем это значение не
приводится к числу. Эту проблему можно решить заменой.

ЗначениеЯчейки = Лист.Cells(1, 3).Value;
СтрЗаменить(Строка(ЗначениеЯчейки), Символы.НПП,"");
Объединение ячеек Лист.Range(Лист.Cells(1, 1), Лист.Cells(10, 1)).Merge();
Работа с именованными ячейками в Excel Обл = Лист.Range("Имя_Ячейки_В_Excel").Select();
Обл.Value = "Присваиваем значение";
Удаление ячейки Лист.Cells(1, 3).Delete();
Удаление области ячеек Лист.Range(Лист.Cells(1, 1), Лист.Cells(10, 1)).Delete();
Обращение к строке //Сч = Номер строки
Лист.Rows(Сч);
Изменение ширины колонки Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
Обращение к колонке //Сч = Номер Колонки
Лист.Cols(Сч);
Удаление Строки Лист.Rows(Сч).Delete();
Фон ячейки/области/строки/ //Фон Ячейки
Лист.Cells(1, 1).Interior.Color = ПолучитьЦветExcelRGB(10, 10, 10);
 
//Фон Области
Лист.Range(Лист.Cells(1, 1), Лист.Cells(10, 1)).Interior.Color = ПолучитьЦветExcelRGB(10, 10, 10);
 
//Фон строки
Лист.Rows(Сч).Interior.Color = ПолучитьЦветExcelRGB(10, 10, 10);
Функция переводит цвет из формата RGB в формат Excel Функция ПолучитьЦветExcelRGB(R, G, B)
    Возврат ((B * 256) + G) * 256 + R;
КонецФункции;
Управление шрифтом в ячейке/строке/области //Изменение шрифта
Лист.Cells(НомерСтроки, НомерКолонки).Font.Name = ИмяШрифта;
 
//Изменение размера шрифтв
Лист.Cells(НомерСтроки, НомерКолонки).Font.Size = РазмерШрифта;
 
//Управление жирностью шрифта
//1-жирный шрифт (bold)
//0-нормальный шрифт (normal)
Лист.Cells(НомерСтроки, НомерКолонки).Font.Bold = Жирный;
 
//Управление курсивом шрифта
//1-Курсив
//0-Нормальный
Лист.Cells(НомерСтроки, НомерКолонки).Font.Italic = Курсив;
 
//2 - Подчеркнутый шрифт
//1- нет
Лист.Cells(НомерСтроки, НомерКолонки).Font.Underline = Подчеркнутый;
Разрешает переносить по словам в ячейке //1-Переносить
Лист.Cells(1, 1).WrapText = 1;
Управление рамкой ячейки //1 - Тонкая сплошная линия
Лист.Cells(НомерСтроки, НомерКолонки).Borders.Linestyle = ТипЛинии;
Устанавливаем формат ячейки //"@" - текстовый
//"0.00" - числовой
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;
Формула в ячейке Лист.Cells(Сч, Сч2).FormulaLocal = "=ОКРУГЛ(135,46456;0)";
Функция для получения ширины колонки Excel  &НаКлиенте
Функция ПолучитьШиринуКолнкиЭксель (ПараметрШиринаВПикселях)
    Если ПараметрШиринаВПикселях > 9 Тогда
        ШиринаВСимволах = (ПараметрШиринаВПикселях/0.75-5)/7;
    Иначе
        ШиринаВСимволах = ПараметрШиринаВПикселях/9;
    КонецЕсли;
    Возврат ШиринаВСимволах;
КонецФункции;
Лист.Columns("A").ColumnWidth = ПолучитьШиринуКолнкиЭксель (РазмерШиринаВПикселях);
Разрешить перенос слов в ячейке Лист.Cells(1, 1).WrapText = 1;
Группировки данных на листе //Развернуть все группы (строки и колонки):
Excel.ActiveSheet.Outline.ShowLevels(3, 3);
//Сернуть все группы (строки и колонки) до первого уровня:
Excel.ActiveSheet.Outline.ShowLevels(1, 1);
//Вернуть глубину дерева:
Лист.Rows(Инд).OutlineLevel;

Обмен через табличный документ

Простой способ, суть которого в том, что объект ТабличныйДокумент имеет методы:

  • Записать(<ИмяФайла>, <ТипФайлаТаблицы>) для выгрузки данных в файл.
  • Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) для загрузки данных из файла.

Внимание!

Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом при планировании клиент-серверного взаимодействия.


Загрузка из файла в табличный документ:

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

Здесь ПутьКФайлу – путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:

  • Значение.
  • Текст.

Выгрузка в файл также очень проста и осуществляется всего лишь одной строкой:

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Здесь ТабДок – сформированный табличный документ, ПутьКФайлу – имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX – формат создаваемого файла. Поддерживаются следующие форматы Excel:

  • XLS95 — формат Excel 95.
  • XLS97 — формат Excel 97.
  • XLSX — формат Excel 2007.

Использование COMSafeArray

При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. COMSafeArray – объектная оболочка над многомерным массивом SafeArray из COM, позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.

// Создание COMSafeArray
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок  1 Цикл
    Для Кол = 0 По ВсегоКолонок  1 Цикл
        МассивКом.SetValue(Кол, Стр, Значение);
    КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).Value = МассивКом;

Обмен через ADO

Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:

  • Не требует установки самой Excel, необходима лишь установить ODBC. Но, как правило, он уже установлен. Эта особенность позволяет работать на стороне сервера без дополнительных установок Excel.
  • Позволяет работать с таблицей Excel как с базой данных и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL.

Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.

Выгрузка через ADO:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);
// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=» + ИмяФайла + «;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения
// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;
// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды
// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»;
Команда.Execute(); // Выполнение команды
// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;

Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table:

// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;
// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»);
Таблица.Name = «Лист1»;
Таблица.Columns.Append(«Колонка1», 202);
Таблица.Columns.Append(«Колонка2», 7);
Таблица.Columns.Append(«Колонка3», 5);
Таблица.Columns.Append(«Колонка4», 5);
// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;

В приведенном примере в методе

Таблица.Columns.Append(«Колонка1», 202);

во втором параметре указывается тип колонки. Это не обязательный параметр, но вот некоторые значения типа колонки:

  • 5 — adDouble;
  • 6 — adCurrency;
  • 7 — adDate;
  • 11 — adBoolean;
  • 202 — adVarWChar;
  • 203 — adLongVarWChar.

Чтение через ADO:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);
// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=» + ИмяФайла + «;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения
// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»);
ТекстЗапроса = «SELECT * FROM [Лист1$]»;
// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);
// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
    ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value; // Обращение по имени колонки
    ЗначениеКолонки2 = Выборка.Fields.Item(0).Value; // Обращение по индексу колонки
    Выборка.MoveNext();
КонецЦикла;
Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;

В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе:

  • YES – первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
  • NO – первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.

В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:

  • Connection;
  • Command;
  • Recordset;
  • Record;
  • Fields;
  • Stream;
  • Errors;
  • Parameters;
  • Properties.

Выгрузка без программирования

Если в режиме 1С Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.

Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как в главном меню.

Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:

  1. Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список.
  2. Сохранить табличный документ в требуемый формат.

 

Read More

Загружаем курсы валют в 1С 8.3

Курсы валют нужно держать в актуальном состоянии если в организации используются взаиморасчеты в валютах. Добавлять курс каждой валюты вручную каждый день очень неудобно. В 1С есть возможность автоматизировать эту задача. Для начала, найдём список валют.

Валюты хранятся в меню Справочники – Банк и касса, или Покупки и продажа:

Справочник может отсутствовать в этих разделах. В таком случае нажмем на шестеренку в правом верхнем углу и выбираем Настройка навигации.

В нашем примере добавим справочник Валюты в раздел Банк и касса: в левом списке находим пункт Банк и касса, и в нём находим Валюты. Переносим его в раздел Выбранные  команды с помощью кнопки Добавить. Жмём ОК.

Загружаем курсы валют из Интернета

Откроем список валют. Если нужной валюты нет, добавляем ее по кнопке Создать – По классификатору:

В списке валют выбираем нужную нам и нажимаем Выбрать:

Нажимаем Загрузить курсы валют:

В открывшемся окне период, за который в программе нет курсов валют, выставится автоматически. Флажками отмечаем валюты, которые хотим загрузить, нажимаем Загрузить и закрыть:

Курсы валют будут загружены.

Как посмотреть текущие курсы валют в 1С 8.3

Для просмотра курсов откроем нужную валюту в справочнике Валюты и перейдем на закладку Курсы валют:

Если хотим, чтобы курс загружался автоматически, необходимо выбрать вариант Загружается из Интернета. Можно также связать курс с другой валютой, либо рассчитывать его по формуле.

В списке представлены валюты на каждый день.

Загрузка курса валют по расписанию в 1С 8.3

Курсы валют можно загружать автоматически по расписанию. Для этого в меню Администрирование зайдём в Настройки программы – Обслуживание.

Раскроем пункт Регламентные операции и перейдем по ссылке Регламентные и фоновые задания:

В Регламентных и фоновых заданиях отыщем Загрузка курсов валют. Установленный напротив задания флажок означает, что задание работает.

Для просмотра или изменения расписания нажмем Настроить расписание:

Здесь мы можем задать любое расписание Как правило, достаточно установить загрузку курсов раз в день:

Автоматическая загрузка курсов валют настроена.

Read More

Выгрузка и загрузка данных в 1С 8.3 через XML

Иногда в работе возникают ситуации, когда необходимо перенести данные из одной конфигурации 1С в другую. Для переноса данных между идентичными конфигурациями существует обработка Выгрузка и загрузка данных xml.

Внешняя обработка Выгрузка и загрузка данных XML

Прежде всего следует отметить, что некоторых конфигурациях уже имеется типовой функционал для обмена данными, например: выгрузка из Зарплата и кадры государственного учреждения в Бухгалтерию государственных учреждений, из конфигурации Зарплата и управление персоналом в Бухгалтерию предприятия, из Управления торговлей в Бухгалтерию предприятия, и т.п.

В случае же, если конфигурации разные, приходится создавать правила переноса в конфигурации 1С: Конвертация данных.

Для переноса данных между идентичными конфигурациями существует обработка Выгрузка и загрузка данных XML.


Важно!
Для корректной работы обработки версия базы, в которую загружаются данные, должна совпадать с версией базы, из которой данные были выгружены.


Обработка Выгрузка и загрузка данных XML поставляется в составе конфигурации 1С: Конвертация данных 2, также ее можно взять с диска ИТС или скачать с сайта 1С.

Эта обработка универсальна, то есть подходит для любых конфигураций. Она позволяет произвести выгрузку необходимых данных в формате xml и загрузить их в другую информационную базу.

Выгрузка данных из базы 1С в XML

Откроем обработку Выгрузка и загрузка данных XML в базе-источнике, откуда будем выгружать наши данные: меню Файл – Открыть.

Выберем и откроем обработку Выгрузка и загрузка данных XML:

Откроется обработка, в которой необходимо настроить выгрузку. В таблице на вкладке Выгрузка отображён список всех автоматически переносимых объектов базы. Надо отметить галочками слева пункты, которые будем выгружать. Обратите внимание, что у каждого поля справа стоит отметка Выгружать при необходимости. Это означает, что если выгружаемый объект связан с другими объектами, то при анализе объекта выгрузки (кнопка Определить данные, выгружаемые по ссылке), программа 1С 8.3 покажет связанные объекты. Их нужно будет также отметить при необходимости.

Например, при выгрузке справочника Контрагенты или Организации можно выгрузить Банковские счета и Договора. При выгрузке справочника Номенклатура можно загрузить Единицы измерения. Если их не выгружать, то при загрузке в другую базу этих данных не будет, а при переносе документов, эти поля окажутся пустыми, и вместо данных в них будет надпись <Объект не найден>.

Также здесь можно можно установить галочку выгружать в формате FastInfoSet. Данный формат использует альтернативный синтаксис отображения xml-данных и обеспечивает меньший объем файлов при более высокой скорости обработки. Файл этого формата имеет расширение .fi или .finf.

Для примера, в новую созданную базу 1С 8.3 выгрузим справочники Организации, Контрагенты и Номенклатура. Отметив в списке необходимые для выгрузки объекты, нажимаем кнопку Определить данные, выгружаемые по ссылке. Программа отметит галочками справа связанные объекты, которые также можно будет отметить для выгрузки. Дополнительно отметим связанные справочники Договоры Контрагентов, Банки и Банковские счета. Затем нажимаем кнопку Выгрузить. Сформировав файл, программа предложит Открыть его, или Сохранить:

Нажмём Сохранить и укажем папку для сохранения:

Жмём кнопку Сохранить – файл выгружен.

Загрузка данных из XML в базу 1С

Теперь откроем обработку Выгрузка и загрузка данных XML в базе-приёмнике, в которую будем загружать наши данные. В этот раз выберем вкладку Загрузка и нажмём кнопку Загрузить данные:

В открывшемся окне выбираем наш ранее сохраненный файл, нажимаем кнопку Открыть и ждем окончания загрузки данных из файла:

Проверяем наши справочники. Справочник Контрагенты: Справочники – Контрагенты.

Проверим, перенесся ли справочник Договоры. Откроем вкладу Договоры в элементе справочника Контрагенты:

Получилось. Но для этого мы его отметили дополнительно при выгрузке. Проверим теперь справочник Номенклатура: Справочники – Номенклатура.

Итак, все выбранные нами данные успешно перенесены.

Read More

Переход с 1С ЗУП 2.5 на ЗУП 3.1

«1С:Зарплата и Управление персоналом» 3.1 – это новая программа, с отличичтельной архитектурой хранения и обработки данных, что к сожалению не позволяет обычным способом перейти на новый релиз конфигурации. Потребуется осуществить перенос данных с 1С ЗУП 2.5 в новую систему, то есть загрузить и выгрузить данные.

В новой архитектуре ЗУП 3.1 новый дизайн, с полноценной поддержкой Web-клиента, доработана клиентская часть, в частности расширились возможности использовать современный интерфейс «Такси», поэтому обновление ЗУП 2.5 и переход на ЗУП 3.1 вполне оправданый.

Перейти на 1С:ЗУП 3.1 можно с нового месяца, не дожидаясь начала года. Закрыли месяц – перешли на новую редакцию.

Так как все начисления и удержания переезжают не документами, а записями регистров.

В этой статье мы опишем безопасный способ перехода: параллельный расчет заработной платы одновременно в 2 версиях (старой и новой) программы 1С ЗУП в течение одного (или нескольких) отчетного периода.

Инструкция по переходу с ЗУП 2.5 на 3.1

Переход может быть осложнен имеющимися доработками в установленной версии. Оценка актуальности доработок и реализация их в новой версии в любом случае невозможна без присутствия специалиста. Если вам потребуется помощь, вы всегда можете обратиться к нашим специалистам.

Далее потребуется:

  • Создать чистую информационную базу с последним релизом 1С:ЗУП 3.1;
  • Запустить его в пустой базе, указав на первом шаге работы стартового пошагового помощника, что требуется выполнить перенос данных из редакции 2.5; Выполнить загрузку данных;
  • Осуществить полную проверку данных после переноса;
  • Провести настройку учетной политики, настройку обмена данными в 1С 8.3 и начать работу.

Порядок перехода с ЗУП 2.5 на ЗУП 3.1

В старой информационной базе версии 2.5 доделайте все документы по начислению зарплаты, больничных, отпусков, выплаты зарплаты, расчету и перечислению налогов и взносов и т.д. Сделайте копию рабочей базы ЗУП 2.5 и разверните ее в отдельном каталоге. Зайдите в программу в режиме работы «Конфигуратор», выберите команду «Тестирование и исправление» в меню «Администрирование». Если ЗУП давно не обновлялся – обновите до последнего релиза.

Подготовка базы ЗУП 3.1 к загрузке данных

Подготовка базы ЗУП 3.1 состоит из следующих шагов:

  • Создание новой информационной базы ЗУП 3.1
  • Настройка стартового помощника
  • Выбор варианта переноса данных

Создание новой информационной базы ЗУП 3.1

Последний свежий релиз 1С ЗУП 3.1 можно скачать с сайта обновлений 1С. Помимо этого может потребоваться установка более новой версии платформы «1С:Предприятие 8», обновления которой также можно скачать с сайта.

Для создания чистой информационной базы необходимо запустить ярлык 1С и нажать «Добавить», указав создание новой базы. Далее выбрать из шаблона последний релиз «1С:Зарплата и Управление персоналом» 3.1.

Настройка стартового помощника и выбор варианта переноса данных

При начальном запуске ЗУП 3.1 надо выбрать пункт о переносе данных из «1С:Зарплата и управление персоналом 8», редакция 2.5, а после этого выбрать один из двух вариантов переноса данных.

Из списка баз необходимо выбрать соответствующую базу версии 2.5, данные из которой требуется перенести. Далее определяемся, какой путь переноса данных в ЗУП 3.1 выбрать.

Варианты переноса данных

Существует два вида переноса данных:

  • Упрощенный перенос (рекомендованный 1С);
  • Полный перенос (не рекомендованный).

Рассмотрим данные переносы в деталях

Упрощенный перенос

Рекомендуемый вариант: упрощенный

  • При выборе данного варианта переносятся не сами документы прошлых лет, а данные регистров и справочники.
  • Данный вариант позволит использовать в кадровом учете и расчете зарплаты новые возможности.
  • По взаиморасчетам перенесутся только остатки.
  • Перенос кадровой истории (Т-2), данных для расчета среднего заработка.*
  • Максимально быстрый вариант переноса.

*Однако не перенесутся данные о работниках по договорам ГПХ, а также данные о займах.

Read More

Обратный звонок