Статьи

Atypical — сервис нетипового обмена 1С и IIKO

Здравствуйте.

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

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

Номенклатура

[GET] products — получение списка всей номенклатуры с полями id, type, code, name, unit.

id — уникальный идентификатор номенклатурной позиции

type — тип номенклатуры, перечисление [

GOODS (Товар),

DISH (Блюдо),

PREPARED (Заготовка),

SERVICE (Услуга),

MODIFIER (Модификатор),

OUTER (Внешние товары),

PETROL (Топливо),

RATE (Тариф)

]

code — артикул номенклатурной позиции

name — название

unit — уникальный идентификатор единицы измерения номенклатурной позиции

[GET] product — получение детальной информации о номенклатурной позиции

[POST] product — создание новой номенклатурной позиции

[PUT] product — внесение изменений в имеющуюся номенклатурную позицию

[DELETE] product — удаление номенклатурной позиции

Единицы измерения

[GET] units — получение списка всех единиц измерения с полями id, name.

Поставщики

[GET] suppliers — получение списка всех поставщиков

Склады

[GET] stores — получение списка всех складов с полями code, name.

Не все эти методы необходимы. К примеру, если задаться целью передать приходную накладную из 1С в IIKO, то достаточно будет сопоставить номенклатурные позиции, единицы измерения, склады и поставщиков.

Из 1С в IIKO: Передаем перемещения УТ в приходные накладные

Рассмотрение вариантов передачи документа «Перемещение товаров» из Управление торговлей 11 в документ «Приходная накладная» IIKO.

Вступление

Здравствуйте, друзья. Меня зовут Тян Семен. В Лемме я отвечаю за обмен между IIKO и . За плечами нашего коллектива не только отточенный типовой обмен из Айко в 1С:Бухгалтерию, но и несколько успешно реализованных проектов по интеграции учетных систем: от загрузки документа «Учет рабочего времени» (не участвует в типовом обмене) в 1С:Зарплата и управление персоналом до регламентного фонового двустороннего обмена с доработанной для производства Бухгалтерией предприятия.

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

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

Постановка вопроса

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

Реализация и подводные камни

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

Вторая сложность, с которой мы столкнулись, это пустой ответ на запрос по описанной ранее схеме (см. IIKO (Айко). Обмениваемся накладными с 1С). Первая мысль — в свежей версии сервера IIKO отсутствовал необходимый функционал. Однако в ходе попыток установить корень проблемы выяснилось, что виновником был PostgreSQL. Точнее тот факт, что данную СУБД не так часто используют при развертывании IIKO (в основном это MS SQL). С учетом того, что сервер для разработки крутится на MS SQL, а боевой на PostgreSQL, данный факт сулил определенные неудобства. Решение пришло само собой — определять СУБД «на лету» при первом же запросе, а в последствии формировать запрос соответствующий типу.Ошибка PostgreSQL

Третий вопрос, который необходимо было решить в ходе реализации, это преобразование различных единиц измерения — как в случае, к примеру, сопоставления 3х различных номенклатурных позиций в штуках (пачки по 500, 750 и 800 грамм) преобразовывать в граммы IIKO. В решении данного вопроса в значительной степени помог типовой функционал УТ: возможность указания мер длин, весов, площади для номенклатурной позиции. Таким образом, при расхождении единиц измерения мы всегда можем динамически рассчитать коэффициент на основе данных справочника.

Сценарий использования

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

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

Выводы

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

Спасибо за внимание. Буду рад ответить в комментариях на возникшие вопросы.

Создаем номенклатурную позицию в IIKO (Айко) по данным из 1С

От теории к практике: создаем номенклатурную позицию в Айко средствами 1С.

Вступление

Здравствуйте, друзья. Меня зовут Тян Семен. Я отвечаю в Лемме за обмен между Айко и 1С:Бухгалтерия.

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

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

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

От теории к практике

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

  • Выбираем позицию из справочника «Номенклатура»
  • Жмем на кнопку «Создать в Айко«
  • Заполняем служебные параметры: адрес и порт сервера, идентификаторы группы и единиц измерения
  • Формируем XML для отправки на сервер
  • Отправляем данные и обрабатываем ответ от Айко

