Описание формата файлов конфигурации (CF, EPF, ERF)

Публикация № 250142

Разработка - Математика и алгоритмы

cf формат cf файл конфигурации

198
Внутренняя структура файла конфигурации (*.cf) давно не является секретом, однако подробной документации на него в сети практически нет. Данная статья является попыткой восполнить этот пробел.

Внутренняя структура файла конфигурации (*.cf) не является секретом. Добрые люди давно разобрали его и создали немало интересных утилит, позволяющих работать с этим форматом. На Инфостарте найдется добрый десяток (если не больше) интересных публикаций, так или иначе читающих содержимое *.cf файлов, так что тема эта совсем не новая.

Однако, хорошей, добротной документации на этот формат, к сожалению, совсем немного. На написание данной статьи меня надоумила публикация глубокоуважаемого awa, который подробно, во всех деталях описал структуру формата файловой ИБ 1С:Предприятия (*.1CD).

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

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

Предыстория

Как уже говорилось выше, структура формата давно известна и в сети есть информация по его структуре (хотя, довольно скудная). Мне эта информация понадобилась при разработке программы V8Viewer, работая над которой, я опирался на следующие материалы:

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

Терминология

Перейдем непосредственно к теме нашего обсуждения.

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

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

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

Смотрим внутрь

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

Итак, в общих чертах, файл CF (EPF/ERF) представляет собой контейнер, в котором хранятся документы.

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

Структура контейнера

Контейнер включает в себя следующие части (по порядку):

  1. Заголовок контейнера
    1. Адрес первого пустого блока, в который можно добавлять данные
    2. Размер блока по умолчанию
    3. Количество файлов в контейнере
  2. Документ оглавления контейнера
  3. Собственно данные, которые перечислены в оглавлении

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

Структура блока

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

Внутри контейнера тут и там встречается волшебная константа, обозначающая некую «пустоту» – это число 0x7fffffff.

Когда мы собираем документ из блоков, то смотрим в заголовке на адрес следующего блока. Если он равен 0x7fffffff, то «следующего» блока нет, этот – последний.

Константа 0x7fffffff - это значение INT_MAX, т.е. максимальное значение 4-байтового целого числа со знаком.

Логические «файлы»

Я упоминал, что термин «файл» я приберегу до лучших времен. Эти времена настали :)

Вся конфигурация хранится в контейнере в виде файлов. Если мы вспомним школьный курс информатики, то вспомним, что «файл», говорили нам – это именованный документ.

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

Если подвести итоги, то можно сказать следующее: в контейнере лежат разные документы, но некоторые из них имеют имя. Такие документы называются «файлы» и они носят не служебный, а непосредственно прикладной характер. Именно файлы хранят информацию о метаданных конфигурации.

Компоненты файла

Каждый файл состоит из двух документов:

  1. Документ атрибутов, который содержит имя файла и даты создания/изменения
  2. Документ содержимого, который содержит собственно тело файла

Оглавление контейнера

Теперь, когда все составные части озвучены, осталось рассмотреть, пожалуй, самый главный документ контейнера – документ оглавления, в котором указано расположение всех файлов контейнера. Как говорилось выше, документ оглавления это самый первый документ контейнера и он идет сразу же за заголовком контейнера.

Оглавление представляет собой массив записей, каждая из которых указывает на файл. Поскольку, файл состоит их двух документов (атрибуты и содержимое), то запись оглавления указывает на оба из них. Запись оглавления представляет собой три числа INT32:

  1. Адрес (смещение в файле) документа атрибутов
  2. Адрес (смещение в файле) документа содержимого
  3. Число 0x7fffffff (маркер конца записи).

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

Запись оглавления представляет собой 2 значащих числа INT32. Первое число – это адрес документа атрибутов файла. По этому адресу мы попадем на начало 1-го блока документа атрибутов. Из документа атрибутов мы можем узнать имя файла. Второе число – адрес документа содержимого файла. По этому адресу мы попадем на начало 1-го блока документа содержимого, откуда будем читать непосредственно данные файла.

Особенности сжатия данных.

Контейнер может содержать самые разные файлы. Как правило, это текстовые файлы в кодировке UTF-8. Однако среди файлов контейнера могут встречаться другие файлы-контейнеры. Проще всего провести аналогию с файловой системой. Контейнер – это директория, а файлы внутри контейнера – это ее содержимое. Директория может содержать другие директории.

Корневой каталог этой «файловой системы» - это сам файл *.CF. Внутри него могут быть другие файлы-контейнеры, по сути – вложенные директории, которые считываются ровно по тому же самому алгоритму и имеют ровно ту же самую структуру.

Тем не менее, есть одна особенность корневой директории. Все документы содержимого файлов внутри корневой директории сжаты по алгоритму Deflate. Содержимое файлов внутри вложенных директорий уже не сжато. Проще говоря, на верхнем уровне файла-контейнера тела всех файлов сжаты, но если файл внутри контейнера сам является контейнером, то внутри него файлы уже будут записаны в чистом виде (без сжатия).

