Справочники. Номенклатура. НайтиПоКоду("0000006")); ЭлементыФормы. ТабличноеПоле1.ТекущаяСтрока =
________ РегислрыСведений. Цены. СоздатьКлючЗаписи(СтруктураКлючевыхПолей);
// СоздатьНаборЗаписей()
//Пример: Показать номенклатуру, цена на которую была установлена в заданную //дату и время
Набор = РегистрыСведений. Цены. СоздатьНаборЗаписей(); Набор. Отбор. Период. Установить(ЗаданнаяДата, Истина); Набор. Прочитать();
Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить("Номенклатура = "+ОчереднаяЗапись. Номенклатура+
", цена = "+ОчереднаяЗапись. Цена); КонецЦикла;

// СоздатьМенеджерЗаписи()



II .<имя регистра сведений> // [<имя регистра сведений >] // Для Каждого... Из... Цикл... КонецЦикла;
//Пример: Открыть форму списка регистра сведений Цены
ИмяРегистра= "Цены";
Форма = РегистрыСведений[ИмяРегистра].ПолучитьФормуСписка();
Форма.Открыть();
/Шример: Добавить новое значение цены в регистр Цены
Запись = РегистрыСведений. Цены. СоздатьМенеджерЗаписи();
Запись. Период = ТекущаяДата();
Запись. Номенклатура = Справочники. Номенклатура. НайтиПоКоду("0000005");
Запись. Цена = 568;
Запись. Записать();


594
595
Краткий справочник разработчика
Регистры сведений







// [<индекс элемента коллекции >]
// Для Каждого... Из... Цикл... КонецЦикла;
/Шример: Показать номенклатуру, цена на которую была установлена в заданную
//дату и время
Набор = РегистрыСведений. Цены. СоздатьНаборЗаписей(); Набор. Отбор. Период, Установить(ЗаданнаяДата, Истина); Набор. Прочитать();
Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить("Номенклатура = "+ОчереднаяЗапись. Номенклатура+
", цена = "+ОчереднаяЗапись. Цена);
КонецЦикла; ___________________________________________________
// ПолучитьМенеджерЗаписи()
//Пример: Удалить все записи регистра сведений за текущий месяц
Выборка = РегистрыСведений. Цевы
.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
Пока Выборка. Следующий() цикл
Выборка. ПолучютьМенеджерЗначения()-Удалить();
КонецЦикла;_______________________________________________________
// Выбрать()
// ВыбратьПоРегистратору()
//Пример: Показать изменение цен на элемент номенклатуры в течение года
Отбор = Новый Структур("'Номенклатура", Справочники. Номенклатура. НайтиПоКоду("0000005")); Выборка = РегистрыСведений. Цены
.Выбрать(НачалоГода(ТекущаяДата()),ТекущаяДата(),Отбор); Пока Выборка. Следующий() цикл
Сообщить("Дата = "+Выборка. Период+ ", цена = "+Выборка. Цена);
КонецЦикла; _________________________________________
Последовательность событий
При записи из формы записи регистра сведений из формы записи

Замечание. Работа с формой записи регистра сведений
осуществляется при помощи объекта
РегистрСведенийМенеджерЗаписи.<имя>, который, в свою

596
597
Краткий справочник разработчика

очередь, использует объект
РегистрСведенийНаборЗаписей^имя>.
Особенности внутренней реализации объекта
РегистрСведенийМенеджерЗаписи^имя> таковы, что в случае записи существующей записи регистра сведений, обработчики события ПередЗаписью() и ПриЗаписи() модуля набора записей будут вызваны дважды: сначала для «старого» набора записей (с количеством записей 0) и затем для «нового» набора записей (с количеством записей 1).
При записи из формы набора записей регистра сведений

Регистры накопления
Объекты встроенного языка для работы с регистрами накопления

