Командный интерфейс. Проблема.

Командный интерфейс. Проблема.

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

Решение. Нужно было включить галочку использовать стандартные команды.

222

Вот и всё.

333

ПУТЕВОЙ ЛИСТ. ПОДГОТОВКА

ПУТЕВОЙ ЛИСТ. ПОДГОТОВКА
Приступим к созданию основного документа нашей конфигурации – путевому листу.
Прежде создадим еще один справочник. Он будет называться КарточкиЗаправки.
Чтобы держать хоть под каким-то контролем качество топлива мы принудим водителей заправляться только на
брендовых заправках одного крупного производителя. Один из путей решения – выдать карточки заправки, по
которым можно заправляться только на определенных заправках. Номера этих карт мы и будем хранить в справочнике КарточкиЗаправки.
Итак, создаем простой справочник. Заносить номера карт поручим бухгалтерии,
т.е. этот справочник включим в подсистему бухгалтерия (pic 9.1)

8gl7g9001
Перейдем в 1С и заполним это справочник. (pic 9.2)

8gl7g9002
Создадим еще один объект конфигурации Перечисление Продолжительность смены.
У нас водители будут работать фиксированное время 4, 8 или 12 часов, в зависимости от загруженности маршрута. (pic 9.3)

8gl7g9003
Все. Теперь создаем документ Путевой лист.
В дереве конфигурации находим ветвь документы, через контекстное меню нажимаем добавить.
В поле имя пишем ПутевойЛист, в поле представление списка пишем Путевые листы, на вкладке
Подсистемы включаем документ в подсистему Диспетчерская .
И сразу изменим командный интерфейс. Для этого раскрываем ветку общие, на ветке
Подсистемы через контекстное меню выбираем Все подсистемы, щелкаем на диспетчерская и ставим флажок напротив
Путевые листы и Путевой лист: создать. (pic 9.4)

8gl7g9004
Возвращаемся в документ и добавляем реквизиты

        

  • Автомобиль – тип СправочникСсылка.Автомобили, проверка заполнения- выдавать ошибку
  •     

  • ДеньНочь – тип булево, синоним Смена. Этот реквизит понадобиться в дальнейшем, когда
    нужно будет рассчитать зарплату, т.к. за ночные рейсы оплата выше, чем за дневные. Значение заполнения Ложь,
    т.е. по умолчанию смену будем считать ночной.
  •    

  • Водитель – тип СправочникСсылка.Сотрудники проверка заполнения- выдавать ошибку
  •     

  • Топливо –тип ПеречислениеСсылка.Топливо проверка заполнения- выдавать ошибку 
  •   

  •  КонечныйОдометр – тип Число 10.0  
  •     

  • РасходТоплива – тип Число 10.2 
  •     

  • ПродолжительностьСмены - ПеречислениеСсылка.ПродолжительностьСмены

Перейдем на закладку Формы и создадим форму документа.
Зайдем в конструктор форм и добавим два реквизита формы тип Число 10.0 – НачальныйОдометр и Пробег. (pic 9.5)

8gl7g9005
Перенесем эти реквизиты формы влево в элементы форм  и снимем флажок доступность у обоих.
Теперь наведем небольшой дизайн на форму. Создадим 3 обычных группы с группировкой горизонтальная.
Первую группу назовем ДатаНомер и перенесем в нее элементы формы Номер и Дата, расположим эту группу в самом верху.
Под ней расположим элементы Автомобиль и Водитель, не будем их включать ни в какие группы
Вторую группу назовем Смены, включим в нее элементы ДеньНочь – и заодно напишем синоним этого реквизита Дневная смена,
ПродолжительностьСмены, Топливо
Третья группа будет называться Километраж и в нее войдут: НачальныйОдометр, Пробег,
КонечныйОдометр и РасходТоплива.
Этой группе укажем заголовок Километраж и отображение Рамка группы, и первых двух групп отображение установим в нет.(pic 9.6)

8gl7g9006
Если все сделаете правильно, то должно получиться похожее на это pic 9.7

8gl7g9007
Теперь, когда мы разобрались с шапкой, введем табличную форму Стажеры.
Табличной частью мы будем пользоваться в виду того, что стажеров в принципе может быть одновременно несколько,
заранее никогда нельзя угадать сколько именно.
На закладке данные внизу через контекстное меню добавляем табличную форму Стажеры и в неё реквизит Стажер
тип СправочникСсылка.Сотрудники.
Еще нам понадобится табличная часть где будет фиксироваться все заправки, сделанные в течении рейса.
Добавляем табличную часть ЗаправкаТоплива и в неё реквизиты

  • КарточкаЗаправки тип СправочникСсылка.КарточкиЗаправки
  • Заправка тип Число 10.3
  • ЦенаЗаправки тип Число 10.2
  • СтоимостьЗаправки тип Число 10.2