Цепочка свободных блоков

В результате удаления каких-либо данных из контейнера в нем могут образовываться пустые места. Эти свободные места связываются в цепочку и образуют этакий «документ», данные которого отсутствуют. Иными словами, свободные блоки связаны друг с другом по тому же принципу, по которому связаны друг с другом блоки документов. Адрес первого свободного блока указывается в самом начале заголовка контейнера. Если адрес свободного блока равен INT_MAX, то это значит, что в середине контейнера нет свободных (пустых) блоков.

Краткий итог по теоретической части

  1. Файл CF(EPF/ERF) записан в формате «контейнера»
  2. Контейнер начинается с заголовка
  3. Все содержимое контейнера, за исключением заголовка, записано в виде «документов»
  4. Документ может быть разбит на блоки
  5. Документ начинается с заголовка блока, по которому можно узнать, как прочитать весь документ целиком
  6. Сразу за заголовком контейнера идет документ оглавления
  7. Оглавление, это набор записей, которые указывают на «файлы» внутри контейнера
  8. Каждый файл состоит из двух документов – документа атрибутов, где указано имя этого файла и документа содержимого, где, собственно, расположены данные файла.
  9. Каждая запись оглавления содержит 2 адреса. Первый – адрес документа атрибутов файла, второй – адрес документа содержимого.
  10. Контейнер может содержать вложенные контейнеры (как бы, вложенные папки)
  11. Файлы внутри корневого контейнера сжаты по алгоритму Deflate, файлы внутри вложенных контейнеров записаны без сжатия.

Давайте уже пощупаем байты

Итак, настало время рассмотреть, как конкретно устроены все упомянутые выше сущности.

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

Чтение документа по блокам

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

Итак, заголовок блока представляет собой строку длиной 31 байт. Строка эта имеет следующий вид:

[CRLF][Размер всего документа][Пробел][Размер текущего блока][Пробел][Адрес следующего блока][Пробел][CRLF], где:

  • CRLF – стандартный перевод строки Windows, пара символов \r\n (0x0D,0x0A)
  • Размер всего документа – общая длина документа в байтах. Записана в виде строкового представления hex-числа. Длина – 8 байт.
  • Пробел – пробел. Символ 0x20
  • Размер текущего блока – длина тела блока в байтах. Записана также в виде строкового представления числа INT32 в hex-формате. Если документ состоит из единственного блока, то размер всего документа либо меньше, либо совпадает с размером текущего блока (что логично)
  • Адрес следующего блока – адрес по которому расположен очередной блок документа. Если адрес следующего блока равен INT_MAX, то это значит, что следующего блока нет. Адрес следующего блока также записан в виде строкового представления числа.

Сразу за заголовком блока идет тело блока, которое имеет длину, указанную в поле «Размер текущего блока».

Рассмотрим рисунок: длина всего документа составляет 0x54 байта, красной рамкой выделены эти 0x54 байта. Это данные документа. Длина блока составляет 0x200 байт, т.е. больше чем длина самого документа. По этой причине остальные данные блока составляют "нули" неиспользуемого пространства. Значащие байты - это те, которые отмечены красной рамкой.

Если длина документа больше длины блока, то нужно прочитать следующий блок. Если в поле «Адрес следующего блока» записано значение, отличное от 0x7fffffff, то необходимо считать текущий блок, затем перейти по этому адресу и считать другой блок. Если в этом блоке также будет задан адрес следующего блока, то надо перейти и туда. Таким образом, формируется «цепочка» блоков, из которых состоит документ.

Чтение необходимо продолжать до тех пор, пока в поле «Адрес следующего блока» не встретится значение 0x7fffffff или пока не будет считано количество байт, указанное в поле «Размер всего документа».

Поле «Размер всего документа» имеет смысл только для первого блока. Во всех последующих блоках документа оно имеет значение 0x00000000.

Формат заголовка контейнера

Заголовок контейнера имеет длину 16 байт и состоит из следующих полей:

Поле

Тип

Пояснение

Адрес первого свободного блока

INT32 (4 байта)

Смещение, по которому начинается цепочка свободных блоков

Размер блока по умолчанию

INT32 (4 байта)

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

Поле неизвестного назначения (см. комментарии к статье) Часто совпадает с количеством файлов в контейнере

INT32 (4 байта)

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

Зарезервированное поле

INT32 (4 байта)

Всегда равно 0 (всегда ли?)

Формат записи документа оглавления

Оглавление содержит перечень указателей на файлы, размещенные в контейнере

Поле

Тип

Пояснение

Адрес документа атрибутов

INT32 (4 байта)

Адрес документа атрибутов файла

Адрес документа содержимого

INT32 (4 байта)

Адрес документа содержимого файлов

Зарезервированное поле

INT32 (4 байта)