Вряд ли есть смысл останавливаться на первых двух пунктах. А вот в третьем есть некоторые особенности (все их конечно же можно рассмотреть детальней в прикрепляемой обработке).

Нюансы с кодировкой

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

Формируем XML

Далее следует пункт формирования XML-файла для отправки на сервер Айко. Да простят меня присутствующие — XDTO я не одолел. Изучил тематический цикл статей уважаемого Evil Beaver и статьи по обменам с Хабра, пытался набросать простую схему в различных редакторах, делал эксперименты с отдельными фрагментами и думал, думал, думал… все тщетно (буду рад, если все-таки научите делать как положено). Возможно в поставленной задаче использование XDTO — никому ненужное усложнение, но хотелось сделать «по красоте». На деле — в обработке большая и страшная портянка из RAW XML с вкраплениями значений переменных  (я предупредил).

Путем многочисленных проб и ошибок удалось получить минимально пригодный для передачи текст XML:

здесь

  • entities-version — версия объект, получается каждый раз с сервера запросом
  • параметр eid тэга product — уникальный идентификатор номенклатурной позиции (дублируется в id)
  • mainUnit — УИд единицы измерения
  • type — тип номенклатуры (перечисление, GOODS — товары)
  • num — артикул номенклатуры в Айко
  • parent — УИд родителя (папки) создаваемой позиции

Последние два параметра — формировать ли автоматически код быстрого доступа и артикул в Айко соответственно.

Обрабатываем ответ сервера

В прилагаемом решении используется функция РасшифроватьGZIP(ДвоичныеДанные) из публикации //infostart.ru/public/844121/ . Конечно работать будет и без сжатия, достаточно в заголовках HTTP-запроса установить соответствующий параметр в none. Ответ никак не обрабатывается, однако никто не мешает сделать это для конкретного проекта (здесь и обработка сведений об ошибке и просто возможность получить информацию для уведомления о прохождении процесса).

Как пользоваться

Перед началом необходимо заполнить параметры в процедуре ИнициализацияНастроек() Помимо параметров подключения в данной процедуре можно включить флаг ведения лога и указать директорию для записи служебной информации. Параметр КодГруппы это артикул папки номенклатуры в Айко, куда будут помещены вновь созданные позиции. Отдельный функционал по обработке ответа от сервера не реализовывался. Результат можно увидеть в Айко.

 

Спасибо за внимание. Буду рад ответить на вопросы. Конструктивная критика приветствуется.

 

Версия конфигурации и платформы

Разработка велась на следующих версиях

Платформа — 1С:Предприятие 8.3 (8.3.11.2867). По идее подойдет и гораздо старше, начиная с появления методов для работы с HTTP, строковые функции типа СтрРазделить. Требования к РасшифроватьGZIP  имеются на странице публикации.

Конфигурация — Бухгалтерия предприятия, редакция 3.0 (3.0.63.15), особо не роляет, возможности БСП не задействовались.

Айко — работа проверена на версиях, начиная с 4,5 (как Chain, так и RMS)

Нетиповой обмен Айко и 1С

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

Вступление

Здравствуйте, друзья. Меня зовут Тян Семен. Я отвечаю в Лемме за обмен между Айко и 1С:Бухгалтерия.

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

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

Описание текущей ситуации

В стандартной поставке дистрибутива Айко присутствует внешняя обработка, которая позволяет загружать данные в типовую Бухгалтерию. Данные могут передаваться через выгруженные файлы, либо через непосредственное подключение к серверу Айко с использование внешней компоненты, разработанной по технологии COM (со всеми вытекающими преимуществами и ограничениями).

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

А что, если мы захотим передать данные обратно, из  в Айко? Данная потребность может показаться надуманной: кому нужно выгружать данные из системы для регламентированной отчетности в систему для управленческого учета сферы HoReCa? Как показала практика, постановка такого вопроса не редкость. Данная ситуация может произойти хотя бы потому, что база  с большей долей вероятности могла появиться раньше решения от Айко. Зачем вновь создавать стопицот номенклатурных позиций, когда они уже все есть в ?