*Заливкой выделен объект манипулирования данными
Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в главе «Виды объектов встроенного языка, предназначенные для работы с данными прикладных объектов конфигурации» на странице 551.
РегистрНакопленияЗапись^имя>. Используется для доступа к записи регистра накопления. Объект не создается непосредственно, а предоставляется другими объектами, отвечающими за регистр накопления. Например, данный объект представляет записи регистра в наборе записей.
РегистрНакопленияКлючЗаписи^имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра.

598
599
Краткий справочник разработчика
Регистры накопле


Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства «ТекущаяСтрока» табличного поля, отображающего список записей регистра.
Использование объектов:
// СоздатьНаборЗаписей()
//Пример: Получить движения документа
НужныйДокумент = Документы. ПриходнаяНакладная. НайтиПоНомеру(4); Движения = РегистрыНакопления. ОстаткиМатериалов. СоздатьНаборЗаписей(); Движения. Отбор. Регистратор. Значение = НужныйДокумент; Движения. Прочитать();

// РегистрыНакопления




//Пример: Открыть форму списка регистра ОстаткиМатериалов
Форма = РегистрыНакопления. ОстаткиМатериалов. ПолучитьФормуСписка(); Форма. Открыть();
// Выбрать()
// ВыбратьПоРегистратору()
//Пример: Выбрать все записи регистра ОстаткиМатериалов за текущий месяц
Выборка = РегистрыНакопления. ОстаткиМатериалов
.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
![]()





II .<имя регистра накопления> // [<имя регистра накопления >] // Для Каждого... Из... Цикл... КонецЦикла;
//Пример: Рассчитать итоги регистра ОстаткиМатериалов на указанную дату
ИмяРегистра = ОстаткиМатериалов; РегистрыНакопления[ИмяРегистра]
.УстановитьПериодРассчитанныхИтогов(УказаннаяДата);

// СоздатьКлючЗапнси()
//Пример: Активизировать требуемую строку списка регистра накопления
СтруктураКлючевыхПолей = Новый Структура; СтруктураКлючевыхПолей. Вставить("Регистратор",
Документы. ПриходнаяНакладная. НайтиПоНомеру("0000002"));
СтруктураКлючевыхПолей. Вставить("НомерСтроки",2); ЭлементыФормы. ТабличноеПоле1.ТекущаяСтрока =
РегистрыНакопления. ОстаткиМатериалов
.СоздатьКлючЗапис^СтруктураКлючевыхПолей);
// [<индексэлементаколлекции>|
// Для Каждого... Из... Цикл... КонецЦикла;
//Пример: Получить движения документа
НужныйДокумент = Документы. ПриходнаяНакладная. НайтиПоНомеру(4); Движения = РегистрыНакопления. ОстаткиМатериалов. СоздатьНаборЗаписей(); Движения. Отбор. Регистратор. Значение = НужныйДокумент; Движения. Прочитать();
Для Каждого ОчередноеДвижение Из Движения Цикл //алгоритм обработки движений
КонецЦикла;
600
601
Последовательность событий при записи набора записей регистра накопления из формы набора записей
Регистры бухгалтерии
Объекты встроенного языка для работы с регистрами бухгалтерии
|
|
602
*Заливкой выделен объект манипулирования данными
Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в главе «Виды объектов встроенного языка, предназначенные для работы с данными прикладных объектов конфигурации» на странице 551.
РегистрБухгалтерииЗапись. Используется для доступа к записи регистра бухгалтерии. Объект не создается непосредственно, а предоставляется другими объектами, отвечающими за регистр
603
Краткий справочник разработчика
Регистры бухгалтерии
|
бухгалтерии. Например, данный объект представляет записи регистра в наборе записей.
РегистрБухгалтерииСубконто. Коллекция значений субконто записи регистра бухгалтерии. Установка и получение значения конкретного субконто осуществляется через оператор [], в качестве параметра которому передается вид субконто или через имя предопределенного субконто.
РегистрБухгалтерииКлючЗаписи. Набор значений, однозначно идентифицирующий запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.
Свойства и методы взаимодействия перечисленных объектов в большинстве своем аналогичны свойствам и методам объектов, предназначенных для работы с регистрами накопления (см. раздел «Регистры накопления» на странице 599).
Последовательность событий при записи набора записей регистра бухгалтерии из формы

