Для примера , у меня будет цикл по запросу, который отправляет заранее заданный текст из справочника, клиентам.
В нем у нас есть 2 объекта.
1) HTTP соединения
2) HTTP Запрос
В запрос кидаем сформированную строку, в которой есть
1) API ключ - записан в константы
2) Текст, из справочника (с заменой)
3) номер телефона из заказа (у кого откуда )
4) конец строки JSON= 1 , означает получение ответа от сайта , о успешной или не успешной отправке смс с кодами авторизации/отправки в формате JSON (Разбор JSON отдельная тема)
В запросе, указываем адрес который идет после sms.ru, начиная со слэша!
В соединении, если httpS , не указываем изначально , какой это протокол, указать порт и создать объект защищенного соединения.
При добавлении новых объектов в типовые конфигурации возможна ошибка при обращении к этому объекту в режиме 1C:Предприятие: "Объект не найден в Справочнике "ИдентификаторыОбъектовМетаданных".
{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(738)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
Для объекта метаданных "Отчет.РИК_РасчетыСПартнерами" не найден идентификатор в справочнике "Идентификаторы объектов метаданных".
Для разработчика: возможно требуется обновить вспомогательные данные, которые влияют на работу программы. Для выполнения обновления можно:
- воспользоваться внешней обработкой "Инструменты разработчика: Обновление вспомогательных данных",
- либо запустить программу с параметром командной строки 1С:Предприятия 8 "/С ЗапуститьОбновлениеИнформационнойБазы",
- либо увеличить номер версии конфигурации, чтобы при очередном запуске выполнились процедуры обновления данных информационной базы.
Варианты решения:
1. В некоторых конфигурациях режиме предприятия
Все функции - Обработки - "Инструменты разработчика: Обновление вспомогательных данных", Если обработки нет, то пункт 2
Все функции - Справочники - "Идентификаторы объектов метаданных", нажать кнопку "Обновить данные справочника", Если кнопки обновить нет, то пункт 2
2. Из Конфигуратора запустить с параметром «/С ЗапуститьОбновлениеИнформационнойБазы», т.к. обработки может не оказаться под руками, а изменение версии производится с обновлением конфигурации и базы, что может оказаться не удобным:
При запуске Предприятия появится окно обновления конфигурации. Потом не забудьте Убрать параметр запуска, чтобы больше не запускалось обновление!
3. Обновить конфигурацию или вручную увеличить номер версии конфигурации, чтобы при очередном запуске выполнились процедуры обновления данных информационной базы.
Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, RLS – Record Level Securiy).
Для примера предположим, что перед нами стоит следующая задача. На предприятии ведется многофирменный учет и каждый контрагент и пользователь базы данных относится к определенной организации. Необходимо обеспечить доступ к справочнику “Контрагенты” таким образом, чтобы каждый пользователь мог просматривать, редактировать и добавлять контрагентов только своей организации.
Для решения задачи будем использовать платформу “1С:Предприятие 8.2″. Создадим новую конфигурацию в свойствах которой в качестве основного режима запуска будет выбран вариант “Управляемое приложение”.
Далее создадим справочник “Организации” и ещё два справочника – “Контрагенты” и “Пользователи” с реквизитом “Организация”. Кроме справочников нам понадобятся два параметра сеанса – “Организация” и “Пользователь” (соответствующих типов). Значения этих параметров устанавливаются при запуске сеанса работы с конфигурацией и хранятся до его завершения. Именно значения этих параметров мы и будем использовать при добавлении условий ограничения доступа на уровне записей.
Установка параметров сеанса выполняется в специальном модуле – “Модуль сеанса”
В этом модуле опишем предопределенную процедуру “УстановкаПараметровСеанса” в которой вызовем функцию заранее подготовленного общего модуля “ПолныеПрава”. Это необходимо в силу особенностей работы базы данных в режиме управляемого приложения, когда часть программного кода может выполняться только на стороне сервера (подробно на объяснении этих принципов в данной статье я останавливаться не буду).
В свойствах модуля “ПолныеПрава” необходимо отметить флажки “Сервер”, “Вызов сервера” и “Привилегированный” (последнее означает, что процедуры и функций данного модуля будут выполнятся без контроля прав доступа). Текст модуля будет выглядеть так:
В модуле управляемого приложения будем проверять наличие пользователя конфигурации в справочнике “Пользователи” (для простоты будем искать его по наименованию) и завершать работу системы если он не найден. Это необходимо для того, чтобы обеспечить заполнение параметров сеанса.
Теперь можем перейти непосредственно к описанию ограничений доступа. Для этого создадим роль “Пользователь” и перейдем на закладку “Шаблоны ограничений”, где добавим новый шаблон “КонтрагентыЧтениеИзменение” со следующим текстом шаблона: ГДЕ Организация =Организация #Параметр(1)
Текст шаблона ограничений является расширением языка запросов. В отличии от обычного запроса, текст ограничения должен в обязательном порядке содержать условие “ГДЕ”. В качестве значений параметров запроса (в нашем случае это “&Организация”) используются значения одноименных параметров сеанса. Конструкция вида #Параметр(1) означает, что на это место система подставит текст, переданный в качестве первого параметра в месте использования шаблона. С помощь приведенного шаблона будет выполняться проверка каждой записи таблицы (в нашем случае это будет справочник “Контрагены”). Для записей, значение реквизита “Организация” которых совпадает с заданным в соответствующем параметре сеанса, условие описанное в шаблоне будет выполняться. Таким образом эти записи будут доступны для чтения, изменения или добавления (в зависимости от того для какого из этих прав применяется шаблон). Продемонстрирую вышеизложенное на нашем примере.
Перейдем на закладку “Права” роли “Пользователь” и откроем список прав справочника “Контрагенты”. Будем использовать шаблон ограничений “КонтрагентыЧтениеИзменеие” для прав “Чтение”, “Изменение” и “Доблавление”.
Для права “Чтение” будем использовать шаблон с параметром “ИЛИ ЭтоГруппа”. При этом пользователям данной роли будет разрешено чтение не только элементов справочника “Контрагенты” своей организации, но и всех групп этого справочника.
#КонтрагентыЧтениеИзменение("ИЛИ ЭтоГруппа")
Поскольку при добавлении новых элементов справочника системой выполняется неявное чтение предопределенных реквизитов (это нужно, например, для нумерации), то необходимо обеспечить беспрепятственное чтение этих полей. Для этого добавим дополнительную строку с пустым текстом ограничения в таблицу ограничения доступа к данным и перечислим поля для которых действует данное правило – Ссылка, Версия данных, Родитель, Код.
Таким образом, поставленная задача ограничения доступа на уровне записей решена. Пользователи с действующими ограничениями получат доступ на просмотр и редактирование данных только своей организации.
Порядок расчета фиксированных страховых взносов за 2014 и 2015, 2016 год
Сумма взноса в ПФР = МРОТ * 12 * 26 %
Сумма взноса в ФОМС = МРОТ * 12 * 5.1 %
где МРОТ (Минимальный Размер Оплаты Труда):
5554 рублей в 2014 году
5965 рублей в 2015 году
6204 рублей в 2016 году
Таким образом, суммы страховых взносов равны:
За 2016 год - 23 153,33 руб.
За 2015 год - 22 261,38 руб.
За 2014 год - 20 727,53 руб.
Также, начиная с 2014 года при получении более 300 000 рублей дохода за год, ИП обязан оплатить 1% в ПФР от суммы, превышающей 300000р. Например, при получении дохода 400 000 рублей, 1% нужно заплатить с суммы 400 000 - 300 000 = 100 000 руб., получаем 1 000 руб.
НО Законодательно предусмотрено ограничение суммы страховых взносов в ПФР. Страховые взносы не могут превышать произведение восьмикратного МРОТ на начало года и тарифа ПФР, увеличенное в 12 раз. То есть, на 2014 год максимальный размер взносов в ПФР составляет 138 627,84 руб. (5554 х 8 х 26% х 12).
Расчет страховых взносов за неполный год
При уплате страхового взноса за неполный год (при начале предпринимательской деятельности не с начала года либо при прекращении деятельности) размер взноса соответственно уменьшается пропорционально календарным дням. Формула для расчета:
МРОТ × М × Тариф + МРОТ × Д/П × Тариф
М & количество полных месяцев деятельности ИП в отчетном году;
Д & количество дней в неполном месяце (день регистрации / прекращения деятельности включать НУЖНО);
П & количество календарных дней в этом месяце;
В программе 1С для отражения уплаты и начисления за себя фиксированных взносов и доп. взносов никаких специальных настроек делать не нужно.
В плане счетов ИП для расчетов с бюджетом предусмотрены:
ПФР - специальный субсчет 69.06.5 «Обязательное пенсионное страхование предпринимателя»
ФОМС - субсчет 69.06.3 «Взносы в ФОМС».
Главное необходимо правильно заполнять документ "Списание с расчетного счета":
Фиксированные страховые взносы
его проводка:
И с доходов свыше 300 000 тыс. руб. Вид страховых взносов установите как: Страховые взносы, исчисленные с суммы дохода
Проводка будет такой:
Для ФОМС:
Проводка
При квартальной процедуре Закрытия месяца будет выполнена регламентная операция «Начисление страховых взносов ИП»
Закрытие месяца - Операция "Начисление страховых взносов ИП" отражает уплаченные в течение года страховые взносы в бухгалтерском и налоговом учете. Операция выполняется раз в год или раз в квартал в зависимости от применяемой системы налогообложения и наличия наемных работников. В случае применения общей системы налогообложения или упрощенной системы с объектом налогообложения «доходы, уменьшенные на величину расходов», сумма уплаченных страховых взносов отражается в налоговом учете в составе расходов.
Она создаст следующие проводки начисления страховых взносов ИП:
И главное помните: Фиксированные взносы нужно оплатить до 31 декабря, дополнительные(свыше 300т.р.) до 01 Апреля следующего года за отчетным!
Частенько при разработке сайтов приходится обрабатывать тысячи однотипных файлов... чтобы оптимизировать эту рутинную работу я набросал небольшую обработку, которая перебирает в указанном каталоге все файлы с расширением w1c и полностью меняет структуру данного файла, сохраняя его в кодировке UTF8 без BOM сигнатуры
Очень часто бывают ситуации, когда необходимо сделать отчет СКД на сложном запросе, который используюет в себе вложенные запросы и объединения внутренние и полные и т.д. - в результате в консоли этот запрос формируется верно, а в скд половина полей пустые! Связано это с особенностью СКД в объединении внутренних данных, а так же не стоит забывать что в СКД наборы данных связываются как левое соединение...
Решения возможны следующие:
Изменить запрос в СКД
Сформировать запрос обычным способом и подставить эти данные в СКД как внешние
Рассмотрим последний вариант:
Внешний источник данных, грузим из ТЗ
Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах.
В модуле объекта уже есть функция
установим в ней наш запрос, получается примерно так:
Ниже в коде происходит установка внешних данных из нашей ТЗ с именем ТаблицаВнешнегоНабораДанных
В самой компоновке добавляем набор Объект с именем ТаблицаВнешнегоНабораДанных и перечисляем поля, которые будут использоваться в отчете:
Как я уже говорил выше, далее нам необходимо получить остатки взаиморасчетов на дату документа:
Получение остатков на документ в СКД
Набор данных Запрос - назвали его Остатки:
Теперь установим связи Запроса и Объекта
Остатки нужно получать на дату документа и по контрагенту
Далее, если нужно, задайте вычисляемые поля, ресурсы, параметры и Настройте Список вывода...
Оповещение пользователей в 1с в управляемом приложении могут быть вызваны как самой платформой, например, при записи документа, так и разработчиком, если он применит метод глобального контекста ПоказатьОповещениеПользователя().
Оповещения появляются в отдельном не модальном окне, по умолчанию привязанному к панели задач операционной системы, и затухают через несколько секунд после появления.
Если вывести несколько оповещений подряд, то пользователь сможет увидеть только последнее.
Последние несколько оповещений можно увидеть на панели истории.
При программном формировании оповещений важно помнить, что метод ПоказатьОповещениеПользователя()доступен только в контексте клиентской части, то есть при работе тонкого, толстого клиента или веб-клиента.
В качестве параметров метода ПоказатьОповещениеПользователя() передается строка с текстом оповещения, навигационная ссылка, текст с пояснением и картинка.
Навигационная ссылка будет представлена в области пояснения как гиперссылка, а в том случае если текст с пояснением не задан, то именно представление навигационной ссылки будет отображено в области пояснения. Получить навигационную ссылку можно для любого объекта базы с помощью глобального метода ПолучитьНавигационнуюСсылку().
Проиллюстрируем вывод оповещения при открытии документа, редактирование которого запрещено.
В приведенном примере производится проверка даты запрета редактирования, установленной в константе, и в том случае если открывается документ, попадающий в период запрета, пользователю выводится оповещение. В оповещении установлена навигационная ссылка на открываемый документ, однако в окне оповещения ссылка будет установлена к тексту «Разрешен только просмотр документа».
еще пример:
Для Толстого клиента kojinandrej предложил следующий механизм:
1. В модуле обычного приложения в процеду ПриНачалеРаботыСистемы добавляем текст
2. Создаем ОбщийМодуль под названием "опМодуль" в модуле вставляем текст
4. Добавляем в конфигурацию необходимые Обработки и формы - пользуемся.
Принцип Работы:
При запуске 1с справой стороны в трее открыто оповещение пользователей. Открываем обработку Оповестить, пишим текст сообщения и отметив получателей отправляем сообщение.
Когда сообщение приходит получателю, то форма оповещени появляется с правой стороны. Что бы сообщение считалось прочитаным, его необходимо открыть двойным щелчком правой клавиши мыши и оно откроется в новом окне как показао на третем изображении. В дальнейшем эти сообщения можно будет просматривать во вкладке "Просмотреные"
Параметры: <ИмяПредопределенногоЗначения> (обязательный)
Тип: Строка.
Содержит полный путь до предопределенного значения, включая имя самого значения. Например, "ПланСчетов.Основной.Счет41".
Синтаксис описания предопределенного значения совпадает с синтаксисом оператора ЗНАЧЕНИЕ языка запросов:
<Тип предопределенного значения>.<Имя объекта метаданных>.<Значение>
Тип предопределенного значения> может быть:
Справочник (Catalog);
ПланВидовХарактеристик (ChartOfCharacteristicTypes);
ПланСчетов (ChartOfAccounts);
ПланВидовРасчета (ChartOfCalculationTypes);
Документ (Document) - только пустая ссылка;
Перечисление (Enum);
БизнесПроцесс (BusinessProcess) - только пустая ссылка и получение точек бизнес процесса;
Задача (Task) - только пустая ссылка.
В качестве <Имя объекта метаданных> указывается имя объекта метаданных, как оно задано в конфигураторе.
Для перечислений, определенных в конфигурации, <Значение> указывается как имя соответствующего объекта метаданных типа ЗначениеПеречисления. Для всех остальных типов предопределенных значений <Значение> указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка для указания пустой ссылки.
Для точек маршрутов бизнес-процессов имя предопределенного значения имеет вид:
БизнесПроцесс.<Имя объекта метаданных>.ТочкаМаршрута.<Имя точки маршрута>
Также метод может быть использован для получения значения системного перечисления. В этом случае параметр формируется как:
<ИмяСистемногоПеречисления>.<ИмяЗначенияСистемногоПеречисления> Возвращаемое значение:
Тип: Ссылка на объект информационной базы.
Бывают случаи, когда на данном компьютере пользователя в рабочей базе была старая конфигурация, хотя на любом другом ПК и на сервере она обновилась. Так же может возникать ошибка потока данных. В этих и некоторых других случаях поможет очистка кеша.
В связи с тем, что 1С может быть установлена на различных операционных системах, папка, где хранится кэш, может быть различной. Для Win XP:
%userprofile%\Local Settings\Application Data\1C\1Cv82
%userprofile%\Application Data\1C\1Cv82
Для Win 7:
%userprofile%\AppData\Roaming\1C\1Cv82
%userprofile%\AppData\Local\1C\1Cv82
Серверные оси Windows 2008
C:\Users\<username>\AppData\Local\1C
C:\Users\<username>\AppData\Roaming\1C
А самый простой способ найти папки – это использовать поиск по системе(win + F) по ключевым словам «1сv81» и/или «1cv82». Нужные нам папки находятся в каталоге пользователя.
Напимер: C:\Documents and Settings\%userprofile%\Local Settings\Application Data\1C\1Cv81
C:\Documents and Settings\%userprofile% \Local Settings\Application Data\1C\1Cv82
C:\Documents and Settings\%userprofile% \Application Data\1C\1Cv81\
C:\Documents and Settings\%userprofile% \Application Data\1C\1Cv82\
Важно:
1) Кэш хранится в двух папках. Чаще всего эти папки называются «LocalSettings» и «ApplicationData». Обе папки находятся в каталоге пользователя.
2) Формат кэш-файлов выглядит вот так: «0df525c2-1c3e-44be-b852-c7059f17c5aa» или «0f2c4d8f-cc84-4033-8744-1acfa6204474». Удалять необходимо только те папки, у которых такой же формат в названии.
3.) Не удаляйте файл ibases.v8i — он содержит список баз Можно ли изменить путь кэша метаданных?
Можно. С помощью групповых политик (gpedit.msc) можно переопределить путь профиля пользователя целиком (не только кэш метаданных). ВАРИАНТЫ АВТОМАТИЗАЦИИ:
1. Доп. ключик командной строки /ClearCache — очистка кэша клиент-серверных вызовов (используется для тонкого и толстого клиентов в режиме 1С:Предприятия).
2. bat / cmd файл:
и текст батника с проверкой на ХР или 7:
3. Процедуру ОчиститьКэшИПерезапуститьПрограмму() создаем в глобальном модуле и вызываем ее когда нужно почистить кэш 1С
Чтоб заставить всех, кто работает без пароля, установить пароль. Можно применить программный ограничитель. Для этого в модуле приложения добавляем функцию:
и в предопредленной процедуре ПриНачалеРаботыСистемы (мы не можем использовать ПередНачаломРаботыСистемы т.к. в ней еще не существует окна программы и нет возможности открыть общую форму ввода пароля) делаем вызов
Иногда возникает необходимость запуска кода в базе 1С из командной строки. Например, надо выполнять те или иные процедуры по расписанию, но при этом нет желания каждый раз менять конфигурацию, а хочется прописать всё в батнике и запускать через шедулер (at). Вижу следующие варианты:
1. изменить один раз конфигурацию, чтобы потом можно было передавать через параметр исполняемый код.
2. прописать выполняемый код во внешней обработке и запускать 1С с параметром /execute
3. написать на vba процедуру выполнения заданных операций через COM.
1. Изменить один раз конфигурацию, чтобы потом можно было передавать через параметр исполняемый код.
В таком варианте необходимо прописать следующий код в модуле приложения процедуре ПриНачалеРаботыСистемы():
После этого для выполнения кода из командной строки достаточно будет запустить 1С с параметром /cВыполнить=[ИсполняемыйКод]. Например:
2. Прописать выполняемый код во внешней обработке и запускать 1С с параметром /execute
1С имеет параметр запуска "/Execute", с помощью которого можно запустить внешнюю обработку после старта системы. Чтобы воспользоваться этой возможностью, необходимо создать внешнюю обработку с исполняемым кодом в модуле формы:
После этого можно запускать данную обработку из командной строки например так:
3. Написать на vba процедуру выполнения заданных операций через COM.
Можно все действия прописать в файле VBS и уже его запускать. Пример содержимого файла VBS: