12 января 2016 г.

Выгрузка данных из 1С:Предприятие в Microsoft Excel

На первый взгляд может показаться, что нет никакой нужды выгружать данные из 1С:Предприятия в MS Excel. Гораздо комфортнее сделать привычный отчёт в формате табличного документа (*.mxl), а затем просто сохранить его в формате MS Excel (*.xls) с помощью встроенного конвертера платформы 1С:Предприятие.

Но не всё так однозначно. Бывают ситуации, когда либо результат преобразования может не соответствовать вашим ожиданиям, либо возможностей встроенного конвертера  недостаточно. Например, представьте, что нужно выгрузить данные в книгу Excel, содержащую возможности, недоступные в табличных документах 1С:Предприятия: многостраничные книги, формулы, макросы и т. д. Не лучше в таком случае сделать выгрузку данных непосредственно в файл *.xls, полностью контролируя процесс, чем довериться встроенному конвертеру, а потом результат "обрабатывать напильником"?

Давайте, я покажу, как можно довольно просто выгрузить данные в книгу MS Excel. Я считаю, нет нужды полностью создавать документ "с нуля" программно. Давайте поступим следующим образом. Сделаем в MS Excel шаблон будущего отчёта, затем поместим файл в макет 1С типа "Двоичные данные".


17 июля 2015 г.

Контролируем заполнение данных налогового учёта в документах "Операция" и "Корректировка записей регистров"

Есть в 1С:УПП два распрекрасных документа – "Операция (бухгалтерский и налоговый учет)" и "Корректировка записей регистров". Они много чего позволяют делать, в том числе ошибаться. У меня пока нет рецепта, как контролировать всё, что делают пользователи, и избегать ошибок. Решение одной из задач сейчас продемонстрирую.


Итак, условие задачи таково. Документ "Операция", как известно, позволяет вводить бухгалтерские проводки непосредственно в регистры бухгалтерии вручную. В документе имеются закладки "Бухгалтерский учет" и "Налоговый учет". На закладке "Бухгалтерский учет" вводятся проводки в регистр бухгалтерии "Хозрасчетный", а на закладке "Налоговый учет" – соответственно в регистр бухгалтерии "Налоговый". Чтобы избавить пользователя от рутины, на закладке "Бухгалтерский учет" имеется кнопка "Заполнить". При её нажатии на закладке "Налоговый учет" автоматически появляются соответствующие проводки налогового учёта. При этом все имеющиеся данные на закладке налогового учёта удаляются, то есть происходит перезаполнение. Всё хорошо, но, как известно, errare humanum est, то есть человеку свойственно ошибаться. Забывают нажимать кнопочку, забывают.

10 декабря 2014 г.

Необычное использование 1С:Предприятия


Необычное использование 1С Предприятия

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

Известно ли вам, дорогие читатели, пользователи, разработчики, о необычных программных продуктах, разработанных с использованием платформы 1С? Скажем, кто-нибудь уже написал "социальную сеть" на 1С? Запросто можно написать такое, согласитесь. Живо себе представляю: справочник "Пользователи", справочник "Фотографии", регистр сведений "Друзья", документ "Сообщение", отчёты "Друзья", "Друзья друзей" и так далее. Начинающие программисты, вот вам интересная задача, кстати. Не знаете с чего начать в 1С, начните с социальной сети.

29 ноября 2013 г.

Когда закончится обработка

Знакома ли вам эта неловкая ситуация, когда устанавливаешь обновление конфигурации, и вдруг начинается реструктуризация таблиц. Таблицы оказываются большими, обновление затягивается, и пользователи начинают приставать с вопросами: "Ну, когда же можно будет работать?" Вы отвечаете: "Не знаю...". А они опять: "Ну хотя бы примерно?" Но разработчики платформы "1С:Предприятие", видимо, посчитали, что информировать пользователей о ходе выполнения процесса не обязательно и, соответственно, этого не сделали. И даже более того - разработчики не предусмотрели возможности прервать процесс. Ну, да ладно, оставим это на их совести. Здесь мы всё равно ничем помочь не сможем. Давайте будем делать то, что в наших силах.

В статье "Как прервать выполнение обработки в 1С 8" я рассказывал, как предоставить пользователю возможность прерывать затянувшиеся по времени процессы. Но это лишь полдела. Ведь неизбежно возникает вопрос: как пользователь должен догадаться, что процесс затянется надолго? По факту того, что он уже долго выполняется? А если остаётся совсем немного, а пользователь прервёт процесс? Решение: пользователя нужно информировать о ходе выполнения программы.

4 июня 2013 г.

Гостем будете?

Принимаю гостевые посты 1С

Принимаю гостевые посты

Сейчас уже стало совершенно очевидно, что регулярно писать в блог я перестал. Но и объявлять его заброшенным тоже не хочется, поскольку я по-прежнему в теме. Есть предложение более конструктивное: я принимаю гостевые посты в "Дневник провинциального программиста".