604
605
Регистры расчета

Регистры расчета
Объекты встроенного языка для работы с регистрами расчетов

»■ Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в главе «Виды объектов встроенного языка, предназначенные для работы с данными прикладных объектов конфигурации» на странице 551.
РегистрРасчетаЗапись.<имя>. Используется для доступа к записи регистра расчета. Объект не создается непосредственно, а предоставляется другими объектами, отвечающими за регистр Расчета. Например, данный объект представляет записи регистра в наборе записей.
РегистрРасчетаКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.
РегистрРасчетаПерерасчеты.<имя>. Менеджер всех
менеджеров перерасчетов регистра расчетов.
ПерерасчетМенеджер.<имя>. Менеджер перерасчета служитдля получения набора записей перерасчета.
ПерерасчетНаборЗаписей.<имя>. Набор записей перерасчета.
ПерерасчетЗапись.<имя>. Объект используется для доступа к записи перерасчета.
ФактическийПериодДействия. Массив значений типа ЭлементФактическогоПериодаДействия.
ЭлементФактическогоПериодаДействия. Элемент
фактического периода действия.
Свойства и методы взаимодействия перечисленных объектов в большинстве своем аналогичны свойствам и методам объектов, предназначенных для работы с регистрами накопления (см. раздел «Регистры накопления» на странице 599).
*Заливкой выделены объекты манипулирования данными
606
607
Сраткий справочник разработчика
|
|
Последовательность событий при записи набора записей регистра расчета из формы
Запись набора записей регистра расчета |
Модуль набора записей регистра расчета |
Модуль формы
набора записей
регистра
ПослеЗаписи() ~J |
расчета
Планы обмена
Объекты встроенного языка для работы с планами обмена

ПланОбменаСписок.<имя>
*Заливкой выделен объект манипулирования данными
<*^ Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в главе «Виды объектов встроенного языка, предназначенные для работы с данными прикладных объектов конфигурации» на странице 551.
608
609
Краткий справочник разработчика
ЗаписьСообщенияОбмена - Объект предназначен для организации записи сообщения обмена данными.
ЧтениеСообщенияОбмена - Объект предназначен для приема
сообщений обмена данными. При начале чтения он осуществляет
проверку правильности задания заголовка сообщения, и отвергает
неправильные сообщения. При завершении чтения данный объект
модифицирует значение реквизита «НомерПринятого»
соответствующего узла плана обмена в соответствии с номером принятого сообщения.
Свойства и методы взаимодействия перечисленных объектов в большинстве своем аналогичны свойствам и методам объектов, предназначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на странице 570).
Последовательность событий при записи узла из формы
4acTbV. Приложения
|
610
611
Вопросы при переходе с версии 7.
Глава 1. Вопросы при переходе с версии 7.7
Версия 7.7 - версия 8.0 Общие вопросы
Я изменил конфигурацию, но когда запускаю 1С:Предприятие - там нет моих изменений. Почему мои изменения не видны?
В информационной базе версии 8.0 хранится несколько конфигураций одного и того же прикладного решения.
Конфигурация, редактируемая разработчиком, - основная конфигурация, - сохраняется без выполнения реструктуризации базы данных. Другими словами, ее сохранение не оказывает влияние на работающих пользователей.
Для работы пользователей в режиме «1С:Предприятие» используется другая конфигурация - конфигурация базы данных, также хранящаяся в информационной базе.
Чтобы привести конфигурацию базы данных в соответствие с
основной конфигурацией, нужно выполнить обновление
конфигурации базы данных (меню
Конфигурация | Обновить конфигурацию базы данных). При этом выполняются дополнительные проверки конфигурации, реструктуризация базы данных (если изменилась структура данных) и замена конфигурации базы данных на редактируемую конфигурацию.
В меню Конфигурация | Конфигурация базы данных можно выполнить сравнение редактируемой конфигурации с конфигурацией базы данных и при необходимости вернуться к конфигурации базы данных.
Использование команды
Конфигурация | Обновить конфигурацию базы данных (клавиша F7) позволяет сохранять редактируемую конфигурацию сразу с обновлением конфигурации базы данных.
Использование команды Отладка | Начать отладку (клавиша F5) позволяет начинать ' отладку с сохранением редактируемой конфигурации и обновлением конфигурации базы данных.
Для сохранения редактируемой конфигурации без обновления конфигурации базы данных следует использовать команду Сохранить конфигурацию или Сохранить (клавиша Ctrl+S).
Более подробную информацию можно прочитать в разделе «Основная конфигурация и конфигурация базы данных» на странице 52, и в главе «Немного о конфигурациях» на странице 535.
Как прервать работу модуля? Esc не работает...
В версии 8.0 прерывание длительных действий выполняется клавишей Ctrl+Break.
Пользователь может прервать работу модуля, только если в процессе выполнения модуля выполняется вызов процедуры глобального контекста «ОбработкаПрерыванияПользователя». Эта процедура проверяет, была ли нажата пользователем клавиша Ctrl+Break и прерывает работу модуля.
Следует отметить, что работа модуля будет прервана не всегда, а только в тех случаях, когда работа модуля была инициирована следующими действиями пользователя:
• нажатие кнопки в форме;
• выбор пункта меню или кнопки панели инструментов в
форме;
• выбор пункта меню или кнопки панели инструментов
интерфейса;
• действия, инициируемые обработчиками событий "Выбор"
элементов управления.
Более подробную информацию можно найти на диске ИТС в статье "Особенности прерывания пользователем работы модуля".
Почему в типовой конфигурации я не могу отредактировать полученную печатную форму документа?
Печатные формы первичных документов в типовых конфигурациях защищены от изменений пользователем. Режим «Защита» установлен

