Это не учения, боец! Добро пожаловать в реальный мир!
ОГЛАВЛЕНИЕ Примитивные типы, системные функции i Как явно указать нужную дату? Как проверить дату на пустое значение? Как сравнить две даты (дни)? Как прибавить к дате день, месяц? Как можно проверить тип значения переменной на равенство нужному? Как очистить реквизит формы, имеющий ссылочный тип? Как очистить значение, имеющее тип "Хранилище значения"? Как проверить тип значения, помещенного в реквизит имеющий тип "Хранилище значения"? Как сжать данные, помещаемые в хранилище значения? Как предоставить пользователю возможность выбора значения составного типа? Как применить округление при работе с вычисляемыми числовыми полями в запросе? Как вывести многострочное предупреждение? Как при выполнении обработки сообщить пользователю текущее время? Как вывести число прописью по-русски, но без дробной части? Как вывести число прописью по-русски, с указанием сотых в дробной части? Как вывести прописью число килограммов с указанием дробной части в граммах? Как долларовую сумму вывести прописью по-английски? Как загрузить внешнюю компоненту? Как выполнить команду операционной системы? Как реализовать код процедуры в зависимости от режима выполнения (на клиенте, на сервере, во внешнем соединении) ? Как при групповой обработке объектов реализовать стратегию "либо все, либо ничего"? Как посчитать сумму по формуле сложного процента? Универсальные коллекции Массив i В каких ситуациях обычно используются массивы? i Как создать массив? i Как создать многомерный массив? i Как добавить элементы в массив? i Как определить размер массива? i Как обратиться к элементу массива? i Как перебрать элементы массива? i Как удалить элемент массива? i Как удалить все элементы массива? Как удалить повторяющиеся элементы массива? Как скопировать массив? Как проверить, что два массива идентичны? В массив выгружены данные, содержащие наименования контрагентов. Как их отсортировать? Есть массив, в который выгружены значения типа СправочникСсылка.Номенклатура. Как удалить все пустые значения массива? Как получить массив номенклатурных позиций, использованных в табличных частях "Номенклатура" и "Тара" накладной? Есть две таблицы значений. Как получить массив совпадающих имен колонок? Как в запросе сделать отбор по нескольким вариантам заполнения реквизита типа "ПеречислениеСсылка"? Как из регистра сведений "РасчетчикиЗарплатыОрганизации" получить в виде массива всех расчетчиков зарплаты определенного подразделения организации? Структура i В каких ситуациях обычно используются объекты типа "Структура"? i Как создать структуру? i Как добавить элементы в структуру? i Как обратиться к элементу структуры? i Как перебрать элементы структуры? i Как удалить элемент структуры? Как в структуре установить значение для элемента с определенным ключом? Как получить в структуру многомерные данные? Как собрать информацию по установленным в форме журнала отборам? Как определить, есть ли в структуре элемент с ключом "Контрагент", и если есть, но содержит пустое значение справочника или Неопределено - удалить этот элемент? Как из табличной части "Товары" документа получить все строки, где значение реквизита "Цена" равно нулю, а значение реквизита "СтавкаНДС" равно значению "НДС18" перечисления "СтавкиНДС"? Как получить данные о текущей учетной политике бухгалтерского учета организации из периодического регистра сведений на заданную дату? Как сформировать структуру названий реквизитов табличной части произвольного документа? Как получить запросом данные табличной части документа, имея структуру названий реквизитов табличной части? Соответствие i В каких ситуациях обычно используются объекты типа "Соответствие"? i Как создать соответствие? i Как добавить элементы в соответствие? i Как обратиться к элементу соответствия? i Как перебрать элементы соответствия? i Как удалить элемент соответствия? Как получить данные из соответствия? Как получить многоуровневое соответствие видов расчетов, обладающих базовыми видами расчетов? Список значений, таблица значений, дерево значений i В каких ситуациях обычно используются списки значений, таблицы значений, дерево значений? i Как создать список значений? i Как добавить элементы в список значений? i Как найти элемент списка значений? i Как обратиться к элементу списка значений? i Как перебрать элементы списка значений? i Как удалить элемент списка значений? i Как создать таблицу значений и заполнить ее поля? i Как найти значение в таблице значений? i Как перебрать строки таблицы значений? i Как удалить строки (колонки) таблицы значений? Как заполнить таблицу значений, если имена колонок содержатся в переменных? Как заполнить всю колонку таблицы значений нужным значением? Как таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица"? Как добавить колонки к таблице значений "ТаблицаЗначений" с ограничениями по типу? Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса? Как самостоятельно заполнить дерево значений? Прикладные объекты Справочники i Как создать элемент (группу) справочника? i Как найти элемент справочника? i Как удалить элемент справочника? i Как перебрать элементы справочника? i Как выбрать все элементы из определенной группы? i Как перебрать элементы подчиненного справочника с помощью запроса? i Как перебрать элементы подчиненного справочника с помощью выборки справочника? i Как открыть форму списка (элемента) справочника? i Как добавить запись в табличную часть элемента справочника? i Как удалить строки из табличной части справочника? i Как перебрать строки табличной части справочника? i Как создать элемент в нужной группе? Как узнать, есть ли у текущего элемента подчиненные? Как узнать количество подчиненных элементов у выбранного элемента справочника? Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один? Как получить всех родителей выбранного элемента справочника? Как получить запросом "полный" код элементов справочника, если тип кода - Строка? Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят? Как найти все элементы справочника, в которых не заполнен строковый реквизит? Как перенести все элементы справочника "Контрагенты" из одной группы в другую? Как организовать программный выбор элемента справочника? Как сохранить фотографию сотрудника в справочнике "Сотрудники"? Документы i Как создать новый документ? i Как найти документ? i Как открыть форму документа? i Как изменить значение реквизита и записать документ? i Как добавить строку в табличную часть документа, имея ссылку на документ? i Как удалить строки из табличной части документа? i Как перебрать строки документа? i Как выгрузить табличную часть документа? i Как посчитать итог в табличной части документа? i Как провести документ? i Как перебрать документы? i Как пометить на удаление все приходные накладные? i Как, имея ссылку на документ, создать в базе его копию? i Как, имея ссылку на документ, прочитать его движения по регистру? Как определить, по каким регистрам документ выполнил движения? Как в табличной части документа удалить строки с нулевым значением реквизита "Количество"? Как очистить колонку "СтавкаНДС" в табличном поле "Товары" уже заполненного документа? Как заполнить значения свойств нового документа на основании существующего? Как получить перечень приходных накладных, в которых не заполнены номенклатурные позиции? Как на дату расходной накладной определить курс валюты управленческого учета? Валюта управленческого учета храниться в периодическом регистре сведений. 119 Как из формы документа вызвать его неоперативное проведение? Как в обработке проведения получить остатки, актуальные на позицию документа? Как определить количество документов и количество разных значений реквизита в таблице записей документа? В последовательность "ПартионныйУчет" добавлено измерение "Организация". Как теперь получить данные по границам последовательности для каждого значения этого измерения? Хранение сведений i Как добавить запись в непериодический независимый регистр сведений? i Как считать содержимое непериодического независимого регистра сведений? "СобственныеКонтрагенты"? i Как удалить все записи из независимого регистра сведений? i Как удалить записи независимого регистра сведений с отбором по конкретной организации? i Как добавить запись в периодический независимый регистр сведений? i Как прочитать (изменить) записи в периодическом независимом регистре сведений? i Как удалить записи в периодическом независимом регистре сведений? Как в периодическом независимом регистре сведений "КурсыВалют" удалить все записи по валютам с наименованиями "EUR" и "USD", период которых меньше 01 января 2005 года? Как прочитать данные, актуальные на определенную дату, из регистра сведений "Курсы валют" с отбором по нескольким валютам (отбор по измерениям)? Как поменять период у записей периодического независимого регистра, соответствующих ряду условий? Как "сделать периодическим" реквизит уже заполненного справочника? i Как добавить записи в регистр сведений, подчиненный регистратору? i Как прочитать (изменить) записи в регистре сведений, подчиненном регистратору? i Как удалить записи из регистра сведений, подчиненного регистратору? Бухгалтерский учет i Как в регистре бухгалтерии сформировать проводки? i Как получить остаток по счету? i Как получить обороты по счету? i Как получить остатки по счетам? i Как перенести остаток со счета на счет? Как найти первый документ, приведший к появлению кредитового остатка на счете? Как выбрать все счета, в аналитике которых присутствуют либо вид субконто "Контрагент", либо вид субконто "Договор"? Как выбрать все счета, в аналитике которых присутствуют как вид субконто "Контрагент", так и вид субконто "Номенклатура"? Как добавить новый вид субконто к счету? Как из регистра бухгалтерии "Хозрасчетный" получить обороты только по валютным счетам? Как выбрать в регистре бухгалтерии "Хозрасчетный" обороты по "60-ым" счетам, исключив внутренние обороты между ними? Как реализовать метод "красного сторно" для регистра бухгалтерии? Сложные периодические расчеты i Как получить сумму начисления по конкретному виду расчета указанному сотруднику в указанном периоде? i Как получить сумму всех начислений указанному сотруднику в указанном периоде? Как получить таблицу перерасчетов по перерасчетам нескольких регистров? Как для документа "НачислениеЗарплатыРаботникам" определить номера строк записей полностью вытесненных видов расчета? Как сформировать расчетный листок сотрудника? Как организовать сторнирование уже произведенных расчетов прошлых периодов? Бизнес-процессы Как определить бизнес процесс, в котором количество последовательных этапов определяется индивидуально на момент старта экземпляра процесса? Как при работе с бизнес процессами отказаться от стандартного способа формирования задачи и сформировать ее программно? Прочие прикладные объекты i Как, не открывая форму внешней обработки, выполнить ее процедуру для определенного объекта? i Как быстро получить информацию, по всем объектам, находящимся в компетенции конкретного менеджера (элемент справочника "Пользователи") по продажам? Формы и элементы управления Работа с формами i Как открыть форму документа? i Как открыть форму внешней обработки? i Как отрыть форму отчета так, чтобы она не перекрывала собой ту форму, из которой она открыта? i Как открыть форму отчета на весь экран? Как из формы документа открыть форму списка данного документа, спозиционировавшись на нем же? i В документе есть реквизит "Контрагент". Как открыть форму подчиненного ему справочника "ДоговорыКонтрагентов"? i Как в форме отобразить картинку, сохраненную в реквизите справочника? i Как в журнале документов "УчетКадров" отобрать только документы "ПриемНаРаботу"? i Как узнать интервал дат в открытом текущем журнале? Как при открытии справочника сделать отбор по контрагентам, входящим в список? Как обеспечить, чтобы для выбора значения покупателя в расходной накладной справочник контрагенты открывался сразу с открытой группой "Покупатели"? Табличное поле i Как запретить пользователю изменять порядок следования колонок в табличном поле? i Как запретить пользователю изменять любые настройки колонок табличного поля? Как вывести информацию о том, какой отбор установлен в журнале документов? i Как в форме справочника установить курсор на элемент с известным наименованием? i Как в форме списка сделать отбор по значению реквизита? i Как запретить выдачу сообщения: "Введенные данные не отображены в списке, так как не соответствуют отбору" при добавлении новых элементов в справочник? i Как заполнить ячейку табличного поля данными? Как изменить цвет фона ячейки табличного поля в зависимости от значения, выводимого в нее? Как в табличное поле "ВыбранныеКонтрагенты" добавить новую колонку "ОсновнойДоговор", заполнить ее значения и дать возможность открытия этих значений? Как задать список выбора для колонки "ВидДокумента" табличного поля? Как обеспечить возможность отбора и сортировки данных по реквизитам, не отображаемым в табличном поле формы списка справочника? Как реализовать перетаскивание между элементами управления? Как вывести остатки на складах в списке номенклатуры? Другие элементы управления i В форме есть панель со страницами. Как разместить картинку на закладке? i Как обеспечить, чтобы при открытии формы уже записанного элемента справочника "Контрагенты" активной была закладка "СчетаИДоговоры" панели "Панель"? Как организовать выбор из нескольких списков документов для открытия? Как можно организовать подстановку обращения к персоне? Как в командной панели создать подменю с кнопками? Как созданной кнопке назначить "горячие клавиши"? 2 Как реализовать заполнение возможных значений поля выбора "ОбрабатываемаяТабличнаяЧасть" при заполнении поля ввода "ОбрабатываемыйДокумент"? i Если пользователь указал несколько дат в поле календаря - как их перебрать? i Как организовать работу с индикатором? Как у элемента управления сменить источник данных? i Как задать представление даты, отображаемое в поле ввода по-умолчанию? i Как вывести текст в поле картинки в том случае, если картинка не выбрана? i Как открыть пользователю стандартный диалог выбора цвета? Как заполнить список в форме данными запроса? i Как отобразить в форме файл графической схемы? Интерфейсы, стили i Как задать различные стили 1С:Предприятия для различных категорий пользователей? Есть список имен интерфейсов с пометками. Как сделать помеченные интерфейсы видимыми? Как из формы обработки отключить глобальный обработчик ожиданий? Запросы, отчеты Запросы Как получить данные из табличной части документов? Как получить данные из табличной части документов и представить их в иерархическом виде? Как подсчитать количество одинаковых элементов в выбираемых данных? Как применять условия для отбора по значениям полей, вычисленных как результат агрегатной функции? Как ограничить выборку из виртуальной таблицы? Как просуммировать данные по одинаковым значениям одного из полей выборки? Как получить только те записи, в которых значение определенного поля превышает указанное значение? Как обратиться к подчиненным полям в запросе? Как объединить результаты нескольких запросов? Как выбрать данные из двух таблиц, удовлетворяющие определенному условию? Как дополнить данные одной таблицы данными, выбранными из другой таблицы по определенному условию? Как объединить данные из двух таблиц по определенному условию? Как вывести некоторое значение вместо NULL в запросе? Как вместе с данными некоторой таблицы получить общие итоги из этой же таблицы? Как получить иерархические итоги по группе справочника? Как по состоянию на заданную дату по регистру "ОстаткиНаСкладе" найти последний документ "ПоступлениеТоваровУслуг", по которому приходила номенклатура? Как подсчитать количество записей с одинаковым значением некоторого поля? Как в итоговых записях вывести количество различных записей? Как узнать количество записей в результате запроса? Как проверить достаточность остатков товаров на складах, указанных в документе? Как в запросе осуществить отбор по значению перечисления? Как получить курсы валют на две интересующие даты? Как одним запросом получить таблицу расхождений курсов взаиморасчетов всех выписанных документов "ЗаказПокупателя" с официальным курсом? Как написать запрос таким образом, чтобы на определенном уровне иерархии запроса считались одни итоговые функции, а на другом уровне другие? Как получить перечень документов, приведших данные подчиненного периодического регистра сведений к определенному состоянию? Как установить параметры запроса, если текст запроса заранее не известен? Анализ данных i Как получить данные о товарах продаваемых вместе? i Как порекомендовать сопутствующие товары? i Как посмотреть, что будет покупаться в дальнейшем? Представление результатов отчетов Табличный документ, текстовый документ Как вывести результат запроса в табличный документ? Как вывести данные в табличный документ с возможностью сворачивания и разворачивания данных по группировкам? Как при выводе данных в табличный документ свернуть все выводимые группировки? Как при выводе данных в табличный документ произвольно определить состав свернутых и развернутых группировок? i Как выгрузить результат запроса с показом иерархии? i Где и как можно увидеть макет, автоматически генерируемый построителем отчета? i Как из построителя отчета передать данные в сводную таблицу? Отчет формируется построителем отчета. Как убрать одну из колонок, поместив ее данные в расшифровку другой? Как сохранить настройки построителя отчета до следующего открытия формы отчета? Как организовать показ примечаний в формируемом табличном документе? i Как обеспечить, чтобы при вводе на печать не печатались первая колонка и первая строка табличного документа "ДокументРезультат"? i Как обеспечить фиксацию верхней части табличного документа, генерируемого построителем отчета, по срезу шапки таблицы? i Табличный документ формируется построителем отчета. Как при печати табличного документа обеспечить вывод шапки таблицы на каждой странице? i Как при выводе на печать "длинного" документа указать в колонтитулах страниц номер документа, дату и номер страницы? i Табличный документ формируется по макету, автоматически генерируемому построителем отчета. Как задать ориентацию страницы при печати? Табличный документ формируется построителем отчета. Как для всех выводимых числовых показателей установить вывод без дробной части? i Как для построителя отчета совместить назначение своего макета и применение одного из стандартных макетов оформления? Как при получении данных из запроса обойти только итоговые записи? Как при получении данных из запроса обойти только иерархические итоговые записи? i Как вывести картинку в табличный документ? Как вывести картинку в табличный документ без изменения макета? Как работать со сводной таблицей? Как программно разместить данные в сводной таблице и оформить ее? Как создать печатную форму посредством текстового шаблона? Диаграммы i Как заполнить диаграмму данными? Как заполнить данными измерительную диаграмму? i Как вывести результат запроса в сводную диаграмму? i Как заполнить диаграмму Ганта данными? Как связать интервалы диаграммы Ганта? Как обработать интерактивное изменение интервалов диаграммы Ганта? Как разместить непериодические метки в диаграмме Ганта? Как выделить некоторые интервалы фона диаграммы Ганта? Географическая схема i Как отобразить в форме файл географической схемы? i Как отобразить в форме макет географической схемы? i Как изменить масштаб географической схемы? Как отобразить на географической схеме выбранный город? Как использовать таблицу значений в качестве источника данных географической схемы? Администрирование Запуск 1С:Предприятия из командной строки i Как запустить 1С:Предприятие из командной строки? Как из командной строки заставить 1С:Предприятие сделать выгрузку базы данных? Как из командной строки обновить изменения текущей конфигурации в конфигурации базы данных? Как выполнить тестирование и исправление информационной базы без проверки ссылочной целостности в автоматическом режиме? Как выполнить проверку конфигурации в автоматическом режиме с выводом результатов проверки в файл? Как сократить журнал регистрации программно? Как выгрузить модули прикладного решения в виде текстовых файлов из командной строки? Как загрузить в прикладное решение файлы справки, сохраненные в формате htm? Разное i Как поменять значение рабочей даты? i Как установить/снять монопольный режим? i Как внести запись в журнал регистрации? i Как получить данные о зарегистрированных пользователях информационной базы? i Как определить общую системную информацию? Как программно добавить пользователя в информационную базу? Как создать собственный лог-файл для записи результатов работы внешней обработки? Как в форме отобразить список пользователей, которые работают с данной информационной базой? Как выгрузить журнал регистрации в XML-формате? Как принудительно завершить работу всех пользователей информационной базы в клиент-серверном варианте работы? Интеграция Текстовый файл i Как выгрузить данные из справочника в текстовый файл? i Как загрузить данные из текстового файла? Работа с текстом. Модель последовательного доступа XML i Как из одной базы перенести документ в другую базу? Как можно сформировать XML-документ произвольной структуры? Как сформировать XML-документ в строку? Как можно обмениваться данными, используя XML-сериализацию через файлы других форматов? Как можно загрузить XML документ произвольной структуры? DBF-файлы i Как можно построить выгрузку-загрузку посредством файлов DBF? Работа с HTML-документами i Заполнение HTML-анкет Работа с файлами i Как организовать диалог выбора текстового файла? i Как прочитать информацию о файле? i Как получить список файлов в указанном каталоге? Как переместить файл, выложенный на ftp к себе на локальный компьютер? Как разделить большой файл на несколько файлов определенного размера? Как поместить файлы в архив? Как сравнить два текстовых файла? Как организовать контроль формирования файла внешним приложением? ActiveX i Как использовать элементы управления ActiveX? Макеты ActiveDocument Как сформировать новый договор на основании файла Microsoft Word? Работа с Интернет Работа с электронной почтой Как организовать работу с электронной почтой через установленного почтового клиента? Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя? Работа с файлами Загрузка файлов по FTP Выполнение HTTP запроса Работа с COM-объектами i Как из одной базы 1С:Предприятие 8.0 перенести остатки товаров в другую базу, используя COM-соединение. Пример обращения к программе 1С:Предприятие 8.0 из модуля MS Excel через COM-соединение i Как организовать считывание данных из файлов *.xls? Как запустить макрос, записанный в книге Microsoft Excel? Как создать документ программы Microsoft Excel по оформлению, приведенному в другом документе? i Как выгрузить прайс-лист в документ программы Microsoft Word? i Как выполнить запрос к произвольной базе данных SQL? Automation Client/Server (OLE) i Как из одной базы 1С:Предприятие 8.0 интерактивно заполнить документ в другой базе, используя Automation Client/Server (OLE)? Как из таблицы Excel загрузить список номенклатуры в 1С:Предприятие с возможностью редактирования? Обмен данными i Как организовать работу удаленных складов? Как при создании начального образа управлять тем, какие виды объектов перегружаются, а какие нет? Как просмотреть объекты, для которых зарегистрированы изменения? Как организовать обмен данными между произвольными конфигурациями 1С:Предприятие 8.0? Как принудительно зарегистрировать изменения объектов? WEB-расширение i Как в форме списка номенклатуры отменить все установленные отборы? Как запретить перенос содержимого ячеек в форме списка расходных накладных? Как открыть список расходных накладных с отбором, установленным по определенному складу? Как добавить кнопку для ввода документа на основании?
'20050308'
Дата(2005, 1, 1)
Дата(1, 1, 1)
Дата(2005, 1, 1, 10, 29, 50)
ДАТАВРЕМЯ(2005, 01, 01)
Если ДатаПроверяемая = Дата(1, 1, 1) Тогда
Сообщить("Пустая дата!");
КонецЕсли;
Если НачалоДня(Дата1) = НачалоДня(Дата2) Тогда
Сообщить("Дни совпадают!");
КонецЕсли;
СледующийДень = ТекущаяДата() + 60 * 60 * 24;
ДобавитьМесяц(Дата(2005, 1, 31), 1)
ДобавитьМесяц(Дата(2005, 2, 28), -1)
КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1))
ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)
Запрос = НовыйЗапрос("
|ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата";
Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней);
ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата;
КонецФункции
ИмяНужногоТипа = "ДокументСсылка.РеализацияТоваров";
Если ТипЗнч(ОбрабатываемыйДокумент) = Тип(ИмяНужногоТипа) Тогда
// Строки кода, выполняемые при истинности условия.
КонецЕсли;
Товар = Справочники.Номенклатура.ПустаяСсылка();
РеквизитХранилище = Неопределено;
Значение = Фотография.Получить();
Если Значение <> Неопределено Тогда
Если ТипЗнч(Значение) = Тип("Строка") Тогда
// Обработать строку.
ИначеЕсли ТипЗнч(Значение) = Тип("Картинка") Тогда
// Обработать картинку.
Сообщить("Картинка");
КонецЕсли;
КонецЕсли;
СопроводительнаяИнформация = Новый ХранилищеЗначения(ПомещаемоеЗначение, Новый СжатиеДанных(9));
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.ФизЛица"));
// Добавить другие типы.
ОписаниеВозможныхТипов = Новый ОписаниеТипов(МассивТипов);
ПолученноеЗначение = Неопределено;
ВвестиЗначение(ПолученноеЗначение, "Выберите значение:", ОписаниеВозможныхТипов);
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
ВЫРАЗИТЬ(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК ЧИСЛО(15, 2)) КАК СредняяЦенаПродажи
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты
Предупреждение("На складе: " + Остаток + Символы.ПС + "В резерве : " + Зарезервировано + Символы.ПС + "Свободный остаток: " + (Остаток - Зарезервировано), 20, "Состояние остатков");
ТекущееВремя = Формат(ТекущаяДата(), "ДЛФ=В");
Сообщить(ТекущееВремя);
ФорматнаяСтрока = "Л=ru_RU";
ПараметрыПредметаИсчисления = " , , , , , , , , 0";
Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
ПараметрыПредметаИсчисления = "целая, целых, целых, ж, сотая, сотой, сотых, ж, 2"
ФорматнаяСтрока = "Л=ru_RU; ДП=Истина";
Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
ПараметрыПредметаИсчисления = "килограмм, килограмма, килограммов, м, грамм, грамма, граммов, м, 3";
ФорматнаяСтрока = "Л=ru_RU; ДП=Истина";
Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
ФорматнаяСтрока = "Л=en_US";
ПараметрыПредметаИсчисления = "dollar, dollars, cent, cents, 2";
Сообщить(ЧислоПрописью(Сумма, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
Попытка
ЗагрузитьВнешнююКомпоненту("scanopos.dll")
Исключение
Сообщить("Ошибка загрузки внешней компоненты!");
КонецПопытки;
Попытка
// Получить объект компоненты.
Объект = Новый("AddIn.Scanner");
Исключение
Сообщить("Не удалось создать объект внешней компоненты");
КонецПопытки;
КомандаСистемы("del *.* /q", "c:\temp");
КомандаСистемы("cmd");
ЗапуститьПриложение("ШаблонДоговора.doc");
#Если ВнешнееСоединениеТогда
// Фрагмент кода, который должен выполняться в сессии внешнего соединения.
#КонецЕсли
#Если Клиент Тогда
// Фрагмент кода, который должен выполняться на клиентском месте.
#КонецЕсли
#Если Сервер Тогда
// Фрагмент кода, который должен выполняться на сервере.
#КонецЕсли
НачатьТранзакцию();
// В переменной "ВыборкаДанных" содержатся данные для записи в справочник.
Пока ВыборкаДанных.Следующий() Цикл
ЭлементОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
ЭлементОбъект.Код = Выборка.Код;
ЭлементОбъект.Наименование = Выборка.Наименование;
// Остальные реквизиты
ЭлементОбъект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
ОтменитьТранзакцию();
Функция СложныйПроцент(Кредит, Ставка, Срок = 1)
Возврат Кредит*Pow(1 + Ставка/100, Срок);
КонецФункции
СозданныйМассив = Новый Массив ();
СозданныйМассив = Новый Массив (10);
ДвумерныйМассив = Новый Массив (2, 8);
ДвумерныйМассив = Новый Массив;
МассивВторогоПорядка = Новый Массив(8);
ДвумерныйМассив.Добавить(МассивВторогоПорядка);
ДвумерныйМассив.Добавить(МассивВторогоПорядка);
Значение = ДвумерныйМассив[2][5];
Значение = ДвумерныйМассив.Получить(2).Получить(5);
НашМассив.Добавить(НовоеЗначение);
Массив = Новый Массив;
Массив.Вставить(5, "ООО ""Лабан""");
Размер = НашМассив.Количество();
ПервоеЗначение = НашМассив[0];
НашМассив[9] = ДесятоеЗначение;
ПервоеЗначение = НашМассив.Получить(0);
НашМассив.Установить(9, ДесятоеЗначение);
Для Каждого ЭлементМассива Из МассивЭлементов Цикл
Если ТипЗнч(ЭлементМассива) = Тип("Число") Тогда
Сообщить(ЭлементМассива);
КонецЕсли;
КонецЦикла;
Для Сч = 0 по МассивЭлементов.ВГраница() Цикл
Если ТипЗнч(МассивЭлементов[Сч]) = Тип("Число") Тогда
МассивЭлементов[Сч] = 0;
КонецЕсли;
КонецЦикла;
МассивЭлементов.Удалить(0);
Индекс = МассивЭлементов.ВГраница();
Пока Индекс >= 0 Цикл
Если ТипЗнч(МассивЭлементов[Индекс]) = Тип("Число") Тогда
МассивЭлементов.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Массив.Очистить();
Процедура УдалитьПовторяющиесяЭлементы(Массив)
ТекущийИндекс = 0;
ВсегоЭлементов = Массив.Количество();
Пока ТекущийИндекс < ВсегоЭлементов Цикл
Индекс2 = ТекущийИндекс + 1;
Пока Индекс2 < ВсегоЭлементов Цикл
Если Массив[Индекс2] = Массив[ТекущийИндекс] Тогда
Массив.Удалить(Индекс2);
ВсегоЭлементов = ВсегоЭлементов - 1;
Иначе
Индекс2 = Индекс2 + 1;
КонецЕсли;
КонецЦикла;
ТекущийИндекс = ТекущийИндекс + 1;
КонецЦикла;
КонецПроцедуры
Функция СкопироватьМассив(ИсходныйМассив)
МассивКопия = Новый Массив;
Для Каждого Элемент Из ИсходныйМассив Цикл
МассивКопия.Добавить(Элемент);
КонецЦикла;
Возврат МассивКопия;
КонецФункции
Функция ПроверитьИдентичностьМассивов(ПервыйМассив, ВторойМассив)
НаибольшийИндекс = ПервыйМассив.ВГраница();
Если НаибольшийИндекс > ВторойМассив.ВГраница () Тогда
Возврат Ложь;
КонецЕсли;
Для Счетчик = 0 По НаибольшийИндекс Цикл
Если ПервыйМассив[Счетчик] <> ВторойМассив[Счетчик] Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(МассивНаименований);
СписокЗначений.СортироватьПоЗначению();
МассивНаименований = СписокЗначений.ВыгрузитьЗначения();
СписокЗначений.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Процедура УдалитьПустыеЭлементы(МассивНоменклатуры)
Счетчик = 0;
КоличествоЭлементов = МассивНоменклатуры.Количество();
Пока Счетчик < КоличествоЭлементов Цикл
Если МассивНоменклатуры [Счетчик].Пустая() Тогда
МассивНоменклатуры.Удалить(Счетчик);
КоличествоЭлементов = КоличествоЭлементов - 1;
Иначе
Счетчик = Счетчик + 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
МассивНоменклатуры = СсылкаНаДокумент.Номенклатура.ВыгрузитьКолонку("Номенклатура");
МассивНоменклатурыТара = СсылкаНаДокумент.ВозвратнаяТара.ВыгрузитьКолонку("Номенклатура");
Для Каждого ЭлементМассиваТара Из МассивНоменклатурыТара Цикл
МассивНоменклатуры.Добавить(ЭлементМассиваТара);
КонецЦикла;
МассивСовпадающихКолонок = Новый Массив();
Для Каждого Колонка Из ТаблицаПриемник.Колонки Цикл
ИмяКолонкиПриемника = Колонка.Имя;
Если ТаблицаИсточник.Колонки.Найти(ИмяКолонкиПриемника) <> Неопределено Тогда
МассивСовпадающихКолонок.Добавить(ИмяКолонкиПриемника);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ОтпускаОрганизацииРаботникиОрганизации.ФизЛицо,
| ОтпускаОрганизацииРаботникиОрганизации.ДатаНачала,
| ОтпускаОрганизацииРаботникиОрганизации.ДатаОкончания
|ИЗ
| Документ.ОтпускаОрганизации.РаботникиОрганизации КАК ОтпускаОрганизацииРаботникиОрганизации
|ГДЕ
| ОтпускаОрганизацииРаботникиОрганизации.ПричинаОтсутствия В (&МассивПричин)";
МассивПричин = Новый Массив;
МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты);
МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
Запрос.УстановитьПараметр("МассивПричин", МассивПричин);
Функция ПолучитьМассивРасчетчиков(Подразделение)
НаборЗаписей = РегистрыСведений.РасчетчикиЗарплатыОрганизации.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ПодразделениеОрганизации.Установить(Подразделение);
НаборЗаписей.Прочитать();
МассивРасчетчиков = НаборЗаписей.ВыгрузитьКолонку("Пользователь");
Возврат МассивРасчетчиков;
КонецФункции
Функция ПолучитьМассивРасчетчиков(Подразделение)
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| РасчетчикиЗарплатыОрганизации.Пользователь КАК Расчетчик
|ИЗ
| РегистрСведений.РасчетчикиЗарплатыОрганизации КАК РасчетчикиЗарплатыОрганизации
|ГДЕ
| РасчетчикиЗарплатыОрганизации.ПодразделениеОрганизации = &Подразделение";
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
МассивРасчетчиков = Новый Массив;
Пока Выборка.Следующий() Цикл
МассивРасчетчиков.Добавить(Выборка.Расчетчик);
КонецЦикла;
Возврат МассивРасчетчиков;
КонецФункции
СозданнаяСтруктура = Новый Структура;
Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7);
Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7);
Оппонент.Вставить("Обращение", "Господин");
Оппонент.Вставить("Возраст", 25);
ТекущийВозраст = Оппонет.Возраст;
КлючСтруктуры = "Возраст";
ТекущийВозраст = Оппонет[КлючСтруктуры];
ТекущийВозраст = Неопределено;
Оппонет.Свойство("Возраст", ТекущийВозраст);
Оппонет.Возраст = 32;
Оппонет["Возраст"] = 32;
Оппонент.Вставить("Возраст", 32);
Для Каждого Элемент из СтруктураПараметров Цикл
Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
КонецЦикла;
СтруктураПараметров.Удалить("Номенклатура");
СтруктураПараметров. Очистить();
Структура = Новый Структура;
// Добавить новый элемент.
Структура.Вставить("Цвет", WebЦвета.Белый);
// Установить значение для элемента с ключом "Цвет".
Структура.Вставить("Цвет", WebЦвета.Синий);
СтруктураОтборов = Новый Структура;
СтруктураПараметровОтбора = Новый Структура;
Для Каждого ЭлементОтбора из ЖурналДокументовСписок.Отбор Цикл
Если ЭлементОтбора.Использование Тогда
СтруктураПараметровОтбора.Очистить();
СтруктураПараметровОтбора.Вставить("Имя", ЭлементОтбора.Имя);
СтруктураПараметровОтбора.Вставить("ВидСравнения", ЭлементОтбора.ВидСравнения);
СтруктураПараметровОтбора.Вставить("Значение", ЭлементОтбора.Значение);
СтруктураПараметровОтбора.Вставить("ЗначениеПо", ЭлементОтбора.ЗначениеПо);
СтруктураПараметровОтбора.Вставить("ЗначениеС", ЭлементОтбора.ЗначениеС);
СтруктураПараметровОтбора.Вставить("Представление", ЭлементОтбора.Представление);
СтруктураПараметровОтбора.Вставить("ПутьКДанным", ЭлементОтбора.ПутьКДанным);
СтруктураПараметровОтбора.Вставить("ТипЗначения", ЭлементОтбора.ТипЗначения);
СтруктураОтборов.Вставить(ЭлементОтбора.Имя, СтруктураПараметровОтбора);
КонецЕсли;
КонецЦикла;
Если Структура.Свойство("Контрагент", ЗначениеЭлемента) Тогда
Если ЗначениеЭлемента = Неопределено ИЛИ ЗначениеЭлемента.Пустая() Тогда
Структура.Удалить("Контрагент");
КонецЕсли;
КонецЕсли;
Структура.Контрагент
Структура["Контрагент"]
СтруктураДляПоиска = Новый Структура("Цена, СтавкаНДС", 0, Перечисления.СтавкиНДС.НДС18);
МассивСтрок = Товары.НайтиСтроки(СтруктураДляПоиска);
// Подготовить отбор по измерению "Организация".
СтруктураОтбора = Новый Структура("Организация", ЮрЛицо);
// Получить данные, актуальные на указанную дату.
СтруктураДанных = РегистрыСведений.УчетнаяПолитикаБухгалтерскийУчет.ПолучитьПоследнее(ДатаПолучения, СтруктураОтбора);
// Прочитать данные из структуры данных.
СпособОценкиМпзЮрЛица = СтруктураДанных.СпособОценкиМПЗ;
ДиректКостингЮрЛица = СтруктураДанных.ДиректКостинг;
Функция СформироватьСтруктуруТабличнойЧастиДокумента(Документ, ИмяТабличнойЧасти)
СтруктураТабличнойЧастиДокумента = Новый Структура;
Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл
СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя);
КонецЦикла;
Возврат СтруктураТабличнойЧастиДокумента;
КонецФункции
Функция СформироватьЗапросПоТабличнойЧасти(Документ, ИмяТабличнойЧасти, СтруктураПолей) Экспорт
ПоляРеквизитов = "";
Для Каждого Реквизит Из СтруктураПолей Цикл
ПоляРеквизитов = ПоляРеквизитов + ", Док." + Реквизит.Значение + ?(ЗначениеНеЗаполнено(Реквизит.Ключ), "", " КАК " + СокрЛП(Реквизит.Ключ));
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Док.НомерСтроки " + ПоляРеквизитов + "
|ИЗ
| Документ." + Документ.Метаданные().Имя + "." + СокрЛП(ИмяТабличнойЧасти) + " КАК Док
|ГДЕ
| Док.Ссылка = &ДокументСсылка";
// Установить параметры запроса.
Запрос.УстановитьПараметр("ДокументСсылка", Документ.Ссылка);
Возврат Запрос.Выполнить();
КонецФункции
СозданноеСоответствие = Новый Соответствие();
ВозрастСотрудников.Вставить(Сотрудник, ВозрастСотрудника);
ВозрастСотрудников [Сотрудник] = ВозрастСотрудника;
ВозрастСотрудника = ВозрастСотрудников.Получить(Сотрудник);
ВозрастСотрудника = ВозрастСотрудников [Сотрудник];
Для Каждого Элемент из Замены Цикл
Сообщить(Элемент.Ключ + " - " + Элемент.Значение);
КонецЦикла;
Замены.Удалить(УдаляемыйТовар);
Замены. Очистить();
Значение = КурсыВалютДокумента.Получить(УправленческаяВалюта);
Если Значение = Неопределено Тогда
Сообщить("Данная валюта в соответствии отсутствует");
Иначе
Курс = Значение["Курс"];
Кратность = Значение["Кратность"];
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.Ссылка КАК Ссылка,
| ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.ВидРасчета,
| ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.ВидРасчета.Наименование,
| ОсновныеНачисленияОрганизацииБазовыеВидыРасчета.Предопределенный
|ИЗ
| ПланВидовРасчета.ОсновныеНачисленияОрганизации.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацииБазовыеВидыРасчета
|ИТОГИ ПО
| Ссылка";
Результат = Запрос.Выполнить();
ВыборкаВидовРасчета = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВидыРасчета = Новый Соответствие;
БазовыеВидаРасчета = Новый Соответствие;
СвойстваВидаРасчета = Новый Структура("Наименование, Предопределенный");
// Цикл по видам расчета, обладающим базовыми.
Пока ВыборкаВидовРасчета.Следующий() Цикл
БазовыеВидаРасчета.Очистить();
ВыборкаБазовых = ВыборкаВидовРасчета.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
// Цикл по базовым видам расчета.
Пока ВыборкаБазовых.Следующий() Цикл
// Заполненить значения структуры "СвойстваВидаРасчета".
СвойстваВидаРасчета.Наименование = ВыборкаБазовых.Наименование;
СвойстваВидаРасчета.Предопределенный = ВыборкаБазовых.Предопределенный;
// Заполненить соответствие "БазовыеВидАРасчета".
БазовыеВидаРасчета.Вставить(ВыборкаБазовых.ВидРасчета, СвойстваВидаРасчета);
КонецЦикла;
// Заполнить соответствие "ВидыРасчета".
ВидыРасчета.Вставить(ВыборкаВидовРасчета.Ссылка, БазовыеВидаРасчета);
КонецЦикла;
СозданныйСписок = Новый СписокЗначений;
СписокСотрудников.Добавить(ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото);
СписокСотрудников.Вставить(Инд, ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото);
ЭлементСписка = СписокСотрудников.НайтиПоЗначению(ИскомыйСотрудник);
Если ЭлементСписка <> Неопределено Тогда
Сообщить(СписокСотрудников.Индекс(ЭлементСписка));
КонецЕсли;
ЭлементСписка = СписокСотрудников[Инд];
ЭлементСписка = СписокСотрудников.Получить(Инд);
Сотрудник = ЭлементСписка.Значение;
Представление = ЭлементСписка.Представление;
Пометка = ЭлементСписка.Пометка;
Картинка = ЭлементСписка.Картинка;
Для Каждого ЭлементСписка Из СписокСотрудников Цикл
Сообщить(ЭлементСписка.Значение);
КонецЦикла;
СтаршийИндекс = СписокСотрудников.Количество() - 1;
Для Сч = 0 по СтаршийИндекс Цикл
Сообщить(СписокСотрудников[Сч].Значение);
КонецЦикла;
СписокСотрудников.Удалить(0);
Индекс = СписокОбъектов.Количество() - 1;
Пока Индекс >= 0 Цикл
Если ТипЗнч(СписокОбъектов[Индекс].Значение) = Тип("Число") Тогда
СписокОбъектов.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
ТаблицаЗначений = Новый ТаблицаЗначений;
// Создать нужные колонки.
ТаблицаЗначений.Колонки.Добавить("Фамилия");
ТаблицаЗначений.Колонки.Добавить("Возраст");
// Добавить новую строку и задать значения в колонках таблицы.
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Фамилия = "Иванов";
НоваяСтрока.Возраст = 23;
// Добавить новую строку и задать значения в колонках таблицы.
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока["Фамилия"] = "Иванов";
НоваяСтрока["Возраст"] = 23;
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение);
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, "Поставщик, Покупатель");
// Сформировать структуру отбора.
СтруктураПоиска = Структура("Сотрудник", ИскомоеЗначение);
// Найти строки.
МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекущаяСтрока Из ТаблицаСотрудников Цикл
Сообщить(ТекущаяСтрока.Сотрудник);
КонецЦикла;
СтаршийИндекс = ТаблицаСотрудников.Количество() - 1;
Для Сч = 0 по СтаршийИндекс Цикл
Сообщить(СписокСотрудников[Сч].Сотрудник);
КонецЦикла;
ТаблицаЗначений.Удалить(УдаляемаяСтрока);
ТаблицаЗначений.Удалить(0);
ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка);
ТаблицаЗначений.Колонки.Удалить(0);
СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1;
Индекс = ТаблицаЗначений.Количество() - 1;
Пока Индекс > = 0 Цикл
Для Сч = 0 По СтаршийИндексКолонок Цикл
Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда
ТаблицаЗначений.Удалить(Индекс);
Прервать;
КонецЕсли;
КонецЦикла;
Индекс = Индекс - 1;
КонецЦикла;
НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[ИмяКолонки] = Значение;
ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");
ТаблицаПолучатель = ТаблицаИсходная.Скопировать();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл
НоваяСтрока = ТаблицаПолучатель.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы);
КонецЦикла;
ОдноименныеКолонки = Новый Массив();
Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл
СовпадающаяКолонка = ТаблицаПолучатель.Колонки.Найти(Колонка.Имя);
Если СовпадающаяКолонка <> Неопределено Тогда
// Получить свойства колонки.
Индекс = ТаблицаПолучатель.Колонки.Индекс(СовпадающаяКолонка);
Имя = Колонка.Имя;
ТипЗначения = Колонка.ТипЗначения;
Заголовок = Колонка.Заголовок;
Ширина = Колонка.Ширина;
// Заменить колонки в таблице-получаетеле.
ТаблицаПолучатель.Колонки.Удалить(Индекс);
ТаблицаПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина);
// Добавить очередное имя совпадающих колонок в массив.
ОдноименныеКолонки.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
// Цикл перебора строк исходной таблицы.
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл
// Добавить новую строку в таблицу-получатель.
НоваяСтрока = ТаблицаПолучатель.Добавить();
// Заполнить значения в совпадающих ячейках.
Для Каждого ИмяКолонки Из ОдноименныеКолонки Цикл
НоваяСтрока[ИмяКолонки] = СтрокаИсходнойТаблицы[ИмяКолонки];
КонецЦикла;
КонецЦикла;
// Добавить колонку без ограничений по типу.
ТаблицаЗначений.Колонки.Добавить("Объект");
// Ограничения по типам данных колонки:
// Только элементы справочника "Контрагенты".
ТаблицаЗначений.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
// Подготовка и установка ограничений для данных типа Строка.
КвалификаторыСтроки = Новый КвалификаторыСтроки(20, ДопустимаяДлина.Переменная);
ДопустимыеТипы = Новый ОписаниеТипов("Строка", , КвалификаторыСтроки);
ТаблицаЗначений.Колонки.Добавить("ПримечаниеСтроковоеКороткое", ДопустимыеТипы);
// Расширение уже использованного ранее описания типов.
КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный);
КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата);
РасширенныеДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, "Число, Дата", , КвалификаторыЧисла, , КвалификаторыДаты);
ТаблицаЗначений.Колонки.Добавить("Примечание", РасширенныеДопустимыеТипы);
// Создать пустые ссылки.
ПустоеОприходование = Документы.ОприходованиеТоваров.ПустаяСсылка();
ПустойВозврат = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка();
// Выполнить запрос.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеТоваровУслуг
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 0
| &ПустойДокументОприходование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 0
| &ПустойДокументВозврат
|";
Запрос.УстановитьПараметр("ПустойДокументОприходование", ПустоеОприходование);
Запрос.УстановитьПараметр("ПустойДокументВозврат", ПустойВозврат);
// Выгрузить в таблицу значений.
ТаблицаСсылок = Запрос.Выполнить().Выгрузить();
Процедура ЗаполнениеДерева(Кнопка)
Дерево.Колонки.Очистить();
Дерево.Колонки.Добавить("ИмяКолонки");
// Создать первую строку. Правильнее сказать создать элемент
// коллекции. Он помещается в переменную "СтрокаВерхнегоУровня".
СтрокаВерхнегоУровня = Дерево.Строки.Добавить();
// В колонку "ИмяКолонки" записать значение "Старшая".
СтрокаВерхнегоУровня.ИмяКолонки = "Старшая";
// Создать строку подчиненную "Старшей".
ПодчиненнаяСтрока =СтрокаВерхнегоУровня.Строки.Добавить();
ПодчиненнаяСтрока.ИмяКолонки = "Первая подчиненная";
ПодчиненнаяВторогоУровня = ПодчиненнаяСтрока.Строки.Добавить();
ПодчиненнаяВторогоУровня.ИмяКолонки = "Первая нижняя";
ПодчиненнаяВторогоУровня = ПодчиненнаяСтрока.Строки.Добавить();
ПодчиненнаяВторогоУровня.ИмяКолонки = "Вторая нижняя";
ПодчиненнаяСтрока = СтрокаВерхнегоУровня.Строки.Добавить();
ПодчиненнаяСтрока.ИмяКолонки = "Вторая подчиненная";
// Использование метода позволит увидеть результат работы
// с деревом значений в табличном поле.
ЭлементыФормы.Дерево.СоздатьКолонки();
КонецПроцедуры
Процедура ОткрытиеВетки(Кнопка)
// Сделать текущим именно элемент коллекции "Строки".
РезультатПоиска = Дерево.Строки.Найти("Первая нижняя", "ИмяКолонки", Истина);
Если РезультатПоиска <> Неопределено Тогда
ЭлементыФормы.Дерево.ТекущаяСтрока = РезультатПоиска;
КонецЕсли;
КонецПроцедуры
НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент();
НовыйЭлемент.Наименование = "военный билет";
// Установить другие реквизиты.
НовыйЭлемент.Записать();
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
// Получить ссылку на группу, в которой будет находиться новый элемент.
Родитель = Справочники.Банки.НайтиПоКоду("000000001");
НовыйЭлемент.Наименование = "АКБ";
НовыйЭлемент.Код = "000000011";
НовыйЭлемент.Родитель = Родитель;
// Установить другие реквизиты.
НовыйЭлемент.Записать();
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
// Получить ссылку на группу, в которой должна находиться создаваемая группа.
Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Обувь", Истина);
НоваяГруппа.Наименование = "Модельная обувь";
НоваяГруппа.Родитель = Родитель;
// Установить другие реквизиты.
НоваяГруппа.Записать();
// Создать новый элемент в корне справочника.
НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент();
НовыйЭлемент.Наименование = "IT отдел";
НовыйЭлемент.Записать();
// Получить ссылку на родителя добавляемых элементов.
Родитель = НовыйЭлемент.Ссылка;
// Создать дочерний элемент.
НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Группа разработки";
НовыйЭлемент.Родитель = Родитель;
НовыйЭлемент.Записать();
РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду("00030");
Если РезультатПоиска.Пустая() Тогда
// Выполнить действия, предусмотренные в случае, когда элемент не найден.
КонецЕсли;
РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию("Кроссовки");
РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "К-120002");
// Найти ссылки на удаляемый элемент.
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент);
НайденныеСсылки = НайтиПоСсылкам(МассивСсылок);
Если НайденныеСсылки.Количество() > 0 Тогда
Сообщить("Нельзя удалять элемент, на него имеются ссылки");
Иначе
УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект();
УдаляемыйЭлемент.Удалить();
КонецЕсли;
УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
// Обращение к другим данным справочника.
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ");
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель);
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Родитель = &Родитель
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель);
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Родитель В ИЕРАРХИИ(&Родитель)
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Процедура ПереборПодчиненыхЭлементов(Контрагент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КонтактныеЛица.Ссылка
|ИЗ
| Справочник.КонтактныеЛица КАК КонтактныеЛица
|ГДЕ
| КонтактныеЛица.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Контрагент);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
Процедура ПереборПодчиненыхЭлементов(Контрагент)
// Получить выборку по указанному контрагенту.
Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент);
Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.Открыть();
Форма = Справочники.ХранилищеДополнительнойИнформации.ПолучитьФорму("ФормаСпискаФайловИИзображений");
Форма.Открыть();
Элемент = Справочники.Номенклатура.НайтиПоКоду("00030");
Форма = Элемент.ПолучитьФорму();
Форма.Открыть();
ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить();
// Заполнить реквизиты.
НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности;
ЭлементОбъект.Записать();
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006");
ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект();
ОбъектСправочника.ВидыДеятельности.Очистить();
ОбъектСправочника.Записать();
ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект();
// Создать структуру для отбора удаляемых строк.
СтруктураОтбора = Новый Структура("ВидДеятельности", ВыбранныйВидДеятельности);
// Получить массив удаляемых строк.
ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора);
// Удалить строки.
Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл
ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока);
КонецЦикла;
ОбъектСправочника.Записать();
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006");
Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл
Сообщить(ТекущаяСтрока.ВидДеятельности);
КонецЦикла;
КодГруппы = "330100";
ПоискПоПолномуКоду = Ложь; // значение по умолчанию
Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду);
Если Группа.Пустая() Тогда
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Код = КодГруппы;
Группа.Наименование = "Загруженные";
Группа.Записать();
ИначеЕсли Не Группа.ЭтоГруппа Тогда
Сообщить("Найден элемент справочника с указанным кодом!");
// Предусмотреть прерывание алгоритма.
КонецЕсли;
Спр = Справочники.Номенклатура.СоздатьЭлемент();
Спр.Наименование = "Программно созданный";
// Реквизиты заполняются в соответствии с задачей.
Спр.Родитель = Группа.Ссылка;
Спр.Записать();
Группа = Справочники.Номенклатура.Загруженные;
КодЭлемента = "330100";
ПоискПоПолномуКоду = Ложь; //Значение по умолчанию
Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду);
Если Родитель.Пустая() Тогда
Родитель = Справочники.Номенклатура.СоздатьЭлемент();
Родитель.Код = КодЭлемента;
Родитель.Наименование = "Загруженные";
Родитель.Записать();
КонецЕсли;
Спр = Справочники.Номенклатура.СоздатьЭлемент();
Спр.Наименование = "Программно созданный";
// Реквизиты заполняются в соотвествии с задачей.
Спр.Родитель = Родитель.Ссылка;
Спр.Записать();
Выборка = Справочники.Номенклатура.Выбрать( , Владелец);
Если Выборка.Следующий() = Истина Тогда
// Есть подчиненные элементы.
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЕдиницыИзмерения.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
Если НЕ Запрос.Выполнить().Пустой() Тогда
// Есть подчиненные элементы!
КонецЕсли;
Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец);
КоличествоЭлементов = 0;
Пока Выборка.Следующий() Цикл
КоличествоЭлементов = КоличествоЭлементов + 1;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
КоличествоЗаписей = Выборка.КоличествоЗаписей;
КонецЕсли;
ВЫБРАТЬ
СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов
ИЗ
(ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных
ИЗ
Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ ЕдиницыИзмерения.Владелец = &Владелец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
КОЛИЧЕСТВО(*)
ИЗ
Справочник.СерииНоменклатуры КАК СерииНоменклатуры
ГДЕ СерииНоменклатуры.Владелец = &Владелец ) КАК ВложенныйЗапрос
МассивРодителей = Новый Массив;
Родитель = СсылкаНаЭлемент.Родитель;
Пока Не Родитель.Пустая() Цикл
МассивРодителей.Добавить(Родитель);
Родитель = Родитель.Родитель;
КонецЦикла;
Для Каждого ТекущийРодитель Из МассивРодителей Цикл
// Работа с текущим родителем.
КонецЦикла;
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
Ссылка ТОЛЬКО ИЕРАРХИЯ
ТекущийЭлементНоменклатуры = ЭлементНоменклатура;
Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Родитель,
| Номенклатура.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры";
Пока Истина Цикл
Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Прервать;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл
ТекущийЭлементНоменклатуры = Выборка[НомерКолонки];
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
Иначе
Сообщить(ТекущийЭлементНоменклатуры);
КонецЕсли;
КонецЦикла;
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ВЫБРАТЬ
Контрагенты.Ссылка,
ВЫБОР
КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код
КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Родитель.Код + "/" + Контрагенты.Код
ИНАЧЕ Контрагенты.Родитель.Родитель.Код + "/" + Контрагенты.Родитель.Код + "/" + Контрагенты.Код
КОНЕЦ КАК ПолныйКод
ИЗ
Справочник.Контрагенты КАК Контрагенты
Запрос = Новый Запрос("ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа)
|ИТОГИ ПО
| Ссылка ТОЛЬКО ИЕРАРХИЯ");
Запрос.УстановитьПараметр("ЧастьНаименования", "%" + ПолеВводаПодстрока + "%");
ВЫБРАТЬ
ФизическиеЛица.Ссылка
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
(ФизическиеЛица.ИНН = "")
ВЫБРАТЬ
ФизическиеЛица.Ссылка
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
(ФизическиеЛица.СтраховойНомерПФР = "") ИЛИ (ФизическиеЛица.СтраховойНомерПФР = " - -")
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Родитель = &СтарыйРодитель";
Запрос.УстановитьПараметр("СтарыйРодитель", СтарыйРодитель);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Контрагент = Выборка.Ссылка.ПолучитьОбъект();
Контрагент.Родитель = НовыйРодитель;
Контрагент.Записать();
КонецЦикла;
// Получить форму выбора справочника как подчиненную
// форме документа
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма);
// Открыть полученную форму
ФормаВыбора.Открыть();
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
ПолученноеЗначение = ЗначениеВыбора;
// Дальнейшая обработка значения.
КонецПроцедуры
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма);
Выбрано = ФормаВыбора.ОткрытьМодально();
Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка)
// Запретить стандартную обработку.
СтандартнаяОбработка = Ложь;
// Получить форму выбора справочника как подчиненную полю ввода.
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , Элемент);
// Открыть полученную форму
ФормаВыбора.Открыть();
КонецПроцедуры
Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
// Отключить стандартную обработку (при необходимости).
СтандартнаяОбработка = Ложь;
ПолученноеЗначение = ВыбранноеЗначение;
// Дальнейшая обработка значения.
КонецПроцедуры
Процедура ЗагрузитьФотографию(Элемент)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Текст (*,*)|*.*";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите картинку";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка);
Фотография = ЭлементХранилища;
КонецЕсли;
КонецПроцедуры
ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
элХранилища = Новый ХранилищеЗначения(ВыбФайл);
Фотография = элХранилища;
НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
ФормаНовогоПКО = Документы.ПриходныйКассовыйОрдер.ПолучитьФормуНовогоДокумента();
ФормаНовогоПКО.Открыть();
ИскомыйДокумент = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, Дата(2005, 1, 1));
Если НЕ ИскомыйДокумент.Пустая() Тогда
// Выполнить действия в случае обнаружения такого документа. …
КонецЕсли;
ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка
ИЗ
Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Контрагент = &Контрагент
И
(РеализацияТоваровУслуг.Номер < 100 ИЛИ РеализацияТоваровУслуг.Дата < ДАТАВРЕМЯ(2005, 1, 1))
И
РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
Форма = ИскомыйДокумент.ПолучитьФорму();
Форма.Открыть();
ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокОбъект.Ответственный = глТекущийПользователь;
ДокОбъект.Записать();
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ОбъектДок = Док.ПолучитьОбъект();
НоваяСтрока = ОбъектДок.Товары.Добавить();
// Заполнить значения реквизитов.
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 55;
// Записать документ.
ОбъектДок.Записать();
ОбъектДокумента = Документ.ПолучитьОбъект();
ОбъектДокумента.Товары.Очистить();
Для Каждого ТекущаяСтрока Из Документ.Товары Цикл
// Действия со строкой табличной части.
КонецЦикла;
СтаршийИндекс = Документ.Товары.Количество() - 1;
Для Сч = 0 по СтаршийИндекс Цикл
// Действия со строкой табличной части.
КонецЦикла;
ТаблицаТоваровДокумента = Документ.Товары.Выгрузить();
ВсегоПоКолонкеСумма = Документ.Товары.Итог("Сумма");
НужныйДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
ВыборкаДокументов = Документы.Расходная.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата()));
Пока ВыборкаДокументов.Следующий() Цикл
// Действия с документом - элементом выборки,
// его значение содержится в переменной ВыборкаДокументов
КонецЦикла
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент = &Контрагент
| И
| (РеализацияТоваровУслуг.Номер < 100 | ИЛИ | РеализацияТоваровУслуг.Дата < ДАТАВРЕМЯ(2005, 1, 1))
| И
| РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)";
Запрос.УстановитьПараметр("Контрагент", ОтбКонтрагент);
Запрос.УстановитьПараметр("Номенклатура", ОтбНоменклатура);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// действия с документом - элементом выборки,
// его значение содержится в переменной Выборка
КонецЦикла;
ДокументыВида = Документы.ПоступлениеТоваровУслуг.Выбрать();
Пока ДокументыВида.Следующий() Цикл
ДокОбъект = ДокументыВида.ПолучитьОбъект();
ДокОбъект.УстановитьПометкуУдаления(Истина);
КонецЦикла;
ДокументКопия = ИсходныйДокумент.Скопировать();
ДокументКопия.Дата = РабочаяДата;
ДокументКопия.Записать();
ДокументКопия.Дата = ИсходныйДокумент.Дата;
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ *
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
|ГДЕ
| ОстаткиНоменклатуры.Регистратор = &Регистратор";
Запрос.УстановитьПараметр("Регистратор", ПолеВводаРегистратор);
НаборЗаписейРегистра = Движения.ОстаткиНоменклатуры;
НаборЗаписейРегистра.Прочитать();
Для Каждого Запись из НаборЗаписейРегистра Цикл
// Чтение и модификация очередного движения.
КонецЦикла;
Для Каждого НаборЗаписейРегистра из Движения Цикл
НаборЗаписейРегистра.Прочитать();
Для Каждого Запись из НаборЗаписейРегистра Цикл
// Чтение и модификация очередного движения.
КонецЦикла;
КонецЦикла;
ВЫБРАТЬ ПЕРВЫЕ 1
"Внутренние заказы" КАК Регистр
ИЗ
РегистрНакопления.ВнутренниеЗаказы КАК ВнутренниеЗаказы
ГДЕ
ВнутренниеЗаказы.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Заказы поставщикам" КАК Регистр
ИЗ
РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
ГДЕ
ЗаказыПоставщикам.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Размещение заказов покупателей" КАК Регистр
ИЗ
РегистрНакопления.РазмещениеЗаказовПокупателей КАК РазмещениеЗаказовПокупателей
ГДЕ
РазмещениеЗаказовПокупателей.Регистратор = &Регистратор
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
"Товары в резерве на складах" КАК Регистр
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
ГДЕ
ТоварыВРезервеНаСкладах.Регистратор = &Регистратор
ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура("Количество", 0);
ТабличнаяЧастьДок = ОбъектДок.Товары;
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;
ОбъектДок.Записать();
СтруктураДляПоиска = Новый Структура("Количество", 0);
МассивПустыхСтрок = Товары.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
Товары.Удалить(Строка);
КонецЦикла;
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
// Рассчитать реквизиты табличной части.
РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
КонецПроцедуры // ТоварыСтавкаНДСПриИзменении()
Для Каждого Строка из Товары Цикл
Строка.СтавкаНДС = Неопределено;
// Передать управление на процедуру, вызываемую
// из обработчика события "ПриИзменении" для поля ввода "СтавкаНДС"
ЭлементыФормы.Товары.ТекущаяСтрока = Строка;
РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
КонецЦикла;
НовыйСчет = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(НовыйСчет, ДокументЗаказа, , "Дата");
// Заполнить табличную часть Товары.
Для Каждого СтрокаТоваровЗаказа Из ДокументЗаказа.Товары Цикл
ЗаполнитьЗначенияСвойств(НовыйСчет.Товары.Добавить(), СтрокаТоваровЗаказа);
КонецЦикла;
// Заполнить табличную часть ВозвратнаяТара
Для Каждого СтрокаТарыЗаказа Из ДокументЗаказа.ВозвратнаяТара Цикл
ЗаполнитьЗначенияСвойств(НовыйСчет.ВозвратнаяТара.Добавить(), СтрокаТарыЗаказа);
КонецЦикла;
// Заполнить табличную часть Услуги
Для Каждого СтрокаУслугЗаказа Из ДокументЗаказа.Услуги Цикл
ЗаполнитьЗначенияСвойств(НовыйСчет.Услуги.Добавить(), СтрокаУслугЗаказа);
КонецЦикла;
НовыйСчет.ЗаказПокупателя = ДокументЗаказа;
Форма = НовыйСчет.ПолучитьФорму();
Форма.Открыть();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриходнаяТовары.Ссылка как Накладные
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК ПриходнаяТовары
|ГДЕ
| ПриходнаяТовары.Номенклатура = &ПустаяНоменклатура";
Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
ТаблицаНакладных = Запрос.Выполнить();
ВЫБРАТЬ
КурсыВалютСрезПоследних.Валюта КАК ВалютаУпр,
КурсыВалютСрезПоследних.Курс КАК КурсУпр
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта В
(ВЫБРАТЬ
УчетнаяПолитикаСрезПоследних.ВалютаУправленческая
ИЗ
РегистрСведений.УчетнаяПолитика.СрезПоследних(&ДатаДокумента, ) КАК УчетнаяПолитикаСрезПоследних )
) КАК КурсыВалютСрезПоследних
Процедура ОсновныеДействияФормыОК(Кнопка)
ЭтаФорма.ИспользоватьРежимПроведения = ИспользованиеРежимаПроведения.Неоперативный;
ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Закрыть();
КонецПроцедуры
Запрос.Текст = " ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ПараметрПериод,
| ДоговорКонтрагента = &Договор
| И
| Сделка =&Сделка) КАК ВзаиморасчетыСКонтрагентамиОстатки";
Запрос.УстановитьПараметр("ПараметрПериод", МоментВремени());
ВЫБРАТЬ
КОЛИЧЕСТВО(РегистрацияПростоевВОрганизации.Ссылка) КАК Случаев,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегистрацияПростоевВОрганизации.ФизЛицо) КАК Работников
ИЗ
Документ.РегистрацияПростоевВОрганизации КАК РегистрацияПростоевВОрганизации
ГДЕ
РегистрацияПростоевВОрганизации.Проведен
ТаблицаГраниц = Последовательности.ПартионныйУчет.ПолучитьГраницы("Организация");
Для Каждого СтрокаТаблицыГраниц Из ТаблицаГраниц Цикл
Организация = СтрокаТаблицыГраниц.Организация;
ДатаГП = СтрокаТаблицыГраниц.Граница.Дата;
СсылкаГП = СтрокаТаблицыГраниц.Граница.Ссылка;
КонецЦикла;
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура);
НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись. Номенклатура = ТекущаяНоменклатура;
НоваяЗапись.Свойство = ТекущееСвойство;
НоваяЗапись.Значение = ТекущееЗначение;
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СобственныеКонтрагенты.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
// Перебрать записи в цикле…
Для Каждого Запись из НаборЗаписей Цикл
РегистрКонтрагент = Запись.Контрагент;
РегистрВидСвязи = Запись.ВидСвязи;
РегистрОбъект = Запись.Объект;
КонецЦикла;
// … или выгрузить записи в таблицу значений.
ТаблицаЗаписей = НаборЗаписей.Выгрузить();
ВЫБРАТЬ
*
ИЗ
РегистрыСведений.СобственныеКонтрагенты
НаборЗаписей = РегистрыСведений.ТорговоеОборудование.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ОбъектыСтроительстваОрганизаций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта);
НаборЗаписей.Отбор.Период.Установить(ТекущаяДата);
НовЗапись = НаборЗаписей.Добавить();
НовЗапись.Валюта = ТекущаяВалюта;
НовЗапись.Период = ТекущаяДата;
НовЗапись.Курс = ТекущийКурс;
НовЗапись.Кратность = ТекущаяКратность;
НаборЗаписей.Записать(Истина);
НаборЗаписей = РегистрыСведений.Валюты.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаЗаписи);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
// Чтение и сообщение данных полей записи.
Сообщить(Строка(Запись.Период) + " " + Строка(Запись.Валюта) + " " + Строка(Запись.Курс));
// Изменение данных полей записи.
Запись.Курс = 0;
КонецЦикла;
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| *
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| (КурсыВалют.Период >= ДАТАВРЕМЯ(2005, 1, 1)
| ИЛИ
| НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""USD"")
| И
| НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""EUR""))";
ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);
НаборЗаписей.Записать();
Запрос = Новый Запрос;
МассивВалют = Новый Массив;
МассивВалют.Добавить(Валюта1);
МассивВалют.Добавить(Валюта2);
Запрос.УстановитьПараметр("МассивВалют", МассивВалют);
Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения);
Запрос.Текст = "
|ВЫБРАТЬ
| ВалютыСрезПоследних.Валюта,
| ВалютыСрезПоследних.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних";
ТаблицаКурсов = Запрос.Выполнить().Выгрузить();
Процедура ЗаменаПериода()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОтветственныеЛицаОрганизации.Период,
| ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница,
| ОтветственныеЛицаОрганизации.ОтветственноеЛицо
|ИЗ
| РегистрСведений.ОтветственныеЛицаОрганизации КАК ОтветственныеЛицаОрганизации
|ГДЕ
| ОтветственныеЛицаОрганизации.Период <= ДАТАВРЕМЯ(2005, 1, 1)
| И
| ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница.Наименование | ПОДОБНО "Групп-Трейдинг"
| И
| (ОтветственныеЛицаОрганизации.Должность.Наименование ЕСТЬ NULL
| ИЛИ
| НЕ(ОтветственныеЛицаОрганизации.Должность.Наименование | ПОДОБНО "Продавец"
| ИЛИ
| ОтветственныеЛицаОрганизации.Должность.Наименование | ПОДОБНО "Кладовщик"))";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Запись = РегистрыСведений.ОтветственныеЛицаОрганизации.СоздатьМенеджерЗаписи();
Пока Выборка.Следующий() Цикл
Запись.Период = Выборка.Период;
Запись.СтруктурнаяЕдиница = Выборка.СтруктурнаяЕдиница;
Запись.ОтветственноеЛицо = Выборка.ОтветственноеЛицо;
Запись.Прочитать();
Если Запись.Выбран() Тогда
Запись.Период = Дата(2004, 1, 1);
Запись.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| &ДатаУстановки КАК Период,
| Проекты.Ссылка КАК Проект,
| Проекты.Ответственный
|ИЗ
| Справочник.Проекты КАК Проекты
|ГДЕ
| (НЕ(Проекты.ЭтоГруппа)) И (НЕ(Проекты.Ответственный = &Ответственный))";
Запрос.УстановитьПараметр("Ответственный", Справочники.Пользователи.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаУстановки", Дата(2000,1,1));
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
НаборЗаписей = РегистрыСведений.ЗакреплениеПроектов.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаРезультат);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПоставщика = 50;
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПокупателю = 25;
НаборЗаписей.Записать(Ложь);
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
// Чтение и сообщение данных полей записи.
Сообщить(Строка(Запись.Период) + " " + Строка(Запись.ТипЦен) +" "+ Строка(Запись.Номенклатура) + " " + Строка(Запись.Цена) + " " + Строка(Запись.ПроцентСкидкиНаценки));
// Изменение данных полей записи.
Запись.ПроцентСкидкиНаценки = 0;
КонецЦикла;
НаборЗаписей.Записать();
Запрос = Новый Запрос;
Запрос.Текст = "
| ВЫБРАТЬ
| ЦеныНоменклатурыКонтрагентов.Регистратор
|ИЗ
| РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записать();
КонецЦикла;
// Задать выбираемые значения.
ВыбранныйОтветственный = Справочники.Пользователи.НайтиПоНаименованию("Иванцова");
ВыбранныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду("00027");
ВыбранныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00013");
ВыбранныйДокумент = Документы.ДокументРасчетовСКонтрагентом.НайтиПоНомеру(2, '20050101');
ВыбранныйСчет = Справочники.БанковскиеСчета.НайтиПоКоду("00001");
ВыбраннаяСтатья = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("00002");
ВыбраннаяОрганизация = Справочники.Организации.НайтиПоКоду("00001");
ВыбраннаяВалюта = Справочники.Валюты.НайтиПоКоду(810);
// Создать будущий регистратор.
ДатаЗаписи = ТекущаяДата();
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = ДатаЗаписи;
Документ.Организация = ВыбраннаяОрганизация;
Документ.Ответственный = ВыбранныйОтветственный;
Документ.Содержание = "Оплата поставщику";
Документ.Записать();
// Создать набор записей.
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Документ.Ссылка);
Движение = НаборЗаписей.Добавить();
Движение.Регистратор = Документ.Ссылка;
Движение.Период = ДатаЗаписи;
// Заполнить счет дебета.
Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
// Заполнить аналитику счета дебета.
Движение.СубконтоДт.Контрагенты = ВыбранныйКонтрагент;
Движение.СубконтоДт.Договоры = ВыбранныйДоговор;
Движение.СубконтоДт.ДокументыРасчетовСКонтрагентами = ВыбранныйДокумент;
// Заполнить счет кредита.
Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("51");
// Заполнить аналитику счета кредита.
Движение.СубконтоКт.БанковскиеСчета = ВыбранныйСчет;
Движение.СубконтоКт.СтатьиДвиженияДенежныхСредств = ВыбраннаяСтатья;
// Балансовое измерение.
Движение.Организация = ВыбраннаяОрганизация;
// Балансовый ресурс.
Движение.Сумма = 300000;
// Реквизиты.Движение.НомерЖурнала = "БК";
Движение.Содержание = "Оплата поставщику";
// Записать набор записей.
НаборЗаписей.Записать();
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.Организация,
| ХозрасчетныйОстатки.СуммаОстаток,
| ХозрасчетныйОстатки.КоличествоОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , ) КАК ХозрасчетныйОстатки";
Запрос.УстановитьПараметр("Период", КонецДня(ДатаОтчета));
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
РезультатЗапроса = Запрос.Выполнить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОбороты.СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаОборотКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
РезультатЗапроса = Запрос.Выполнить();
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Счет,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Счет),
| ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт КАК ВалютнаяСуммаОстатокДт,
| ХозрасчетныйОстатки.Счет.Порядок КАК СчетПорядок,
| ХозрасчетныйОстатки.Валюта КАК Валюта,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Валюта)
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет.Валютный И Счет.Вид = &Активный, ,) КАК ХозрасчетныйОстатки
|УПОРЯДОЧИТЬ ПО
| СчетПорядок
|ИТОГИ
| СУММА(ВалютнаяСуммаОстатокДт)
|ПО
| Валюта";
Запрос.УстановитьПараметр("Активный", ВидСчета.Активный);
Запрос.УстановитьПараметр("Дата", Дата);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.СуммаОстатокДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, ,
| Субконто1 = &Контрагент И Организация = &Организация И Субконто2 = &Договор) КАК ХозрасчетныйОстатки";
// Считаем что на счете ведется аналитика только в разрезе контрагентов
// и договоров.
Запрос.УстановитьПараметр("Период", Период1);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасчетыСПокупателями);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = РабочаяДата;
Документ.Организация = Организация;
Документ.Содержание = "Погашение дебиторской задолженности";
Проводка = Документ.Движения.Хозрасчетный.Добавить();
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
Проводка.СубконтоДт.Контрагенты = Контрагент;
Проводка.СубконтоДт.Договоры = Договор;
Проводка.Сумма = Выборка.СуммаОстатокДт;
Документ.СуммаОперации = Выборка.СуммаОстатокДт;
Форма = Документ.ПолучитьФорму();
Форма.Открыть();
КонецЕсли;
ВЫБРАТЬ ПЕРВЫЕ 1
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаН, &ДатаК, Регистратор, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт > 0
УПОРЯДОЧИТЬ ПО
ХозрасчетныйОстаткиИОбороты.Период,
Регистратор
ВЫБРАТЬ
ХозрасчетныйВидыСубконто.Ссылка КАК Счет
ИЗ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
ГДЕ
ХозрасчетныйВидыСубконто.ВидСубконто.Наименование В ("Договоры", "Контрагенты")
ВЫБРАТЬ
ХозрасчетныйВидыСубконто.Ссылка КАК Счет
ИЗ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто1
ПО
ХозрасчетныйВидыСубконто.Ссылка = ХозрасчетныйВидыСубконто1.Ссылка
ГДЕ
(ХозрасчетныйВидыСубконто.ВидСубконто.Наименование = "Контрагенты")
И
(ХозрасчетныйВидыСубконто1.ВидСубконто.Наименование = "Номенклатура")
ВидМенеджеры = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Менеджеры", Истина);
// Добавить новый вид характеристик.
Если ВидМенеджеры.Пустая() Тогда
ВидМенеджеры = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СоздатьЭлемент();
ВидМенеджеры.Наименование = "Менеджеры";
ВидМенеджеры.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Пользователи");
ВидМенеджеры.Записать();
КонецЕсли;
// Получить нужный счет.
Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
Если (Не Счет.Пустая()) И (Счет.ВидыСубконто.Найти(ВидМенеджеры) = Неопределено) Тогда
// Добавить новый вид субконто к счету.
ОбъектСчета = Счет.ПолучитьОбъект();
НовыйВидСубконто = ОбъектСчета.ВидыСубконто.Добавить();
НовыйВидСубконто.ВидСубконто = ВидМенеджеры;
НовыйВидСубконто.ТолькоОбороты = Истина;
НовыйВидСубконто.Суммовой = Истина;
ОбъектСчета.Записать();
КонецЕсли;
ВЫБРАТЬ
ХозрасчетныйОбороты.Организация КАК Организация,
ХозрасчетныйОбороты.Счет КАК Счет,
ХозрасчетныйОбороты.Валюта,
ХозрасчетныйОбороты.СуммаОборотДт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет.Валютный, , , , ) КАК ХозрасчетныйОбороты
УПОРЯДОЧИТЬ ПО
Организация,
ХозрасчетныйОбороты.Счет.Код
ВЫБРАТЬ
ХозрасчетныйОбороты.Счет,
ХозрасчетныйОбороты.СуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон , , Счет В ИЕРАРХИИ (&Счет), , , НЕ(КорСчет В ИЕРАРХИИ (&Счет)), ) КАК ХозрасчетныйОбороты
УПОРЯДОЧИТЬ ПО
ХозрасчетныйОбороты.Счет.Код
Процедура ОбработкаПроведения(Отказ, Режим)
СторнируемыеДвижения = РегистрыБухгалтерии.Хозрасчетный.ВыбратьПоРегистратору(СторнируемыйДокумент);
Пока СторнируемыеДвижения.Следующий() Цикл
Проводка = Движения.Хозрасчетный.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = СторнируемыеДвижения.СчетДт;
Проводка.СчетКт = СторнируемыеДвижения.СчетКт;
Для каждого Субконто Из СторнируемыеДвижения.СубконтоДт Цикл
Проводка.СубконтоДт[Субконто.Ключ] = Субконто.Значение;
КонецЦикла;
Для каждого Субконто Из СторнируемыеДвижения.СубконтоКт Цикл
Проводка.СубконтоКт[Субконто.Ключ] = Субконто.Значение;
КонецЦикла;
Проводка.ВалютаДт = СторнируемыеДвижения.ВалютаДт;
Проводка.ВалютаКт = СторнируемыеДвижения.ВалютаКт;
Проводка.ВалютнаяСуммаДт = - СторнируемыеДвижения.ВалютнаяСуммаДт;
Проводка.ВалютнаяСуммаКт = - СторнируемыеДвижения.ВалютнаяСуммаКт;
Проводка.КоличествоДт = - СторнируемыеДвижения.КоличествоДт;
Проводка.КоличествоКт = - СторнируемыеДвижения.КоличествоКт;
Проводка.НомерЖурнала = СторнируемыеДвижения.НомерЖурнала;
Проводка.Организация = СторнируемыеДвижения.Организация;
Проводка.Содержание = СторнируемыеДвижения.Содержание;
Проводка.Сумма = - СторнируемыеДвижения.Сумма;
КонецЦикла;
Движения.Хозрасчетный.Записать();
КонецПроцедуры
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| БУОсновныеНачисления.Результат
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
| БУОсновныеНачисления.ПериодРегистрации = &Период
| И
| БУОсновныеНачисления.ФизЛицо = &ФизЛицо
| И
| БУОсновныеНачисления.ВидРасчета = &ВидРасчета";
Запрос.УстановитьПараметр("Период", НачалоМесяца(Период1));
Запрос.УстановитьПараметр("ВидРасчета", ВидРасчета);
Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
"ВЫБРАТЬ
| БУОсновныеНачисления.Организация КАК Организация,
| ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.Организация),
| БУОсновныеНачисления.ВидРасчета,
| ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.ВидРасчета),
| БУОсновныеНачисления.Результат КАК Результат,
| ""Основные"" КАК ВариантНачислений
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
| БУОсновныеНачисления.ПериодРегистрации = &НужныйПериод И БУОсновныеНачисления.ФизЛицо = &ФизЛицо
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| БУДополнительныеНачисления.Организация,
| ПРЕДСТАВЛЕНИЕ(БУДополнительныеНачисления.Организация),
| БУДополнительныеНачисления.ВидРасчета,
| ПРЕДСТАВЛЕНИЕ(БУДополнительныеНачисления.ВидРасчета),
| БУДополнительныеНачисления.Результат,
| ""Дополнительные""
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления
|ГДЕ
| БУДополнительныеНачисления.ПериодРегистрации = &НужныйПериод И БУДополнительныеНачисления.ФизЛицо = &ФизЛицо
|ИТОГИ СУММА(Результат)
|ПО ОБЩИЕ, Организация, ВариантНачислений";
ВЫБРАТЬ
ПерерасчетОсновных.ФизЛицо КАК Работник,
ПерерасчетОсновных.ВидРасчета,
ПерерасчетОсновных.ОбъектПерерасчета КАК Документ
ИЗ
РегистрРасчета.ОсновныеНачисленияРаботниковОрганизации.ПерерасчетОсновныхНачислений КАК ПерерасчетОсновных
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПерерасчетДополнительных.ФизЛицо,
ПерерасчетДополнительных.ВидРасчета,
ПерерасчетДополнительных.ОбъектПерерасчета
ИЗ
РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизации.ПерерасчетДополнительныхНачислений КАК ПерерасчетДополнительных
ВЫБРАТЬ РАЗРЕШЕННЫЕ
УправленческиеНачисления.НомерСтроки КАК НомерСтроки
ИЗ
РегистрРасчета.УправленческиеНачисления КАК УправленческиеНачисления
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрРасчета.УправленческиеНачисления.ФактическийПериодДействия(Регистратор = &парамСсылка) КАК УправленческиеНачисленияФактическийПериодДействия
ПО
УправленческиеНачисления.НомерСтроки = УправленческиеНачисленияФактическийПериодДействия.НомерСтроки
И
УправленческиеНачисления.Регистратор = УправленческиеНачисленияФактическийПериодДействия.Регистратор
ГДЕ
УправленческиеНачисления.Регистратор = &парамСсылка
И
((УправленческиеНачисленияФактическийПериодДействия.Регистратор) ЕСТЬ NULL )
"ВЫБРАТЬ
| ВложенныйЗапрос.ФизЛицо,
| ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ФизЛицо),
| ВложенныйЗапрос.ФизЛицоПредставление КАК ФизЛицоПредставление1,
| ВложенныйЗапрос.ВидРасчета,
| ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ВидРасчета),
| ВложенныйЗапрос.ВидРасчетаПредставление КАК ВидРасчетаПредставление1,
| ВложенныйЗапрос.Результат КАК Результат,
| ВложенныйЗапрос.ТипРасчета КАК ТипРасчета
|ИЗ
| (ВЫБРАТЬ
| БУОсновныеНачисления.ФизЛицо КАК ФизЛицо,
| ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.ФизЛицо) КАК ФизЛицоПредставление,
| БУОсновныеНачисления.ВидРасчета КАК ВидРасчета,
| ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.ВидРасчета) КАК ВидРасчетаПредставление,
| БУОсновныеНачисления.Результат КАК Результат,
| ""Начисления"" КАК ТипРасчета
| ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
| ГДЕ
| БУОсновныеНачисления.ФизЛицо = &ФизЛицо И БУОсновныеНачисления.ПериодРегистрации = &НужныйПериод
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| УдержанияРаботниковОрганизаций.ФизЛицо,
| ПРЕДСТАВЛЕНИЕ(УдержанияРаботниковОрганизаций.ФизЛицо),
| УдержанияРаботниковОрганизаций.ВидРасчета,
| ПРЕДСТАВЛЕНИЕ(УдержанияРаботниковОрганизаций.ВидРасчета),
| -УдержанияРаботниковОрганизаций.Результат,
| ""Удержания""
| ИЗ
| РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
| ГДЕ
| УдержанияРаботниковОрганизаций.ФизЛицо = &ФизЛицо И УдержанияРаботниковОрганизаций.ПериодРегистрации = &НужныйПериод) КАК ВложенныйЗапрос
|ИТОГИ СУММА(Результат)
|ПО ОБЩИЕ, ТипРасчета";
ТаблицаСторноЗаписей = Движения.ОсновныеНачисленияРаботниковОрганизации.ПолучитьДополнение();
Для каждого СтрокаСторно Из ТаблицаСторноЗаписей Цикл
// Добавить сторно-записи в набор записей регистра.
// Новая запись движений.
Движение = Движения.ОсновныеНачисленияРаботниковОрганизации.Добавить();
// Заполнить свойства.
Движение.ПериодРегистрации = Строка.ПериодРегистрацииСторно;
Движение.ПериодДействияНачало = Строка.ПериодДействияНачалоСторно;
Движение.ПериодДействияКонец = Строка.ПериодДействияКонецСторно;
Движение.БазовыйПериодНачало = Строка.БазовыйПериодНачало;
Движение.БазовыйПериодКонец = Строка.БазовыйПериодКонец;
Движение.ВидРасчета = Строка.ВидРасчета;
Движение.Сторно = Истина;
// Заполнить измерения.
Движение.ФизЛицо = Строка.ФизЛицо;
Движение.Приказ = Строка.Приказ;
Движение.Организация = Строка.Организация;
// Ресурсы не заполнять, потому что здесь не происходит расчет,
// только подготовка новой записи
// Заполнить реквизиты.
Движение.ГрафикРаботы = Строка.ГрафикРаботы;
Движение.Размер = Строка.Размер;
Движение.ВидУчетаВремени = Строка.ВидУчетаВремени;
Движение.ПодразделениеОрганизации = Строка.ПодразделениеОрганизации;
Движение.ПериодРасчетаСреднегоЗаработкаНачало = Строка.ПериодРасчетаСреднегоЗаработкаНачало;
Движение.ПериодРасчетаСреднегоЗаработкаОкончание = Строка.ПериодРасчетаСреднегоЗаработкаОкончание;
КонецЦикла;
Движения.ОсновныеНачисленияРаботниковОрганизации.Записать();
Процедура ПередВыполнением(Отказ)
Если Исполнитель.Пустая() Тогда
Исполнитель = ПараметрыСеанса.ТекущийИсполнитель;
КонецЕсли;
ДатаВыполнения=ТекущаяДата();
КонецПроцедуры
ПолучитьФорму("Маршрут").Открыть();
СтандартнаяОбработка = Ложь;
Если ТочкиМаршрута.Количество() = 0 Тогда
Сообщить("Не определен маршрут!!!");
Отказ = Истина;
КонецЕсли;
Результат = ПолучитьТочкуМаршрута().Пустая();
Функция ПолучитьТочкуМаршрута()
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ ПЕРВЫЕ 1
| НаМаршрутеТочкиМаршрута.НомерСтроки КАК НомерСтроки,
| НаМаршрутеТочкиМаршрута.Склад
|ИЗ
| БизнесПроцесс.НаМаршруте.ТочкиМаршрута КАК НаМаршрутеТочкиМаршрута
|ГДЕ
| (НаМаршрутеТочкиМаршрута.Склад НЕ В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЭтапПути.Склад
| ИЗ
| Задача.ЭтапПути КАК ЭтапПути
| ГДЕ
| ЭтапПути.БизнесПроцесс = &БизнесПроцесс ))
| И
| (Ссылка = &БизнесПроцесс)
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат (Выборка.Склад);
Иначе
Возврат(Справочники.Склады.ПустаяСсылка());
КонецЕсли;
КонецФункции
ФормируемыеЗадачи[0].Склад = ПолучитьТочкуМаршрута();
ПолучитьФорму("ПутевойЛист").Открыть();
СтандартнаяОбработка = Ложь;
Если ПоказанияСпидометраКонечные = 0 ИЛИ Ссылка.РасходТоплива = 0 Тогда
Сообщить("Не введены данные по путевому листу!");
Отказ = Истина;
КонецЕсли;
Для Каждого Рецензент Из НаСогласование Цикл
НоваяЗадача = Задачи.ЭтапПути.СоздатьЗадачу();
НоваяЗадача.БизнесПроцесс = Ссылка;
НоваяЗадача.Пользователь = Рецензент.Рецензент;
НоваяЗадача.Наименование = "Согласование со специалистом";
НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.НаПараллельноеСогласование.ТочкиМаршрута.Согласование;
НоваяЗадача.Дата = ТекущаяДата();
НоваяЗадача.Записать();
ФормируемыеЗадачи.Добавить(НоваяЗадача);
КонецЦикла;
СтандартнаяОбработка = Ложь;
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.Печать(Ссылка);
МассивСсылок = КритерииОтбора.КомпетенцияМенеджераПродаж.Найти(Менеджер);
Для Каждого Ссылка из МассивСсылок Цикл
Сообщить(Ссылка);
КонецЦикла;
ВЫБРАТЬ
КомпетенцияМенеджераПродаж.Ссылка
ИЗ
КритерийОтбора.КомпетенцияМенеджераПродаж(&Менеджер) КАК КомпетенцияМенеджераПродаж
ФормаДокумента = СсылкаНаДокумент.ПолучитьФорму();
ФормаДокумента.Открыть();
Обработка = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Обработка.Открыть();
Обработка = ВнешниеОбработки.ПолучитьФорму("C:\Внешние\СпецОтчет.epf", ИмяФормы, , Ключ);
Обработка.Открыть();
Форма = Отчеты.ОтчетДиаграмма.ПолучитьФорму("ФормаОсновная", ЭтаФорма);
Форма.ПоложениеОкна = ВариантПоложенияОкна.НеПерекрыватьВладельца;
Форма.Открыть();
СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
ИзмененятьСпособОтображенияОкна = ИзменениеСпособаОтображенияОкна.Запретить;
ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка();
ФормаСписка.ПараметрТекущаяСтрока = Ссылка;
ФормаСписка.Открыть();
ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка( , , Новый УникальныйИдентификатор());
Если Не Контрагент.Пустая() Тогда
ФормаПодчиненныхДоговоров = Справочники.ДоговорыКонтрагентов.ПолучитьФормуСписка();
ФормаПодчиненныхДоговоров.ПараметрОтборПоВладельцу = Контрагент;
ФормаПодчиненныхДоговоров.Открыть();
КонецЕсли;
// Значение, сохраненное в реквизите справочника, имеющем тип
// ХранилищеЗначения, можно только получить.
СохраненнаяКартинка = Фотография.Получить();
Если СохраненнаяКартинка <> Неопределено Тогда
// Если в хранилище было что-нибудь заранее записано…
ЭлементыФормы.Фото.Картинка = СохраненнаяКартинка;
КонецЕсли;
ЖурналДокументовСписок.Отбор.ВидДокумента.Установить(Метаданные.Документы.ПриемНаРаботу);
Если ЖурналДокументовСписок.Отбор.Дата.Использование Тогда
Сообщить(ЖурналДокументовСписок.Отбор.Дата);
Иначе
Сообщить("Без ограничения по датам");
КонецЕсли;
Процедура ПриОткрытии()
СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
СправочникСписок.Отбор.Ссылка.Значение = СписокКонтрагентов;
СправочникСписок.Отбор.Ссылка.Использование = Истина;
КонецПроцедуры
Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка)
Если Элемент.Значение.Пустая() Тогда
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , Элемент);
ФормаВыбора.ВыборПокупателя = Истина;
ФормаВыбора.Открыть();
КонецЕсли;
КонецПроцедуры
Если ВыборПокупателя Тогда
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
ЭлементыФормы.СправочникСписок.ТекущийРодитель = Константы.ГруппаПокупатели.Получить();
КонецЕсли;
Если ВыборПокупателя Тогда
ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.Покупатели;
КонецЕсли;
ЭлементыФормы.ТабличноеПоле.ИзменятьПозициюКолонок = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Картинка.ИзменятьПозицию = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Код.ИзменятьПозицию = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Наименование.ИзменятьПозицию = Ложь;
ЭлементыФормы.ТабличноеПоле.ИзменятьНастройкуКолонок = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Картинка.ИзменятьНастройку = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Код.ИзменятьНастройку = Ложь;
ЭлементыФормы.ТабличноеПоле.Колонки.Наименование.ИзменятьНастройку = Ложь;
ЭлементыФормы.НадписьОтбор.Заголовок = СписокДокументов.Отбор;
УстановленныйОтбор = СписокДокументов.Отбор;
Сообщить("Элементы отбора:");
Для Каждого ЭлементОтбора из УстановленныйОтбор Цикл
Сообщить(Строка(ЭлементОтбора) + " использование = " + ЭлементОтбора.Использование);
КонецЦикла;
ЭлементыФормы.СправочникСписок.ТекущаяСтрока = Справочники.Контрагенты.НайтиПоНаименованию("ПОСТАВЩИКИ", Истина);
СправочникСписок.Отбор.СтавкаНДС.Установить(Перечисления.СтавкиНДС.НДС18);
СправочникСписок.Отбор.СтавкаНДС.Значение = Перечисления.СтавкиНДС.НДС18;
СправочникСписок.Отбор.СтавкаНДС.ВидСравнения = ВидСравнения.Равно;
СправочникСписок.Отбор.СтавкаНДС.Использование = Истина;
ЭлементыФормы.ПолеСписка.ПроверкаОтображенияНовойСтроки = ВариантПроверкиОтображенияНовойСтроки.НеПроверять;
Процедура ТабличноеПолеЗаказовЗаказПриИзменении(Элемент)
// Получить текущую строку табличного поля.
СтрокаТаблицы = ЭлементыФормы.ТабличноеПолеЗаказов.ТекущаяСтрока;
// Ввести значения в ячейки строки.
СтрокаТаблицы.Контрагент = СтрокаТаблицы.Заказ.Контрагент;
СтрокаТаблицы.ДатаОтгрузки = СтрокаТаблицы.Заказ.ДатаОтгрузки;
КонецПроцедуры
Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
ЗначениеЯчейкиОстаток = ОформлениеСтроки.Ячейки.Остаток.Значение;
Если ЗначениеЯчейкиОстаток <> Неопределено Тогда
Если ЗначениеЯчейкиОстаток < 10 Тогда
ОформлениеСтроки.Ячейки.Остаток.ЦветФона = WebЦвета.Красный;
ИначеЕсли ЗначениеЯчейкиОстаток > 100 Тогда
ОформлениеСтроки.Ячейки.Остаток.ЦветФона = WebЦвета.Желтый;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Если ТаблицаКонтрагентов.Колонки.Найти("ОсновнойДоговор") = Неопределено Тогда
МассивТипов = Новый Массив();
МассивТипов.Добавить(Тип("СправочникСсылка.ДоговорыКонтрагентов"));
ОписаниеНужныхТипов = Новый ОписаниеТипов(МассивТипов);
ТаблицаКонтрагентов.Колонки.Добавить("ОсновнойДоговор", ОписаниеНужныхТипов);
КонецЕсли;
Для Каждого СтрокаТаблицы из ТаблицаКонтрагентов Цикл
СтрокаТаблицы["ОсновнойДоговор"] = СтрокаТаблицы["Контрагент"]["ОсновнойДоговорКонтрагента"];
КонецЦикла;
ЭлементыФормы.ВыбранныеКонтрагенты.СоздатьКолонки();
ЭлементыФормы.ВыбранныеКонтрагенты.Колонки.ОсновнойДоговор.ЭлементУправления.КнопкаОткрытия = Истина;
Процедура ПриОткрытии()
СписокВидовДокументов = Новый СписокЗначений;
Для Каждого ДокументКонфигурации из Метаданные.Документы Цикл
СписокВидовДокументов.Добавить(ДокументКонфигурации.Имя);
КонецЦикла;
ЭлементыФормы.ПодборДанных.Колонки.ВидДокумента.ЭлементУправления.СписокВыбора = СписокВидовДокументов;
КонецПроцедуры
ЭлементыФормы.ПодборДанных.Колонки.ВидДокумента.ЭлементУправления.КнопкаСпискаВыбора = Истина;
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ОсновнойПоставщик.Доступность = Истина;
ЭлементыФормы.СправочникСписок.НастройкаПорядка.ОсновнойПоставщик.Доступность = Истина;
Процедура НоменклатураНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
// Получить значение, переданное системой.
Значение = ПараметрыПеретаскивания.Значение;
// В любом случае значением будет массив.
МассивЗначений = Новый Массив;
// Если перетаскивается группа, то в массив записываем входящие в нее элементы.
Если Значение.ЭтоГруппа Тогда
Выборка = Справочники.Номенклатура.Выбрать(Значение);
Пока Выборка.Следующий() Цикл
Если Не Выборка.ЭтоГруппа Тогда
МассивЗначений.Добавить(Выборка.Ссылка);
КонецЕсли;
КонецЦикла;
Иначе
МассивЗначений.Добавить(Значение);
КонецЕсли;
// Заполненный массив записываем в параметры.
ПараметрыПеретаскивания.Значение = МассивЗначений;
КонецПроцедуры
Процедура ТоварыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
ПолученныйМассив = ПараметрыПеретаскивания.Значение;
Если ТипЗнч(ПолученныйМассив) = Тип("Массив") Тогда
Для Каждого Значение Из ПолученныйМассив Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
НоваяСтрока.Номенклатура = Значение;
НоваяСтрока.Количество = 1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура СписокНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");
МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса
Соответствие = Новый Соответствие; // для заполнения остатков в строках табличного поля
Для Каждого Строка из ОформленияСтрок Цикл
МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка);
Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
КонецЦикла;
Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры);
Выборка = Запрос.Выполнить().Выбрать();
// Вывести остаток в строку, найденную в соответствии по номенклатуре
// из запроса.
Пока Выборка.Следующий() Цикл
Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток;
КонецЦикла;
КонецПроцедуры
ЭлементыФормы.ОсновнаяПанель.Страницы.СчетаУчета.КартинкаЗаголовка = БиблиотекаКартинок.ДебетКредит;
Процедура ПриОткрытии()
Если ЭтоНовый() = Ложь Тогда
ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы.СчетаИДоговоры;
КонецЕсли;
КонецПроцедуры
Док = Метаданные.Документы;
СписокДокументов = Новый СписокЗначений();
СписокДокументов.Добавить(Док.ПлатежноеПоручениеИсходящее, , Ложь);
СписокДокументов.Добавить(Док.ПлатежноеПоручениеВходящее, , Ложь);
СписокДокументов.Добавить(Док.АккредитивПереданный, , Ложь);
СписокДокументов.Добавить(Док.АккредитивПолученный, , Ложь);
СписокДокументов.Добавить(Док.ПлатежноеТребованиеВыставленное, , Ложь);
СписокДокументов.Добавить(Док.ПлатежноеТребованиеПолученное, , Ложь);
СписокДокументов.Добавить(Док.ИнкассовоеПоручениеПереданное, , Ложь);
СписокДокументов.Добавить(Док.ИнкассовоеПоручениеПолученное, , Ложь);
СписокДокументов.Добавить(Док.ПлатежныйОрдерСписаниеДенежныхСредств, , Ложь);
СписокДокументов.Добавить(Док.ПлатежныйОрдерПоступлениеДенежныхСредств, , Ложь);
Если СписокДокументов.ОтметитьЭлементы("Укажите, какие списки документов открыть") Тогда
Для Каждого НазваниеДокумента из СписокДокументов Цикл
Если НазваниеДокумента.Пометка Тогда
ФормаСписка = Документы[НазваниеДокумента.Значение.Имя].ПолучитьФормуСписка();
ФормаСписка.Открыть();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Процедура ПерсонаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Значение = Новый СписокЗначений();
Значение.Добавить("Уважаемый " + Текст);
Значение.Добавить("Уважаемая " + Текст);
Значение.Добавить("Уважаемое " + Текст);
Значение.Добавить("Уважаемые " + Текст);
Значение.Добавить(Текст);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
КнопкиКоманднойПанели = ЭлементыФормы.КоманднаяПанельФормы.Кнопки;
// Проверить, нет ли уже на командной панели кнопки "Сформировать".
// Если есть - удалить.
Индекс = КнопкиКоманднойПанели.Индекс(КнопкиКоманднойПанели.Найти("Сформировать"));
Если Индекс = -1 Тогда
Индекс = 0;
Иначе
КнопкиКоманднойПанели.Удалить(Индекс);
КонецЕсли;
// Создать подменю "Сформировать".
ПодменюСформировать = КнопкиКоманднойПанели.Вставить(Индекс, "Сформировать", ТипКнопкиКоманднойПанели.Подменю, "Сформировать");
// Добавить картинку.
ПодменюСформировать.Картинка = БиблиотекаКартинок.Сформировать;
ПодменюСформировать.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;
// Опросить перечисление о возможных вариантах периодичности.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Перечисление.Периодичность");
Выборка = Запрос.Выполнить().Выбрать();
//Добавить кнопки к подменю.
Пока Выборка.Следующий() Цикл
Период = Выборка.Ссылка;
ПодменюСформировать.Кнопки.Добавить("кн" + Период, ТипКнопкиКоманднойПанели.Действие, "Сформировать за " + Период, Новый Действие("КнопкаСформироватьНажатие"));
КонецЦикла;
Процедура КнопкаСформироватьНажатие(Элемент)
НазваниеПериодичности = СтрЗаменить(Элемент.Имя, "кн", "");
КонецПроцедуры
СозданнаяКнопка.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.L, Истина, Истина,);
Процедура ОбрабатываемыйДокументПриИзменении(Элемент)
СписокВыбора = ЭлементыФормы.ОбрабатываемаяТабличнаяЧасть.СписокВыбора;
СписокВыбора.Очистить();
Если Элемент.Значение <> Неопределено И Не(Элемент.Значение.Пустая()) Тогда
ТабличныеЧасти = Элемент.Значение.Метаданные().ТабличныеЧасти;
Для Каждого ТабличнаяЧасть из ТабличныеЧасти Цикл
СписокВыбора.Добавить(ТабличнаяЧасть);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ОбрабатываемыйДокументОчистка(Элемент, СтандартнаяОбработка)
ОбрабатываемаяТабличнаяЧасть = "";
КонецПроцедуры
КоллекцияДат = ЭлементыФормы.ПолеКалендаря.ВыделенныеДаты;
Для каждого ДатаКалендаря из КоллекцияДат Цикл
Сообщить(ДатаКалендаря);
КонецЦикла;
ЭлементыФормы.ПолеКалендаря.РежимВыделения = РежимВыделенияДаты.Множественный;
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Индикатор = ЭлементыФормы.ИндикаторПеребора;
Индикатор.МаксимальноеЗначение = Выборка.Количество();
Индикатор.Значение = 0;
Индикатор.ОтображатьПроценты = Истина;
Индикатор.СтильОтображения = РежимСглаживанияИндикатора.Прерывистый;
Индикатор.Ориентация = Ориентация.Вертикально;
Индикатор.Шаг = 0.1;
Пока Выборка.Следующий() Цикл
Индикатор.Значение = Индикатор.Значение + 1;
КонецЦикла;
Процедура КнопкаВыполнитьНажатие(Элемент)
ЭлементыФормы.ТП.Данные = "СписокКонтрагентов";
ЭлементыФормы.ТП.СоздатьКолонки();
КонецПроцедуры
Процедура Номенклатура(Кнопка)
ЭлементыФормы.ТП.Данные = "СписокНоменклатуры";
ЭлементыФормы.ТП.СоздатьКолонки();
КонецПроцедуры
ЭлементыФормы.ПолеВвода1.Формат = "ДП='01.01.0001'";
ЭлементыФормы.ПолеВвода1.Формат = "ДП='00:00:00'";
ЭлементыФормы.ПолеВвода1.Формат = "ДП='01.01.0001 00:00:00'";
ЭлементыФормы.ОсновноеИзображение.ТекстНевыбраннойКартинки = "фотография номенклатуры отсутствует";
Диалог = Новый ДиалогВыбораЦвета;
Если Диалог.Выбрать() Тогда
ВыбранныйЦвет = Диалог.Цвет;
КонецЕсли;
Диалог = Новый ДиалогВыбораШрифта;
Если Диалог.Выбрать() Тогда
ВыбранныйШрифт = Диалог.Шрифт;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Значение,
| Номенклатура.Представление КАК Представление,
| ИСТИНА КАК Пометка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ОсновнойПоставщик = &ОсновнойПоставщик");
Запрос.УстановитьПараметр("ОсновнойПоставщик", ПолеПоставщик);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ПолеСписка.Добавить(), Выборка);
КонецЦикла;
Схема = Новый ГрафическаяСхема();
Схема.Прочитать("D:/MyScheme.grs");
ЭлементыФормы.СтруктурнаяСхема.УстановитьСхему(Схема);
ОсновнойИнтерфейс = ПользователиИнформационнойБазы.ТекущийПользователь().ОсновнойИнтерфейс.Имя;
Если ОсновнойИнтерфейс = "ИнтерфейсКассира" Тогда
ГлавныйСтиль = БиблиотекаСтилей.СтильКассира;
ИначеЕсли ОсновнойИнтерфейс = "Планирование" Тогда
ГлавныйСтиль = БиблиотекаСтилей.СтильПланирования;
Иначе
ГлавныйСтиль = БиблиотекаСтилей.Основной;
КонецЕсли;
СтрокаИменИнтерфейсов = "";
Для Каждого ИмяИнтерфейса из СписокИнтерфесов Цикл
Если ИмяИнтерфейса.Пометка Тогда
СтрокаИменИнтерфейсов = СтрокаИменИнтерфейсов + ИмяИнтерфейса + ",";
КонецЕсли;
КонецЦикла;
ГлавныйИнтерфейс.ПереключитьИнтерфейс(СтрокаИменИнтерфейсов);
Процедура ПриНачалеРаботыСистемы()
ПодключитьОбработчикОжидания("ПроверкаОпроса", 60);
КонецПроцедуры
Процедура ОтказОтОпроса() Экспорт
ОтключитьОбработчикОжидания("ПроверкаОпроса");
КонецПроцедуры
ОтказОтОпроса();
ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ИТОГИ ПО
Номенклатура ТОЛЬКО ИЕРАРХИЯ
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.Номенклатура
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.Номенклатура
ИМЕЮЩИЕ
СУММА(РеализацияТоваровУслугТовары.Количество) > 10
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты
ВЫБРАТЬ
ПродажиОбороты.Подразделение КАК Подразделение,
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
ИЗ
РегистрНакопления.Продажи.Обороты((&ДатаНач, &ДатаКон) КАК ПродажиОбороты
ИТОГИ СУММА(СтоимостьОборот) ПО
Подразделение
ВЫБРАТЬ
ПродажиОбороты.Подразделение КАК Подразделение,
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , Подразделение = &Подразделение) КАК ПродажиОбороты
ГДЕ
ПродажиОбороты.КоличествоОборот > &Порог
ВЫБРАТЬ
ПродажиОбороты.ДоговорКонтрагента.Владелец,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты
ВЫБРАТЬ
ПродажиОбороты.ДоговорКонтрагента.Владелец,
СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот
ИЗ
РегистрНакопления.Продажи.Обороты((&ДатаНач, &ДатаКон) КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.ДоговорКонтрагента.Владелец
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугВозвратнаяТара.Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслугВозвратнаяТара
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугУслуги.Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура,
ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями,
ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам
ИЗ
РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки
ПО
ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура,
ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями,
ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам
ИЗ
РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки
ПО
ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
ВЫБРАТЬ
ВЫБОР
КОГДА (ЗаказыПокупателейОстатки.Номенклатура) ЕСТЬ NULL ТОГДА ЗаказыПоставщикамОстатки.Номенклатура
ИНАЧЕ ЗаказыПокупателейОстатки.Номенклатура
КОНЕЦ КАК Номенклатура,
ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями,
ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам
ИЗ
РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки
ПОЛНОЕ СОЕДИНЕНИЕ
РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки
ПО
ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
СУММА(ВложенныйЗапрос.ЗаказаноПокупателями) КАК ЗаказаноПокупателями,
СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам
ИЗ
(ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура,
ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями,
0 КАК ЗаказаноПоставщикам
ИЗ
РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч, ) КАК ЗаказыПокупателейОстатки
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ЗаказыПоставщикамОстатки.Номенклатура,
0,
ЗаказыПоставщикамОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч, ) КАК ЗаказыПоставщикамОстатки
) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Номенклатура
ВЫБРАТЬ
ЕСТЬNULL(Справочник.Номенклатура.Артикул, "---") КАК Артикул,
Справочник.Номенклатура.Представление КАК Номенклатура
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.СуммаОборот КАК СуммаПродаж,
ПродажиОбороты.СуммаОборот / СовокупныеОбороты.СуммаОборот * 100 КАК ПроцентнаяДоля
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК СовокупныеОбороты
ПО
ИСТИНА
УПОРЯДОЧИТЬ ПО
ПроцентнаяДоля УБЫВ
ВЫБРАТЬ
ТоварыГруппы.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
(ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель В ИЕРАРХИИ(&Группа) И (Номенклатура.ЭтоГруппа = ЛОЖЬ)
) КАК ТоварыГруппы
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментПолучения, Номенклатура В ИЕРАРХИИ (&Группа)) КАК ТоварыНаСкладахОстатки
ПО
ТоварыГруппы.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
ИТОГИ СУММА(КоличествоОстаток) ПО
Номенклатура ТОЛЬКО ИЕРАРХИЯ
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
МАКСИМУМ(ТоварыНаСкладах.Регистратор) КАК Регистратор
ИЗ
(ВЫБРАТЬ
ТоварыНаСкладах.Номенклатура КАК Номенклатура,
МАКСИМУМ(ТоварыНаСкладах.Период) КАК Период
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
ТоварыНаСкладах.Период <= &ДатаОтчета И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
СГРУППИРОВАТЬ ПО
ТоварыНаСкладах.Номенклатура
) КАК ВложенныйЗапрос
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ПО
ВложенныйЗапрос.Номенклатура = ТоварыНаСкладах.Номенклатура И ВложенныйЗапрос.Период = ТоварыНаСкладах.Период
ГДЕ
(ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Номенклатура
ВЫБРАТЬ
Контрагенты.ОсновнойМенеджерПокупателя,
КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК КоличествоЗакрепленных
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
(Контрагенты.ЭтоГруппа = ЛОЖЬ) И (Контрагенты.ОсновнойМенеджерПокупателя <> &НеЗаполненМенеджер)
СГРУППИРОВАТЬ ПО
Контрагенты.ОсновнойМенеджерПокупателя
УПОРЯДОЧИТЬ ПО
КоличествоЗакрепленных УБЫВ
Справочники.Пользователи.ПустаяСсылка()
ВЫБРАТЬ
Контрагенты.ОсновнойМенеджерПокупателя.Представление КАК ОсновнойМенеджерПокупателя,
Контрагенты.Представление,
1 КАК КоличествоЗакрепленных
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
(Контрагенты.ЭтоГруппа = ЛОЖЬ)
УПОРЯДОЧИТЬ ПО
КоличествоЗакрепленных УБЫВ
ИТОГИ КОЛИЧЕСТВО(КоличествоЗакрепленных) ПО
ОсновнойМенеджерПокупателя
Результат = Запрос.Выполнить();
КолЗаписей = Результат.Выбрать().Количество();
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.Размещение КАК Склад,
ВложенныйЗапрос.КоличествоСписываемое,
ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
(ВЫБРАТЬ
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВнутреннийЗаказТовары.Размещение КАК Размещение,
СУММА(ВнутреннийЗаказТовары.Количество *ВнутреннийЗаказТовары.Коэффициент) КАК КоличествоСписываемое
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ГДЕ
ВнутреннийЗаказТовары.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
ВнутреннийЗаказТовары.Номенклатура,
ВнутреннийЗаказТовары.Размещение
) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремениДокумента,
Склад В (ВЫБРАТЬ РАЗЛИЧНЫЕ
ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады)
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора
ГДЕ
ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка
И
НЕ ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады) ЕСТЬ NULL )
И
Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ
ВнутреннийЗаказТоварыДляОтбора.Номенклатура
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора
ГДЕ
ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка)) КАК ТоварыНаСкладахОстатки
ПО
ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ВложенныйЗапрос.Размещение = ТоварыНаСкладахОстатки.Склад
Запрос.Текст = "ВЫБРАТЬ
| ВоинскийУчетСрезПоследних.Физлицо
|ИЗ
| РегистрСведений.ВоинскийУчет.СрезПоследних(&ДатаОтчета) КАК ВоинскийУчетСрезПоследних
|ГДЕ
| ВоинскийУчетСрезПоследних.ОтношениеКВоинскомуУчету = &Состоит"
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
Запрос.УстановитьПараметр("Состоит", Перечисления.ОтношениеКВоинскомуУчету.Состоит);
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
&ПерваяДата Как Дата
ИЗ
РегистрСведений.Валюты.СрезПоследних(&ПерваяДата, ) КАК ВалютыСрезПоследних
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВалютыСрезПоследних.Валюта,
ВалютыСрезПоследних.Курс,
&ВтораяДата
ИЗ
РегистрСведений.Валюты.СрезПоследних(&ВтораяДата, ) КАК ВалютыСрезПоследних
ВЫБРАТЬ
ВложенныйЗапрос.Ссылка КАК Документ,
ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов КАК ВалютаДоговора,
ВложенныйЗапрос.КурсВзаиморасчетов,
ВЫБОР
КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА 0
ИНАЧЕ КурсыВалют.Курс
КОНЕЦ КАК КурсОфициальный,
ВЫБОР
КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА ВложенныйЗапрос.КурсВзаиморасчетов
ИНАЧЕ ВложенныйЗапрос.КурсВзаиморасчетов - КурсыВалют.Курс
КОНЕЦ КАК Превышение
ИЗ
(ВЫБРАТЬ
ЗаказПокупателя.Ссылка КАК Ссылка,
МАКСИМУМ(КурсыВалют.Период) КАК Период,
ЗаказПокупателя.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ДоговорКонтрагентаВалютаВзаиморасчетов
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют КАК КурсыВалют
ПО
ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыВалют.Валюта И ЗаказПокупателя.Дата >= КурсыВалют.Период
СГРУППИРОВАТЬ ПО
ЗаказПокупателя.КурсВзаиморасчетов,
ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов,
ЗаказПокупателя.Ссылка
) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют КАК КурсыВалют
ПО
ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов = КурсыВалют.Валюта И ВложенныйЗапрос.Период = КурсыВалют.Период
ВЫБРАТЬ
ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура,
ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление,
ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры.Представление,
ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК КоличествоОстаток,
NULL как Заказ,
0 КАК Резерв
ИЗ
РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура,
ЗаказыПокупателейОстатки.Номенклатура.Представление,
ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры,
ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры.Представление,
0,
ЗаказыПокупателейОстатки.ЗаказПокупателя,
ЗаказыПокупателейОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
ИТОГИ СУММА(КоличествоОстаток), СУММА(Резерв) ПО
Номенклатура,
ХарактеристикаНоменклатуры
ВЫБРАТЬ
КандидатыНаРаботу.ФизЛицо КАК ФизЛицо,
КандидатыНаРаботу.Регистратор КАК Документ,
КандидатыНаРаботу.Статус КАК Статус
ИЗ
РегистрСведений.КандидатыНаРаботу.СрезПоследних(&ДатаОтчета, ) КАК КандидатыНаРаботуСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.КандидатыНаРаботу КАК КандидатыНаРаботу
ПО
КандидатыНаРаботуСрезПоследних.ФизЛицо = КандидатыНаРаботу.ФизЛицо
ГДЕ
КандидатыНаРаботуСрезПоследних.Статус = &Отложен И КандидатыНаРаботу.Период <= &ДатаОтчета
УПОРЯДОЧИТЬ ПО
КандидатыНаРаботу.ФизЛицо.Наименование,
Документ
ИТОГИ МАКСИМУМ(Статус) ПО
ФизЛицо
АВТОУПОРЯДОЧИВАНИЕ
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)");
// Получить описание параметров запроса.
ПараметрыЗапроса = Запрос.НайтиПараметры();
Для Каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл
ЗаданноеЗначение = Неопределено;
// Открыть диалог ввода значения данного параметра.
Если ВвестиЗначение(ЗаданноеЗначение, "Задайте значение параметра " + ПараметрЗапроса.Имя, ПараметрЗапроса.ТипЗначения) Тогда
Запрос.УстановитьПараметр(ПараметрЗапроса.Имя, ЗаданноеЗначение);
Иначе
Возврат;
КонецЕсли;
КонецЦикла;
РезультатЗапроса = Запрос.Выполнить();
Анализ = Новый АнализДанных;
// Выбранный тип анализа как раз и указывает на то, что ищем
// "совместно продаваемые" товары.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи,
| ПродажиКомпанииОбороты.Номенклатура
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
| ДокументПродажи";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
// Получить продажи за указанный период.
// Выбрана периодичность по Регистратору, т.к. необходимо получить
// данные о совместных продажах в рамках одной покупки.
Анализ.ИсточникДанных = Запрос.Выполнить();
// Выполнить анализ в соответствии с указанным источником.
РезультатАнализа = Анализ.Выполнить();
// Для вывода результата анализа воспользуемся построителем
// отчета анализа данных.
Построитель = Новый ПостроительОтчетаАнализаДанных();
Построитель.Макет = Неопределено;
Построитель.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(РезультатАнализа, ТабДок);
ТабДок.Показать();
Анализ = Новый АнализДанных;
// Найти ассоциации.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи,
| ПродажиКомпанииОбороты.Номенклатура
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
| ДокументПродажи";
// Ассоциации ищем подокументно, это определяется поведением
// объекта "АнализДанных" "по умолчанию" при выборе
// периодичности виртуальной таблицы Регистратор
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Анализ.ИсточникДанных = Запрос.Выполнить();
РезультатАнализа = Анализ.Выполнить();
// Исходя из полученного анализа создать прогноз.
МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
// ТЗ- таблица значений, содержащая данные о том,
// какие номенклатурные позиции вошли в "текущую" покупку.
МодельПрогноза.ИсточникДанных = ТЗ;
// ТП - элемент управления "Табличное поле" связанный через
// свойство "Данные" с реквизитом формы "ТП" (тип ТаблицаЗначений)
ТП = МодельПрогноза.Выполнить();
ЭлементыФормы.ТП.СоздатьКолонки();
ТабДок = Новый ТабличныйДокумент;
Анализ = Новый АнализДанных;
// Нужно спрогнозировать цепочку событий, поэтому выбираем
// тип анализа "Поиск последовательностей".
Анализ.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК Контрагент,
| ПродажиКомпанииОбороты.Номенклатура,
| ПродажиКомпанииОбороты.Период
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Анализ.ИсточникДанных = Запрос.Выполнить();
Колонка = Анализ.НастройкаКолонок.Найти("Период");
// Указать, что колонка "Период" имеет тип "Время",
// что "позволит понять" хронологию событий
Колонка.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Время;
РезультатАнализа = Анализ.Выполнить();
МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
// ТЗ- таблица значений, содержащая исходные данные для прогноза
// например, какой контрагент, какой товар закупил (исходя из чего
// попытаемся узнать, что они еще закупят).
МодельПрогноза.ИсточникДанных = ТЗ;
// ТП - элемент управления "Табличное поле" связанный через
// свойство "Данные" с реквизитом формы "ТП"
//(тип ТаблицаЗначений)
ТП = МодельПрогноза.Выполнить();
ЭлементыФормы.ТП.СоздатьКолонки();
// Построитель - реквизит формы, имеющий тип
// ПостроительОтчетаАнализаДанных. Ряд табличных полей /
/ в диалоге могут быть связаны со свойствами-коллекциями
// данного объекта
Построитель.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
Построитель.Вывести(РезультатАнализа, ТабДок);
ТабДок.Показать();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпанииСсылка,
| ОстаткиТоваровКомпанииОстатки.Номенклатура КАК НоменклатураСсылка,
| СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК Остаток,
| ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление КАК Номенклатура,
| ОстаткиТоваровКомпанииОстатки.СкладКомпании.Представление КАК Склад
|ИЗ
| РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&Момент) КАК ОстаткиТоваровКомпанииОстатки
|СГРУППИРОВАТЬ ПО
| ОстаткиТоваровКомпанииОстатки.СкладКомпанииСсылка,
| ОстаткиТоваровКомпанииОстатки.НоменклатураСсылка
|ИТОГИ СУММА(Остаток) ПО
| Общие,
| Склад";
Запрос.УстановитьПараметр("Момент", Неопределено);
Результат = Запрос.Выполнить();
// Получить поле табличного документа, в которое будем выводить результат.
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
// Очистить данные в табличном документе
// (возможно данные уже выводились ранее).
ТабДок.Очистить();
Макет = ПолучитьМакет("Макет");
// Получить именованные области из макета.
ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщийИтог");
ОбластьСклад = Макет.ПолучитьОбласть("Склад");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
// Получить выборку по первой итоговой группировке (первый уровень).
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
// Запись общего итога всегда одна, поэтому можно обойтись без организации цикла.
ВыборкаОбщийИтог.Следующий();
// Произвести запись данных из полей выборки в именованные
// области с совпадающими именами.
ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
// Включить область с заполненными параметрами в табличный документ.
ТабДок.Вывести(ОбластьОбщийИтог);
// "От" записи первого уровня получить подчиненную выборку
// записей второго уровня (по итоговой группировке "Склад").
ВыборкаПоСкладу = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСкладу.Следующий() Цикл
ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладу);
ТабДок.Вывести(ОбластьСклад);
// Получить подчиненную выборку, содержащую детальные записи.
ВыборкаПоНоменклатуре = ВыборкаПоСкладу.Выбрать();
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(ВыборкаПоНоменклатуре);
ТабДок.Вывести(ОбластьНоменклатура);
КонецЦикла;
КонецЦикла;
// Перед выводом данных в табличный документ используется метод:
ТабДок.НачатьАвтогруппировкуСтрок();
// Выести область с указанием уровня.
ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());
// В конце работы с табличным документом необходимо выполнить
// следующий метод:
ТабДок.ЗакончитьАвтогруппировкуСтрок();
УровеньГруппировки = 1; //содержит индекс, с нуля
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);
ТабДок.Вывести(ОбластьНоменклатура, ВыборкаПоНоменклатуре.Уровень(), , Ложь);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
| ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиКомпанииОбороты
|ИТОГИ СУММА(КоличествоОборот) ПО
| Номенклатура ИЕРАРХИЯ";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Результат = Запрос.Выполнить();
// Осуществить выгрузку с сохранением иерархии.
ЭлементыФормы.ТП.Значение = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ЭлементыФормы.ТП.СоздатьКолонки();
ПостроительОтчета.Макет = Неопределено;
ПостроительОтчета.Макет.Показать()
ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ИсточникДанных = ПостроительОтчетаОтчет;
ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ОтображатьПоля = Истина;
Процедура АлфавитныйПереченьКандидатовСРасшифровкой()
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.Текст ="ВЫБРАТЬ
| РегистрацияСобеседованияКандидата.ФизЛицо КАК Кандидат,
| РегистрацияСобеседованияКандидата.РезультатСобеседования КАК Результат,
| РегистрацияСобеседованияКандидата.Ссылка
|ИЗ
| Документ.РегистрацияСобеседованияКандидата КАК РегистрацияСобеседованияКандидата
|УПОРЯДОЧИТЬ ПО
| РегистрацияСобеседованияКандидата.ФизЛицо.Наименование";
ПостроительОтчета.Выполнить();
Макет = ПостроительОтчета.Макет;
// Очистить области, связанные с ссылкой.
ТекущаяОбласть = Неопределено;
Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Ссылка", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть = Неопределено Тогда
Прервать;
Иначе
ТекущаяОбласть.Очистить(Истина, Истина, Истина);
КонецЕсли;
КонецЦикла;
// Заполнить параметр расшифровки для областей, где параметр = "Результат".
ТекущаяОбласть = Неопределено;
Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Результат", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть = Неопределено Тогда
Прервать;
Иначе
Если ТекущаяОбласть.Параметр = "Результат" Тогда
ТекущаяОбласть.ПараметрРасшифровки = "Ссылка";
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПостроительОтчета.Макет = Макет;
ПостроительОтчета.Вывести();
КонецПроцедуры
СохранитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя, ПостроительОтчета.ПолучитьНастройки());
// До установки настроек они ранее должны были быть заполнены
// по тексту запроса.
ПостроительОтчета.ЗаполнитьНастройки();
// Установить настройки построителя отчета.
Настройка = ВосстановитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя);
Если Настройка <> Неопределено Тогда
ПостроительОтчета.УстановитьНастройки(Настройка);
КонецЕсли;
Процедура Отчет(ДатаНач, ДатаКон) Экспорт
Запрос = Новый Запрос;
// Сбор данных.
Запрос.Текст = "ВЫБРАТЬ
| Событие.Ответственный КАК Ответственный,
| Событие.Дата,
| Событие.ВидСобытия,
| Событие.Контрагент,
| Событие.СодержаниеСобытия,
| Событие.ОписаниеСобытия
|ИЗ
| Документ.Событие КАК Событие
|ГДЕ
| Событие.Дата МЕЖДУ &ДатаНач И &ДатаКон И (Событие.Проведен) И Событие.СостояниеСобытия = &Завершено
|УПОРЯДОЧИТЬ ПО
| Ответственный";
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("Завершено", Перечисления.СостоянияСобытий.Завершено);
Результат = Запрос.Выполнить();
// Сформировать табличный документ.
Макет = ПолучитьМакет("Отчет");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок = Новый ТабличныйДокумент;
ОбластьЗаголовок.Параметры.ДатаНач = ДатаНач;
ОбластьЗаголовок.Параметры.ДатаКон = ДатаКон;
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ВыборкаДетали = Результат.Выбрать();
Пока ВыборкаДетали.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
ОбластьДетальныхЗаписей.Область("Описание").Примечание.Текст = ВыборкаДетали.СодержаниеСобытия;
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
ТабДок.Показать();
КонецПроцедуры
ДокументРезультат.ОбластьПечати = ДокументРезультат.Область(2, 2, ДокументРезультат.ВысотаТаблицы, ДокументРезультат.ШиринаТаблицы );
ДокументРезультат.ФиксацияСверху = ПостроительОтчета.Макет.Области.ШапкаТаблицы.Низ;
ОбластьШапки = ПостроительОтчета.Макет.Области.ШапкаТаблицы;
ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область(ОбластьШапки.Верх, , ОбластьШапки.Низ);
ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
ТабДокумент.ВерхнийКолонтитул.ТекстСлева = Метаданные().Представление() + " № " + Номер;
ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "[&НомерСтраницы]";
ПостроительОтчета.Вывести(ДокументРезультат);
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
// Получить макет построителя отчета.
Макет = ПостроительОтчета.Макет;
// Сформатировать все области, где встречается слово "Стоимость".
ТекущаяОбласть = Неопределено;
Пока Истина Цикл
ТекущаяОбласть = Макет.НайтиТекст("Стоимость", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть = Неопределено Тогда
Прервать;
Иначе
Если ТекущаяОбласть.Параметр <> "" Тогда
ТекущаяОбласть.Формат = "ЧДЦ=0";
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Сформатировать все области, где встречается слово "Количество".
ТекущаяОбласть = Неопределено;
Пока Истина Цикл
ТекущаяОбласть = Макет.НайтиТекст("Количество", ТекущаяОбласть, Макет.Область());
Если ТекущаяОбласть = Неопределено Тогда
Прервать;
Иначе
Если ТекущаяОбласть.Параметр <> "" Тогда
ТекущаяОбласть.Формат = "ЧДЦ=0";
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Назначить построителю измененный макет.
ПостроительОтчета.Макет = Макет;
// Вывести результат работы построителя отчета в табличный документ.
ПостроительОтчета.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Апельсин);
ПостроительОтчета.Макет = ПолучитьМакет("МакетЭтогоОтчета");
ПостроительОтчета.ОформитьМакет();
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
ТабДок.Очистить();
Макет = ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
| ПродажиКомпанииОбороты.Номенклатура.Представление,
| ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
| ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода,&КонПериода) КАК ПродажиКомпанииОбороты
|ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот) ПО
| ОБЩИЕ,
| Номенклатура Иерархия";
Запрос.УстановитьПараметр("&НачПериода", НачПериода);
Запрос.УстановитьПараметр("&КонПериода", КонецДня(КонПериода));
Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
// Обход по определенным в запросе итоговым группировкам.
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
// Запись общих итогов одна, поэтому нет необходимости в цикле.
ВыборкаОбщийИтог.Следующий();
ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
ТабДок.Вывести(ОбластьОбщийИтог);
// Получить подчиненную выборку по итоговой группировке "номенклатура".
ВыборкаНоменклатура = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьНоменклатура);
// Несмотря на то, что можем получить еще одну подчиненную
// выборку (по детальным записям) мы это не делаем, т.е. фактически
// при обходе пропускаем детальные записи.
КонецЦикла;
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ВыборкаОбщийИтог.Следующий();
ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
ТабДок.Вывести(ОбластьОбщийИтог);
ВыборкаНоменклатура = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока ВыборкаНоменклатура.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьНоменклатура);
КонецЦикла;
ТабДок = Новый ТабличныйДокумент;
Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьСКартинкой");
Картинка = Новый Картинка(ПутьККартинке);
// Элемент управления "Логотип" входит в коллекцию картинок области.
ОбластьКартинки.Рисунки.Логотип.Картинка = Картинка;
ТабДок.Вывести(ОбластьКартинки);
ТабДок.Показать();
Область = Макет.ПолучитьОбласть("Шапка");
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 5;
Рисунок.Высота = 10;
Рисунок.Ширина = 10;
Рисунок.Лево = 5;
Рисунок.Картинка = Новый Картинка(ПутьККартинке);
Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
ТабДок.Вывести(Область);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК ДоговорВзаиморасчетовПокупателяВладелец,
| ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
| ПродажиКомпанииОбороты.ПодразделениеКомпании КАК ПодразделениеКомпании,
| СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот,
| СУММА(ПродажиКомпанииОбороты.СуммаПродажиОборот) КАК СуммаПродажиОборот
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода,&КонПериода) КАК ПродажиКомпанииОбороты
|СГРУППИРОВАТЬ ПО
| ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец,
| ПродажиКомпанииОбороты.Номенклатура,
| ПродажиКомпанииОбороты.ПодразделениеКомпании
|ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот) ПО
| ДоговорВзаиморасчетовПокупателяВладелец,
| Номенклатура,
| ПодразделениеКомпании";
// На состав полей, которые могут быть размещены в измерениях,
// данных сводной таблицы влияет раздел "Итоги".
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Результат = Запрос.Выполнить();
Сводная = ЭлементыФормы.ПолеДокумента.ВстроенныеТаблицы.СводнаяТаблица1;
Сводная.ИсточникДанных = Результат;
Построитель = Новый ПостроительОтчета();
Построитель.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
| ТоварыНаСкладахОстаткиИОбороты.Склад.Представление,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот) КАК КоличествоОборот,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстаткиИОбороты.Склад,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.Склад.Представление,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление
|ИТОГИ СУММА(КоличествоПриход), СУММА(КоличествоОборот), СУММА(КоличествоРасход) ПО
| ОБЩИЕ,
| Номенклатура ИЕРАРХИЯ,
| Склад ИЕРАРХИЯ ";
Построитель.ЗаполнитьНастройки();
Таблица = ЭлементыФормы.ПолеТабличногоДокумента1.ВстроенныеТаблицы.СводнаяТаблица1;
Таблица.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Лед);
Таблица.ИсточникДанных = Построитель;
Таблица.Строки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Склад");
Таблица.Данные.Добавить("КоличествоПриход");
Таблица.ОтображатьЛинии = ТипОтображенияЛинийСводнойТаблицы.Всегда;
// Создать текстовый документ, в который будет выполняться вывод.
ТекстДок = Новый ТекстовыйДокумент;
// Получить макет.
Макет = ПолучитьМакет("ЗаявкаНаПропуск");
// Заголовок.
Область = Макет.ПолучитьОбласть("Заголовок");
Область.Параметры.Дата = Дата;
Область.Параметры.ВремяНач = НачалоСобытия;
Область.Параметры.ВремяОконч = ОкончаниеСобытия;
ТекстДок.Вывести(Область);
// Состав.
Область = Макет.ПолучитьОбласть("Состав");
Для Каждого ТекСтрокаСторонниеЛица Из СторонниеЛица Цикл
Область.Параметры.ФИО = Строка(ТекСтрокаСторонниеЛица.Лицо);
ТекстДок.Вывести(Область);
КонецЦикла;
// Подвал.
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.Ответственный = Ответственный.Наименование;
ТекстДок.Вывести(Область);
// Открыть сформированный документ.
ТекстДок.Показать("Заявка на пропуска для События №" + Номер);
Диаграмма = ЭлементыФормы.Диаграмма;
// Очистить диаграмму, возможно ранее в нее уже выводились данные.
Диаграмма.КоличествоСерий = 0;
Диаграмма.КоличествоТочек = 0;
// Количество серий будет ограничиваться (не все значения будут показываться).
Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено;
Диаграмма.МаксимумСерийКоличество = 7;
Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент;
Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры";
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура,
| СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты
|СГРУППИРОВАТЬ ПО
| ПродажиКомпанииОбороты.Номенклатура";
Результат = Запрос.Выполнить();
// Запретить обновление диаграммы на время вывода данных.
Диаграмма.Обновление = Ложь;
// Установить единственную точку.
Диаграмма.КоличествоТочек = 1;
Диаграмма.Точки[0].Текст = "Количество";
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Количество серий, если бы не ограничивали зависело бы от результата запроса.
КоличествоСерий = Диаграмма.Серии.Количество();
Диаграмма.КоличествоСерий = КоличествоСерий + 1;
Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура;
// Установить значение "на пересечении" точки и серии.
// Первый параметр - 0 , так как в диаграмме только одна точка.
Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот);
КонецЦикла;
// Обновить диаграмму.
Диаграмма.Обновление = Истина;
// Настроить свойства диаграммы.
Диаграмма = ЭлементыФормы.ДиаграммаПродажи;
Диаграмма.ТипДиаграммы = ТипДиаграммы.Измерительная;
Диаграмма.АвтоМаксимальноеЗначение = Ложь;
Диаграмма.МаксимальноеЗначение = 20000;
Диаграмма.АвтоМинимальноеЗначение = Ложь;
Диаграмма.МинимальноеЗначение = 0;
// Создать три полосы.
Полосы = Диаграмма.ПолосыИзмерительнойДиаграммы;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 0;
НоваяПолоса.Конец = 1000;
НоваяПолоса.ЦветФона = WebЦвета.Красный;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 1000;
НоваяПолоса.Конец = 5000;
НоваяПолоса.ЦветФона = WebЦвета.Желтый;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 5000;
НоваяПолоса.Конец = 20000;
НоваяПолоса.ЦветФона = WebЦвета.Зеленый;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ПродажиОбороты.Период,
| ПродажиОбороты.СтоимостьОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты");
Запрос.УстановитьПараметр("ДатаНачала", '2004.08.10 00:00:00');
Запрос.УстановитьПараметр("ДатаОкончания", '2004.08.30 23:59:59');
ЭлементыФормы.ДиаграммаПродажи.ИсточникДанных = Запрос.Выполнить().Выгрузить();
Запрос = Новый Запрос( "ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
| ТоварыНаСкладахОстаткиИОбороты.Склад.Представление,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот) КАК КоличествоОборот,
| СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстаткиИОбороты.Склад,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.Склад.Представление,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление
|ИТОГИ СУММА(КоличествоПриход), СУММА(КоличествоОборот), СУММА(КоличествоРасход) ПО
| ОБЩИЕ,
| Номенклатура ИЕРАРХИЯ,
| Склад ИЕРАРХИЯ");
Диаграмма = ЭлементыФормы.СводнаяДиаграмма1;
Диаграмма.ОбластьЗаголовка.Текст = "Приход товаров";
Диаграмма.ИсточникДанных = Запрос.Выполнить();
Диаграмма.Серии.Добавить("Номенклатура");
Диаграмма.Точки.Добавить("Склад");
Диаграмма.Ресурсы.Добавить("КоличествоПриход");
ДГ = ЭлементыФормы.ДГ;
// Установить заголовок диаграммы.
ДГ.ОбластьЗаголовка.Текст = "График дежурств";
// Интервал будем определять самостоятельно.
ДГ.АвтоОпределениеПолногоИнтервала = Ложь;
// Установить интервал.
ДГ.УстановитьПолныйИнтервал(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
// В диаграмме будет две точки - сотрудники Петров и Сидоров...
ТочкаП = ДГ.УстановитьТочку("Петров");
ТочкаС = ДГ.УстановитьТочку("Сидоров");
// и две серии - дежурство на вахте и дежурство в центральном офисе.
СерияНаВахте = ДГ.УстановитьСерию("На вахте");
СерияВЦентре = ДГ.УстановитьСерию("В центральном офисе");
// Задать цвета серий, отличные от цвета по умолчанию.
СерияНаВахте.Цвет = WebЦвета.Синий;
СерияВЦентре.Цвет = WebЦвета.СветлоЖелтый;
ПервыйДень = НачалоМесяца(ТекущаяДата());
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);
// В значении определить новый интервал.
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";
// Определить границы интервала.
Интервал.Начало = ПервыйДень;
Интервал.Конец = ПервыйДень + 10 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 14 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 24 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";
Интервал.Начало = ПервыйДень + 5 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 15 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 21 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 25 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);
// В значении определить новый интервал.
Интервал = Значение.Добавить();
// Запомнить интервал начала связи.
СвязьИнтервалНачало = Интервал;
// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Интервал = Значение.Добавить();
// Запомнить интервал окончания связи.
СвязьИнтервалКонец = Интервал;
// Связать два интервала.
Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец);
Связь.Цвет = WebЦвета.Синий;
// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Интервал = Значение.Добавить();
СвязьИнтервалНачало = Интервал;
// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Интервал = Значение.Добавить();
СвязьИнтервалКонец = Интервал;
// Связать два интервала.
Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец);
Связь.Цвет = WebЦвета.Синий;
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);
// Разрешить интерактивное редактирование интервалов.
Значение.Редактирование = Истина;
// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Значение.Редактирование = Истина;
// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Значение.Редактирование = Истина;
// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Значение.Редактирование = Истина;
Процедура ДГПриОкончанииРедактированияИнтервала(Элемент, Интервал, Отмена)
// Сгладить погрешности интерактивного перетаскивания -
// округлить интервал по границе дня.
Интервал.Начало = Интервал.Начало + 3600 * 12;
Интервал.Начало = НачалоДня(Интервал.Начало);
Интервал.Конец = Интервал.Конец + 3600 * 12;
Интервал.Конец = НачалоДня(Интервал.Конец);
// Скорректировать цвета связей.
Для Каждого Связь Из Интервал Цикл
Если Связь.Начало.Конец <= Связь.Конец.Начало Тогда
Связь.Цвет = WebЦвета.Синий;
Иначе // есть пересечение интервалов - выделить красным
Связь.Цвет = WebЦвета.Красный;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Установить непериодические метки - контроль дежурства.
// Создать отдельный элемент шкалы времени (для более наглядного отображения)
ЭлементМеток = ДГ.ОбластьПостроения.ШкалаВремени.Элементы.Добавить();
ЭлементМеток.Единица = ТипЕдиницыШкалыВремени.День;
// Скрыть периодические метки добавленного элемента.
ЭлементМеток.ОтображатьПериодическиеМетки = Ложь;
// Установить метку - первая проверка - 10 часов утра 9 числа.
ПерваяПроверка = ПервыйДень + 8 * 24 * 60 * 60 + 10 * 60 * 60;
Метка = ЭлементМеток.Метки.Добавить(ПерваяПроверка);
Метка.Текст = "Проверка";
Метка.ЦветТекста = WebЦвета.Красный;
Метка.ЦветЛинии = Метка.ЦветТекста;
// Установить метку - вторая проверка - 8 часов вечера 23 числа.
ВтораяПроверка = ПервыйДень + 22 * 24 * 60 * 60 + 20 * 60 * 60;
Метка = ЭлементМеток.Метки.Добавить(ВтораяПроверка);
Метка.Текст = "Проверка";
Метка.ЦветТекста = WebЦвета.Красный;
Метка.ЦветЛинии = Метка.ЦветТекста;
// Выделить выходные дни другим цветом фона.
Неделя = 3600 * 24 * 7;
Выходные = 3600 * 48;
МаксимальнаяДата = ПервыйДень + Неделя * 4;
ТекущаяДата = ПервыйДень;
Пока ТекущаяДата <= МаксимальнаяДата Цикл
Конец = НачалоНедели(ТекущаяДата);
Начало = Конец - Выходные;
ДГ.ИнтервалыФона.Добавить(Начало, Конец);
ТекущаяДата = ТекущаяДата + Неделя;
КонецЦикла;
Схема = ЭлементыФормы.ГеоСхема;
Схема.Прочитать("D:/MyGeo.geo");
Схема = ЭлементыФормы.ГеоСхема;
Схема.Вывести(ПолучитьОбщийМакет("ГеографическаяСхемаРоссии"));
Масштаб = 100000;
Если ВвестиЗначение(Масштаб) Тогда
ЭлементыФормы.ГеоСхема.ПоддержкаМасштаба = РежимОтображенияГеографическойСхемы.ЗадаетсяМасштабом;
ЭлементыФормы.ГеоСхема.Масштаб = Масштаб;
КонецЕсли;
Схема = ЭлементыФормы.ГеоСхема;
СписокГородов = Новый СписокЗначений;
// Запретить перерисовку схемы на время обновления.
Схема.Обновление = Ложь;
// Отобразить слой Регионы.
Схема.Слои.Регионы.Видимость = Истина;
// Задать тип отображения названий городов.
СлойГорода = Схема.Слои.Города;
СлойГорода.Серии.Название.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст;
// Сформировать список городов и скрыть все города.
Для Счетчик = 0 По СлойГорода.Объекты.Количество() - 1 Цикл
Город = СлойГорода.Объекты.Получить(Счетчик);
Город.Видимость = Ложь;
НазваниеГорода = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Название);
НазваниеРегиона = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Регион);
СписокГородов.Добавить(Счетчик, НазваниеГорода.Значение + " (" + НазваниеРегиона.Значение + ")");
КонецЦикла;
СлойГорода.Видимость = Истина; // Отобразить слой Города.
СписокГородов.СортироватьПоПредставлению();
ВыбранныйГород = СписокГородов.ВыбратьЭлемент();
Если ВыбранныйГород <> Неопределено Тогда
ГородСхемы = СлойГорода.Объекты.Получить(ВыбранныйГород.Значение);
ГородСхемы.Видимость = Истина; // отобразить выбранный город
КонецЕсли;
Схема.Обновление = Истина; // Обновить схему.
Схема = ЭлементыФормы.ГеоСхема;
Схема.Обновление = Ложь; // Запретить обновление схемы.
// Отобразить слои Регионы и Города.
Схема.Слои.Регионы.Видимость = Истина;
СлойГорода = Схема.Слои.Города;
СлойГорода.Видимость = Истина;
// Добавить новую серию для отображения данных источника.
СерияИнформация = Схема.Слои.Города.Серии.Добавить("Информация");
СерияИнформация.Значение = "Информация";
// Сформировать таблицу значений источника данных.
ИсточникДанныхГеоСхемы.Колонки.Добавить("ЗначениеГорода");
ИсточникДанныхГеоСхемы.Колонки.Добавить("СерияИнформация", Новый ОписаниеТипов("Строка"));
// Добавить "справочную" колонку в истоник данных
// (нужна только для "наглядности" работы с источником).
ИсточникДанныхГеоСхемы.Колонки.Добавить("НазваниеГорода");
// Заполнить в первой строке источника данных значение серии,
// для которой будут выводиться данные.
ИсточникДанныхГеоСхемы.Добавить().СерияИнформация = "Информация";
// Задать тип источника данных
Схема.Слои.Города.ТипОрганизацииИсточникаДанных = ТипОрганизацииИсточникаДанныхГеографическойСхемы.НаПересечении;
// Задать тип отображения значений серии источника данных.
СлойГорода.Серии.Информация.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст;
// Заполнить источник данных значениями всех объектов.
Для Каждого Город Из СлойГорода.Объекты Цикл
Город.Видимость = Истина;
СтрокаИсточникаДанных = ИсточникДанныхГеоСхемы.Добавить();
СтрокаИсточникаДанных.ЗначениеГорода = Город.Значение;
СтрокаИсточникаДанных.НазваниеГорода = СлойГорода.ПолучитьЗначение(Город, СлойГорода.Серии.Название).Значение;
КонецЦикла;
ЭлементыФормы.ИсточникДанныхГеоСхемы.СоздатьКолонки();
Схема.Обновление = Истина; // Обновить поле географической схемы.
// Назначить источник данных.
СлойГорода.ИсточникДанных = ИсточникДанныхГеоСхемы;
"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /F D:\Конфигурации\Типовые\УпрТорг /N ИмяПользователя /P Пароль
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F D:\Конфигурации\Типовые\УпрТорг /N ИмяПользователя /P Пароль
"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /S Сервер\База /N ИмяПользователя /P Пароль
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F D:\Конфигурации\Типовые\УпрТорг /N ИмяПользователя /P Пароль
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F D:\Конфигурации\Типовые\УпрТорг /N ИмяПользователя /P Пароль /DumpIB c:\имя.dt
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F D:\Конфигурации\Типовые\УпрТорг /N ИмяПользователя /P Пароль /UpdateDBCfg
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P"" /IBcheckAndRepair -LogIntegrity
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P"" /OutD:\my\log.txt /CheckConfig -ClientServer -Client -ExternalConnectionServer -ExternalConnection -Server -DistributiveModules -IncorrectReferences -ConfigLogicalIntegrity -UnreferenceProcedures -HandlersExistence -EmptyHandlers
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P"" /OutD:\my\log.txt /ReduceEventLogSize 2004-12-26 -saveAsC:\OldLog.elf
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P"" /DumpConfigFiles "D:\1\11" -Module
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\Documents and Settings\user\My Documents\1C\DemoTrd2" /N"Федоров (администратор)" /P"" /LoadConfigFiles "D:\1\11" -Help
Если ИспользованиеРабочейДаты = РежимРабочейДаты.Назначать Тогда
РабочаяДата = УстанавливаемаяДата;
Иначе
Сообщить("Рабочая дата не будет сменена.
|Необходимо сначала в меню Сервис-Параметры-Общая
|снять флажок - Использовать текущую дату компьютера ")
КонецЕсли;
Попытка
УстановитьМонопольныйРежим(Истина);
Исключение
Предупреждение("К базе подключены пользователи. Монопольный режим установить невозможно!", 7);
КонецПопытки;
Если МонопольныйРежим() Тогда
Сообщить("Монопольный режим установлен");
КонецЕсли;
УстановитьМонопольныйРежим(Ложь);
ЗаписьЖурналаРегистрации("ОтчетныеДанные.Просмотр", УровеньЖурналаРегистрации.Информация, Метаданные(), ДатаКон,);
Выборка = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ЭлементМассива Из Выборка Цикл
ИмяПользователя = ЭлементМассива.Имя;
ПолноеИмяПользователя = ЭлементМассива.ПолноеИмя;
ЕстьПароль = ЭлементМассива.ПарольУстановлен;
Роли = ЭлементМассива.Роли;
Для Каждого Роль Из Роли Цикл
ИмяРоли = Роль.Имя;
КонецЦикла;
КонецЦикла;
Инфо = Новый СистемнаяИнформация;
Текст = "Версия 1С:Предприятия 8.0: " + Инфо.ВерсияПриложения;
Текст = Текст + Символы.ПС + "Конфигурация: " + Метаданные.Синоним;
Текст = Текст + Символы.ПС + "Поставщик: " + Метаданные.Поставщик;
Текст = Текст + Символы.ПС + "Операционная система: " + Инфо.ВерсияОС;
Текст = Текст + Символы.ПС + "Оперативная память (МБ): " + Инфо.ОперативнаяПамять;
Текст = Текст + Символы.ПС + "Процессор: " + Инфо.Процессор;
Предупреждение(Текст, , "ДАННЫЕ ТЕКУЩЕГО КОМПЬЮТЕРА И КОНФИГУРАЦИИ");
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = "Имя";
НовыйПользователь.ПолноеИмя = "Фамилия Имя Отчество";
НовыйПользователь.АутентификацияСтандартная = Истина;
НовыйПользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Администратор;
НовыйПользователь.Пароль = "пароль";
НовыйПользователь.Роли.Добавить(Метаданные.Роли.Администратор);
НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь;
НовыйПользователь.Язык = Метаданные.Языки.Русский;
НовыйПользователь.Записать();
ЗаписатьНовогоПользователя(НовыйПользователь);
Процедура ЗаписатьНовогоПользователя(НовыйПользователь) Экспорт
// Проверить наличие роли Администратор у нового пользователя.
РольАдминистратор = Метаданные.Роли.Администратор;
Если НовыйПользователь.Роли.Содержит(РольАдминистратор) Тогда
Сообщить("Добавление пользователя с административными правами запрещено.");
Иначе // у нового пользователя нет роли Администратор
// Проверить, что текущий пользователь обладает правами Менеджера
// или Администратора
Если РольДоступна(РольАдминистратор) ИЛИ РольДоступна(Метаданные.Роли.Менеджер) Тогда
// Выполнить запись нового пользователя.
НовыйПользователь.Записать();
Иначе
Сообщить("Недостаточно прав доступа для добавления пользователя.");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ФайлРегистрации = Новый ЗаписьТекста("C:\LogFile.txt", КодировкаТекста.ANSI, , Истина);
ФайлРегистрации.Записать("Первое сообщение" + Символы.ПФ);
ФайлРегистрации.Записать("Второе сообщение"+ Символы.ПФ);
ФайлРегистрации.Закрыть();
МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
Колонки = Пользователи.Колонки;
Колонки.Добавить("Пользователь", , , 10);
Колонки.Добавить("Приложение", , , 10);
Колонки.Добавить("НачалоРаботы", , , 10);
Колонки.Добавить("Компьютер", , , 10);
Колонки.Добавить("Соединение", , , 10);
Для Каждого Соединение из МассивСоединений Цикл
НоваяСтрока = Пользователи.Добавить();
НоваяСтрока.Компьютер = Соединение.ИмяКомпьютера;
НоваяСтрока.Приложение = ПредставлениеПриложения(Соединение.ИмяПриложения);
НоваяСтрока.НачалоРаботы = Соединение.НачалоСеанса;
НоваяСтрока.Соединение = Соединение.НомерСоединения;
НоваяСтрока.Пользователь = Соединение.Пользователь.Имя;
КонецЦикла;
ЭлементыФормы.Пользователи.СоздатьКолонки();
ВыгрузитьЖурналРегистрации("C:\log.xml");
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь из Пользователи Цикл
НовыйЭлемент = СписокПользователей.Добавить();
НовыйЭлемент.Пометка = Истина;
НовыйЭлемент.Значение = Пользователь;
НовыйЭлемент.Представление = Пользователь.Имя;
КонецЦикла;
Массив = Новый Массив;
Для Каждого Пользователь Из СписокПользователей Цикл
Если Пользователь.Пометка Тогда
Массив.Добавить(Пользователь);
КонецЕсли;
КонецЦикла;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("Пользователь", Массив);
ВыгрузитьЖурналРегистрации("C:\log.xml", СтруктураФильтра, "Дата, Пользователь, ПредставлениеСобытия");
Коннектор = Новый COMОбъект("V8.COMConnector");
Сервер = Коннектор.ConnectServer("TestServer");
// Аутентифицироваться с административными правами в нужной базе.
Сервер.AddAuthentication("Администратор","");
// Создать объект нужной информационной базы.
ИнформационнаяБаза = Сервер.CreateInfoBaseInfo();
ИнформационнаяБаза.Name = "Test_Base";
// Получить соединения базы.
СоединенияБазы = Сервер.GetIBConnections(ИнформационнаяБаза);
// Разорвать соединения клиентских приложений.
Для Каждого Соединение Из СоединенияБазы Цикл
Сервер.Disconnect(Соединение);
КонецЦикла;
Текст = Новый ТекстовыйДокумент;
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Стр = СтрЗаменить(Выборка.Наименование, Символ(34), "%квч%");
Код = Строка(Выборка.Код) + Символ(34);
Текст.ДобавитьСтроку(Код + Стр);
КонецЦикла;
Текст.Записать("c:\temp\text.txt");
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("c:\temp\text.txt");
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(НомерСтроки);
Позиция = Найти(Стр, Символ(34));
Код = Сред(Стр, 1, Позиция-1); прНаименование = Сред(Стр, Позиция + 1);
Наименование = СтрЗаменить(прНаименование, "%квч%", Символ(34));
Сообщить(Код + "-" + Наименование);
КонецЦикла;
Путь = "c:\temp\text.txt";
Текст = Новый ЗаписьТекста(Путь, КодировкаТекста.UTF8);
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Текст.ЗаписатьСтроку(Выборка.Наименование);
КонецЦикла;
Текст.Закрыть();
Путь = "c:\temp\text.txt";
Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Стр = Текст.ПрочитатьСтроку();
Сообщить(Стр);
КонецЦикла;
// Выгрузить в файл xml.
ЗаписьXML=Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл("c:\doc.xml");
ЗаписьXML.ЗаписатьНачалоЭлемента("Root");
// Получить объект по ссылке.
ВыгружаемыйОбъект=Документ.ПолучитьОбъект();
// С помощью средств сериализации записать объект в файл.
ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
ЧтениеXML=Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("c:\doc.xml");
// Текущим становится элемент Root.
ЧтениеXML.Прочитать();
// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();
// Проверить сможет ли с данным значением "справиться"
// система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
// Получить ДокументОбъект.РеализацияТоваровУслуг
ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML);
ЗагружаемыйОбъект.Записать();
КонецЕсли;
ЧтениеXML.Закрыть();
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ПутьКФайлу);
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Справочник", "Номенклатура");
Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Запись.ЗаписатьНачалоЭлемента("Элемент");
Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул));
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Запись = Новый ЗаписьXML();
Запись.УстановитьСтроку();
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Справочник", "Номенклатура");
Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Запись.ЗаписатьНачалоЭлемента("Элемент");
Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул));
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Стр = Запись.Закрыть();
Сообщить(Стр);
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
Данные = СсылкаНаДокумент.ПолучитьОбъект();
ЗаписатьXML(ЗаписьXML, Данные);
ТекстСообщения = ЗаписьXML.Закрыть();
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(ТекстСообщения);
Текст.Записать(ПутьКФайлу);
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ПутьКФайлу);
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(Текст.ПолучитьТекст());
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
Данные = ПрочитатьXML(ЧтениеXML);
Данные.Записать();
КонецЕсли;
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
Пока Чтение.Прочитать() Цикл
// Прочитать "структурные части" элементов.
// Проверить, какая часть элемента - текущая.
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяУзла = Чтение.Имя; Сообщить("--" + ИмяУзла);
// Атрибуты элементов можно читать только если текущая часть -
// начало элемента
Пока Чтение.ПрочитатьАтрибут() Цикл
// Прочитать данные узла атрибута.
ТипУзла = Чтение.ТипУзла;
Имя = Чтение.Имя;
Значение = Чтение.Значение;
// Обработать полученные значения.
КонецЦикла;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
// В примере просто выводим текст в окно сообщений.
Сообщить("Текст:" + Чтение.Значение);
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
// В примере просто выводим признак конца элемента
// в окно сообщений Сообщить("--Конец:" + Чтение.Имя);
КонецЕсли;
КонецЦикла;
БД = Новый XBase;
БД.Поля.Добавить("CODE", "S", 5);
БД.Поля.Добавить("NAME", "S", 40);
БД.СоздатьФайл(Путь + "start.dbf", Путь + "index.cdx");
БД.Индексы.Добавить("IDXCODE", "CODE");
ФлИБД = БД.СоздатьИндексныйФайл(Путь + "index.cdx");
БД.АвтоСохранение = Истина;
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
БД.Добавить();
БД.CODE = Выборка.Код;
БД.NAME = Выборка.Наименование;
КонецЦикла;
БД.ЗакрытьФайл();
БД = Новый XBase;
БД.ОткрытьФайл(Путь + "start.dbf", Путь + "index.cdx");
БД.ТекущийИндекс = БД.Индексы.IDXCODE;
Пока БД.Следующая() Цикл
Сообщить(БД.CODE);
Сообщить(БД.NAME);
КонецЦикла;
БД.ЗакрытьФайл();
Фамилия | |
Имя | |
Отчество |
Процедура URLПриИзменении(Элемент)
ЭлементыФормы.ПолеHTML.Перейти(URL);
КонецПроцедуры
Процедура ПолеHTMLДокументСформирован(Элемент)
// Событие возникает и при открытии формы, когда в реквизите
// URL содержится пустая строка.
Если URL <> "" Тогда
Док = ЭлементыФормы.ПолеHTML.Документ;
// При попытке обратиться к несуществующему свойству
// произойдет ошибка
Док.forms["frm"].fam.Value = "Иванов";
Док.forms["frm"].nam.Value = "Иван";
Док.forms["frm"].otch.Value = "Иванович";
КонецЕсли;
КонецПроцедуры
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Текст(*,txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытия.Каталог = "";
ДиалогОткрытия.МножественныйВыбор = Ложь;
ДиалогОткрытия.Заголовок = "Выберите каталог";
Если ДиалогОткрытия.Выбрать() Тогда
ПутьККаталогу = ДиалогОткрытия.Каталог;
КонецЕсли;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Выбрать();
Файл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
Текст = "Файл: " + Файл.Имя;
Текст = Текст + Символы.ПС + "Расширение: " + Файл.Расширение;
Текст = Текст + Символы.ПС + "Полное имя: " + Файл.ПолноеИмя;
Текст = Текст + Символы.ПС + "Путь: " + Файл.Путь;
Текст = Текст + Символы.ПС + "Размер: " + Файл.Размер() + " байт";
Текст = Текст + ?(Файл.ПолучитьНевидимость(), Символы.ПС + "Невидимый. ", "");
Текст = Текст + ?(Файл.ПолучитьТолькоЧтение(), Символы.ПС + "Только чтение.", "");
Текст = Текст + Символы.ПС + "Последнее изменение: " + Файл.ПолучитьВремяИзменения();
Сообщить(Текст);
МассивНайденных = НайтиФайлы("C:\Обмен\Входящие", "*.xml");
Для Каждого Файл из МассивНайденных Цикл
Сообщить(Файл.Имя);
// Обработать найденные файлы.
КонецЦикла;
Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда
УдалитьФайлы("C:\Temp\ Sklad.xml ");
КонецЕсли;
Если НайтиФайлы("ftp://111.222.333.4/Sklad.xml") <> Неопределено Тогда
ПереместитьФайл("ftp://111.222.333.4/Sklad.xml", "C:\Temp\ Sklad.xml");
Сообщить("Файл перемещен.");
Иначе
Сообщить("Действие не выполнено. Файл в источнике не найден.");
КонецЕсли;
РазделитьФайл("D:/1/MyFile.xml", 1024*1024, "D:/1/11/");
ОбъединитьФайлы("D:/1/11/MyFile.xml.*", "D:/1/11/MyProg.exe");
ФайлАрхива = Новый ЗаписьZipФайла("C:\Arch.zip", , , МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный);
ФайлАрхива.Добавить("C:\Inetpub\wwwroot\Applic1\*.*", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ФайлАрхива.Записать();
ФайлАрхива = Новый ЧтениеZIPФайла("C:\Arch.zip");
ФайлАрхива.ИзвлечьВсе("C:\Open", РежимВосстановленияПутейФайловZIP.Восстанавливать);
ФайлАрхива.Закрыть();
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Фильтр = "Текстовый документ(*.txt)|*.txt";
// Выбрать первый файл.
ДиалогОткрытияФайла.Заголовок = "Выберите первый файл:";
ДиалогОткрытияФайла.Выбрать();
ИмяФайла1 = ДиалогОткрытияФайла.ПолноеИмяФайла;
// Выбрать второй файл.
ДиалогОткрытияФайла.Заголовок = "Выберите второй файл:";
ДиалогОткрытияФайла.Выбрать();
ИмяФайла2 = ДиалогОткрытияФайла.ПолноеИмяФайла;
// Сравнить выбранные файлы.
СравнениеФайлов = Новый СравнениеФайлов();
СравнениеФайлов.ПервыйФайл = ИмяФайла1;
СравнениеФайлов.ВторойФайл = ИмяФайла2;
СравнениеФайлов.ИгнорироватьПустоеПространство = Истина;
СравнениеФайлов.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент;
СравнениеФайлов.ПоказатьРазличия();
Процедура ПроверкаНаличияФайла() ИмяКаталога = "c:\temp";
Маска = "*.xml";
НайденныеФайлы = НайтиФайлы(ИмяКаталога, Маска);
Для Каждого Файл Из НайденныеФайлы Цикл
Сообщить(Файл.Имя);
КонецЦикла;
КонецПроцедуры
ПодключитьОбработчикОжидания("ПроверкаНаличияФайла", 10);
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогФыбораФайла.Фильтр = "Все файлы (все)|*.*";
ДиалогФыбораФайла.Заголовок = "Выберите медиа файл";
Если ДиалогФыбораФайла.Выбрать() Тогда
ПутьКМедиаФайлу = ДиалогФыбораФайла.ПолноеИмяФайла;
// В зависимости от варианта объекта запись полного пути к файлу
// производится либо в свойство FileName, либо в свойство URL.
Попытка
ЭлементыФормы.WMP.FileName = ПутьКМедиаФайлу;
Исключение
ЭлементыФормы.WMP.URL = ПутьКМедиаФайлу;
КонецПопытки;
КонецЕсли;
Договор = ПолучитьМакет("Договор");
// Получить объект из макета.
MSWord = Договор.Получить();
НаименованиеКонтрагента = "ООО Торгуем всем";
Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
// Получить объект, который будем использовать для поиска и замены.
Замена = Документ.Content.Find;
// Заменить заранее определенные ключевые конструкции на требуемый текст.
Замена.Execute("<НазваниеКомпании>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеКонтрагента);
// Далее аналогично для остальных ключевых конструкций.
// Делаем видимым приложение и активизируем его.
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
Почта = Новый Почта;
Почта.Подключиться("login", "password");
Сообщ = Новый ПочтовоеСообщение;
Сообщ.Текст = "Доброе время суток!!!!";
Сообщ.Тема = "Срочно в номер!!!";
Данные = Новый ДвоичныеДанные("c:\attach.txt");
Сообщ.Вложения.Добавить(Данные,"attach.txt");
Сообщ.Получатели.Добавить("Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.");
Почта.Послать(Сообщ, Ложь);
Почта.Отключиться();
Почта = Новый Почта;
Почта.Подключиться("login", "password");
Выборка = Почта.Выбрать(Истина, Ложь);
Для Каждого Сообщение Из Выборка Цикл
Сообщить("Тема: " + Строка(Сообщение.Тема));
Сообщить("Текст: " + Строка(Сообщение.Текст));
Для Каждого Вложение Из Сообщение.Вложения Цикл
Сообщить(Строка(Вложение.Наименование));
КонецЦикла;
КонецЦикла;
// Сформировать почтовый профиль.
// При отправке нет необходимости указывать настройки, связанные с POP сервером.
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = Константы.АдресСервераSMTP.Получить();
ИПП.ВремяОжидания = Константы.ВремяОжидания.Получить();
ИПП.Пароль = Константы.Пароль.Получить();
ИПП.ПарольSMTP = Константы.ПарольSMTP.Получить();
ИПП.Пользователь = Константы.Пользователь.Получить();
ИПП.ПользовательSMTP = Константы.ПользовательSMTP.Получить();
ИПП.ПортSMTP = Константы.ПортSMTP.Получить();
// Создать сообщение.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить("Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.");
Сообщение.Отправитель.Адрес = "Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.";
Сообщение.Тема = "Срочно в номер!";
Сообщение.Тексты.Добавить("Доброе время суток!");
Вложение = Новый ДвоичныеДанные(ПутьКФайлуВложения);
Сообщение.Вложения.Добавить(Вложение,"attach.txt");
// Подключиться и отправить.
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Почта.Отключиться();
// Формирование почтового профиля.
// При получении нет необходимости указывать настройки, связанные с SMTP сервером.
СостояниеПриема = "Подключение к серверу";
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераPOP3 = Константы.АдресСервераPOP3.Получить();
ИПП.ВремяОжидания = Константы.ВремяОжидания.Получить();
ИПП.Пароль = Константы.Пароль.Получить();
ИПП.Пользователь = Константы.Пользователь.Получить();
ИПП.ПортPOP3 = Константы.ПортPOP3.Получить();
Соединение = Новый ИнтернетПочта;
Соединение.Подключиться(ИПП);
СостояниеПриема = "Получение выборки писем";
Выборка = Соединение.Выбрать(ЗабиратьССервера);
СостояниеПриема = "Создание документов - писем";
КоличествоВВыборке = Выборка.Количество();
Индекс = 1;
Для Каждого Письмо Из Выборка Цикл
ТекПозиция = Окр(Индекс*100/КоличествоВВыборке);
Если ТекПозиция <> Позиция Тогда
Позиция = ТекПозиция;
КонецЕсли;
Док = Документы.Письмо.СоздатьДокумент();
Док.Тема = Письмо.Тема;
СтрПолучатели = "";
Для Каждого Адрес Из Письмо.Получатели Цикл
СтрПолучатели = СтрПолучатели + Адрес.Адрес + ",";
КонецЦикла;
Док.Получатели = СтрПолучатели;
Если ТипЗнч(Письмо.Отправитель) = Тип("Строка") Тогда
Отправитель = Письмо.Отправитель;
Иначе
Отправитель = Письмо.Отправитель.Адрес;
КонецЕсли;
Док.Отправитель = Отправитель;
Содержание = "";
Для Каждого ТекстСообщения Из Письмо.Тексты Цикл
Содержание = Содержание + ТекстСообщения.Текст + Символы.ПС;
КонецЦикла;
Док.Содержание = Содержание;
Индекс = Индекс + 1;
Док.Записать();
КонецЦикла;
Соединение.Отключиться();
Процедура ЗагрузитьОтмеченные(Кнопка)
Сервер = Новый FTPСоединение(FTPServer);
Для Каждого Файл Из ПолеСписка Цикл
Если Файл.Пометка Тогда
Сервер.Получить(Файл.Значение.ПолноеИмя, "с:\temp" + Файл.Значение.ПолноеИмя);
Файл.Пометка = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура Просмотреть(Кнопка)
Сервер = Новый FTPСоединение(FTPServer);
МассивФайлов = Сервер.НайтиФайлы("/","*.*");
Для Каждого Файл Из МассивФайлов Цикл
Если Файл.ЭтоФайл() Тогда
ПолеСписка.Добавить(Файл, Файл.Имя)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
СерверИсточник = HTTPserver;
Адрес = "/price.asp";
ИмяВходящегоФайла = "c:\temp\input.html";
НТТР = Новый HTTPСоединение(СерверИсточник);
НТТР.Получить(Адрес, ИмяВходящегоФайла);
ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
Запрос = Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
| ОстаткиТоваровОрганизацийОстатки.Организация КАК Организация,
| ОстаткиТоваровОрганизацийОстатки.Номенклатура,
| ОстаткиТоваровОрганизацийОстатки.ГТДОрганизации,
| ОстаткиТоваровОрганизацийОстатки.СтранаПроисхождения,
| ОстаткиТоваровОрганизацийОстатки.Комиссионер,
| ОстаткиТоваровОрганизацийОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваровОрганизаций.Остатки(&ДатаПереноса, ) КАК ОстаткиТоваровОрганизацийОстатки
|ИТОГИ ПО
| Организация";
Запрос.УстановитьПараметр("ДатаПереноса", ДатаПереноса);
V8 = Новый COMОбъект("V8.ComConnector");
Попытка
Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";");
Исключение
Предупреждение("База данных не открыта!!!");
Возврат;
КонецПопытки;
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
МенеджерДокумента = Открытие.Документы.ОприходованиеТоваров;
МенеджерНоменклатуры = Открытие.Справочники.Номенклатура;
МенеджерОрганизаций = Открытие.Справочники.Организации;
// Менеджеры остальных справочников:
Пока Выборка.Следующий() Цикл
Документ = МенеджерДокумента.СоздатьДокумент();
Код = Выборка.Организация.Код;
Организация = МенеджерОрганизаций.НайтиПоКоду(Код);
Если Организация.Пустая() Тогда
Организация = МенеджерОрганизаций.СоздатьЭлемент();
Организация.Код = Код;
// Остальные реквизиты:
Организация.Записать();
КонецЕсли;
// Обработка остальных реквизитов, справочников:
ВыборкаПодчиненная = Выборка.Выбрать();
Пока ВыборкаПодчиненная.Следующий() Цикл
// Поиск/перенос данных справочников
// заполнение табличной части документа
КонецЦикла;
Документ.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
Sub load()
Dim cntr As Object
Dim trade As Object
Dim Элемент As Object
Dim СправочникКонтрагентов As Object
Dim ГруппаКонтрагентов As Object
Set cntr = CreateObject("V8.COMConnector")
Set trade = cntr.Connect("File=""C:\DemoTrd4"";Usr=""Федоров (администратор)"";")
Set СправочникКонтрагентов = trade.Справочники.Контрагенты
Set ГруппаКонтрагентов = СправочникКонтрагентов.СоздатьГруппу()
ГруппаКонтрагентов.Наименование = "***** Экспорт из Excel ******"
ГруппаКонтрагентов.Записать
N = 11 'Количество строк в списке поставщиков
For Count = 3 To N
Set Элемент = СправочникКонтрагентов.СоздатьЭлемент()
Элемент.Код = Application.Cells(Count, 1).Value
Элемент.Наименование = Application.Cells(Count, 2).Value
Элемент.ИНН = Application.Cells(Count, 3).Value
Элемент.НаименованиеПолное = Application.Cells(Count, 4).Value
Элемент.Родитель = ГруппаКонтрагентов.Ссылка
Элемент.Записать
Next Count
End Sub
Док = ПолучитьCOMОбъект(Путь + "ценыконкурентов.xls");
КоличествоСтраниц = 2;
Для ТекНомер = 1 По КоличествоСтраниц Цикл
Контрагент = Док.Sheets(ТекНомер).Cells(1,1).Value;
Товар = Док.Sheets(ТекНомер).Cells(2,2).Value;
Цена = Док.Sheets(ТекНомер).Cells(2,3).Value;
счСтроки = 3;
Сообщить(Строка(Товар) + "-" + Строка(Цена));
Пока СокрЛП(Товар) <> "" Цикл // можно использовать другой признак окончания данных на листе
Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
Сообщить(Строка(Товар) + "-" + Строка(Цена));
счСтроки = счСтроки + 1;
КонецЦикла;
КонецЦикла;
Док.Application.Quit();
Попытка
// Создать объект.
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Не удалось инициализировать Excel");
Возврат;
КонецПопытки;
Попытка
// В реальном примере путь может быть совершенно другим.
Excel.Workbooks.Open("c:\doc.xls");
// Запустить макрос с именем "Оформление".
Excel.Run("Оформление");
Excel.Visible = Истина;
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
Excel.Quit();
КонецПопытки;
Попытка
// Создать объект.
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Не удалось инициализировать Excel");
Возврат;
КонецПопытки;
Попытка
// Если при отработке следующего фрагмента кода произойдет ошибка объект "Excel.Application" будет закрыт.
// Открыть книгу, содержащую шаблон оформления.
Excel.Workbooks.Open("c:\doc.xls");
НомерКниги = Excel.Workbooks.Count;
Книга = Excel.Workbooks.Item(НомерКниги);
Лист = Excel.ActiveSheet;
// Создать новую книгу (в нее будем записывать данные).
Excel.Application.Workbooks.Add(1);
НомерКниги = Excel.Workbooks.Count;
КнигаНовая = Excel.Workbooks.Item(НомерКниги);
ЛистНовый = Excel.ActiveSheet;
// Установить ширину колонки в новой книге.
ЛистНовый.Columns("B").ColumnWidth = 40;
// Копировать область из книги-шаблона в новую книгу.
Лист.Range("Шапка").Copy(ЛистНовый.Range("A1:E3"));
ЛистНовый.Cells(1, 1).Value = "Наименование контрагента";
// Считаем, что в нашем случае необходимо сформировать только две строки табличной части
Для НомерСтроки = 1 По 2 Цикл
Лист.Range("Строка").Copy(ЛистНовый.Range(ЛистНовый.Cells(3 + НомерСтроки,1), ЛистНовый.Cells(3 + НомерСтроки, 5)));
// Записать значение в ячейку листа новой таблицы
// в реальном примере данные будут браться из информационной базы
ЛистНовый.Cells(3 + НомерСтроки, 1).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 2).Value = "Наименование номенклатурной позиции " + Строка(НомерСтроки);
ЛистНовый.Cells(3 + НомерСтроки, 3).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 4).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 5).Value = НомерСтроки;
КонецЦикла;
Excel.Visible = Истина;
Исключение
Сообщить(ОписаниеОшибки());
Excel.Quit();
КонецПопытки;
Попытка
MSWord = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Не удалось инициализировать Microsoft Word");
Возврат;
КонецПопытки;
Запрос = Новый Запрос;
// Получить данные для формируемого прайс-листа.
Запрос.Текст = "ВЫБРАТЬ
| ЦеныКомпанииСрезПоследних.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
| ЦеныКомпанииСрезПоследних.Цена,
| ЦеныКомпанииСрезПоследних.Номенклатура.Наименование КАК Номенклатура,
| 1 КАК Количество
|ИЗ
| РегистрСведений.ЦеныКомпании.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныКомпанииСрезПоследних
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|ИТОГИ Количество(Количество) ПО
| ОБЩИЕ";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
Результат = Запрос.Выполнить();
Попытка
// Создать новый документ
MSWord.Documents.Add();
Документ = MSWord.ActiveDocument();
// Добавить новый параграф в созданный документ.
Документ.Paragraphs.Add();
НомерПараграфа = Документ.Paragraphs.Count();
Параграф = Документ.Paragraphs.Item(НомерПараграфа);
// В созданный параграф вставить новый "диапазон"
// и разместить в нем текст "Прайс-Лист".
Параграф.Range.InsertAfter("Прайс-Лист");
// Установить стиль параграфа "Заголовок 1" (он должен быть определен).
Параграф.Range.Style="Заголовок 1";
Документ.Paragraphs.Add();
НомерПараграфа = Документ.Paragraphs.Count();
Параграф = Документ.Paragraphs.Item(НомерПараграфа);
Параграф.Range.InsertAfter("Сформирован на дату: " + Строка(ТекущаяДата()));
Параграф.Range.Style = "Обычный";
ВыборкаКоличества = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаКоличества.Следующий();
КоличествоСтрок = ВыборкаКоличества.Количество;
Документ.Paragraphs.Add();
НомерПараграфа = Документ.Paragraphs.Count();
Параграф=Документ.Paragraphs.Item(НомерПараграфа);
// Вставить таблицу с количеством строк равным количеству записей
// в выборке результата запроса и с тремя колонками
Документ.Tables.Add(Параграф.Range, КоличествоСтрок, 3);
// Получить таблицу как объект в отдельную переменную
// учитывая тот факт, что таблица у нас единственная
Таблица = Документ.Tables.Item(1);
// Записать данные в ячейку таблицы строка №1, колонка №1
Таблица.Cell(1,1).Range().InsertAfter("Номенклатура");
// Установить цвет фона в ячейке
Таблица.Cell(1,1).Shading.BackgroundPatternColor = 16776960;
Таблица.Cell(1,2).Range().InsertAfter("Цена");
Таблица.Cell(1,2).Shading.BackgroundPatternColor = 16776960;
Таблица.Cell(1,3).Range().InsertAfter("Ед.Изм.");
Таблица.Cell(1,3).Shading.BackgroundPatternColor = 16776960;
НомерСтроки = 1;
Выборка = ВыборкаКоличества.Выбрать();
Пока Выборка.Следующий() Цикл НомерСтроки = НомерСтроки + 1;
Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Выборка.Номенклатура);
Таблица.Cell(НомерСтроки,2).Range().InsertAfter(Строка(Выборка.Цена));
Таблица.Cell(НомерСтроки,3).Range().InsertAfter(Выборка.ЕдиницаИзмерения);
КонецЦикла;
MSWord.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
стрПодключения = "Driver={SQL Server};"
стрПодключения = стрПодключения + ИмяСервера + ";";
стрПодключения = стрПодключения +"Uid=" + ИмяПользователя + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";";
стрПодключения = стрПодключения + "DataBase =" + ИмяБазы + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";";
Connection = Новый COMОбъект("ADODB.Connection");
Connection.OpenServer = стрПодключения;
RS = Новый COMОбъект("ADODB.Recordset");
// Запрос к базе на языке SQL запросов.
RS.Open("Select * from TradeUnit", Connection);
Пока RS.EOF() = 0 Цикл
// Можно обращаться и обрабатывать значения полей выборки.
ИД = RS.Fields("ID").Value;
Код = RS.Fields("Code").Value;
// Обработка других полей
RS.MoveNext();
КонецЦикла;
RS.Close();
Connection.Close();
V8 = Новый COMОбъект("V8.Application");
Попытка
Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";");
Исключение
Предупреждение("База данных не открыта!!!");
Возврат;
КонецПопытки;
МенеджерДокумента = V8.Документы.РеализацияТоваров;
Документ = МенеджерДокумента.СоздатьДокумент();
ФормаДокумента = Документ.ПолучитьФорму();
ФормаДокумента.ОткрытьМодально();
Sub load()
Dim trade As Object
Dim СправочникНоменклатуры As Object
Dim ГруппаНоменклатуры As Object
Dim Элемент As Object
Dim Форма As Object
Set trade = CreateObject("V8.Application")
trade.Connect("File=""C:\DemoTrd4"";Usr=""Федоров (администратор)"";")
Set СправочникНоменклатуры = trade.Справочники.Номенклатура
Set ГруппаНоменклатуры = СправочникНоменклатуры.СоздатьГруппу()
ГруппаНоменклатуры.Наименование = "***** Экспорт из Excel ******"
ГруппаНоменклатуры.Записать
N = 4 'Количество загружаемых элементов справочника
For Count = 2 To 5 Set
Элемент = СправочникНоменклатуры.СоздатьЭлемент()
Элемент.Код = Application.Cells(Count, 1).Value
Элемент.Артикул = Application.Cells(Count, 2).Value
Элемент.Наименование = Application.Cells(Count, 3).Value
Элемент.НаименованиеПолное = Application.Cells(Count, 4).Value
Элемент.Родитель = ГруппаНоменклатуры.Ссылка
Set Форма = Элемент.ПолучитьФорму()
Форма.ОткрытьМодально
Next Count
End Sub
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
Если ЭлементДанных.Склад <> Склад Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
ПолучениеЭлемента = ПолучениеЭлементаДанных.Принять;
КонецЕсли;
КонецПроцедуры
Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
Если ПланыОбмена.ИзменениеЗарегистрировано(Ссылка, ЭлементДанных) Тогда
ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
Если НеВыгружатьОбъекты Тогда
// Проверить "ненужные типы", условие может содержать проверку
// на несколько типов.
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);
Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения);
Пока Выборка.Следующий() Цикл
Данные = Выборка.Получить();
Сообщить(Данные);
КонецЦикла;
ЗапСообщения.ПрерватьЗапись();
Стр = ЗаписьXML.Закрыть();
Процедура Выгрузка(Элемент)
Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(Путь + "выгрузка.xml");
Узел = ПланыОбмена.Поставка.НайтиПоКоду("Маг1");
ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел);
Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения);
Пока Выборка.Следующий() Цикл
Данные = Выборка.Получить();
Если ТипЗнч(Данные) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
ВыгрузкаРеализации(ЗаписьXML, Данные);
Иначе // все остальные объекты
ЗаписатьXML(ЗаписьXML, Данные);
КонецЕсли;
КонецЦикла;
ЗапСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
КонецПроцедуры
Процедура ВыгрузкаРеализации(ЗаписьXML, Документ)
ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПередачаТовара");
ЗаписатьXML(ЗаписьXML, Документ.Ссылка.УникальныйИдентификатор(), "Ref", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Документ.ПометкаУдаления, "DeletionMark", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, Документ.ВалютаДокумента, "ВалютаДокумента", НазначениеТипаXML.Явное);
// Остальные свойства документа.
// Табличная часть.
ЗаписьXML.ЗаписатьНачалоЭлемента("Товары");
Для Каждого ТекСтрока Из Документ.Товары Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Row");
ЗаписатьXML(ЗаписьXML, ТекСтрока.Номенклатура, "Номенклатура", НазначениеТипаXML.Явное);
ЗаписатьXML(ЗаписьXML, ТекСтрока.Количество, "Количество", НазначениеТипаXML.Явное);
// Остальные реквизиты табличной части.
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецПроцедуры
Процедура Загрузка(Элемент)
Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл(Путь + "выгрузка.xml");
ЧтСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель, ЧтСообщения.НомерСообщения);
Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
Данные = ПрочитатьДанные(ЧтениеXML);
Если РазрешениеКоллизий(Данные) Тогда
Данные.ОбменДанными.Отправитель = ЧтСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЕсли;
КонецЦикла;
ЧтСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
КонецПроцедуры
Функция ВозможностьЧтенияДанных(ЧтениеXML)
ТипXML = ПолучитьXMLТип(ЧтениеXML);
Если ТипXML = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И ТипXML.URIПространстваИмен = "" Тогда
Возврат Истина;
КонецЕсли;
Возврат ВозможностьЧтенияXML(ЧтениеXML);
КонецФункции
Функция ПрочитатьДанные(ЧтениеXML)
ТипXML = ПолучитьXMLТип(ЧтениеXML);
Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И ТипXML.URIПространстваИмен = "" Тогда
Возврат ЧтениеРеализации(ЧтениеXML);
КонецЕсли;
Возврат ПрочитатьXML(ЧтениеXML);
КонецФункции
Функция ЧтениеРеализации(ЧтениеXML)
ЧтениеXML.Прочитать();
// Работа со ссылкой документа.
ПолученнаяСсылка = ПрочитатьXML(ЧтениеXML);
Док = Документы.ПоступлениеТоваров.ПолучитьСсылку(Новый УникальныйИдентификатор(ПолученнаяСсылка));
Документ = Док.ПолучитьОбъект();
Если Документ = Неопределено Тогда
Документ = Документы.ПоступлениеТоваров.СоздатьДокумент();
Документ.УстановитьСсылкуНового(Док);
Документ.Дата = ТекущаяДата;
Документ.УстановитьНовыйНомер();
КонецЕсли;
Документ.ПометкаУдаления = ПрочитатьXML(ЧтениеXML);
Документ.ВалютаДокумента = ПрочитатьXML(ЧтениеXML);
// Табличная часть "Товары.
// Построчное чтение.
ЧтениеXML.Прочитать();
Документ.Товары.Очистить();
Пока ЧтениеXML.Имя = "Row" Цикл
// Позиционируемся на узле с номенклатурой.
ЧтениеXML.Прочитать();
НоваяСтрока = Документ.Товары.Добавить();
НоваяСтрока.Номенклатура = ПрочитатьXML(ЧтениеXML);
НоваяСтрока.Количество = ПрочитатьXML(ЧтениеXML);
// Читаем конец узла Row.
ЧтениеXML.Прочитать();
КонецЦикла;
// Читаем конец табличной части.
ЧтениеXML.Прочитать();
// Читаем конец документа.
ЧтениеXML.Прочитать();
Возврат(Документ);
КонецФункции
Функция РазрешениеКоллизий(Данные)
Если ТипЗнч(Данные) = Тип("ДокументОбъект.ПоступлениеТоваров") Тогда
Если Не Данные.ЭтоНовый() Тогда
СсылкаНаУзел = ПланыОбмена.Поставка.НайтиПоКоду("Опт");
Если ПланыОбмена.ИзменениеЗарегистрировано(СсылкаНаУзел, Данные) Тогда
Возврат(Ложь);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат(Истина);
КонецФункции
СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Неопределено);
СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Метаданные.Справочники.Номенклатура);
СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ДокСсылка = Документы.РеализацияТоваров.НайтиПоНомеру(НомерДок, ДатаПериода);
Если Не ДокСсылка.Пустая() Тогда
ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, ДокСсылка);
КонецЕсли;
private void commandPanel_ItemCommand(object source, System.Web.UI.WebControls.CommandEventArgs e)
{
if (e.CommandName = = "ShowAll")
{
foreach (V8Filter filter in listDS.Filter)
{
filter.Checked = false;
}
grid.Refresh();
}
}
private void Grid_ItemDataBound(object sender, _1C.V8.WebControls.V8GridItemEventArgs e)
{
foreach (TableCell cell in e.Item.Cells)
cell.Wrap = false;
}
Функция ПолучитьЗначениеПоУмолчанию(Пользователь, Свойство) Экспорт
Отбор = Новый Структура;
Отбор.Вставить("Пользователь", Пользователь);
Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоНаименованию(Свойство));
Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор);
Возврат Результат.Значение;
КонецФункции
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
Title.Text = ListDataSource.TableInfo.Presentation;
// Добавляемый код.
ListDataSource.Connection.Open();
try
{
ObjectRef currUser = (ObjectRef)V8.Get(ListDataSource.Connection, ListDataSource.Connection.Connection, "глТекущийПользователь");
ObjectRef mainWH = (ObjectRef)V8.Call(ListDataSource.Connection, ListDataSource.Connection.Connection, "ПолучитьЗначениеПоУмолчанию", currUser, "ОсновнойСклад");
if (!mainWH.IsEmpty())
{
V8Filter filter = ListDataSource.Filter["Склад"];
filter.Checked = true;
filter.Condition = V8FilterCondition.Equal;
filter.ValueType1 = ListDataSource.Metadata.TypesInfo[V8.TypeNameFromValue(mainWH)];
filter.Value1 = mainWH;
filter.Presentation1 = mainWH.Presentation(ListDataSource.Connection);
}
}
finally
{
ListDataSource.Connection.Close();
}
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using _1C.V8.WebControls;
using _1C.V8.Data;
V8Grid_onInputOnBasis( '', 'grid', document.getElementById('grid_SelectedItem').value, 'Документ.ПриходнаяНакладная')
Габец Андрей Петрович, Гончаров Дмитрий Игоревич
1С:Предприятие 8.0. Простые примеры разработки