Как заполнить диаграмму данными? Код 1C v 8.х Диаграмма = ЭлементыФормы.Диаграмма;
// Очистить диаграмму, возможно ранее в нее уже выводились данные.
Диаграмма.КоличествоСерий = 0;
Диаграмма.КоличествоТочек = 0;
// Количество серий будет ограничиваться (не все значения будут показываться).
Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено;
Диаграмма.МаксимумСерийКоличество = 7;
Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент;
Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры";
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура,
| СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты
|СГРУППИРОВАТЬ ПО
| ПродажиКомпанииОбороты.Номенклатура";
Результат = Запрос.Выполнить();
// Запретить обновление диаграммы на время вывода данных.
Диаграмма.Обновление = Ложь;
// Установить единственную точку.
Диаграмма.КоличествоТочек = 1;
Диаграмма.Точки[0].Текст = "Количество";
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Количество серий, если бы не ограничивали зависело бы от результата запроса.
КоличествоСерий = Диаграмма.Серии.Количество();
Диаграмма.КоличествоСерий = КоличествоСерий + 1;
Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура;
// Установить значение "на пересечении" точки и серии.
// Первый параметр - 0 , так как в диаграмме только одна точка.
Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот);
КонецЦикла;
// Обновить диаграмму.
Диаграмма.Обновление = Истина;
Код 1C v 7.x //Пример 1:
Процедура ПостроитьДиаграмму(Диагр)
КолСерий=0;
//количество серий определяется по количеству элементов в справочнике Материалы Спр=СоздатьОбъект("Справочник.Материалы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
// группы элементов пропускаются
Если Спр.ЭтоГруппа()=0 Тогда
КолСерий=КолСерий+1;
КонецЕсли;
КонецЦикла;
// установка количества серий и точек
Диагр.КоличествоСерий(КолСерий);
Диагр.КоличествоТочек(1);
//в качестве значений на диаграмме примем количественное сальдо конечное по счету 10 и текущему элементу справочника
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.Рассчитать(ДатаОтчета, ДатаОтчета);
номер=1;
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=0 Тогда
Диагр.УстановитьИмяСерии(Номер, Спр.Наименование);
Диагр.УстановитьЗначение(1,номер,БИ.СКД("10","К",,Спр.ТекущийЭлемент()));
номер=номер+1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код 1C v 7.x // Пример 2:
Процедура СформироватьДиаграмму(Диаграмма1)
// Блокируем обновление, пока обрабатываются данные
Диаграмма1.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);
// Заполним диаграмму значениями
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),
КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");
БухИт.ВыбратьПериоды();
А = 1;
// дебетовые обороты по счету 60.1 покажут поступления
// денег от покупателей
Пока БухИт.ПолучитьПериод() = 1 Цикл
Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());
А = А +1;
КонецЦикла;
// после наполнения данными перерисовываем
Диаграмма1.Обновление(1);
КонецПроцедуры
Категория:
Диаграмма Проверка наличия компонент "Бухгалтерский, Оперативный Учеты, Расчет" Код 1C v 7.x
// При старте проверяем наличие компоненты "Бухгалтерский Учет" 1С:Предприятия
Попытка
БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
Исключение
Предупреждение("Для работы конфигурации необходимо наличие" + РазделительСтрок
+"компоненты Бухгалтерский Учет 1С:Предприятия 7.7!"+ РазделительСтрок
+"Повторите запуск программы после проверки"+ РазделительСтрок
+"состава установленных компонент и доступа к ключам защиты.");
СтатусВозврата(0);
Возврат;
КонецПопытки;
// При старте проверяем наличие компоненты "Оперативный учет" 1С:Предприятия
Попытка
ТестовыйРегистр = СоздатьОбъект("Регистр.ВидЛюбогоРегистра");
Исключение
Предупреждение("Для работы конфигурации необходимо наличие"+ РазделительСтрок
+"компоненты Оперативный Учет 1С:Предприятия 7.7!"+ РазделительСтрок
+"Повторите запуск программы после проверки состава "+ РазделительСтрок
+"установленных компонент и доступа к ключам защиты.");
СтатусВозврата(0);
Возврат;
КонецПопытки;
// При старте проверяем наличие компоненты "Расчет" 1С:Предприятия
Попытка
ЖЗ = СоздатьОбъект("ЖурналРасчетов.ЛюбойВидЖурналаРасчетов");
Исключение
Предупреждение("Для работы конфигурации необходимо наличие"+ РазделительСтрок
+"компоненты Расчет! Повторите запуск программы после проверки"+ РазделительСтрок
+"состава установленных компонент и доступа к ключам защиты.");
СтатусВозврата(0);
Возврат;
КонецПопытки;
Категория:
Полезные, Универсальные Функции Реализация алгоритмов «FIFO» и «LIFO» Для реализации алгоритмов «FIFO» и «LIFO» (FIFO (первый пришел – первый ушел), LIFO (последний пришел – первый ушел)) необходимо добавить на счет учета ТМЦ субконто «Партии». Тогда определяется текущая стоимость товара и текущий остаток первой (последней) партии товара. Их отношение дает нам цену партии товара. Если остаток по партии товара меньше, чем реализуется, тогда выбираем следующую партию товаров и так далее.
Код 1C v 7.x БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто("ЦенныеБумаги",ЦБ,2);
БИ.ИспользоватьСубконто("ПартииЦБ");
БИ.ВыполнитьЗапрос(,ТекущийДокумент(),"58.6");
Если Константа.МетодОпределенияСебестоимости = Перечисление.МетодыОпределенияСебестоимости.ФИФО Тогда
БИ.ВыбратьСубконто(2,,,,,,0);
Иначе
БИ.ВыбратьСубконто(2,,,,,,1);
КонецЕсли;
Кол=Количество;
Пока БИ.ПолучитьСубконто(2)=1 Цикл
Сум=БИ.СКД(1);
Ост=БИ.СКД(3);
Если Ост<=Кол Тогда
// списываем весь остаток по партии
СумСпис=Сум;
КолСпис=Ост;
ИначеЕсли Ост>Кол Тогда
// списываем требуемое количество
ЦенаСпис=Сум/Ост;
КолСпис=Кол;
СумСпис=Окр(КолСпис*ЦенаСпис,2);
Иначе
Продолжить;
КонецЕсли;
Операция.НоваяПроводка();
Операция.Дебет.Счет=Сч91_2;
Операция.Кредит.Счет=Сч58_6;
Операция.Кредит.ЦенныеБумаги=ЦБ;
Операция.Кредит.ПартииЦБ=БИ.Субконто(2);
Операция.Сумма=СумСпис;
Операция.Количество=КолСпис;
Кол=Кол-КолСпис;
Если Кол=0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Кол>0 Тогда
Сообщить("Остаток меньше нуля");
НеПроводитьДокумент();
КонецЕсли;
Категория:
Полезные, Универсальные Функции Реализация алгоритма «По среднему» Алгоритм
«по среднему» реализуется наиболее просто: определяется текущая стоимость товара и текущий остаток. Их отношение дает нам среднюю цену. Перемножая среднюю цену на реализуемое количество, получаем себестоимость.
Код 1C v 7.x
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто("ЦенныеБумаги",ЦБ,2);
БИ.ВыполнитьЗапрос(,ТекущийДокумент(),"58.6");
Сум=БИ.СКД(1);
Ост=БИ.СКД(3);
Если Ост=Количество Тогда
СумСпис=Сум;
ИначеЕсли Ост>Количество Тогда
ЦенаСпис=Сум/Ост;
СумСпис=Окр(Количество*ЦенаСпис,2);
Иначе
Сообщить("Остаток меньше нуля");
НеПроводитьДокумент();
КонецЕсли;
Операция.НоваяПроводка();
Операция.Дебет.Счет=Сч91_2;
Операция.Кредит.Счет=Сч58_6;
Операция.ЦенныеБумаги=ЦБ;
Операция.Сумма=СумСпис;
Операция.Количество=Количество;
Категория:
Полезные, Универсальные Функции Функция проверки типа значения Код 1C v 8.х
// Функция возвращает Истина при соответствии типов, ложь в обратном случае
Функция НужныйТипЗнач(ИсхЗнач,ТипЗнач)
Возврат ТипЗнч(ИсхЗнач) = Тип(ТипЗнач);
КонецФункции
// Некоторые примеры обращения
// ИсхЗнач - проверяемое значение
// НужныйТипЗнач(ИсхЗнач,"Строка")
// НужныйТипЗнач(глЗначениеПеременной("глТекущийПользователь"),"СправочникСсылка.Пользователи")
// НужныйТипЗнач(ИсхЗнач,"Форма")
// НужныйТипЗнач(ИсхЗнач,"Булево")
// НужныйТипЗнач(ИсхЗнач,"Строка")
// НужныйТипЗнач(ИсхЗнач,"Число")
// НужныйТипЗнач(ИсхЗнач,"Дата"))
// НужныйТипЗнач(ИсхЗнач,"Массив")
// НужныйТипЗнач(ИсхЗнач,"Структура")
// НужныйТипЗнач(ИсхЗнач,"Соответствие")
// НужныйТипЗнач(ИсхЗнач,"СписокЗначений")
// НужныйТипЗнач(ИсхЗнач,"ТаблицаЗначений")
// НужныйТипЗнач(ИсхЗнач,"ДеревоЗначений")
// НужныйТипЗнач(ИсхЗнач,"ПланСчетовСсылка.Хозрасчетный")
// НужныйТипЗнач(ИсхЗнач,"ПланСчетовСсылка.Налоговый")
// НужныйТипЗнач(ИсхЗнач,"ХранилищеЗначения")
// НужныйТипЗнач(ИсхЗнач,"Картинка")
// НужныйТипЗнач(ИсхЗнач,"ПолеВвода")
// НужныйТипЗнач(ИсхЗнач,"Панель")
// НужныйТипЗнач(ИсхЗнач,"Флажок")
// НужныйТипЗнач(ИсхЗнач,"РегистрРасчетаНаборЗаписей.УправленческиеНачисления")
// НужныйТипЗнач(ИсхЗнач,"ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
// НужныйТипЗнач(ИсхЗнач,"ДокументСсылка.ОтпускПоУходуЗаРебенком")
// НужныйТипЗнач(ИсхЗнач,"ИнтернетПочтовоеСообщение")
// НужныйТипЗнач(ИсхЗнач, "БизнесПроцессСсылка.м_Документооборот")
Код 1C v 7.x
// Функция возвращает 1 при соответствии типов, 0 в обратном случае
Функция НужныйТипЗнач(ИсхЗнач,ТипЗнач)
Если ТипЗначенияСтр((ИсхЗнач) = ТипЗнач тогда
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
// Некоторые примеры обращения
// ИсхЗнач - проверяемое значение
// НужныйТипЗнач(ИсхЗнач,"Строка")
// Значения типов данных:
// ''Число'' (''Number'') - числовой тип данных;
// ''Строка'' (''String'') - строковый тип данных;
// ''Дата'' (''Date'') - тип данных Дата;
// ''Перечисление'' (''Enum'') - агрегатный тип данных ''Перечисление'';
// ''Справочник'' (''Reference'') - агрегатный тип данных ''Справочник'';
// ''Документ'' (''Document'') - агрегатный тип данных ''Документ'';
// ''Регистр'' (''Register'') - агрегатный тип данных ''Регистр'';
// ''Календарь'' (''Calendar'') - агрегатный тип данных ''Календарь'';
// ''ВидРасчета'' (''Calculation'') - агрегатный тип данных ''ВидРасчета'';
// ''ЖурналРасчетов'' (''CalcJournal'') - агрегатный тип данных ''ЖурналРасчетов'';
// ''ПланСчетов'' (''ChartOfAccounts'') - агрегатный тип данных ''ПланСчетов'';
// ''Счет'' (''Account'') - агрегатный тип данных ''Счет'';
// ''Операция'' (''Operation'') - агрегатный тип данных ''Операция'';
// ''КорректныеПроводки'' (''CorrectEntries'') - агрегатный тип данных ''КорректныеПроводки'';
// ''БухгалтерскиеИтоги'' (''BookkeepingTotals'') - агрегатный тип данных ''БухгалтерскиеИтоги'';
// ''Таблица'' (''Table'') - агрегатный тип данных ''Таблица'';
// ''Текст'' (''Text'') - агрегатный тип данных ''Текст'';
// ''Запрос'' (''Query'') - агрегатный тип данных ''Запрос'';
// ''СписокЗначений'' (''ValueList'') - агрегатный тип данных ''СписокЗначений'';
// ''ТаблицаЗначений'' (''ValueTable'') - агрегатный тип данных ''ТаблицаЗначений'';
// ''Периодический'' (''Periodic'') - агрегатный тип данных ''Периодический'';
// ''Картинка'' (''Picture'') - агрегатный тип данных ''Картинка'';
// ''ГрупповойКонтекст'' (''GroupContext'') - контекст программного модуля или Формы;
// ''OLE'' (''OLE'') - OLE-объект.
// ''НеизвестныйОбьект'' (''UnknownObject'') - для типов, для которых в системе не предусмотрено специальное строковое обозначение;
// '''' (пустая строка) - неопределенный тип данных.
Категория:
Работа с Типами данных Как отключить вывод splash заставки 1C предприятия ? Для 1С 7.7:
1. Воспользуйтесь файлом Отключение splash-заставки появляющейся при запуске 1С-Предприятия 7.7
2. При OLE - Нужно поставить NO_SPLASH_SHOW Внимание! - работает это только при запуске в режиме OLE Automation сервера
Код 1C v 7.x V7 = СоздатьОбъект("V77.Application");
Открыта=V7.Initialize(V7.RMTrade,"/dD:\ASP_COPY\1sbdb /nUser /p11111 /m", "NO_SPLASH_SHOW");
Если Открыта=0 Тогда
Предупреждение("Ошибка открытия инф. базы");
КонецЕсли;
ИмпортБИ=V7.CreateObject("БухгалтерскиеИтоги");
//...
3. Изменить/убрать заставку при запуске
1 способ: Resource Browser'ом (плагин к FAR) заходим в 1crcrus.dll.
В ветке 1049/ZLIB_DATA находим что-то, так вот если ZLIB_DATA удалить, то никаких заставок при запуске 1С не будет. Правильно - потому что их нету
2 способ:
"Любым HEX-редактором найти в запускаемом *.EXE файле последовательность и заменить на другую:
Тип Имя файла: Найти: Заменить на:
Для Сетевой версии: в файле 1cv7.exe найти: 8B 87 54 85 00 00 и заменить на: 31 C0 90 90 90 90
Для Локальной версии: в файле 1cv7l.exe найти: 8B 8B 54 85 00 00 и заменить на 31 C9 90 90 90 90
Приведенные последовательности встречаются в файлах один раз, но для различных релизов по разным смещениям."
3 способ: Использовать патчер Soarona(по сути, он выполняет способ 2, ищите его на просторах Интернета)
Для 1С 8.х:
Для запуска создвайте скрипт VBS c кодом(для разных версий меняйте 81 на 80 или 82):
Для Файлового варианта
Код VBS Set DB=CreateObject("v81.Application")
DB.Connect("File=D:\1C_base\ZUPRAZR;Usr=EMigachev;Pwd=12345")
DB.Visible=True
Для Клиент-серверного варианта
Код VBS Set DB=CreateObject("v81.Application")
DB.Connect("Srvr=co1-aps-04;Ref=zup;Usr=EMigachev;Pwd=12345;")
DB.Visible=True
Категория:
Администрирование