613
Краткий справочник разработчика
Вопросы при переходе с версии 7.7

средствами встроенного языка, и типовые конфигурации содержат настройку, позволяющую регулировать установку этого режима.
Следует заметить, что при включенной защите невозможно не только внесение изменений, но и копирование ячеек данного табличного документа.
Аналогичный подход использовался и в типовых конфигурациях версии 7.7 (например, в девятой редакции «Торговля и склад»).
В программных модулях у меня не выделяется цветом все, что относится к глобальному контексту (свойства, методы...)?
Да, в версии 8.0 выделяются цветом только конструкции встроенного языка:
Процедура... КонецПроцедуры,
Функция... КонецФункции,
Возврат,
Попытка... Исключение... КонецПопытки,
Для... По... Цикл... КонецЦикла,
Для Каждого... Из... Цикл... КонецЦикла,
Пока... Цикл... КонецЦикла,
Если... Тогда... ИначеЕсли ... Иначе... КонецЕсли,
Перейти,
Прервать,
Продолжить,
Новый,
Перем,
Выполнить,
конструкция "?".
Встроенные функции языка, свойства и методы глобального контекста не являются конструкциями встроенного языка и поэтому не выделяются цветом.
Я не могу внести никаких изменений в типовую конфигурацию. Почему?
В версии 8.0 существует механизм поддержки и обновления конфигураций, позволяющий пользователям обновлять конфигурации в автоматическом или полуавтоматическом режиме при выходе новых версий.
Естественно, что для всех типовых конфигураций, выпускаемых фирмой «1С» по умолчанию включен режим, позволяющий производить обновления автоматически. Поэтому вся конфигурация защищена от изменений, и вы не имеете возможности что-либо редактировать.
Можно изменить режим поддержки конфигурации так, чтобы
иметь возможность вносить в нее изменения. Для этого следует
воспользоваться командой меню
Конфигурация | Поддержка | Настройка поддержки Включить возможность изменений. После этого все объекты конфигурации могут редактироваться, и при обновлении конфигурации будет выполняться синхронизация сделанных изменений с изменениями поставщика.
В этом же окне существует возможность вообще снять конфигурацию с поддержки, но тогда обновление не будет производиться, о чем необходимо заранее предупредить пользователей.
О том, какие существуют конфигурации, можно прочитать в главе «Немного о конфигурациях» на странице 535.
Более подробную информацию можно найти на диске ИТС в статье "Обновление прикладных решений".
Права
Я добавил новую роль, но не могу назначить ее ни одному пользователю, она не появляется в списке выбора.
В версии 8.0 в информационной базе хранится несколько конфигураций, в том числе основная конфигурация (которую редактирует разработчик), и конфигурация базы данных (которая соответствует структуре базы данных, и с которой работают пользователи в режиме 1С:Предприятие).