Всегда равно 0x7fffffff

 

Формат документа атрибутов файла

Документ атрибутов описывает имя файла и даты его создания/изменения. 

Поле

Тип

Пояснение

Время создания файла

UINT64 (8 байт)

Время создания файла, выраженное в количестве 100-микросекундных интервалов, прошедших с начала нашей эры (01.01.0001 00:00:00)

Время изменения файла

UINT64 (8 байт)

Аналогично

Зарезервированное поле

INT32 (4 байта)

Всегда равно 0. Возможно, это флаги атрибутов, что-то вроде «только чтение», «скрытый» и т.п. Однако, я не встречал файлов, где это поле бы отличалось от нуля.

Имя файла

Строка в формате UTF-16

Занимает все оставшееся тело документа (за вычетом 2-х дат и резервного поля)

Принцип чтения контейнера

Для того, чтобы прочитать контейнер мы должны сделать следующие вещи:

Чтение оглавления

  1. Собрать из блоков документ оглавления и прочитать его
  2. Обойти все записи в документе оглавления и прочитать документы атрибутов (имена) файлов контейнера
  3. Сопоставить каждому полученному имени адрес документа содержимого
  4. На выходе получается соответствие «Имя файла» -> «Адрес содержимого»

Чтение файлов

  1. По имени файла получить из оглавления адрес документа содержимого
  2. Собрать из блоков документ содержимого
  3. Если это корневой контейнер, то распаковать документ содержимого (он сжат)
  4. Готово. Полученный результат является данными искомого файла.

Обновление от 25.02.2014

В статью внесены правки, рекомендованные awa в комментариях.

В заключение

Данная статья не является истиной в последней инстанции, вероятно, в ней есть даже ошибки. Тем не менее, если данная тема Вам интересна, то я надеюсь, что эта статья поможет вам в реализации ваших проектов. Удачи!

198

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Evgen.Ponomarenko 544 12.01.14 11:44 Сейчас в теме
// Ноу коммент
Для каждой Строки из Статья Цикл
    Сообщить("Респект и уважуха");
КонецЦикла;
Kinestetik; alnovin; sorb; maxopik2; jif; Arkadiy_B; artbear; DexterMorgan777; ffgnebel; ValeryZ; RomanRomans; fishca; ASZub; dmitry1975; Bukaska; DrAku1a; wowik; stashigor; GusevNA; CratosX; randa; cleaner_it; HEKPOH; Irwin; RailMen; Rothschild; Uncore; +27 Ответить
2. Uncore 1301 12.01.14 12:18 Сейчас в теме
(1) Evgen.Ponomarenko, присоединяюсь, только надо код подправить, а то не сработает :))
Для Каждого Строка из Статья Цикл
    Сообщить("Респект и уважуха");
КонецЦикла;
3. Rothschild 12.01.14 12:21 Сейчас в теме
(1) Evgen.Ponomarenko,
(2) Uncore,
можное еще и так:
Для о = 1 По СтрДлина(Заменить(Статья,Символы.ПС,";") Цикл
    Сообщить("Респект и уважуха");
КонецЦикла;



4. Uncore 1301 12.01.14 12:30 Сейчас в теме
(3) Rothschild, ну тогда лучше так, чтобы постоянно длину строки не брать :)
ДлинаТекста = СтрДлина(Заменить(Статья,Символы.ПС,";");
Для й = 1 По ДлинаТекста Цикл
    Сообщить("Респект и уважуха");
КонецЦикла;
5. Rothschild 12.01.14 12:34 Сейчас в теме
(4) Uncore,

ну тогда лучше так, чтобы постоянно длину строки не брать :)


могу на 1$m поспорить, что она один раз "возьмется"!!!
6. Rothschild 12.01.14 12:37 Сейчас в теме
(4) Uncore, ты наверное подумал
//ДлинаТекста = СтрДлина(Заменить(Статья,Символы.ПС,";");
й = 0;
Пока СтрДлина(Заменить(Статья,Символы.ПС,";") >= й Цикл
    Сообщить("Респект и уважуха");
    й = й + 1;
КонецЦикла;
7. Uncore 1301 12.01.14 12:41 Сейчас в теме
(6) Rothschild, затупил, ага. 1 раз берется.
8. Rothschild 12.01.14 12:48 Сейчас в теме
(7) Uncore, значит проспорил???
:)
9. Uncore 1301 12.01.14 12:49 Сейчас в теме
(8) Rothschild, да забирай, мне не жалко :)
11. Rothschild 12.01.14 13:45 Сейчас в теме
(9) Uncore,
возвратил ... шутка это, "не было такого уговора" !
:)
13. Rothschild 12.01.14 13:48 Сейчас в теме
(8)(9)(11)
Биржа у нас есть
...
открыть что ли еще КАЗИНО и БУКМЕКЕРСКУЮ КОНТОРУ ???
:)
10. andrewks 1270 12.01.14 13:36 Сейчас в теме
отличная работа! давно уже подумывал написать такую статейку, но лень и постоянная нехватка времени сделали своё чёрное дело
20. Evil Beaver 6360 12.01.14 21:23 Сейчас в теме
(10) andrewks,
давно уже подумывал написать такую статейку, но лень и постоянная нехватка времени сделали своё чёрное дело