Поиск источников вдохновения

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

Наблюдение 1

За отдельную плату существует возможность приобретения функционала API IIKO. Но это простой и неинтересный программистам путь, поэтому остановимся на пути без дополнительной оплаты. Даже в этом случае компания Айко предоставляет довольно обширную информацию по API, с которой можно ознакомиться на странице http://help.iiko.ru/articles/#!api-documentations/api . Здесь нас интересует как общая схема объектов Айко, так и XML схемы объектов.

Наблюдение 2

Запускаем Fiddler. Запускаем IIKO Office. Устанавливаем фильтр на процесс Айко. Изучаем язык общения приложения с сервером. Многие неочевидные и непонятные моменты можно подсмотреть именно так.

Наблюдение 3

У каждой установки Айко, будь то RMS или CHAIN, существует веб-часть по пути /resto. Зайти можно под учетной записью, которая используется для обычного входа в office. Внутри много интересных дополнений вроде всякого рода отчетов и импорта данных из CSV-файлов (например номенклатуры или технологических карт). Нас же в рамках обсуждаемой темы больше всего интересует /resto/service/maintance/sql.jsp . Данный скрипт позволяет формировать к серверу Айко что-то вроде SQL-запросов (пусть знатоки поправят).

Схема взаимодействия

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

Примерная схема передачи документа Поступление из типовой Бухгалтерии в IIKO (Айко) может выглядеть следующим образом:

  • Организуем подписку на события при изменении документа Поступления;
  • В регистрации события фиксируем измененный документ в планы обмена;
  • На основе XDTO документа Айко формируем XML-представление из документа Поступление;
  • Отправляем HTTP-запрос на сервер;
  • Обрабатываем ответ.

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

Вместо заключения

Спасибо, если дочитали до конца. Надеюсь, изложенная информация поможет в решении вопросов автоматизации.

Если что-то не будет получаться, обращайтесь, буду рад помочь.

Форма №1-О219. Категории служащих

Для решения вопроса о категории служащих в форме №1-О219 предлагается предпринять следующие действия.

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

Тарифы категорий служащих

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

Выбор категории служащих для сотрудника

МедТарификация — тарификация медицинских работников Ростовской области

Тарификация

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

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

К примеру шапка формы №1 выглядит следующим образом:

Заголовок ("шапка") формы №1 отчета "Тарификация"

Эта форма довольно сильно отличается от штатной, предусмотренной в поставке конфигурации Зарплата и кадры государственного учреждения, редакции 3.1.

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

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

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

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

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

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

Предварительные настройки

МедТарификация формируется при включенной настройке «Ведется история изменений штатного расписания».

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

Дополнительные реквизиты

Должности

Наименование: Форма тарификационного списка

Тип значения: Дополнительное значение

Значения: Форма №1, Форма №1-О219, Форма №4, Форма №4-О219

Например для должности «Медицинская сестра» дополнительный реквизит будет выглядеть следующим образом:Указания необходимых дополнительных реквизитов для должности

Наименование: Код персонала

Тип значения: Дополнительное значение

Значения: 1, 2, 3, 4, 5, 6, 8, 24, 40, 48

Сотрудники

Наименование: Категория служащих

Тип значения: Дополнительное значение

Значения: Высшая, Первая, Вторая

Дополнительные сведения

Начисления

Наименование: Идентификатор для тарификации

Тип значения: Дополнительное значение

Значения: База для стажа, Вредность, Выслуга лет, Квалификация, Нагрудный знак, Непрерывная работа, Скорая, Участковый, Ученая степень

Настройки отчета «Тарификация»

В справочнике Виды стажа должны быть следующие значения:

  • Код: 000000001; Наименование: Надбавка за стаж непрерывной работы (в здравоохранении);
  • Код: 000000007; Наименование: Стаж за выслугу лет (в бюджете);
  • Код: 000000010; Наименование: Надбавка за стаж непрерывной работы (на скорой помощи);
  • Код: 000000011; Наименование: Надбавка за стаж непрерывной работы (на участке);