614
615
раткий справочник разработчика
Вопросы при переходе
версии


![]()

При редактировании пользователей доступны только те объекты конфигурации (роли, интерфейсы и языки), которые содержатся в конфигурации базы данных.
Поэтому, чтобы созданную роль можно было назначить пользователю, нужно сначала выполнить обновление конфигурации базы данных (меню Конфигурация | Обновить конфигурацию базы данных).
О том, какие существуют конфигурации, можно прочитать в главе «Немного о конфигурациях» на странице 535.
Системные константы, процедуры и функции
В версии 7.7 была функция КаталогИБ, а как теперь определить каталог информационной базы, чтобы хранить в нем свои файлы?
Системная функция 1С:Предприятия 7.7 КаталогИБ() не реализована в версии 8.0.
Это связано с тем, что в версии 8.0 вся информационная база физически является одним файлом, независимо от используемого файлового или клиент-серверного варианта работы. Таким образом подразумевается, что понятие каталога, как некоей совокупности файлов, относящихся к данной информационной базе, отсутствует. Теперь все нужные файлы должны размещаться внутри информационной базы. Для этого в 1С:Предприятии 8.0 введен новый тип реквизитов и ресурсов — ХранилищеЗначения.
Функция СтатусВозврата(). Есть аналог в 8.0?
Нет, в версии 8.0 метод СтатусВозврата() не используется.
Чтобы в обработчике события указать на необходимость отмены стандартных действий, выполняемых системой для данного события, нужно использовать специальный параметр обработчика события. Этот параметр имеет тип Булево, а его название зависит от вида события, и может быть различным («Отказ» или «СтандартнаяОбработка»).
Есть ли аналог процедуры ОбработкаОжидания()?
Есть.
В версии 8.0 обработка ожидания может быть установлена методом ПодключитьОбработчикОжидания() (для отключения обработчика ожидания используется метод ОтключитьОбработчикОжидания()). Обработка ожидания может выполняться как в модуле приложения, так и в модуле формы. Для каждой формы, как и для приложения в целом, может быть установлено несколько обработчиков ожидания с разными интервалами.
Более подробно о событиях, связанных с формой, можно прочитать в главе «События, связанные с формой» на странице 547.
Что использовать вместо разделителя строк, который был в 7.7?
Вместо системной константы РазделительСтрок версии 7.7, в версии 8.0 следует использовать системный набор значений Символы. В частности, для указания символа перевода строки следует использовать значение этого набора - «ПС»:
Сообщить("Первая строка"+Символы. ПС+"Вторая строка");
Есть ли аналог в 8-ке - ПериодСтр() в 7.7?
Да, в версии 8.0 есть аналог системной функции ПериодСтр().
Для формирования текстового представления периода следует
использовать функцию глобального контекста
ПредставлениеПериода(). В качестве параметров в эту функцию передаются даты начала и окончания периода, а также строка, определяющая способ форматирования периода.
ОписаниеПериода = "Период:" +
ПредставлениеПериода(ДатаНачала, ДатаКонца, "ФП = Истина");
Как узнать текущее время в сеансе работы? РабочаяДата предлагает только дату.
Свойство глобального контекста РабочаяДата служит для отображения или установки рабочей даты, используемой в текущем сеансе конфигурации. Поэтому оно содержит дату в виде 44:MM:CC 00:00:00, указывающую на начало дня.