(pic 9.8)

8gl7g9008
И последнее, для отображения наших табличных частей сделаем на форме закладки.
Для этого в конструкторе формы добавляем группу Страницы, в нее группу Страница ,
назовем ее Заправка и перенесем в нее табличную часть ЗаправкаТоплива.
Добавим в группу Страницы еще одну группу Страница, назавем её ИнформацияОСтажерах и добавим в неё табличную часть Стажеры.(pic 9.9)

8gl7g9009
Перейдем в 1С. В подсистеме Диспетчерская нажмем создать Путевой лист.
У вас должно получиться приблизительно как на (pic 9.10)

8gl7g9010
В следующем уроке будем наполнять документ смыслом.

ПОНЯТИЕ О ЗАПРОСЕ

ПОНЯТИЕ О ЗАПРОСЕ - 1c-esse

Каждый автомобиль однозначно идентифицируется VIN кодом, используем это для того,
чтобы случайно не завести один и тот же автомобиль дважды.
Добавим в справочник Автомобили новый реквизит VIN тип Строка 20 (pic 8.1)

8gl7g8001
Создадим форму элемента и форму списка. (если вы не знаете как это сделать смотрите предыдущие главы)
Установим свойство Проверка заполнения в Выдавать ошибку(pic 8.2)

8gl7g8002
Зайдем в окно редактирование формы элемента, вызовем свойство формы и сформируем заготовку процедуры ПередЗаписьюНаСервере (pic 8.3)

8gl7g8003
В этой процедуре мы будем проверять VIN на уникальность.
Внутри заготовки процедуры нажимаем правую кнопку мыши, выбираем пункт Конструктор запроса с обработкой результата (pic 8.4)

8gl7g8004
Соглашаемся с предложением системы (pic 8.5)

8gl7g8005
В открывшемся конструкторе запроса выбираем Обход результата. (pic 8.6)

8gl7g8006
Заходим на вкладку Таблицы и поля и там выбираем таблицу Автомобили (pic 8.7)

8gl7g8007
Из таблицы Автомобили выбираем поле VIN (pic 8.8)

8gl7g8008
Переходим на вкладку Условия, перетаскиваем мышкой вправо поля Ссылка, затем VIN, в выражении Автомобили.Ссылка =Ссылка, выбираем <> (pic 8.9)

8gl7g8009
Конструктор сформировал нам запрос с обходом результатов. (pic 8.10)

8gl7g8010
Сам запрос довольно простой.
Мы выбираем все VIN коды, которые равны некому введенному VIN коду в текущем элементе справочника.
Чтобы запрос не затрагивал текущий элемент справочника мы поставили условие Автомобили.Ссылка <>&Ссылка.
Такой значок в запросе & означает, что в момент выполнения в запрос будут подставлены внешние данные,
которые мы передадим через конструкцию Запрос.УстановитьПараметр.
Поправим слегка текст запроса. Во-первых, доступ к реквизитам формы элемента возможен только через элемент Объект,
поэтому вместо VIN напишем Объект.VIN, вместо Ссылка – Объект.Ссылка.
Во-вторых, нам нет нужды обходить результаты запроса.
Если в запросе будет хотя бы одно значение – это ошибка, VIN существует и записать автомобиль с таким VIN нельзя.
Что бы проверить есть ли в запросе результаты мы используем метод Пустой()
В результате наш запрос будет выглядеть так: (pic 8.11)

8gl7g8011
Если VIN существует, мы сообщим об этом пользователю и не станем записывать элемент.
Кроме VIN неплохо бы еще знать государственный регистрационный номер автомобиля.
С учетом того, что рег. Номер может меняться за время эксплуатации автомобиля, поэтому определим его  переодическим.
Перодические значения мы храним в переодическом регистре сведений.
Создадим новый регистр сведений с именем РегистрационныйНомер, перодический в пределах дня.(pic 8.12)

8gl7g8012
Добавим измерение Автомобиль тип СправочникСсылка.Автомобили и ресурс ГосНомер с типом строка длиной 10 символов. (pic 8.13)

8gl7g8013
Вернемся в окно редактирования формы элемента и добавим два реквизита ГосНомер тип строка длиной 10 символов и ДатаГосномера тип Дата (pic 8.14)

8gl7g8014
В левом окне добавим группу- Страницы, группу -Страница, группу –Обычная группа со свойством выравнивание по горизонтали (pic 8.15)

8gl7g8015
Перетащим мышкой влево в группу 3 реквизиты ГосНомер и ДатаГосНомера (pic 8.16)