При первом запуске отчета «МедТарификация» (настройки сохраняются и впоследствии ничего выбирать не нужно) необходимо произвести сопоставление видов стажа и начислений на закладке «Настройки».

Вкладка "Настройки" отчета Тарификация

Требования к ПО

Работоспособность протестирована на конфигурацияхЗарплата и кадры государственного учреждения, редакция 3.1 (3.1.3.157-3.1.4.161);
Платформа от 1С:Предприятие 8.3.10.2252

Демо

Прежде чем принимать решение, у Вас есть возможность протестировать отчет «МедТарификация». Для этого необходимо добавить новую информационную базу, размещенную на веб-сервере. (подробнее о том, как это сделать, можно прочесть по ссылке).

В качестве строки адреса указать: 

Пример довольно поверхностный, но демонстрирует основной функционал. В демо-примере отсутствует возможность формирования форм №1-О219, №4 и №4-О219, однако Вы имеете возможность сформировать тарификационный список одного приёмного отделения для формы №1 (самая объемная и сложная из всех четырех).

Изменения в новой версии

[05.01.2018]

  • Улучшена производительность: новая версия отчета формируется от 2,5 до 3 раз быстрее предыдущей;
  • Исправлена ошибка с дублированием строк сотрудников после добавления функционала исключения уволенных из списка;
  • Добавлена возможность производить сопоставление видов стажа и видов начислений через настройку отчета;
  • В новой версии нет необходимости вводить МРОТ вручную, информация получается из штатного регистра конфигурации;
  • Удалены фрагменты кода, потерявшие актуальность в ходе развития и доработки.

Классность водителей

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

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

Настройка→Предприятие→Квалификационные надбавки

Добавляем новую

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

Настройка→Классификаторы→Специальности (ОКСО)

Создаем новую, например Водитель

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

Создаем начисление для классности путем копирования начисления за квалификацию.

Добавляем в соответствующую строку штатного расписания созданное начисление (1). Выбираем Вид надбавки — “Классность водителей” (2), Квалиф. категория — соответствующую требованиям категорию, например вторую (3) и жмем кнопку обновить (4).

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

AutoIt — продолжаем автоматизировать chdbfl.exe

Здравствуйте.

За последнее время профессиональная деятельность нашей команды изменилась и сталкиваться с 1С приходится лишь изредка. Именно поэтому так давно не было обновлений на данном ресурсе.

Однако одна из интересных задач осталась открытой и по сей день. Речь об автоматизации утилиты для проверки физической целостности файловой БД 1С.

