Как известно делать проводки по счетам-группам нельзя. Однако жизнь течет и после введения бухгалтером очередного нового счета какой либо старый, который ранее не являлся счетом-группы, теперь становится групповым. И соответственно все проводки на этот счет становятся ошибочными. Для предупреждения подобной ситуации целесообразно перед записью данных по счетам имеет смысл всегда проверять счета на предмет группы. Один из возможных вариантов такой проверки привожу ниже:
Добавляем на форму рамку группы и на нее размещаем переключатели через пункт меню:
Форма -> Вставить элемент управления… и в открывшемся окне выбираем переключатели:
В правой части окна добавляем значение переключателя столько, сколько нам необходимо, ставим галочку на «Акции – первый в группе», для того чтоб данный переключатель выбирался автоматически.
После того как добавим переключатели выберем тип данных для первого значения «Акции», в нашем случае присваиваем значение «ТипЦБ»:
А само значение переключателя вводится в Данные -> Выбираемое значение. Для Акции это 0, Облигации – 1, Векселя - 2 и Паи – 3. Но до введения этих данных необходимо проверить порядок.
Если переключатели идут не по порядку, то не будет осуществлено переключение, то есть не сможем выбрать значение облигации. Для того чтобы включить эту возможность, необходимо выбрать меню Форма -> Настройка порядка обхода и все переключатели разместить по порядку.
Проверьте значение выбираемого значения переключателей после исправления порядка.
Остается только в событии переключателя «акции» «При изменении» написать код программы:
Теперь при выборе переключателя «Облигации» дается возможность редактировать значение колонки НКД:
1. Если на web сервере стоит Anonymous access
1.1 В базе нет пользователей – идеальный вариант для тестирования web-сервиса, чтобы не заморачиваться…
1.2 Если хочется, чтобы вэб сервис работал под определенным пользователем 1С. Добавляем в файл default.vrd строку идентификации типа: ib='Srvr="SERVER";Ref="TEST";usr=Администратор;pwd=*****'
1.3 HTTP Basic идентификация: (http://en.wikipedia.org/wiki/Basic_access_authentication)
Если на превый запрос вы получаете окно идентификации, можете туда забить логин и пароль. У меня на Firefox c русскими пользователями это не работает. Делаем английского пользователя и все нормально коннектиться. Но все-таки интересно как это происходит – смотрим в Firefox Web-console:
Хорошо.что это стандартная идентификация. значит мы ее может использовать программно:
И добавляем в ajax запрос параметр Authorization. Преобразуем строку “sikudaws:123456″ при помощи Base64:
Преобразовывать строки в Base64 b и назад можно здесь: http://rumkin.com/tools/compression/base64.php
И получаем идентификацию сразу. УРА.
Это даже легче PОST идентификация тонкого клиента:
http://its.1c.ru/db/v83doc#content:16:1(Требуется доступ по ITS)
2. Идентификация средствами операционной системы в 1С к сожалению решается предыдущим способом. Требует введения имени и пароля пользователя Windows и не дает какого либо преимущества. Ее рассматривать не будем.
Пожалуй, начнем сразу с практического примера.
В справочник Контрагенты нам необходимо заносить информацию о поставщиках, покупателях, банках, налоговых органах, различных фондах и пр. Для каждого вида контрагента нас интересует разная информация.
Создадим функцию, возвращающую список «важных» реквизитов в зависимости от вида контрагента:
Где же ее правильнее разместить?
Напрашивается вариант - в процедуре Модуля объекта «ПередЗаписью()». Тем самым мы на этапе записи будем контролировать правильность заполнения нужных нам реквизитов. С точки зрения создания, изменения элемента справочника, нас все устраивает. Но если нам необходимо, чтобы некоторые менеджеры заносились контрагентов в ИБ без контроля, а спустя какое-то время мы будем выполнять проверку на корректность заполнения данных в справочнике. Тогда нужно будет написать обработку. И в этой обработке, перебирая элементы, проверять заполнение реквизитов. Т.о. эту функцию придется разместить в коде обработки. А это получается дублирование кода, со всеми вытекающими проблемами. Можно получать объект каждого элемента, обращаться к функции, расположенной в его Модуле объекта. Но это будет дополнительные обращения к БД, тогда как в обработке нам достаточно только ссылок.
Можно выйти из этой ситуации создав Общий модуль «РаботаСКонтрагентами» и разместить в нем функцию возвращающую список реквизитов для проверки. В этом случае будем обращаться так «РаботаСКонтрагентами.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)».
Но! На платформе 8.2 как раз для решения подобной задачи и был создан Модуль менежера. Там и разместим нашу функцию. А обращаться мы будем: «Справочники.Контрагенты.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)».
Т.о. на ряду с предопределенными методами, мы можем самостоятельно разработать свои процедуры и обращаться к ним как методам Менеджера объекта, через точку. У нас отпадает необходимость создавать «тематические» внешние модули такие как «Работа с Контрагентами», «Процедуры Номенклатуры»...
Обратимся теперь к теории, чтобы «разложить все по полочкам».
Руководство разработчика дает нам следующее описание: «Модуль менеджера существует у всех прикладных объектов и предназначен для управления этим объектом как объектом конфигурации. Модуль менеджера позволяет расширить функциональность менеджеров за счет введения процедур и функций на встроенном языке. Фактически это позволяет описать методы для объекта конфигурации, которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации». Именно это мы и разобрали в нашем практическом примере.
Отобразим иерархию классов прикладных объектов на примере Справочников:
Т.е. мы видим, что появление «Модуля менеджера объекта» логично расширяет свойства класса СправочникМенеджер, так же как экспортные процедуры «Модуля объекта» расширяют методы класса СправочникОбъект. Нужно ли было создавать «Модуль прикладного объекта Справочники (Документы, Перечисления)». Наверное нет. Достаточно трудно придумать какие-либо задачи для единой обработки всех видов справочников.
Кроме возможности расширения методов класса, в модуле менеджера существует предопределенная процедура События . Она возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода «ПолучитьДанныеВыбора()».
Так же хочу обратить внимание. При использовании конструктора печати прикладного объекта, платформа расположит процедуру формирования табличного документа непосредственно в Модуле менеджера. И это логично. Теперь, чтобы получить табличный документ элемента справочника нет необходимости получать объект. Достаточно кода: .
ОГРН (основной государственный регистрационный номер) — государственный регистрационный номер записи о создании юридического лица либо записи о первом представлении в соответствии с Федеральным законом “О государственной регистрации юридических лиц” сведений о юридическом лице, зарегистрированном до введения в действие указанного Закона (пункт 8 Правил ведения Единого государственного реестра юридических лиц) (см. ОГРН в Википедии).
Структура ОГРН:
* 1 цифра – код, признак ОГРН (всегда равен 1);
* 2 цифры – две последние цифры года внесения записи в государственный реестр;
* 2 цифры – код региона по перечню регионов в 65-й статье Конституции
* 7 цифр – порядковый номер записи от начала года;
* 1 цифра – проверочный код ОГРН;
Что можно узнать зная ОГРН:
1. Год регистрации организации по двум последним цифрам.
2. С некоторой точностью месяц (а может быть и неделю) регистрации организации по порядковому номеру записи.
3. Код региона организации по 65-й статье Конституции.
4. По коду ОГРН может быть получена иная публичная информациия по организации – ИНН, КПП, наименование, адрес из публичного реестра ФНС.
Можно обратить внимание что ИНН и ОГРН отличаются принципами ведения порядковых номеров организаций. Если в ИНН они привязаны к налоговой инспекции, то в ОГРН к году регистрации. Соответственно исходя из возможности по порядковому номеру ИНН определить дату его присвоения, можно говорить что ИНН несёт чуть больше информации (номер инспекции) чем ОГРН.