8gl7g8016
Теперь нам нужно создать механизм чтения и записи регистра сведений РегистрационныйНомер.
В самом начале мы создали общий модуль под названием ЧтениеРегистраСведений.
Напишем в нем процедуру и функцию для работы с регистром сведений РегистрационныйНомер.
Процедура записи в регистр сведений РегистрационныйНомер будет аналогична процедуре ЗаписатьЗначениеДолжности (pic 8.17)

8gl7g8017
А вот функцию чтения из регистра сведений РегистрационныйНомер  мы напишем с использованием запроса.
Создадим пустую функцию
<strong> Функция ПрочитатьЗначениеГосНомера(Авто,Дт)    Экспорт   </strong>
<strong> КонецФункции </strong>
Установим курсор внутри функции и через контекстное меню вызовем Конструктор запроса с обработкой результата.
На вкладке Таблицы и поля выберем таблицу РегистрационныйНомер и из нее поле ГосНомер (pic 8.18 )

8gl7g8018
На вкладке Условия выберем РегистрационныйНомер.Период<=период и РегистрационныйНомер.Автомобиль.Ссылка=Ссылка (pic 8.19)

8gl7g8019
Нажмите ОК.  После
<strong>Пока ВыборкаДетальныеЗаписи.Следующий() Цикл</strong>
Добавте
<strong>Возврат ВыборкаДетальныеЗаписи.ГосНомер;</strong>
У вас должно получиться так: (pic 8.20)

8gl7g8020
В этом запросе мы выбираем из регистра сведений РегистрационныйНомер государственный номер автомобиля на определенную дату.
Кстати, если бы нам понадобилось выбрать номер на текущую дату можно было использовать таблицу РегистрационныйНомер.СрезПоследних и не морочиться с датой. (pic 8.21)

8gl7g8021
Заходим в конструктор формы элемента, в контекстном меню выбираем свойство формы и в
создаем заготовки для событий <strong>ПриОткрытии</strong> и <strong>ПриЗаписиНаСервере<strong/>.
Заполняем эти процедуры по аналогии со справочником Сотрудники (pic 8.22)

8gl7g8022
Еще одну процедуру нам нужно сделать при изменении актуальной даты.
В реквизите формы ДатаГосНомера заходим в контекстное меню и создаем заготовку события ОбработкаВыбора (pic 8.23)

8gl7g8023
В модуле заполняем процедуру ДатаГосНомераОбработкаВыбора по аналогии со справочником Сотрудники. (pic 8.24)

8gl7g8024
Заходим в 1С (F5).
Зайдем в подсистему Механик, откроем справочник Автомобили и в нем CITROEN JUMPER, попробуем записать этот элемент.
Система должна выдать ошибку о пустом VIN, если конечно, вы установили свойство в конфигураторе для реквизита VIN-выдавать ошибку. (pic 8.25)

8gl7g8025
Введем VIN 1234567890 (pic 8.26)

8gl7g8026
Откроем второй элемент справочника CITROEN C4 и введем тот же VIN 1234567890, будет выдано сообщение, что такой VIN уже зарегистрирован. (pic 8.27)

8gl7g8027
Введем другой VIN   и гос номер.(pic 8.28)
8gl7g8028 Откроем список справочника автомобили (pic 8.29)

8gl7g8029
Для удобства выбора здесь явно не хватает гос. Номера.
Попробуем добавить его.
Заходим в конфигуратор, в окно редактирования формы списка.
Мы видим, что данные для отображения в форме берутся из  динамического списка (pic 8.30)

8gl7g8030
Раскроем этот список и обнаружим, что никакого реквизита типа гос номера в нем нет. (pic 8.31)

8gl7g8031
Добавим поле РегистрационныйНомер.
Для этого через контекстное меню зайдем в свойства динамического списка и поставим галочку напротив пункта Произвольный запрос  (pic 8.32)

8gl7g8032
Нажмем Настройка списка Открыть. Перед нами откроется текст запроса. (pic 8.33)

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

8gl7g8034
Зайдем на закладку Объединения/Псевдонимы и переименуем ГосНомер в Государственный Номер (pic 8.35)

8gl7g8035
Зайдем на закладку Связи и установим флажок Все напротив поля СправочникАвтомобили,
тем самым установив ЛЕВОЕ СОЕДИНЕНИЕ,  это означает, что в запрос войдут все записи таблицы
СправочникАвтомобили и выбранные записи по условию из таблицы РегистрационныйНомерСрезПоследних  (pic 8.36)

8gl7g8036
Нажимаем ОК.
У нас должен получиться следующий запрос (pic 8.37)

8gl7g8037
В окне конструктора формы раскрываем правый список, находим там поле ГосударственныйНомер и перетаскиваем его влево. (pic 8.38)

8gl7g8038
Открываем 1С, и смотрим как выглядит наш список. (pic 8.39)

8gl7g8039

ПЛАН ВИДОВ ХАРАКТЕРИСТИК