В рамках развития проекта «ИТС-помощник» мы публикуем фрагмент скрипта AutoIt, позволяющий получить данные из поля вывода информации утилиты chdbfl.exe и записать в файл.

  1. #include <MsgBoxConstants.au3>
  2. #include <WinAPISys.au3>
  3. #include <WinAPIvkeysConstants.au3>
  4. #include <FileConstants.au3>
  5. #include <WinAPIFiles.au3>
  6. BeforeRun()
  7. RunChdbfl()
  8. Sleep($cmdline[4])
  9. LogToClipboard()
  10. ClipboardToFile()
  11. Func BeforeRun()
  12. Opt(«TrayIconHide», 1)
  13. Opt(«SendKeyDelay», 0)
  14. ; Запуск chdbfl.exe с передачей параметров:
  15. ; — ПолныйПутьchdbfl.exe — напр. C:\Program Files\1cv8\8.3.9.1850\bin\chdbfl.exe
  16. ; — ИсправлятьОшибки – исправлять обнаруженные ошибки (0 или 1)
  17. ; — ИмяФайлаБД – путь к основному файлу базы данных (1Cv8.1CD)
  18. ; — ВремяПроверки — время в миллисекундах по истечении которого данные chdbfl.exe будут записаны в файл
  19. ; — ИмяЛогфайла — полный путь для сохранения лог-файла
  20. If $cmdline[0] <> 5 Then
  21. MsgBox(0, «Описание параметров запуска», «runchdbfl.exe ПолныйПутьchdbfl.exe ИсправлятьОшибки ИмяФайлаБД ВремяПроверки ИмяЛогфайла» & @CRLF & @CRLF & «ПолныйПутьchdbfl.exe: напр. C:\Program Files\1cv8\8.3.9.1850\bin\chdbfl.exe» & @CRLF & «ИсправлятьОшибки: 0 или 1» & @CRLF & «ИмяФайлаБД: путь к файлу 1Cv8.1CD» & @CRLF & «ВремяПроверки: время на проверку в миллисекундах» & @CRLF & «ИмяЛогфайла: напр. C:\Users\username\Documents\1C\logs\1cbdlog.txt»)
  22. Exit
  23. EndIf
  24. EndFunc
  25. Func RunChdbfl()
  26. Run($cmdline[1])
  27. WinWait(«Проверка физической целостности файла БД»)
  28. Send($cmdline[3], 1)
  29. Send(«{TAB}»)
  30. If $cmdline[2] = «1» Then
  31. Send(«{SPACE}»)
  32. EndIf
  33. Send(«{TAB 2}{ENTER}»)
  34. EndFunc
  35. Func LogToClipboard()
  36. ; Получение дескриптора окна chdbfl.exe по заголовку
  37. Local $hWnd = WinWait(«Проверка физической целостности файла БД», «», 1)
  38. ; Установка фокуса в поле вывода результата проверки БД
  39. ControlFocus($hWnd, «», «[CLASS:V8FormElement;INSTANCE:4]»)
  40. ; Выделение выведенной информации (эмуляция ctrl+A)
  41. _WinAPI_Keybd_Event($VK_CONTROL, 0)
  42. _WinAPI_Keybd_Event($VK_A, 0)
  43. _WinAPI_Keybd_Event($VK_A, 2)
  44. _WinAPI_Keybd_Event($VK_CONTROL, 2)
  45. ; Копирование выделенного
  46. Send(«^{INSERT}»)
  47. EndFunc
  48. Func ClipboardToFile()
  49. ; Получение дескриптора окна chdbfl.exe по заголовку
  50. Local $hWnd = WinWait(«Проверка физической целостности файла БД», «», 1)
  51. ; Сохранение в переменную информации из буфера обмена
  52. $sData = ClipGet()
  53. ; Создание локальной переменной с именем файла
  54. Local Const $sFilePath = $cmdline[5]
  55. ; Открытие файла для дозаписи
  56. Local $hFileOpen = FileOpen($sFilePath, $FO_APPEND)
  57. If $hFileOpen = 1 Then
  58. MsgBox($MB_SYSTEMMODAL, «», «An error occurred whilst writing the log file.»)
  59. Return False
  60. EndIf
  61. ; Запись значения переменной $sData в файл
  62. FileWrite($hFileOpen, $sData)
  63. ; Закрытие файла
  64. FileClose($hFileOpen)
  65. WinClose($hWnd)
  66. EndFunc

Исходный код Check1CD

Opt(«TrayIconHide», 1)
Opt(«SendKeyDelay», 0)
$target = @ProgramFilesDir & «\1cv81\bin\chdbfl.exe»
If $cmdline[0] <> 2 Then
MsgBox(0, «Описание параметров запуска», «Check1CD.exe ИсправлятьОшибки ИмяФайлаБД» & @CRLF & @CRLF & «ИсправлятьОшибки: 0 или 1» & @CRLF & «ИмяФайлаБД: путь к файлу 1Cv8.1CD»)
Exit
EndIf
Run($target)
WinWait(«Проверка физической целостности файла БД»)
Send($cmdline[2], 1)
Send(«{TAB}»)
If $cmdline[1] = «1» Then
Send(«{SPACE}»)
EndIf
Send(«{TAB 2}{ENTER}»)

chdbfl — список загружаемых файлов

В процессе разработки консольной программы для запуска встроенной в 1С утилиты chdbfl.exe (проверка физической целостности информационной базы) появилась необходимость в минимальном перечне загружаемых модулей. Читать далее →