У меня аналогичная история произошла с темой стартера. Разработка http://infostart.ru/public/247670/ реализует почти все мои давние идеи для стартера. Это, по-моему, единственный очень достойный стартер, который есть на этом сайте.
У меня осталась еще пара идей, но досадую немного, что пальма первенства уплыла :)
22. andrewks 1270 12.01.14 21:41 Сейчас в теме
(20)
У меня осталась еще пара идей, но досадую немного, что пальма первенства уплыла :)

нельзя объять необъятного ©
12. andrewks 1270 12.01.14 13:45 Сейчас в теме
В интернете мне попадалось название Compound-файл. Возможно, оно является устоявшимся среди старожилов 1С, но мне оно не очень нравится.

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


Compound - это из 7-ки. все md/ert являются Compound-файлами, терминология идёт от MS

в исходниках мне кажется весьма удачным обозначение 'catalog'.
а правильное название можно подсмотреть только во внутренних спецификациях 1С, имхо
14. andrewks 1270 12.01.14 14:02 Сейчас в теме
Время создания файла в непонятном мне формате.


насколько я понял, это DateTime(Int64)

Дата и время, представленные в виде нескольких 100-наносекундных интервалов, завершившихся с момента 00:00:00.000 1 января 0001 г. по григорианскому календарю.
15. Evil Beaver 6360 12.01.14 14:04 Сейчас в теме
(14) andrewks, как-то так, да. Я просто не смог этого сформулировать внятно.
16. m.bolsun 725 12.01.14 15:30 Сейчас в теме
Полезная статья, мне пришлось пару месяцев назад написать свою реализацию работы с контейнерами. Эта статья на тот момент ускорила бы работу. А так, даже имея на руках твои исходники, пришлось написать с нуля свой велосипед, чтобы разобраться с форматом:)
17. awa 2509 12.01.14 19:16 Сейчас в теме
(0) Отличная статья! У меня есть только несколько замечаний.
  • Везде используется UINT32, т.е. четырехбайтовое беззнаковое целое, однако, я все же склонен думать, тип всех таких значений четырехбайтовое знаковое. Магическая константа 0x7fffffff - это LONG_MAX, она же INT_MAX, максимальное четырехбайтовое знаковое значение. Отсюда, кстати, вытекает максимальный возможный размер контейнера 2 гигабайта.
  • В формате заголовка контейнера третье поле - это все же не количество файлов в контейнере. Да, частенько это поле совпадает с количеством файлов, но я так же видел много примеров, когда это не так. Подозреваю, что это своего рода версия контейнера, которая увеличивается при каждой завершенной операции записи в контейнер. Большинство внешних файлов cf/epf/erf никогда не изменяются, при сохранении из 1С они создаются заново, т.е. создается пустой контейнер, у которого номер версии 0, затем записывается туда первый файл, номер версии меняется на 1, записывается второй, номер версии меняется на 2 и т.д. Именно поэтому номер версии часто совпадает с количеством файлов в контейнере. Однако, если смотреть не внешние файлы, а такие же контейнеры в таблицах CONFIG и CONFIGSAVE внутри базы 1CD, то можно встретить контейнеры, в которых значение поля не совпадает с количеством файлов. Или, например, файлы hbk (help book) - имеют точно такой же формат контейнера, за исключением того, что содержимое файлов корневого каталога не сжато алгоритмом deflate. В этих файлах тоже зачастую это поле содержит значение, не совпадающее с количеством файлов в контейнере.
  • Время создания и время изменения файлов - это количество 100-микросекундных интервалов, прошедшее с начала нашей эры (01.01.0001 00:00:00). Не 100-наносекундных интервалов, как указано в (14), а именно 100-микросекундных. Откуда взялся интервал 100 микросекунд (0.0001 сек)? Возможно, в 1С хотели использовать именно 100-наносекундные интервалы, которые в некотором роде "стандартны" для Windows, только запутались в приставках милли-, микро- и нано-...
  • Термин "документ" я бы заменил на "поток", но это дело вкуса. Так как разработка эта внутренняя 1Совская, то правильной терминологии мы все равно не узнаем.
Ну а в целом, все правильно и по делу!
BigB; jif; ffgnebel; AlexPNov; RomanRomans; fishca; DrAku1a; artbear; zoytsa; cool.vlad4; soulsteps; Антон Ширяев; cleaner_it; B2B; zarucheisky; Bukaska; Evgen.Ponomarenko; orefkov; Evil Beaver; RailMen; +20 Ответить
19. Evil Beaver 6360 12.01.14 21:19 Сейчас в теме
(17) awa, спасибо за участие, внесу правки. Единственно мне непонятен смысл поля "версия" для контейнера. Для чего это?
23. awa 2509 12.01.14 22:06 Сейчас в теме
(19)(21) Я сам до конца не понимаю смысл третьего поля в заголовке контейнера. По крайней изменение его значения не приводит к неработоспособности контейнера. Я предположил, что это версия, не версия формата контейнера, а версия данных, содержащихся в контейнере. Возможно, 1С задумывала это поля для упрощения проверки, изменились ли данные с момента последнего считывания. Предположим, мы считали данные из контейнера и запомнили текущую версию. Если с контейнером параллельно может работать кто-то еще, то спустя некоторое время можно просто считать и сравнить номер версии, чтобы узнать, изменились ли данные в контейнере. Но это предположение трудно проверить, так как с внешними файлами cf/epf/erf 1C не работает в режиме изменения, она их каждый раз создает заново. Если мы открываем внешнюю обработку, то при сохранении 1С создает контейнер заново и затем целиком перезаписывает файл epf.
Возможно, что я ошибаюсь, и это поле несет какой-то другой смысл (но не количество файлов, точно!), и в общем, я согласен, что на него можно забить.
24. andrewks 1270 12.01.14 22:44 Сейчас в теме
(23) awa, внешнюю обработку можно хоть сто раз изменять (не добавляя и не удаляя объекты), значение остаётся одно и тоже.
но, в то же время, при добавлении, например, нового макета значение увеличивается на 1, при удалении - уменьшается.

поэтому я и сказал, что это никак не версия, больше смахивает на счётчик чего-то
25. awa 2509 12.01.14 23:07 Сейчас в теме
(24) Сорри, ты меня просто не понимаешь, я это уже объяснил в (17)
26. awa 2509 12.01.14 23:19 Сейчас в теме
(24) Простейший эксперимент. Открой существующую внешнюю обработку в конфигураторе. Удали на диске файл обработки - он спокойно удалится, 1С не держит файл открытым! Сохрани обработку в конфигураторе - файл снова появился! 1С не изменяет старый файл, ей вообще пофигу, есть он или нет, 1С заново создает контейнер и записывает файл.
27. andrewks 1270 12.01.14 23:26 Сейчас в теме
(26) awa, и что это доказывает?
28. Поручик 4333 13.01.14 02:18 Сейчас в теме
(27) Что платформа открывает файл, разлочивает его и освобождает дескриптор в файловой системе.
Не знал про такой фокус платформы.

Знаю, некоторые текстовые редакторы, например pspad, notepad+, не захватывают файлы. Их можно спокойно изменять в другой программе, а редактор просто спросит об обновлении.
29. andrewks 1270 13.01.14 07:23 Сейчас в теме
(28) да я и раньше был в курсе этого факта. просто непонятно, что это доказывает в контексте предназначения спорного поля
34. cleaner_it 238 14.01.14 03:05 Сейчас в теме
(28) Я всегда считал, что платформа копирует файл в темповую папку, и что изменяем мы именно его (темповый файл). А при сохранении - заменяет основной файл.
21. andrewks 1270 12.01.14 21:40 Сейчас в теме
(17) awa, насчёт версии не согласен. ну, не версия это никак. с другой стороны, на этом поле клин не сошёлся, можно на него вообще забить :)
58. gerkon1980 26.01.15 11:55 Сейчас в теме
(17) awa,
Валерий, здравствуйте. Мне очень, очень, очень нужна Ваша помощь в восстановлении базы 1С.
18. RailMen 12.01.14 19:16 Сейчас в теме
Статья хороша и по сути и в плане стиля изложения.
30. gr0ck 13.01.14 11:03 Сейчас в теме
31. B2B 260 13.01.14 21:17 Сейчас в теме
(0) Compound-файл — это файл, начинающийся с заглавных русских букв "РП". В этом формате в основном Офис хранит (хранил) свои файлы и 1С 7.7 (md, ert). cf — не Compound-файл.

P.S. Только сейчас увидел описание в (12)
32. B2B 260 13.01.14 23:33 Сейчас в теме
У меня пара вопросов:
  • В чем может быть смысл записывать числовые поля, как их представление?
  • Какие байты нужно добавить к deflate-потоку, чтобы получился полноценный zip-файл?
33. Evil Beaver 6360 13.01.14 23:47 Сейчас в теме
(32) B2B, насколько я понимаю, deflate - это алгоритм, которым могут быть сжаты элементы ZIP. Добавлением байтов, кажется дело не ограничится.
Вот здесь много буков, и я не смог дочитать, но наверное, там все написано.
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
35. Антон Ширяев 472 14.01.14 14:16 Сейчас в теме
Спасибо за интересную статью.
При выгрузке и повторной загрузке cf-производится дефрагментация документов внутри контейнера?
Или все же имеет какой-нибудь смысл попробовать дефрагментировать документы в cf?
36. Evil Beaver 6360 14.01.14 14:19 Сейчас в теме
(35) Антон Ширяев, вроде бы всегда cf создается с нуля и подобная операция не имеет смысла.
37. Elisy 921 15.01.14 07:43 Сейчас в теме
Еще можно отметить cfu-формат. Это тот же формат cf/epf/erf, но сжатый по стандартному алгоритму, схожему с zip
38. Evil Beaver 6360 15.01.14 09:44 Сейчас в теме
(37) Elisy, cfu я не изучал. Может расскажете подробнее?
39. andrewks 1270 15.01.14 13:15 Сейчас в теме
40. Elisy 921 15.01.14 13:34 Сейчас в теме
(38) если распаковать cfu, то полученный результат будет совместим с cf-форматом. Сжатие/распаковку можно выполнить в .Net framework классом DeflateStream. В этом все отличие.
41. Evgen.Ponomarenko 544 15.01.14 13:54 Сейчас в теме
(40) Elisy,
1C распаковывает/упаковывает без .Net
Может есть какой-то родной механизм 1С?
42. cool.vlad4 45 15.01.14 13:56 Сейчас в теме
(41) Evgen.Ponomarenko, что имеется в виду под родным механизмом?
44. Evgen.Ponomarenko 544 15.01.14 15:59 Сейчас в теме
(42) cool.vlad4
к примеру ЧтениеZipФайла.

по крайней мере в описании механизма записи видим...

ЗаписьZipФайла.Открыть(,,,МетодСжатияZIP)

МетодСжатияZIP содержит значения:
1.Копирование (Copy)
2.Сжатие (Deflate)
45. andrewks 1270 15.01.14 16:57 Сейчас в теме
(44) Evgen.Ponomarenko, нет, это совсем не то.

это прекрасно реализуется при помощи внешних компонент
46. Evgen.Ponomarenko 544 15.01.14 17:27 Сейчас в теме
(45) andrewks,
внешние компоненты - это не тоооо... и framework тоже не оооочень.
Чего-то мне не верится... что 1С с Deflate работает, а интерфейса к нему не имеет.
47. Evil Beaver 6360 15.01.14 17:29 Сейчас в теме
(46) Evgen.Ponomarenko, не имеет из встроенного языка? Да, не имеет. Читать Deflate-потоки из встроенного языка нельзя. Или можно, но какими-нибудь извращенскими способами, о которых я не знаю.

Ну а то, что метод сжатия в синтакс-помощнике называется "Deflate", так это просто английский терм встроенного перечисления, не более.
49. Evgen.Ponomarenko 544 15.01.14 17:46 Сейчас в теме
(47)
Ну а то, что метод сжатия в синтакс-помощнике называется "Deflate", так это просто английский терм встроенного перечисления, не более.

я так и подумал... но на всяк случай спросил... мож кто доковырялся.
51. andrewks 1270 15.01.14 20:20 Сейчас в теме
(47)
Ну а то, что метод сжатия в синтакс-помощнике называется "Deflate", так это просто английский терм встроенного перечисления, не более.

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

алгоритм, но не формат.

строго говоря, ZIP - формат хранения потоков, которые, в т.ч. (но не только), могут быть закодированы при помощи алгоритма Deflate
48. cool.vlad4 45 15.01.14 17:34 Сейчас в теме
(46) Evgen.Ponomarenko, я потому и спросил, что имеется в виду под родными. нет, 1С этого не умеет. то, что 1С работает с потоками, это вы путаете, это не 1С работает, это c++ работает, на которой написан 1С. если поковыряться, там вообще куча вещей зарыта. например, регулярки, которые есть в icu, для которых Орефков сделал ВК.
52. andrewks 1270 15.01.14 20:21 Сейчас в теме
(46) Evgen.Ponomarenko,
внешние компоненты - это не тоооо

внешние компоненты - это тоооо!
43. Elisy 921 15.01.14 14:12 Сейчас в теме
(41)
Я, к сожалению, не знаю такого механизма. 1С ограничена в низкоуровневых операциях.
50. GoodBeaver 15.01.14 19:19 Сейчас в теме
(0) не останавливайся "раскрой все секреты 1С". Такая же статья нужна и по файлам Dt и по файлу хранилища 1С "1cv8ddb.1CD" и по файлам cfu. Кроме того необходимо реализовать в виде dll API для работы с данными типами файлов (например только базовый функционал). И все это должно быть бесплатно... А лицевой счет (какие нибудь там Яндекс-деньги) для выражения благодарности никто не мешает опубликовать.
53. andrewks 1270 15.01.14 20:24 Сейчас в теме
(50) GoodBeaver,
и по файлу хранилища 1С "1cv8ddb.1CD"