ПЛАН ВИДОВ ХАРАКТЕРИСТИК

Оставим пока в покое справочник сотрудники и создадим новый справочник Автомобили.
Допустим, мы хотим знать какое дополнительное оборудование имеется на наших машинах.
Т.к. видов всяческого доп.оборудования тьма-тьмущая, заранее мы не можем определить что именно нам нужно,
а тем более что нужно пользователю. В этом случае самым правильным будет дать возможность пользователю самому
определять какие виды доп.оборудования он будет хранить.  Для того, чтобы описать структуру хранения подобной информации
в 1с имеется объект План видов характеристик (ПВХ).
Создадим такой план. Назовем его  ПрочиеСвойства Авто.
Ищем в дереве Планы видов характеристик и через контекстное меню добавляем новую. (pic 7.1)

8gl7g7001

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

8gl7g7002
Вернемся в ПВХ ПрочиеСвойстваАвто в типе значения характеристик установим составной тип (Pic 7.3)

8gl7g7003
В дополнительном значении характеристик укажем справочник ПрочиеСвойства. (Pic 7.4)

8gl7g7004

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

8gl7g7005
Зайдем на вкладку данные и добавим измерения
ОбъектСвойств тип СправочникСсылка.Автомобили и
АвтоСвойства тип ПланВидовХарактеристик.ПрочиеСвойстваАвто, синоним зададим Опция (pic 7.6)

8gl7g7006
Добавим ресурс Значение тип Характеристика.ПрочиеСвойстваАвто
Свойство Связи параметров выбора установим в Отбор.Владелец(АвтоСвойства) – это нужно для отбора только тех значений,
которые подчинены выбранной опции. Например если вы выбираете Магнитола,
то в качестве значений будут открываться только марки магнитол,  а виды цветов кузова будут  не видны.
Свойства связать по типу установим в АвтоСвойства. (Pic 7.7)

8gl7g7007
Откроем Справочник Автомобили на закладке Подсистемы установим видимость для подсистем Диспетчерская и Механик (pic 7.8)

8gl7g7008
Зайдем в 1С (F5), не обращая внимания на ругательства системы о невключении объектов в подсистемы.
Щелкнем по вкладке подсистемы Механик, войдём в справочник Автомобили и добавим две машины.(pic 7.9)

8gl7g7009
Откроем элемент справочника CITROEN C4. Слева, в панели навигации вы должны увидеть Опции,(pic 7.10)

8gl7g7010
нажмем на них, пока список опций пуст. Добавим пару опций. (pic 7.11)

8gl7g7011
В доп.оборудование Магнитола, добавим пару моделей магнитол.(pic 7.12)

8gl7g7012
В доп.оборудование цвет добавим белый и красный (pic 7.13)

8gl7g7013
Теперь можно выбрать опции для каждого автомобиля.(pic 7.14)

8gl7g7014
Можно немного улучшить интерфейс программы. Как видно из (pic 7.14)
отбор установлен по автомобилю CITROEN C4 и поле Объект свойств, в принципе,  лишнее.
Так же при добавлении и просмотре свойств Объект свойств можно не показывать. (pic 7.15)

8gl7g7015
Давайте уберем их. В конфигураторе выберем регистр сведений ЗначениеПрочихСвойств.
Зайдем на вкладку Формы и создадим две формы ФормаСписка и ФормаЗаписи.
Откроем ФормуСписка (pic 7.16)

8gl7g7016
Через контекстное меню зайдем в свойства формы.
Напротив события ПриСозданииНаСервере щелкнем на значок лупы. (pic 7.17)

8gl7g7017
В заготовке процедуры напишем (pic 7.18)

8gl7g7018
Код означает, что если установлен отбор по ОбъектСвойств, отображать этот объект не нужно.
Откроем ФормуЗаписи , повторим все действия и в Процедуру ПриСозданииНаСервере напишем (pic 7.19)

8gl7g7019
Нажмем F5.  Теперь поле ОбъектСвойств не видно, стало более читабельно.(pic 7.20)

8gl7g7020
Не забудьте установить флажок Ведущее у свойства измерения ОбъектСвойств.
Это позволит в том числе создать автоматически глобальную параметризированную команду.
Что в свою очередь позволит увидеть в элементе справочника ссылку на опции.
(pic 7.21)

8gl7g7021

Ошибка выполнения файловой операции

Переход с 1С Бухгалтерия 2.0 на 1С Бухгалтерия 3.0

 

При переходе с Бухгалтерии 2.0 на Бухгалтерию 3.0 на самом последнем этапе система выкидывает коленце "Ошибка выполнения файловой операции v8srv: ...". И напрочь отказывается обновляться.

Проблема и её решение оказались в настройке MS SQL 2005. В настройке Network packet size нужно было указать 16383. Вот и все дела.