Гостевые посты - не моё изобретение. Я полагаю, что большинству читателей известно, для чего пишутся и принимаются гостевые статьи. Для меня гостевые посты - это подпитка  блога новым контентом и его развитие. А для вас - это получение ссылок на ваши ресурсы. Разумеется, никто никому не платит. Натуральный обмен - вы мне статьи, я вам ссылки.

Требования к статьям простые и, надеюсь, всем понятные.

12 сентября 2012 г.

День программиста


Почти цитата:
- А какой сегодня день?
- 256-ой, День программиста...
- День программиста! Стой тут! Никуда не уходи! Я сейчас...
Да, 256-ой день в году мы, программисты, отмечаем свой профессиональный праздник. Текущий год високосный, и День программиста выпадает на 12 сентября. В обычном году - 13 сентября.

С праздником, коллеги! Успехов в работе!

1 июля 2012 г.

Электронная демократия?

Вчера Путин подписал указ "Об Управлении Президента РФ по применению информационных технологий и развитию электронной демократии".


6 июня 2012 г.

Списание суммы дооценки основных средств

Всем привет! Я давно не давал о себе знать. Поэтому спешу сообщить, что я жив-здоров, чего и вам желаю. Но я здесь не для того, чтобы только поздороваться. Есть реальная тема.

Речь пойдёт об основных средствах. А если точнее - о переоценке основных средств. Однажды я уже затрагивал тему переоценки в статье «Как программно создать и заполнить документ «Корректировка записей регистров», где в качестве примера я рассматривал переоценку основных средств. Вспомним, что увеличение стоимости основных средств и накопленной амортизации отражается следующими проводками:
  • Дт. 01.01 - Кт. 83.01 - Увеличение первоначальной стоимости ОС.
  • Дт. 83.01 - Кт. 02.01 - Увеличение суммы накопленной амортизации ОС.

23 января 2011 г.

Использование рекурсии в 1С

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

Недавно в процессе написания одного отчета у меня возникла необходимость получить для элемента справочника родителя самого верхнего (нулевого) уровня. На скриншоте, представленном ниже, для выделенного элемента справочника «Миксер Sоlас мод. 545» родителем нулевого уровня будет группа «Бытовая техника».

28 марта 2010 г.

Как организовать подключение внешних печатных форм в документе 1C

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

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

14 февраля 2010 г.

Про off-topic

«Ничего не пишется,
Просто не выходит.
Все куда-то движется,
А счастье не приходит...»

В последнее время у меня какое-то апатичное настроение. Как следствие - писать ничего не хочется. В общем, что-то вроде творческого кризиса. Профессиональную тему мозг вообще категорически отторгает. Время от времени меня посещают мысли типа «Кто виноват?» и «Что делать?» с вариантами возможных ответов, но... Вот уже две недели, как воз и ныне там.

В конце концов, я решил пока не париться. Все проходит и это тоже пройдет. А пока, в связи с вышеописанным, решил завести в блоге рубрику «Off-topic». В ней я буду публиковать все то, что к заявленной теме блога не имеет не малейшего отношения.

31 января 2010 г.

Как ограничить список выбора значений агрегатного типа в 1С 7.7

В предыдущем сообщении я рассказал о том, как ограничить список выбора значений агрегатного типа в 1С 8. Сегодня рассмотрим, как эта задача решается в 1С 7.7.

Помню, когда 1С 8.0 только появилась, мне часто задавали вопрос, трудно ли после 7.7 перестроиться на новую платформу. Не знаю, кому как, а мне лично было легко. И даже не потому, что встроенный язык программирования восьмой платформы близкий родственник языку программирования 1С 7.7. Скорее потому, что программировать в 1С 8 гораздо удобнее, а язык 1С 8 более логичный, предсказуемый и дает программисту гораздо больше возможностей для управления системой. А сейчас, по прошествии некоторого времени, платформа 1С 7.7 в сравнении с 1С 8 кажется неким полуфабрикатом. И теперь уже гораздо тяжелее возвращаться к программированию в старой версии, несмотря на многолетний опыт программирования в 1С 7.7.

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

23 января 2010 г.

Как ограничить список выбора значений агрегатного типа в 1С 8

Стандартный функционал для выбора значений агрегатного типа (справочников, документов, перечислений, счетов и т. п.) подразумевает выбор из всего существующего списка значений. А как быть, если список выбора необходимо ограничить? Об этом сегодня пойдет речь.

Способ 1. Использование отбора.

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

Для этого нужно для события НачалоВыбора соответствующего поля ввода определить процедуру обработки и внутри процедуры программно устанавить отбор для списка.