формат 1CD давно уже описан awa
DrAku1a; Evil Beaver; zoytsa; +3 Ответить
54. Evil Beaver 6360 16.01.14 00:07 Сейчас в теме
(53) и кроме того, это описание от awa и стало причиной написания моей статьи. Об этом сказано в самом начале.
Goodbeaver, кстати, что за подражание мне в нике?
55. zoytsa 20.01.14 09:08 Сейчас в теме
awa одобрил разработку. Этого достаточно, чтобы попробовать в использовании.
56. fishca 1160 16.06.14 13:31 Сейчас в теме
57. Evil Beaver 6360 16.06.14 13:41 Сейчас в теме
59. AlexanderKai 29.05.15 15:36 Сейчас в теме
[CRLF][Размер всего документа][Пробел][Размер текущего блока][Пробел][Адрес следующего блока][CRLF]

Здесь ошибка.
Должно быть:
[CRLF][Размер всего документа][Пробел][Размер текущего блока][Пробел][Адрес следующего блока][Пробел][CRLF]
60. Evil Beaver 6360 29.05.15 16:19 Сейчас в теме
(59) AlexanderKai, да, после каждого числа - пробел. Спасибо, поправлю.
Оставьте свое сообщение

См. также

"Хочу универсально!" [Часть 1] 65

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования Разработка

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

02.09.2019    5040    SeiOkami    35       

Иерархия без "В ИЕРАРХИИ" 117

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    4981    ildarovich    16       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов 62

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

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

22.08.2019    4313    ids79    7       

Обработчики событий при записи объектов. Зачем и что за чем? 202

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

25.07.2019    12996    4    AlbinaAAA    23       

Как проводятся документы в типовых конфигурациях от 1С 137

Статья Программист Нет файла v8::ОУ ERP2 УТ11 Россия УУ Windows Бесплатно (free) Математика и алгоритмы Практика программирования Разработка

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    16188    skv_79    32       

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются... 8

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    2908    vandalsvq    16       

Управление качеством кода 136

Статья Программист Руководитель проекта Нет файла v8 Бесплатно (free) Математика и алгоритмы Рефакторинг и качество кода

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    8425    Stepa86    29       

Что делает "В ИЕРАРХИИ" в запросе? 94

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    8403    YPermitin    34       

Создание отчетов с помощью СКД - основные понятия и элементы 209

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

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

25.06.2019    21318    ids79    17       

Реализуем Стек, Очередь и Приоритетную очередь в 1С 52

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

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

24.06.2019    7870    RonX01    63       

1С:Ассемблер. Немного летнего веселья! 304

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

Все вы, наверное, слышали, что 1С-ники жалуются на свою систему, считая язык 1С недостаточно низкоуровневым, скучным и т.п. Все они с тоской поглядывают в сторону "настоящих" языков программирования. Так вот, господа, они неправы. В системе 1С есть места, где можно размять программерский мозг и получить удовольствие от низкоуровневой техники. Предлагаю вам погрузиться в недра виртуальной машины 1С и понять, как она работает. Там есть свой "ассемблер" и мы попробуем его в действии!

1 стартмани

21.06.2019    14858    46    Evil Beaver    112       

Организация хранения промежуточных данных 3

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    1985    scientes    1       

Вычисление 200 тысяч знаков числа pi 73

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    4028    Oleg_nsk    93       

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты 84

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    11278    YPermitin    5       

Даем названия переменным: как префиксы экономят наше время 10

Статья Программист Стажер Внешняя обработка (ert,epf) v8 Бесплатно (free) Практика программирования Математика и алгоритмы Разработка

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    3288    Designer1C    69       

Заметки по SQL: Срез последних - аналог запроса 15

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Математика и алгоритмы

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    6378    IVC_goal    5       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    22419    ids79    40       

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 147

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы Практика программирования

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

23.08.2018    23061    Rain88    42       

Теорема номер тринадцать 15

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Использование математических методов для языка запросов.

15.03.2018    9399    vasilev2015    24       

Введение в CI для 1С 87

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

21.11.2017    19379    real_MaxA    22       

Как работает серверный вызов в 1С 459

Статья Программист Нет файла v8::УФ Бесплатно (free) Математика и алгоритмы

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    44356    pahich    77       

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода 43

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы Универсальные функции

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

12.10.2017    14850    for_sale    58       

Групповая разработка конфигураций в крупном холдинге 68

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

О чем мы сегодня поговорим? • О становлении и развитии групповой разработки конфигураций 1С в крупном холдинге с использованием хранилища конфигураций. • Обсудим практически все аспекты использования хранилища в командной разработке. • Я расскажу про те методы и идеи, которые мы пробовали использовать, какие используем до сих пор, от каких отказались и почему.

15.08.2017    17600    stas_ganiev    15       

Автоматизация процесса 1С-разработки 91

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

07.06.2017    23083    ekaruk    9       

Пишем игру Минер. Обработка событий ActiveX в 1С 29

