При написании программ, часто возникает ситуация, когда необходимо спросить у пользователя, какие данные он хочет получить.
В данной статье описан пример создания универсальной Формы Вопроса для Пользователя:
1. Создадим в общих формах новую форму "ФормаВопроса", добавим на ней две Надписи (ПЕРВАЯ= Имя: НадписьВыМожете, Заголовок: "Вы можете:" , ВТОРАЯ= Имя: НадписьТекстВопроса), добавим три кнопки (ПЕРВАЯ= Имя: КнопкаДействие1, Заголовок: "Действие1, События Нажатие: КнопкаДействие1, ВТОРАЯ= Имя: КнопкаДействие2, Заголовок: "Действие2, События Нажатие: КнопкаДействие2, ТРЕТЬЯ= Имя: КнопкаДействие3, Заголовок: "Действие3, События Нажатие: КнопкаДействие3) и добавим картику знака вопроса, для красоты.
В свойствах формы, обязательно снять галочку "Разрешить закрытие", иначе пользователь сможет нажать на крестик в правом верхнем углу и ответа на вопрос не произойдет .
В данной статье описан пример создания универсальной Формы работы со списком значений:
1. Создадим в общих формах новую форму "ФормаРаботыСоСпискомЗначений", добавим на ней Табличное поле (Имя - СписокЗначений) и КоманднаяПанельСписокЗначений
На закладке Реквизиты, появится реквизит СписокЗначений
2. Привяжем КоманднаяПанельСписокЗначений к Источнику действий - СписокЗначений
3. В свойствах табличного поля пропишем События - Выбор и ПередНачаломДобавления
4. В модуле Формы пропишем обработку событий
Все, форма создана
Использовать ее для выбора значения, можно с помощью кода:
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) .
В данной статье я опишу пример быстрого восстановления данных.
2. Если Вы знаете что удалили, то можете сразу нажать кнопку Создать Объект Из GUID - Пункт 4.
3. Если Вы не знаете что удалили, тогда вам нужно поднять архивную копию базы, открыть там обработку и вставить полученный GUID в поле GUID.
далее нажать Ссылку -> и в правом поле отобразится необходимый Вам объект(в моем случае Попов Роман Владимирович).
Открыв его, узнаем что это справочник Сотрудники и всю содержащуюся в справочнике информацию. Возвращаемся в базу, где необходимо восстановить объект и жмем кнопку Создать Объект Из GUID
4. Из открывшегося списка выбираем Справочник Сотрудники, в открывшейся форме заполняем все поля данными из архивной базы и жмем OK. Все, данный объект восстановлен.
еще можно получить ИдентификаторДокумента при OLE доступе:
Еще посмотрите метод:
ЗначениеВСтрокуВнутр(<?>);
Синтаксис:
ЗначениеВСтрокуВнутр(<Объект>)
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
<Объект> - значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава ''Системные процедуры и функции''
Когда-то я работал консультантом SAP. В SAPe есть настройка изменения цвета главного окна программы и у нас было негласное правило: Рабочая программа - Красный фон, Тестовая - Зеленый, Разработка - Синий.
Работая в 1С, всегда открыто по 5-6 программ, и перепутать рабочую базу с базой для тестирования, не составляет труда.
Конечно, можно зайти Справка - О программе и посмотреть значения Режим, База, Каталог. Но я решил применить опыт SAP проектов к 1С:
1. Нужно чтобы в заголовке программы всегда отображалось с какой базой работаем.
Для этого в Модуль приложения, в самый конец процедуры ПриНачалеРаботыСистемы() добавляем:
2. Нужно чтобы рабочая база была в стандартных цветах, а база разработки Сине-бирюзовый
У нас разделение следующее, на сервере только рабочие базы, базы разработки на локальных компьютерах, соответственно серверные базы должны быть как обычно, локальные Сине-бирюзовые.
Для этого открываем конфигурацию - Общие -Стили - Копируем и вставляем слой Основной, получается Основной1, меняем его название на Разработка и открываем. В своем примере я меняю только цвет Фона кнопки на Сине-бирюзовый и в Модуль приложения, в самый конец процедуры ПередНачаломРаботыСистемы() добавляю:
Так выглядит Рабочая база, только еще Строка Соединения Информационной Базы в заголовке:
Сразу оговорюсь, пример для списка справочника Контрагенты, но подобное я использую очень часто.
И так: Менеджерам хочется открыть список контрагентов, и быстро найти контрагента по любым данным которые они помнят!
Реализованно следующим образом:
1. На форму в Командную панель Действия формы добавленно 2 Кнопки
а) Найтиконтр (с картинкой поиск, Процедура НайтиКонтр(Кнопка)) будет использоваться для запроса данных у пользователя для отбора
б) Инф (с картинкой бинокль) будет отображать параметр текущего запроса
в) В свойствах табличного поля добавим Событие При Активизации Колонки - Процедура ИзмНазваниеКнопки(Элемент)
2. В модуль добавим код:
В результате перемещаясь по колонкам списка, меняется Поиск по...(Названию колонки)
Для примера нужно быстро получить список Контрагентов у которых телефон содержит 783
В статье описан пример создания отчета с использованием системы компоновки данных 1С:Предприятия 8.1. Схема компоновки данных - это описание отчета, при помощи которого платформа позволит вводить настройки и получать результат.
Рассмотрим пример создания отчета по взаиморасчетам с работниками (ЗУП 2.5):
1. Файл - Новый - Внешний отчет Для открытия и создания схемы компоновки нажмем кнопку "Открыть схему компоновки данных".
2. Система предложит создать новую схему компоновки данных. Схема компоновки данных является макетом, и будет записана в макеты. Укажите название схемы и нажмите "Готово"
Вкладка редактирования наборов данных. Здесь можно создавать или редактировать источники данных, в моем примере в качестве источника данных может выступать только текущая информационная база и он будет создаваться автоматически при добавлении первого набора данных.
В качестве набора данных может выступать: Запрос - в этом случае получение данных описывается с помощью терминов языка запросов "1С: Предприятия 8.1" + инструкции специального расширения языка запросов для системы компоновки данных; Объект - произвольный источник данных - например, таблица значений, сформированная и заполненная программно; Объединение предназначено для описания наборов данных, входящих в объединение. Механизм объединения аналогичен объединению запросов средствами языка запросов;
4. Для нашего примера получим данные при помощи запроса, поэтому добавим набор данных - запрос. Для этого нажмем на кнопку "Добавить набор данных", которая расположена в командной панели на закладке "Наборы данных". В открывшемся меню выберем пункт "Добавить набор данных - запрос":
5. Будет создан набор данных. Теперь создадим запрос при помощи конструктора запросов, нажмем кнопку "Конструктор запроса"
6. Отчет, который мы создаем, будет получать данные из регистра накопления "ВзаиморасчетыСРаботникамиОрганизаций". Нас интересуют остатки, и текст запроса следующий:
7. После закрытия конструктора запроса, конструктор схемы компановки Обратите внимание, что доступные поля для текущего набора данных будут сформированы системой автоматически только в том случае, если в конструкторе схемы компоновки данных стоит флаг Автозаполнение. Источником информации служит текст запроса. Система заполнила следующие поля:
Поле - имя поля набора данных, для которого делается описание. В нашем случае определяется именем поля в тексте запроса. Обратите внимание, по этому имени к полю нельзя будет обратиться в дальнейшем. Редактированию не подлежит Путь - имя поля набора данных, под которым можно будет обратиться к полю в других разделах конструктора схемы компоновки данных. Может быть назначено разработчиком конфигурации самостоятельно Заголовок - имя поля набора данных, под которым поле будет фигурировать в настройках в режиме 1С:Предприятие, а также в названии данного поля в шапке самого отчета. Может быть назначено разработчиком конфигурации самостоятельно. В качестве примера изменим Заголовок у поля Физлицо на Сотрудник Роль - показывает, каким образом иоле будет использовано в дальнейшем в системе компоновки данных. Информация о том, что иоле является измерением, используется при расчете итогов по полям остатка.
8. Далее необходимо указать ресурсы. Ресурсы - это поля набора данных, по которым будет происходить агрегация значений.
Необходимо рассчитать суммы по полю "СуммаВзаиморасчетовОстаток". Найдем это поле в списке доступных полей и дважды щелкнем по нему. В правом табличном поле появится строка, содержащая формулу для расчета итога по полю "СуммаВзаиморасчетовОстаток". В нашем случае это "Сумма(СуммаВзаиморасчетовОстаток)". Эта формула означает, что для итоговых записей отчета значение поля "СуммаВзаиморасчетовОстаток" будет вычисляться как сумма поля "СуммаВзаиморасчетовОстаток" для всех строк участвующих в данной итоговой записи.
9. Этих введеных данных, нам хватит для вывода простого отчета. Перейдем на вкладку "Настройки" и откроем "Конструктор настроек"
10. Так как пока мы создаем простой отчет, выберем "Список", нажимая далее укажем выводимые поля:
11. После нажатия на "ОК" в конструкторе настроек, получаем следующее:
12. Закрываем схему компановки, сохраняем отчет в файл и запускаем в режиме 1С:Предприятия 8.1. Получаем:
Идентификационный номер налогоплательщика
Идентификационный номер налогоплательщика (ИНН) - в Российской Федерации уникальный код используемый при учете в налоговом органе юридических и физических лиц. ИНН юридических лиц (организаций) состоит из 10 цифр. ИНН физических лиц, в т.ч. индивидуальных предпринимателей состоит из 12 цифр.
ИНН указывается налогоплательщиками в документах, предусмотренных законодательством, подаваемых в налоговые органы. Для идентификации отдельного подразделения организации, в связи с постановкой на учет в разных налоговых органах применяется код причины постановки (КПП).
Структура ИНН юридического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН (Справочник кодов обозначения налоговых органов для целей учёта налогоплательщиков) осуществивщей регистрацию.
5-9: номер записи в территориальном разделе ЕГРН (Единый государственный реестр налогоплательщиков).
10: контрольная цифра.
Структура ИНН физического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН осуществивщей регистрацию.
5-10: номер записи в территориальном разделе ЕГРН.
11-12: контрольные цифры.
Для проверки ИНН можно обратиться в налоговый орган за выпиской из ЕГРН или провести проверку контрольных цифр в соответствии со следующим алгоритмом:
1. Для расчета десятого контрольного разряда в 10-ти значном ИНН каждая цифра ИНН (кроме десятой) умножается на соответствующий множитель в соответствии с таб.1 , ззатем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть десятый разряд.
2. Для расчета 11-ого контрольного разряда (1-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме 11-ой и 12-ой) умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 11-ый разряд.
3. Для расчета 12-ого контрольного разряда (2-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме12-ой) ,11-ая вычисляется в соотв. с пред. пунктом, умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 12-ый разряд.
Конкретные примеры
ИНН 500100732259 — 12 цифр (первый попавшийся в Интернете ИНН).
Оптимальным решением является установка Bullzip PDF Printer . После установки в системе появляется виртуальный принтер, с помощью которого можно "печатать" в файл pdf из любого приложения. Программа бесплатная, работает в терминале и имеет поддержку русского языка.
После установки, можно печатать напрямую используя код:
Здесь функция ПолучитьПринтерПоУмолчанию() нужна для того чтобы вернуть печатной форме принтер по умолчанию, т.к. если напечатать без предварительного просмотра то печать пойдет на виртуальный PDF принтер BullzipPDFPrinter.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Решение проблемы:
1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация - "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.