Далее следует пример процедуры обработки события НачалоВыбора для поля ввода СтатьяПДР. Реквизит (и поле ввода, соответственно) СтатьяПДР имеет тип СправочникСсылка.ПрочиеДоходыИРасходы. Для списка справочника «Прочие доходы и расходы» устанавливается отбор по реквизиту «Вид прочих доходов и расходов» со значением «Прочие внереализационные доходы (расходы)».

14 января 2010 г.

Опрос: с какой версией платформы 1С:Предприятие Вам приходится работать?

Ну, вот наконец-то отгремели все новогодние праздники. И пора бы мне обозначить свое присутствие.

Версия платформы 1С:Предприятие ?

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

31 декабря 2009 г.

Итоги уходящего года

В последние дни перед Новым годом блогосфера подводит итоги и строит планы на будущее. Мне хвастаться пока особо нечем. Моему «Дневнику» всего четыре месяца. Возраст, по большому счету, младенческий и великих результатов, понятное дело, пока не видно.

Только лишь для истории запишу сухие статистические факты. Итак, за время существования моего блога его посетили всего-то 955 уникальных посетителей. Посещений почти в 2 раза больше - 1842. Рассылку на Subscrube.ru читают 368 читателей. Около 30 человек подписались на RSS. В Twitter 28 последователей, но толку от этого не видно. По большей части, это случайные люди, которым нет дела до моего блога.

28 декабря 2009 г.

О периодичности нумерации документов и проблемах с уникальностью номеров

Несколько лет назад, когда я только начинал писать на платформе 1С 8 и многое тогда мне было в новинку, я столкнулся с одной проблемой. Я писал конфигурацию с нуля для нужд нашего предприятия. До этого она уже существовала у меня на платформе 1С 7.7. Но очередную версию я решил воссоздать в 1С 8.0, чтобы получить опыт программирования в новой платформе. Задача была мне известна, но в 1С 8 оказалось не все так просто, как могло показаться сначала.

Через некоторое время мне стали поступать звонки от пользователей по одной и той же проблеме: система выдавала ругательное сообщение «Не уникальный номер документа». Анализ ситуации выявил причину некорректной работы документа. Причина крылась в периодичности автонумерации документа.

24 декабря 2009 г.

Рассуждения на тему SEO

Я не раскрою большого секрета, если скажу, что продвижением «Дневника провинциального программиста» и, тем более, «Blogger без проблем» я всерьез пока не занимался. Можно назвать различные банальные причины: нехватка времени, усталость, лень, уклонение от рутинной работы и т. п.

Впрочем, есть мнение, что молодые сайты до поры до времени не нужно слишком активно раскручивать, ибо это выглядит неестественно и может навлечь гнев поисковых машин. Что касается «Дневника», похоже, период младенчества для него уже закончился. Примерно с начала декабря на блоге начал расти поисковый трафик, сначала от Google, а потом и от Яндекса. Разумеется, этот трафик дают главным образом НЧ-запросы. Но лед тронулся, а значит нужно усилить эту тенденцию.

23 декабря 2009 г.

Как программно создать и заполнить документ «Корректировка записей регистров»

Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ «Корректировка записей регистров», - ввод начальных остатков, исправление ошибок в учете, отражение в учете операций, для которых в конфигурации нет специальных документов. В документе есть сервис автоматического заполнения движений с предопределенным действием «Сторно движений документа». С его помощь можно автоматически создать движения по регистрам бухгалтерии и регистрам накопления, аналогичные движениям указанного документа, но с отрицательными значениями.

Иногда количество вводимых записей по регистрам может быть велико и тогда целесообразно выполнить корректировку регистров программно. Документ «Корректировка записей регистров», как Вы уже, наверно, догадались, не совсем обычный. А иначе бы о нем не стоило и писать. В этом плане у него много общего с документом «Операция», который мы разбирали недавно.

14 декабря 2009 г.

Как прервать выполнение обработки в 1С 8

Вообще-то сегодня у меня на очереди была друга тема, а именно - программное создание документа «Корректировка записей регистров» (в продолжение «Как программно создать и заполнить документ «Операция»). Но мне очень хотелось, чтобы пример для нее был реальный, из жизни. Пример-то я придумал, но с ним вышла небольшая заминка. И чтобы пауза долго не затягивалась, я пока решил переключиться на что-нибудь другое.

Сегодня у меня совсем простая «объяснялка» на тему Как прервать выполнение обработки в 1С 8. Судя по статистике того же Яндекса, этим вопросом регулярно интересуются, поэтом я счел нужным упомянуть о нем в дневнике.

Кто работал с 1С версии 7.7, тот знает, что любую обработку можно было прервать нажатием клавиши Esc. Эта возможность была встроена непосредственно в платформу 1С версии 7.7. И пользователи, и программисты к ней привыкли, поэтому отсутствие функции прерывания в восьмой версии платформы 1С:Предприятие вызывала недоумение.