Статья Программист Нет файла v8 Россия Windows Бесплатно (free) Практика программирования Математика и алгоритмы

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    12775    user621724_Dimav1979    11       

Как я доступ на kb.1c.ru получал 91

Статья Программист Нет файла v8 Россия Бесплатно (free) Решение задач на 1С:Специалист Математика и алгоритмы

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    22571    ikekoval    33       

Улучшение стандарта "Структура модуля" 6

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Математика и алгоритмы

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

26.03.2017    12380    o.nikolaev    23       

"Распределение в запросе" или "избавляемся от перебора" 185

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Математика и алгоритмы Универсальные функции

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    28713    alexandersh    48       

Планы обмена. Квитировать или гарантировать? 24

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Математика и алгоритмы

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    14603    zhichkin    9       

Некоторые принципы оптимизации запросов 1С (+SQL) 115

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    8938    ture    40       

Использование git для доработки типовых конфигураций 1С 230

Статья Программист Нет файла v8 Беларусь Украина Россия Бесплатно (free) Математика и алгоритмы

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    188719    pumbaE    31       

Оптимизация запросов 1С:Предприятие – от теории к практике 116

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

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

07.10.2016    32174    bpc222    20       

Регистры сведений 1С. Как это устроено. 729

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

05.08.2016    151339    Sergey.Noskov    155       

Переводим расширения на 8.3.8. Памятка. 79

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования Математика и алгоритмы

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    39817    mrXoxot    12       

Опыт практического применения методики BDD на 1С. Написание сценариев 121

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

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

03.07.2016    20379    oleynik.dv    132       

Заметки про запросы. Последовательность. 110

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы Практика программирования

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

27.05.2016    29707    vasilev2015    31       

Оптимизация планирования доставки грузов. Алгоритм кластеризации k-means (метод K-средних). 26

Статья Программист Нет файла v8 УТ10 УПП1 Windows Бесплатно (free) Математика и алгоритмы

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

10 стартмани

09.02.2016    26600    mi1man    4       

Скрипт выгрузки хранилища в GIT на Python 26

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Внешние источники данных

Скрипт для выгрузки хранилища 1С в GIT для платформ 8.1, 8.2(не тестировалось), 8.3

1 стартмани

26.01.2016    10584    9    team bios    32       

Контур.EDI изнутри, или история командной разработки тиражного продукта на 1С 174

Статья Программист Нет файла v8 Россия УУ Windows Оптовая торговля Бесплатно (free) Интеграция Практика программирования Математика и алгоритмы

“Система - больше, чем просто совокупность ее элементов”; “Несколько разработчиков - это еще не команда разработки”. Расскажу, как мы прочувствовали эти очевидные утверждения на своей шкуре.

17.11.2015    36118    skif47    88       

Порядок записи движений регистров при проведении документа 95

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы

Когда-то была программа 1С седьмой версии, и все программисты знали: если нужно проанализировать и/или исправить движения документа - смотри модуль документа, процедура ОбработкаПроведения(). В 1С 8 все гораздо сложнее. Кроме модуля проведения есть еще подписки на события, а также движения документа может "создавать" не сам документ. Эта статья о том, как происходит проведение и в какой момент записываются движения документа по регистрам.

13.11.2015    80685    triton_tver    8       

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия 51

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Разработка внешних компонент Математика и алгоритмы

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    42249    Serginio    35       

Три способа получить дерево элементов иерархического справочника 52

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

Рассматривается применимость и недостатки следующих способов получения дерева 1) Запрос с использованием итогов по иерархии 2) Формирование дерева обходом выборки с упорядочиванием по иерархии 3) Формирование иерархии по списку элементов транзитивным замыканием

11.11.2015    63259    32ops    9       

Мультиинструментальный Brute Force 4

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы

Решение задачи из Project Euler с помощью 1С, а также дополнительных программ, серверов и прочих хитростей.

30.10.2015    10475    scientes    4       

1С с "плюсами" 74

Статья Программист Нет файла v8 Бесплатно (free) Разработка внешних компонент Математика и алгоритмы Универсальные функции

- Разработана методика подключения внешней компоненты, снимающая ограничения на типы данных аргументов и возвращаемого значения. - Проведено документирование основных типов данных (объектов, интерфейсов) платформы. - Разработан объект «Делегат» для реализации функциональных объектов (указатель-на-функцию). - Разработана концепция итератора произвольного доступа для основных контейнеров платформы с целью сопряжения со стандартной C++ библиотекой. - В процессе разработки механизм 1С классов (наследование, интерфейсы) для возможности использования парадигм объектно-ориентированного программирования на уровне кода.

14.10.2015    20011    IntelInside    47       

Знакомство с технологией Automation-сервер на примерах 33

Статья Программист Нет файла v8 Windows Бесплатно (free) Математика и алгоритмы

В статье рассмотрены принципы работы технологии Automation-сервер на конкретных примерах.

28.09.2015    26239    niko11s    10