516
617
Краткий справочник разработчика
Вопросы при переходе с версии 7.7


![]()
Для получения текущего времени следует использовать встроенную функцию ТекущаяДата(), которая возвращает системную дату и время, установленные на компьютере:
ДатаВремя = ТекущаяДата();
Сообщить(*Текущее время = "+Формат(ТекущаяДата(),"ДФ='дд. мм. гг чч:мм:сс'"));
Глобальный модуль
Как «отловить» интерактивную пометку на удаление?
В версии 8.0 изменена реакция на снятие и установку пометки на удаление объекта.
В отличие от версии 7.7, где пометка на удаление обрабатывалась соответствующим событием удаления («ПриУдаленииЭлемента», «ПриУдаленииДокумента» и т. д.), в версии 8.0 реакция на снятие и установку пометки на удаление приведена в соответствие физическому смыслу выполняемых действий.
При установке пометки удаления не происходит непосредственного удаления элемента из базы, а выполняется всего лишь сохранение его измененного свойства ПометкаУдаления. Поэтому реакцией на это действие в версии 8.0 являются события «Перед записью» и «При записи» (это справедливо и в случае снятия пометки на удаление).
Событие «Перед удалением» возникает теперь только при непосредственном удалении объекта из базы данных.
Таким образом, для того, чтобы отследить интерактивную или программную пометку объекта на удаление, необходимо в обработчике события «ПередЗаписью» проанализировать свойство объекта ПометкаУдаления: значение Истина будет говорить о том, что пометка на удаление устанавливается, Ложь - снимается.
Если в обработчике события «Перед записью» есть необходимость анализировать то состояние объекта, которое было до наступления этого события, нужно считывать данные из базы данных при помощи запроса.
Контекст формы
Куда вписать выражение, чтобы его результат отображался в текстовой колонке табличного поля?
В версии 8.0 нет возможности задавать для колонок текстового поля выражения, которые будут автоматически рассчитываться при отображении этого табличного поля.
Такая возможность не реализована, поскольку весь текст программы в версии 8.0 располагается только в программных модулях.
Поэтому теперь, для вывода вычисляемого значения в колонку табличного поля следует использовать обработчик события «При выводе строки» табличного поля. Это событие возникает каждый раз при формировании очередной строки табличного поля, которая будет отображена на экране.
В качестве примера можно посмотреть процедуру «СправочникСписокПриВыводеСтроки» в модуле формы списка справочника «Номенклатура» в разделе «Вычисляемые колонки в списках» на странице 524.
Более подробную информацию можно найти на диске ИТС в статье "Вывод связанной информации по текущему объекту из списка".
В 8.0 в формах нет слоев. А как теперь создавать закладки в форме?
В версии 8.0 вместо механизма слоев в формах используются панели.
Одна панель может содержать несколько страниц. Поддерживается большое количество вариантов отображения закладок, режим прокручиваемых страниц, использование закладок без распределения по страницам.
Следует заметить, что один элемент управления может располагаться только на одной странице. Поэтому если вы хотите, чтобы в форме присутствовали элементы управления, доступные с любой страницы формы, следует размещать их вне той панели, в которой находятся страницы формы.
Пример использования страниц формы можно посмотреть в форме элемента справочника «Номенклатура» в разделе «Доработка справочника Номенклатура» на странице 261, а также в форме
618
619
Сраткий справочник разработчика
Вопросы при переходе с версии 7.7

документа «ОказаниеУслуги» в разделе «Отбор объектов, введенных на основании» на странице 497.
Как в формах 1С:Предприятия 8.0 сохранить настройки пользователя (по аналогии с сохранением настроек форм отчетов и обработок в 1С:Предприятии 7.7)?
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |








